首页 > 解决方案 > 如何创建用于带发票的条带订阅的付款来源

问题描述

我需要在条带中创建订阅,客户使用发票付款以进入付款页面,因此我没有客户卡详细信息,当我尝试为客户创建付款来源时,这就是我所做的

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让人们通过发票输入他们的卡

标签: pythondjangostripe-paymentssubscription

解决方案


您的代码正在创建源,那些被认为是遗留的,不要使用它们。

您需要改为创建 PaymentMethod。做到这一点的方法是使用 Stripe.js 和 Stripe 托管的 UI“元素”,允许客户输入他们的卡详细信息(在符合 PCI、Stripe 托管的 iframe 输入字段中)(按照此处的步骤 3),您可以从中创建一个 PaymentMethod

然后,您将该 PaymentMethod 发送到您的服务器,将其附加到客户,并default_payment_method在您创建订阅时将其作为传递。


推荐阅读