使用 Java 在 Stripe 上创建包含多个项目的结帐会话
Posted
技术标签:
【中文标题】使用 Java 在 Stripe 上创建包含多个项目的结帐会话【英文标题】:Create checkout session with multiple items on Stripe using Java 【发布时间】:2022-01-01 07:07:22 【问题描述】:单击已创建会话的 URL 时出现此错误:
“出了点问题 您可能遇到了网络连接问题,或者目前无法联系到支付提供商。”
代码:
Map<String, Object> paramsPriceIdList1 = new HashMap<>();
paramsPriceIdList.put2("price", price_id1);
paramsPriceIdList.put2("quantity", 2);
Map<String, Object> paramsPriceIdList2 = new HashMap<>();
paramsPriceIdList.put2("price", price_id2);
paramsPriceIdList.put2("quantity", 2);
List<Object> lineItems = new ArrayList<>();
lineItems.add(paramsPriceIdList1);
lineItems.add(paramsPriceIdList2);
Map<String, Object> params = new HashMap<>();
params.put(
"success_url",
"https://example.com/success"
);
params.put(
"cancel_url",
"https://example.com/cancel"
);
params.put("line_items", lineItems);
params.put("mode", "subscription");
Session session = Session.create(params);
System.out.println(session);
如果我尝试只使用 1 个项目,它会起作用。
【问题讨论】:
您能否使用 Stripe API 返回的错误更新您的问题(可能在the request logs section of the Stripe Dashboard 中显示)?我的猜测是其中一个价格 ID 为空或无效,但 Stripe 的错误应该指向我们下一步。 我不知道那个日志部分,谢谢。我没有收到任何错误,响应是 200 以及结帐的 URL,这两个项目都运行良好,当我尝试在同一会话结帐时使用不同的项目时问题就开始了。 【参考方案1】:我认为您的变量名导致了问题。例如,您声明了paramsPriceIdList1
,但从未向其中添加任何内容,然后您拥有从未声明过的paramsPriceIdList
。你也有不存在的方法,比如put2()
。
如果您查看服务器上的错误日志,您应该会看到有关这些错误的详细信息。
我清理了变量和方法名称,这段代码应该可以正常工作:
Map<String, Object> paramsPriceIdList1 = new HashMap<>();
paramsPriceIdList1.put("price", price_id1);
paramsPriceIdList1.put("quantity", 2);
Map<String, Object> paramsPriceIdList2 = new HashMap<>();
paramsPriceIdList2.put("price", price_id2);
paramsPriceIdList2.put("quantity", 2);
List<Object> lineItems = new ArrayList<>();
lineItems.add(paramsPriceIdList1);
lineItems.add(paramsPriceIdList2);
Map<String, Object> params = new HashMap<>();
params.put(
"success_url",
"https://example.com/success"
);
params.put(
"cancel_url",
"https://example.com/cancel"
);
params.put("line_items", lineItems);
params.put("mode", "subscription");
Session session = Session.create(params);
System.out.println(session);
【讨论】:
以上是关于使用 Java 在 Stripe 上创建包含多个项目的结帐会话的主要内容,如果未能解决你的问题,请参考以下文章
使用 Stripe,如何为多个客户附加从 Setup Intent API 创建的单一支付方式