【发布时间】:2021-04-15 05:48:09
【问题描述】:
我正在尝试预览即将开具的按比例收费的发票。
客户在第 1 天从 30 欧元/年计划更改为 65 欧元/年计划(对于按比例计算的日期很重要)。
根据文档here 应向客户收费:
- -30 欧元旧计划的剩余时间
- 新计划的剩余时间为 65 欧元
总共 35 欧元。下一张发票应该是 35 欧元。 使用 Java 库进行以下调用以获取即将到来的发票:
InvoiceUpcomingParams params = InvoiceUpcomingParams.builder()
.setCustomer(userId)
.setSubscription(subscriptionId)
.addSubscriptionItem(
InvoiceUpcomingParams.SubscriptionItem.builder()
.setId(subscription.getItems().getData().get(0).getId())
.setPrice(priceId)
.build()
).setSubscriptionProrationDate(prorationDate)
.build();
生成的发票具有以下属性:
- 支付金额:0
- 应付金额:9999
- 剩余金额:9999
- 小计:9999
...以及以下发票行(ID 已被混淆):
{
"data": [
{
"amount": -3000,
"currency": "eur",
"description": "Unused time on xxxxx after 09 Jan 2021",
"discount_amounts": [],
"discountable": false,
"discounts": [],
"id": "---",
"invoice_item": "---",
"livemode": false,
"metadata": {},
"object": "line_item",
"period": {
"end": 1641756061,
"start": 1610222989
},
"plan": {
"active": true,
"aggregate_usage": null,
"amount": 3000,
"amount_decimal": 3000,
"billing_scheme": "per_unit",
"created": 1598220277,
"currency": "eur",
"deleted": null,
"id": "---",
"interval": "year",
"interval_count": 1,
"livemode": false,
"metadata": {},
"nickname": null,
"object": "plan",
"product": "---",
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"price": {
"active": true,
"billing_scheme": "per_unit",
"created": 1598220277,
"currency": "eur",
"deleted": null,
"id": "---",
"livemode": false,
"lookup_key": null,
"metadata": {},
"nickname": null,
"object": "price",
"product": "---",
"recurring": {
"aggregate_usage": null,
"interval": "year",
"interval_count": 1,
"trial_period_days": null,
"usage_type": "licensed"
},
"tiers": null,
"tiers_mode": null,
"transform_quantity": null,
"type": "recurring",
"unit_amount": 3000,
"unit_amount_decimal": 3000
},
"proration": true,
"quantity": 1,
"subscription": "---",
"subscription_item": "---",
"tax_amounts": [],
"tax_rates": [],
"type": "invoiceitem",
"unified_proration": null
},
{
"amount": 6499,
"currency": "eur",
"description": "Remaining time on xxxx after 09 Jan 2021",
"discount_amounts": [],
"discountable": false,
"discounts": [],
"id": "---",
"invoice_item": "---",
"livemode": false,
"metadata": {},
"object": "line_item",
"period": {
"end": 1641756061,
"start": 1610222989
},
"plan": {
"active": true,
"aggregate_usage": null,
"amount": 6500,
"amount_decimal": 6500,
"billing_scheme": "per_unit",
"created": 1598220248,
"currency": "eur",
"deleted": null,
"id": "---",
"interval": "year",
"interval_count": 1,
"livemode": false,
"metadata": {},
"nickname": null,
"object": "plan",
"product": "---",
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"price": {
"active": true,
"billing_scheme": "per_unit",
"created": 1598220248,
"currency": "eur",
"deleted": null,
"id": "---",
"livemode": false,
"lookup_key": null,
"metadata": {},
"nickname": null,
"object": "price",
"product": "---",
"recurring": {
"aggregate_usage": null,
"interval": "year",
"interval_count": 1,
"trial_period_days": null,
"usage_type": "licensed"
},
"tiers": null,
"tiers_mode": null,
"transform_quantity": null,
"type": "recurring",
"unit_amount": 6500,
"unit_amount_decimal": 6500
},
"proration": true,
"quantity": 1,
"subscription": "---",
"subscription_item": "---",
"tax_amounts": [],
"tax_rates": [],
"type": "invoiceitem",
"unified_proration": null
},
{
"amount": 6500,
"currency": "eur",
"description": "1 × xxxx (at €65.00 / year)",
"discount_amounts": [],
"discountable": true,
"discounts": [],
"id": "---",
"invoice_item": null,
"livemode": false,
"metadata": {},
"object": "line_item",
"period": {
"end": 1673292061,
"start": 1641756061
},
"plan": {
"active": true,
"aggregate_usage": null,
"amount": 6500,
"amount_decimal": 6500,
"billing_scheme": "per_unit",
"created": 1598220248,
"currency": "eur",
"deleted": null,
"id": "---",
"interval": "year",
"interval_count": 1,
"livemode": false,
"metadata": {},
"nickname": null,
"object": "plan",
"product": "---",
"tiers": null,
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
},
"price": {
"active": true,
"billing_scheme": "per_unit",
"created": 1598220248,
"currency": "eur",
"deleted": null,
"id": "---",
"livemode": false,
"lookup_key": null,
"metadata": {},
"nickname": null,
"object": "price",
"product": "---",
"recurring": {
"aggregate_usage": null,
"interval": "year",
"interval_count": 1,
"trial_period_days": null,
"usage_type": "licensed"
},
"tiers": null,
"tiers_mode": null,
"transform_quantity": null,
"type": "recurring",
"unit_amount": 6500,
"unit_amount_decimal": 6500
},
"proration": false,
"quantity": 1,
"subscription": "---",
"subscription_item": "---",
"tax_amounts": [],
"tax_rates": [],
"type": "subscription",
"unified_proration": null
}
],
"has_more": false,
"object": "list",
"request_options": null,
"request_params": null,
"url": "---"
}
简而言之,发票行包含以下内容:
- 2021 年 1 月 9 日之后 xxxxx 上的未使用时间:-3000
- 2021 年 1 月 9 日之后 xxxxx 的剩余时间:6499
- 1 × xxxxx(65.00 欧元/年):6500
问题 1
我认为这是错误的。根据文档here,费用应为:64.99 - 30 = 34.99 欧元
现在,如果我通过实际订阅更新,Stripe 生成的发票确实是 34.99 欧元。因此,我如何调用即将到来的发票 API 或它返回的内容似乎有问题。
我错过了什么?我应该自己从 amountDue 中扣除订阅的价格吗?
【问题讨论】:
标签: java stripe-payments