如何在Django上配置Stripe Connect以收取交易费用?

时间:2017-01-25 03:12:11

标签: python django stripe-payments stripe-connect

经过多次研究后,我得出结论,关于Django的 Stripe Connect 文档并没有真正提供。我一直在努力使用独立软件包(OAuth)创建一个简单的市场。

平台的目标是让用户在彼此之间进行交易并收取每笔费用的费用。要实现这一点,我使用 django-allauth 条纹

我已经设置了django-allauth,因此用户可以在条带上创建帐户并在我的网站上登录。我现在面临的问题是如何在彼此之间向用户收费。

以下是我尝试从两个不同的帐户(UserA(客户)到UserB(发布商/销售商)进行付款时出现的错误:

  

stripe.error.InvalidRequestError:请求请求_ *************:“目标”参数无法设置为您自己的帐户。

以下是我的观点

customer_id = request.user.profile.stripe_id

if request.method == 'POST':
    try:
        gig = Gig.objects.get(id=request.POST.get('gig_id'))
    except Gig.DoesNotExist:
        return redirect('/')


    token = request.POST['stripeToken']

    # Create a charge: this will charge the user's card
    try:
        customer = stripe.Customer.retrieve(customer_id)
        customer.sources.create(source=token)

        destination_id = gig.user.socialaccount_set.get().uid 

        charge = stripe.Charge.create(
            amount=5000,  # Amount in cents
            currency="chf",
            customer=customer,
            description=gig.title,
            application_fee=123,
            destination=destination_id, #'acct_**************'
        )

    except stripe.error.CardError as e:
        # The card has been declined
        pass

Gig是我的产品型号,Profile是我的个人资料模型,我保留stripe_id

我已阅读文档,并且我正在为帐户目的地提供卖家的目的地ID。我错过了什么吗?为什么我会收到此错误?

1 个答案:

答案 0 :(得分:5)

成功,第一笔付款经历了!这是一个关于如何设置Stripe连接的简短教程:

对于独立包,我使用的是 Django-allauth Stripe

让它在测试模式下运行时需要了解的事情:

一个。使用stripe 配置django-allauth(每次创建帐户时创建一个客户)

湾您无法使用管理员帐户目标ID设置目的地,如果它是您用来创建应用的目的地,否则您将收到此错误:

  

stripe.error.InvalidRequestError:请求请求_ *************:'目的地' param不能设置为您自己的帐户。

℃。您需要确保将此代码放在您的设置上,因为只有在范围设置为read_write时才能继续进行收费或转移,将此代码放入您的settings.py

SOCIALACCOUNT_PROVIDERS = {
    'stripe': {
        'SCOPE': ['read_write'],
    } 
}

d。为您的个人资料模型提供stripe_id,以便为每个关联的用户提供唯一的ID。

即在模板上显示结帐表单。

知道您可能需要创建第二个测试帐户才能以开发模式付款,因为您无法使用管理员帐户。

不要犹豫,在问题中使用views.py代码。

在您的市场上享受条纹连接!