【发布时间】:2015-04-28 12:04:39
【问题描述】:
我正在使用付款处理程序Stripe 解决我的 DRF 结构中的哲学问题。我正在通过我的 DRF REST API 销售具有 django 模型 Product 的产品。我想知道我是否应该创建Product,然后在我的create 视图中处理付款,如下所示:
class ProductViewSet(viewsets.ModelViewSet):
...
def create(self, request):
serializer = ProductSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
product = serializer.save()
try:
response = stripe.Charge.create(
amount=product.cost,
currency="usd",
source=request.data["token"], # Done with Stripe.js
description="Product"
)
product.charge_id = response.charge_id
...
或者,如果我应该在Product的序列化程序中处理付款:
class ProductSerializer(serializers.Serializer):
...
def create(self, validated_data):
product = Product.objects.create(**validated_data)
# Will raise an Excetpion and stop the creation:
response = stripe.Charge.create(
amount=product.cost,
currency="usd",
source=validated_data["token"], # Done with Stripe.js
description="Product"
)
return product
哪个是更好的做法?或者,我完全没有抓住重点,应该采取不同的方式吗?
其次,有没有办法在 create 路由的 Browsable API 模板中嵌入 Stripe.js 和所需的表单,这样我就可以在不需要任何前端的情况下测试我的 REST?
感谢您的帮助
【问题讨论】:
标签: python django rest django-rest-framework stripe-payments