官方文档: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);