forked from uncloud/uncloud
Initial stripe playground
This commit is contained in:
parent
c651c4ddaa
commit
4ad737ed90
7 changed files with 124 additions and 3 deletions
|
|
@ -7,6 +7,8 @@ from functools import reduce
|
|||
from uncloud_vm.serializers import VMProductSerializer
|
||||
from uncloud_vm.models import VMProduct
|
||||
|
||||
import uncloud_pay.stripe as stripe
|
||||
|
||||
# TODO: remove magic numbers for decimal fields
|
||||
class BillRecordSerializer(serializers.Serializer):
|
||||
order = serializers.CharField()
|
||||
|
|
@ -27,10 +29,35 @@ class PaymentSerializer(serializers.ModelSerializer):
|
|||
model = Payment
|
||||
fields = ['owner', 'amount', 'source', 'timestamp']
|
||||
|
||||
class CreditCardSerializer(serializers.Serializer):
|
||||
number = serializers.IntegerField()
|
||||
exp_month = serializers.IntegerField()
|
||||
exp_year = serializers.IntegerField()
|
||||
cvc = serializers.IntegerField()
|
||||
|
||||
class PaymentMethodSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = PaymentMethod
|
||||
fields = '__all__'
|
||||
fields = ['source', 'description', 'primary']
|
||||
|
||||
class CreatePaymentMethodSerializer(serializers.ModelSerializer):
|
||||
credit_card = CreditCardSerializer()
|
||||
|
||||
class Meta:
|
||||
model = PaymentMethod
|
||||
fields = ['source', 'description', 'primary', 'credit_card']
|
||||
|
||||
def create(self, validated_data):
|
||||
credit_card = stripe.CreditCard(**validated_data.pop('credit_card'))
|
||||
user = self.context['request'].user
|
||||
customer = stripe.create_customer(user.username, user.email)
|
||||
# TODO check customer error
|
||||
customer_id = customer['response_object']['id']
|
||||
stripe_card = stripe.create_card(customer_id, credit_card)
|
||||
# TODO: check credit card error
|
||||
validated_data['stripe_card_id'] = stripe_card['response_object']['id']
|
||||
payment_method = PaymentMethod.objects.create(**validated_data)
|
||||
return payment_method
|
||||
|
||||
class ProductSerializer(serializers.Serializer):
|
||||
vms = VMProductSerializer(many=True, read_only=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue