stripe-payments - 如何向现有客户收取产品费用?
问题描述
如果您知道 Audible,这就是我的服务的运作方式。您可以订阅获得积分,但您也可以立即购买单件商品(如果您愿意)。
订阅对我有用,但我无法理解的是如何使用现有客户的默认付款方式对单个项目收费。让我们坚持Audible。
用户想要购买单个音轨。
我虽然可以:
Product
为此轨道创建一个(设置名称和图像网址)- 创建或重新使用 a
Price
并设置我的数据库中所述的费用金额 - 不知何故为此/创建一个
Invoice
或并移动一个Charge
Price
Product
但是,我只是不太明白如何做到这一点。
查看 的文档Invoice
,在我看来,我无法添加单个产品或价格并让 Stripe 自动向客户收费。
我认为它看起来像这样:
public void buyProduct(String productId, Customer customer) {
InvoiceCreateParams.builder()
.setCustomer(customer.getId())
.setDefaultPaymentMethod(customer.getPaymentMethod())
.setAutoAdvance(true)
.setCollectionMethod(CollectionMethod.CHARGE_AUTOMATICALLY)
// Add product/price here ?
.build();
// ...
}
那么,向客户收取产品费用的最简单方法是什么?
更新
我注意到一个InvoiceItem
可以带Invoice
身份证的。
以下是否正确(原则上)?
设置autoAdvance
为收集方法true
并CHARGE_AUTOMATICALLY
作为收集方法,用户会按照我打算使用下面的代码正确收费吗?
public void createInvoice() throws StripeException {
String customerId = null;
String paymentMethodId = null;
String priceId = null;
boolean chargeAutomatically = true;
InvoiceCreateParams invoiceCreateParams = InvoiceCreateParams.builder()
.setCustomer(customerId)
.setDefaultPaymentMethod(paymentMethodId)
.setAutoAdvance(chargeAutomatically)
.setCollectionMethod(CollectionMethod.CHARGE_AUTOMATICALLY)
.build();
Invoice invoice = Invoice.create(invoiceCreateParams);
InvoiceItemCreateParams invoiceItemCreateParams = InvoiceItemCreateParams.builder()
.setCustomer(customerId)
.setPrice(priceId)
.setInvoice(invoice.getId())
.build();
InvoiceItem invoiceItem = InvoiceItem.create(invoiceItemCreateParams);
}
一开始创建发票感觉很奇怪,然后设置所有内容以立即向客户收费,只有在这样做之后,才能设置用户想要购买的实际项目。
解决方案
你应该看看这个:https ://stripe.com/docs/billing/invoices/sending#one-off
首先,您需要使用价格和客户 ID 创建发票项目(无需先创建发票)。您可以根据需要创建任意数量的发票项目,具体取决于您要向客户收取的费用。然后,您可以创建一个发票,该发票将自动提取给定客户的所有待处理发票项目。
推荐阅读
- c# - 无法将事件记录到应用程序洞察中
- javascript - 如何映射和过滤对象数组?
- python - 从熊猫数据框创建边缘列表非常慢
- sql - 按列显示数据
- python - 验证键盘输入仅支持 Python 中的单词
- java - 尝试在空对象引用错误时调用虚拟方法“void android.widget.Button.setEnabled(boolean)”
- django - 为某个类别中的每个作者选择页数最少的书
- mysql - 不显示哪个条目具有不需要的值的名称
- php - Laravel 5.8 请求值为 null 而不是默认值
- javascript - 我将如何获得选定的 div 元素颜色变化并将每个选定的 Div elem 存储在 ReactJS 中?