Initial stripe playground

This commit is contained in:
fnux 2020-03-02 22:26:40 +01:00
commit 4ad737ed90
7 changed files with 124 additions and 3 deletions

View file

@ -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)