Skip to content

Instantly share code, notes, and snippets.

@sevbo2003
Created February 5, 2023 12:16
Show Gist options
  • Save sevbo2003/5430cfeabdfb9c9a79ce545ff0d95e99 to your computer and use it in GitHub Desktop.
Save sevbo2003/5430cfeabdfb9c9a79ce545ff0d95e99 to your computer and use it in GitHub Desktop.
stripe payment sample
from rest_framework import serializers
class CardPaymentSerializer(serializers.Serializer):
card_number = serializers.CharField(max_length=20)
exp_month = serializers.IntegerField()
exp_year = serializers.IntegerField()
cvc = serializers.IntegerField()
amount = serializers.IntegerField()
import stripe
from rest_framework import generics
from rest_framework.response import Response
from .serializers import CardPaymentSerializer
from django.conf import settings
stripe.api_key = settings.STRIPE_SECRET_KEY
class CardPaymentView(generics.CreateAPIView):
serializer_class = CardPaymentSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
card_number = serializer.validated_data['card_number']
exp_month = serializer.validated_data['exp_month']
exp_year = serializer.validated_data['exp_year']
cvc = serializer.validated_data['cvc']
amount = serializer.validated_data['amount']
try:
token = stripe.Token.create(
card={
"number": card_number,
"exp_month": exp_month,
"exp_year": exp_year,
"cvc": cvc
}
)
charge = stripe.Charge.create(
amount=amount,
currency='usd',
source=token.id
)
return Response({'success': True, 'charge': charge})
except stripe.error.StripeError as e:
return Response({'success': False, 'error': str(e)})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment