整合stripe线上支付收款

官方文档:https://stripe.com/docs/payments/accept-a-payment

stripe返回的收银台页面

在这里插入图片描述

具体收款代码

Stripe.apiKey = stripeKey;
        Customer customer = customerService.getById(ContextUtil.getUserId());
        String currency = info.getCurrency(); //币种
        BigDecimal amount = info.getAmount(); //金额(元) 
        //印尼 和 越南  金额不精确到分 .太毛了
        if (currency.equals("vnd") || currency.equals("idr")) {
            log.info("印尼 和 越南  金额不精确到分");
        }else{
            amount = amount.multiply(BigDecimal.valueOf(100)).setScale(0, RoundingMode.HALF_UP);  //stripe要求传入的金额单位是分
        }
        SessionCreateParams params =
                SessionCreateParams.builder()
                        .setMode(SessionCreateParams.Mode.PAYMENT)
                        .setSuccessUrl(info.getSuccessUrl()) //成功的页面
                        .setCancelUrl(info.getCancelUrl())  //取消的页面
                        .putMetadata("orderId", info.getOrderNO().toString())    //可携带的参数
                        .addLineItem(
                                SessionCreateParams.LineItem.builder()
                                        .setQuantity(1L)
                                        .setPriceData(
                                                SessionCreateParams.LineItem.PriceData.builder()
                                                        .setCurrency(currency)   //币种
                                                        .setUnitAmountDecimal(amount)  //金额  单位:分
                                                        .setProductData(   //接下来是产品信息 ,在stripe后台 配置的
                                                                SessionCreateParams.LineItem.PriceData.ProductData.builder()
                                                                        .setName(info.getProductName())
                                                                        .build())
                                                        .build())
                                        .build())
                        .build();

        Session session = Session.create(params);  //发起请求并得到结果

        MetaPayCollectingPrecessOutParam out = new MetaPayCollectingPrecessOutParam();
        out.setReferenceNo(String.valueOf(info.getOrderNO())); //单号
        out.setUrl(session.getUrl());   //stripe返回的收银台页面,返给前端

        //插入充值 记录 -- 待支付
        RechargeRecord rechargeRecord = RechargeRecord.builder().
                json(JSON.toJSONString(params)).
                orderNo(String.valueOf(info.getOrderNO())).
                thirdOrderNo("stripe_pay").
                email(customer.getEmail())
                .customerId(ContextUtil.getUserId()).
                country(ContextUtil.get(JWT_KEY_COUNTY)).
                rechargeCurrency("充值货币" + (info.getFirstRecharge().equals(1) ? "_首充" : "")).
                rechargeType("stripe_pay").
                passageName("stripe_pay").
                amount(info.getAmount()).
                rechargeBonus(info.getRechargeBonus()).
                platformCurrency(info.getPlatformCurrency()).
                orderTime(LocalDateTime.now()).
                currencySymbol(info.getCurrencySymbol()).
                videoId(info.getVideoId()).
                episodeId(info.getEpisodeId()).
                firstRecharge(info.getFirstRecharge()).
                state(1).
                delFlag(0).
                build();
        rechargeRecordService.save(rechargeRecord);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Stripe支付Java开发可以通过Stripe提供的Java库来实现。使用Stripe Java库,可以使用Stripe的API进行支付操作。以下是Stripe支付Java开发步骤: 1. 引入Stripe Java库:首先需要在Java项目中引入Stripe的Java库。可以通过在项目中添加Stripe依赖项来实现。具体的引入方法可以参考Stripe官方文档。 2. 设置API密钥:在进行Stripe支付之前,需要设置API密钥。可以使用Stripe.apiKey = "YOUR_API_KEY"来设置API密钥。YOUR_API_KEY是从Stripe平台获取的密钥。 3. 创建产品:使用Stripe的Product.create()方法可以创建产品。可以使用Map<String, Object>对象来设置产品的属性,例如名称和图片等。 4. 创建支付:使用Stripe的PaymentIntent.create()方法可以创建支付意图。可以使用Map<String, Object>对象来设置支付意图的属性,例如支付金额、货币、支付方式等。还可以设置自定义参数和回调地址等。 5. 处理支付结果:根据Stripe的返回结果,可以处理支付的成功或失败情况。可以使用回调函数或跳转页面来处理支付结果。 需要注意的是,以上步骤是针对Stripe Checkout支付方式的Java开发。对于其他Stripe支付方式,例如Charges API和Payment Intents API,可以根据具体的API文档进行相应的开发。 请注意,在实际开发中,还需要处理异常情况、进行错误处理和安全性控制等方面的考虑。可以参考Stripe官方文档和示例代码来进行更详细的开发实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* *2* *3* *4* [Stripe API支付(java)多方支付](https://blog.csdn.net/YoungHK/article/details/127488551)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pywanggui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值