整合stripe线上支付收款

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

stripe返回的收银台页面

整合stripe线上支付收款_第1张图片

具体收款代码

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);

你可能感兴趣的:(stripe支付,java)