使用 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 创建的单一支付方式

如何在 Stripe 内循环

Stripe 让多个客户使用相同的电子邮件地址

Parse.com Stripe:创建未捕获的费用

创建包含来源(信用卡)的 Stripe 客户后,能否获取退回的信用卡详细信息?

更新 Stripe 付款金额