python - Python/Django with Stripe:创建条带订阅时发布请求出错
问题描述
这是我第一次使用条纹,这对任何人来说都很熟悉吗?所以我可以看到在付款时创建了一个令牌,但是我没有重定向到我的模板,而是在下面抛出了这个错误!
错误
>**InvalidRequestError:**
>Request req_d5BvUPtlpLrsG5: Received unknown parameter: source
>Request Method: POST
>Django Version: 2.1
>Exception Type: InvalidRequestError
>Exception Value:
>**Request req_d5BvUPtlpLrsG5: Received unknown parameter: source**
代码
def PaymentView(request):
user_membership = get_user_membership(request)
selected_membership = get_selected_membership(request)
publishKey = settings.STRIPE_PUBLISHABLE_KEY
if request.method == "POST":
try:
token = request.POST['stripeToken']
subscription = stripe.Subscription.create(
customer=user_membership.stripe_customer_id,# id on User Membership Model
items=[
{
"plan": selected_membership.stripe_plan_id,
},
],
source=token # 4242424242424242
)
return redirect(reverse('memberships:update-transactions',
kwargs={
'subscription_id': subscription.id
}))
except stripe.error.CardError as e:
messages.info(request, "Your card has been declined")
context = {
'publishKey': publishKey,
'selected_membership': selected_membership
}
return render(request, "path/templategoeshere.html", context)
解决方案
看起来您需要在 stripe.Subscription.create() 方法中删除 source=token 键值对。
所以,你应该有更多类似的东西:
def PaymentView(request):
user_membership = get_user_membership(request)
selected_membership = get_selected_membership(request)
publishKey = settings.STRIPE_PUBLISHABLE_KEY
import stripe
stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
if request.method == "POST":
try:
token = request.POST['stripeToken']
print(token) # WHAT IS PRINTED OUT HERE?
subscription = stripe.Subscription.create(
customer=user_membership.stripe_customer_id,
items=[
{
"plan": selected_membership.stripe_plan_id,
},
]
)
return redirect(reverse('memberships:update-transactions', kwargs={ 'subscription_id': subscription.id }))
except stripe.error.CardError as e:
messages.info(request, "Your card has been declined")
stripe.Subscription.create() 对象方法的可接受参数是:customer(必需)、application_fee_percent、billing、billing_cycle_anchor、coupon、days_until_due、items、metadata、prorate、tax_precent、trial_end、trial_from_plan 和 trial_period_days(都是可选的)。
这可能会有所帮助:https ://stripe.com/docs/api/python#create_subscription
推荐阅读
- java - java codebreaker - 循环不会结束
- azure - 如何刷新 Azure AD B2C 身份令牌
- node.js - Mongoose 填充返回空数组
- kubernetes - 在 helm 部署期间,Kubernetes helm 在杀死旧 pod 之前等待
- angular - nrwl/nx 8.8.0 的 license-webpack-plugin 错误
- javascript - Chai post请求类型表格
- json - 在 MariaDB 触发器中使用 JSON_EXTRACT
- selenium - 如何在 Selenium 中为 Internet Explorer 设置首选语言?
- python - 在循环内增加范围的上限不会让它永远运行
- haskell - Haskell函数组合和绑定之间的区别