python - 如何创建用于带发票的条带订阅的付款来源
问题描述
我需要在条带中创建订阅,客户使用发票付款以进入付款页面,因此我没有客户卡详细信息,当我尝试为客户创建付款来源时,这就是我所做的
def createStripeCustomer(profile,request):
host=request.build_absolute_uri()
parts=host.split('/')
host=parts[0]+'//'+parts[2]
source=stripe.Source.create(
type='card',
currency='gbp',
redirect={'return_url':host + '/payments/success/'},
owner={
'email': profile.user.email
}
)
customer=stripe.Customer.create(
description="My First Test Customer ",
email=profile.user.email,
name=profile.full_name,
phone=profile.phone_no,
address={'line1':profile.address},
)
source = stripe.Customer.create_source(
customer.id,
source=source.id
)
profile.stripe_customer=customer.id
profile.stripe_source=source.id
profile.save()
和订阅
def createStripeSubscription(subscription):
price=subscription.course.get_pay_price()
stripe_price=stripe.Price.create(
unit_amount=price,
currency=subscription.course.currency,
recurring={"interval": "week"},
product=subscription.course.stripe_product,
)
stripe_subscription=stripe.Subscription.create(
customer=subscription.student.stripe_customer,
items=[
{"price": stripe_price.id,
'quantity': 1,
},
],
metadata={
"subscription_pk": subscription.pk
},
)
subscription.stripe_price=stripe_price.id
subscription.stripe_subscription=stripe_subscription.id
subscription.save()
任何人都可以帮助PLZ让人们通过发票输入他们的卡
解决方案
您的代码正在创建源,那些被认为是遗留的,不要使用它们。
您需要改为创建 PaymentMethod。做到这一点的方法是使用 Stripe.js 和 Stripe 托管的 UI“元素”,允许客户输入他们的卡详细信息(在符合 PCI、Stripe 托管的 iframe 输入字段中)(按照此处的步骤 3),您可以从中创建一个 PaymentMethod。
然后,您将该 PaymentMethod 发送到您的服务器,将其附加到客户,并default_payment_method
在您创建订阅时将其作为传递。
推荐阅读
- python - 如何根据空值将一个行列值分配给另一行列
- javascript - 没有错误,但 JavaScript 仍然无法工作
- powerbi - DAX 动态日期平均值
- elasticsearch - 查询 elasticSearch 和嵌套对象的问题
- php - 无法通过 MAC (catalina) 上的作曲家安装 laravel 安装程序
- php - Wordpress 批量产品上传 (woocommerce) - 650K
- r - 在闪亮的数据表中编辑多个单元格
- angular - Nested store actions not synchronized
- php - 如何为新包编写 Symfony Flex 配方?
- angular - 为 Angular 应用程序设计