如何在 Django 上配置 Stripe Connect 以收取交易费用?
How to configure Stripe Connect on Django to collect fees on transactions?
经过多次研究,我得出的结论是 Stripe Connect Django 的文档并未真正提供。我一直在努力使用独立包 (OAuth) 创建一个简单的市场。
平台的目标是让用户之间进行交易,并在每笔费用中收取费用。为此,我使用 django-allauth 和 stripe.
我已经设置了 django-allauth,因此用户已经可以在 stripe 上创建一个帐户并登录我的网站。我现在面临的问题是如何在彼此之间向用户收费。
这是我尝试从两个不同的帐户 UserA(客户)向 UserB(publisher/seller)付款时遇到的错误:
stripe.error.InvalidRequestError: Request req_*************: The 'destination' param cannot be set to your own account.
这是我的看法
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。我错过了什么吗?为什么会出现此错误?
成功,第一笔付款成功!这是关于如何设置 Stripe 连接的简短教程:
对于独立包,这里是我使用的 Django-allauth 和 Stripe。
使其在测试模式下运行需要了解的事项:
一个。使用条带 配置 django-allauth(每次创建帐户时创建一个客户).
b。如果您用于创建应用程序,则不能使用管理员帐户目标 ID 设置目标,否则您将收到此错误:
stripe.error.InvalidRequestError: Request req_*************: The 'destination' param cannot be set to your own account.
c。您需要确保将此代码放在您的设置中,因为只有当范围设置为 read_write 时您才能继续进行收费或转账,请将此代码放在您的 settings.py
SOCIALACCOUNT_PROVIDERS = {
'stripe': {
'SCOPE': ['read_write'],
}
}
d。为您的个人资料模型提供 stripe_id
,以便为每个连接的用户提供唯一的 ID。
e。在模板上显示结帐表单。
请注意,您可能必须创建第二个测试帐户才能在开发模式下付款,因为您无法使用管理员帐户。
不要犹豫,在问题中使用 views.py
代码。
在您的市场上享受条纹连接!
经过多次研究,我得出的结论是 Stripe Connect Django 的文档并未真正提供。我一直在努力使用独立包 (OAuth) 创建一个简单的市场。
平台的目标是让用户之间进行交易,并在每笔费用中收取费用。为此,我使用 django-allauth 和 stripe.
我已经设置了 django-allauth,因此用户已经可以在 stripe 上创建一个帐户并登录我的网站。我现在面临的问题是如何在彼此之间向用户收费。
这是我尝试从两个不同的帐户 UserA(客户)向 UserB(publisher/seller)付款时遇到的错误:
stripe.error.InvalidRequestError: Request req_*************: The 'destination' param cannot be set to your own account.
这是我的看法
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。我错过了什么吗?为什么会出现此错误?
成功,第一笔付款成功!这是关于如何设置 Stripe 连接的简短教程:
对于独立包,这里是我使用的 Django-allauth 和 Stripe。
使其在测试模式下运行需要了解的事项:
一个。使用条带 配置 django-allauth(每次创建帐户时创建一个客户).
b。如果您用于创建应用程序,则不能使用管理员帐户目标 ID 设置目标,否则您将收到此错误:
stripe.error.InvalidRequestError: Request req_*************: The 'destination' param cannot be set to your own account.
c。您需要确保将此代码放在您的设置中,因为只有当范围设置为 read_write 时您才能继续进行收费或转账,请将此代码放在您的 settings.py
SOCIALACCOUNT_PROVIDERS = {
'stripe': {
'SCOPE': ['read_write'],
}
}
d。为您的个人资料模型提供 stripe_id
,以便为每个连接的用户提供唯一的 ID。
e。在模板上显示结帐表单。
请注意,您可能必须创建第二个测试帐户才能在开发模式下付款,因为您无法使用管理员帐户。
不要犹豫,在问题中使用 views.py
代码。
在您的市场上享受条纹连接!