【问题标题】:Unable to save stripe payments to table无法将条带付款保存到表中
【发布时间】:2019-12-18 15:14:58
【问题描述】:

我遵循了这个条纹支付教程:https://testdriven.io/blog/django-stripe-tutorial/。我正在使用弹出框。我不确定如何将信息保存到 Payments 表中。

这是我的视图代码。视图有效,但没有保存到模型中。我正在努力将用户输入的数据保存到我的数据库中。有这方面的好教程吗?我是 Django 新手。

PremiumPurchase 模型包含所有这些元素。

class PaymentsView(TemplateView):
     template_name = 'page.html'
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context['key'] = settings.STRIPE_PUBLISHABLE_KEY
         return context


from catalog.extras import generate_order_id
def charge(request): # new
    if request.method == 'POST':
        try:
           datetime_done = datetime.now() + timedelta(days=3)
           order_number = generate_order_id(18)
           PremiumPurchase = stripe.Charge.create(
            user = request.user, 
            token = request.POST['stripeToken'],
            description = "Purchase of Premium",
            datetime_payment = datetime.datetime.now(),
            datetime_done = datetime_done,
            order_id=order_number,
            amount=2.99,
            success=True,
        )
        PremiumPurchase.save()
    except:
        raise ValidationError("The card has been declined")

    return render(request, 'premium/charge.html')

【问题讨论】:

    标签: django django-models stripe-payments


    【解决方案1】:

    我记得那不是那样的。 您需要将代码修改为类似的内容:

            c = stripe.Charge.create(
                user = request.user, 
                token = request.POST['stripeToken'],
                description = "Purchase of Premium",
                datetime_payment = datetime.datetime.now(),
                datetime_done = datetime_done,
                order_id=order_number,
                amount=2.99,
                success=True
            )
    
    
            premium_purchase = PremiumPurchase(
                # populate your model fields here
                # I don't know your model,
                # but for example it could be like this
                stripe_id=c.id,
                paid=c.paid,
                refunded=c.refunded,
                outcome=c.outcome
            )
    
            premium_purchase.save()
    

    【讨论】:

    • 试过了,还是没有保存。
    猜你喜欢
    • 2017-11-25
    • 2017-06-18
    • 2018-05-26
    • 2013-06-10
    • 1970-01-01
    • 2018-07-07
    • 2020-01-16
    • 2021-10-12
    • 2023-04-11
    相关资源
    最近更新 更多