diff --git a/pom.xml b/pom.xml
index ce1d5c1..cd0ba79 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
4.4
2.7.0
2.9.9
- 2.8.5
+ 2.10.1
1.2.79
5.7.22
1.18.4
@@ -56,6 +56,12 @@
+
+
+ com.stripe
+ stripe-java
+ 28.2.0
+
com.github.promeg
diff --git a/src/main/java/com/peanut/config/ShiroConfig.java b/src/main/java/com/peanut/config/ShiroConfig.java
index 5256f93..8773ed5 100644
--- a/src/main/java/com/peanut/config/ShiroConfig.java
+++ b/src/main/java/com/peanut/config/ShiroConfig.java
@@ -69,6 +69,8 @@ public class ShiroConfig {
filterMap.put("/pay/payNotify","anon"); // 微信回调接口
filterMap.put("/pay/refundNotify","anon"); // 微信退款回调接口
filterMap.put("/pay/paypal/receivePaypalStatus","anon"); // paypal回调接口
+ filterMap.put("/pay/stripe/callback","anon"); // stripe回调接口
+ filterMap.put("/pay/stripe/transfer","anon"); // stripe中转接口
filterMap.put("/weChat/**","anon");
filterMap.put("/book/baseArea/getAllBaseArea","anon");//登录前获取全部区域
// filterMap.put("/book/bookchaptercontent/**","anon");
diff --git a/src/main/java/com/peanut/modules/bookAbroad/controller/OrderController.java b/src/main/java/com/peanut/modules/bookAbroad/controller/OrderController.java
index b3f38d7..1601296 100644
--- a/src/main/java/com/peanut/modules/bookAbroad/controller/OrderController.java
+++ b/src/main/java/com/peanut/modules/bookAbroad/controller/OrderController.java
@@ -2,10 +2,10 @@ package com.peanut.modules.bookAbroad.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
-import com.github.promeg.pinyinhelper.Pinyin;
import com.peanut.common.utils.R;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.config.Constants;
+import com.peanut.config.DelayQueueConfig;
import com.peanut.modules.book.service.BuyOrderService;
import com.peanut.modules.book.service.TransactionDetailsService;
import com.peanut.modules.book.service.UserEbookBuyService;
@@ -16,6 +16,8 @@ import com.peanut.modules.common.entity.UserEbookBuyEntity;
import com.peanut.modules.common.service.BookService;
import com.peanut.modules.common.service.MyUserService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.MessagePostProcessor;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
@@ -41,6 +43,8 @@ public class OrderController {
private TransactionDetailsService transactionDetailsService;
@Autowired
private UserEbookBuyService userEbookBuyService;
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
//海外读书下单
@RequestMapping("/placeOrder")
@@ -71,13 +75,6 @@ public class OrderController {
}
buyOrder.setRealMoney(totalPrice);
String bookName = bookEntity.getName();
- char[] cs = bookEntity.getName().toCharArray();
- for (int i = 0; i < cs.length; i++) {
- if (Pinyin.isChinese(cs[i])){
- bookName = Pinyin.toPinyin(bookEntity.getName(), " ").toLowerCase();
- break;
- }
- }
buyOrder.setRemark("Purchase the e-book '"+bookName+"'");
buyOrder.setOrderStatus("0");
buyOrder.setOrderType("abroadBook");
@@ -101,9 +98,22 @@ public class OrderController {
return R.error(500, "Insufficient Balance!");
}
}
+ rabbitTemplate.convertAndSend(
+ DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE,
+ DelayQueueConfig.ORDER_TO_BE_PAY_ROUTING_KEY,
+ buyOrder.getOrderId(),
+ messagePostProcessor()
+ );
Map result = new HashMap<>();
result.put("orderSn", buyOrder.getOrderSn());
return R.ok(result);
}
+ private MessagePostProcessor messagePostProcessor() {
+ return message -> {
+ //设置有效期30分钟
+ message.getMessageProperties().setExpiration(String.valueOf(30 * 60 * 1000));
+ return message;
+ };
+ }
}
diff --git a/src/main/java/com/peanut/modules/common/dao/PayStripeOrderDao.java b/src/main/java/com/peanut/modules/common/dao/PayStripeOrderDao.java
new file mode 100644
index 0000000..f264d6c
--- /dev/null
+++ b/src/main/java/com/peanut/modules/common/dao/PayStripeOrderDao.java
@@ -0,0 +1,9 @@
+package com.peanut.modules.common.dao;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.peanut.modules.common.entity.PayStripeOrder;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PayStripeOrderDao extends MPJBaseMapper {
+}
diff --git a/src/main/java/com/peanut/modules/common/entity/PayStripeOrder.java b/src/main/java/com/peanut/modules/common/entity/PayStripeOrder.java
new file mode 100644
index 0000000..fa6eff6
--- /dev/null
+++ b/src/main/java/com/peanut/modules/common/entity/PayStripeOrder.java
@@ -0,0 +1,37 @@
+package com.peanut.modules.common.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+//paypal支付实体
+@Data
+@TableName("pay_stripe_order")
+public class PayStripeOrder implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId
+ private Integer id;
+ //用户Id
+ private Integer userId;
+ //订单Id
+ private Integer orderId;
+ //订单编号
+ private String orderSn;
+ //创建订单时间
+ private Date createTime;
+ //创建订单时的sessionId,用于查询订单状态
+ private String sessionId;
+ //(chargeId)支付完成后的回调id,用于退款
+ private String stripeId;
+ //金额
+ private String amount;
+ //付款时间
+ private Date payTime;
+ //回调数据
+ private String callbackData;
+
+}
diff --git a/src/main/java/com/peanut/modules/common/service/PayStripeOrderService.java b/src/main/java/com/peanut/modules/common/service/PayStripeOrderService.java
new file mode 100644
index 0000000..fa0f62a
--- /dev/null
+++ b/src/main/java/com/peanut/modules/common/service/PayStripeOrderService.java
@@ -0,0 +1,7 @@
+package com.peanut.modules.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.peanut.modules.common.entity.PayStripeOrder;
+
+public interface PayStripeOrderService extends IService {
+}
diff --git a/src/main/java/com/peanut/modules/common/service/impl/PayStripeOrderServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/PayStripeOrderServiceImpl.java
new file mode 100644
index 0000000..a60ab8c
--- /dev/null
+++ b/src/main/java/com/peanut/modules/common/service/impl/PayStripeOrderServiceImpl.java
@@ -0,0 +1,13 @@
+package com.peanut.modules.common.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.peanut.modules.common.dao.PayStripeOrderDao;
+import com.peanut.modules.common.entity.PayStripeOrder;
+import com.peanut.modules.common.service.PayStripeOrderService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service("payStripeOrderService")
+public class PayStripeOrderServiceImpl extends ServiceImpl implements PayStripeOrderService {
+}
diff --git a/src/main/java/com/peanut/modules/mq/Consumer/OrderCancelConsumer.java b/src/main/java/com/peanut/modules/mq/Consumer/OrderCancelConsumer.java
index 8f5033e..dccfa68 100644
--- a/src/main/java/com/peanut/modules/mq/Consumer/OrderCancelConsumer.java
+++ b/src/main/java/com/peanut/modules/mq/Consumer/OrderCancelConsumer.java
@@ -3,16 +3,20 @@ package com.peanut.modules.mq.Consumer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.peanut.config.Constants;
import com.peanut.config.DelayQueueConfig;
+import com.peanut.modules.book.service.*;
import com.peanut.modules.common.dao.BuyOrderProductDao;
import com.peanut.modules.common.dao.ShopProductDao;
-import com.peanut.modules.common.entity.BuyOrder;
-import com.peanut.modules.common.entity.BuyOrderProduct;
-import com.peanut.modules.common.entity.ShopProduct;
-import com.peanut.modules.book.service.BuyOrderService;
+import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.CouponService;
+import com.peanut.modules.common.service.PayStripeOrderService;
+import com.peanut.modules.pay.stripe.StripeConfig;
+import com.stripe.model.PaymentIntent;
+import com.stripe.model.checkout.Session;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.Arrays;
+import java.util.Date;
import java.util.List;
/**
@@ -31,6 +35,20 @@ public class OrderCancelConsumer {
ShopProductDao shopProductDao;
@Autowired
CouponService couponService;
+ @Autowired
+ private PayStripeOrderService payStripeOrderService;
+ @Autowired
+ private StripeConfig stripeConfig;
+ @Autowired
+ private UserEbookBuyService userEbookBuyService;
+ @Autowired
+ private BookBuyConfigService bookBuyConfigService;
+ @Autowired
+ private MyUserService userService;
+ @Autowired
+ private TransactionDetailsService transactionDetailsService;
+ @Autowired
+ private PayPaymentOrderService payPaymentOrderService;
@RabbitListener(queues = DelayQueueConfig.ORDER_CANCEL_DEAD_LETTER_QUEUE)
public void orderConsumer(String orderId) {
@@ -39,6 +57,39 @@ public class OrderCancelConsumer {
return;
}
if(Constants.ORDER_STATUS_TO_BE_PAID.equals(buyOrder.getOrderStatus())){
+ if ("5".equals(buyOrder.getPaymentMethod())){
+ //查询订单,是否已完成但未收到回调
+ PayStripeOrder payStripeOrder = payStripeOrderService.getOne(new LambdaQueryWrapper()
+ .eq(PayStripeOrder::getOrderSn,buyOrder.getOrderSn()));
+ if (payStripeOrder != null) {
+ Session session = stripeConfig.queryOrderSession(payStripeOrder.getSessionId());
+ if (session != null&&"complete".equals(session.getStatus())){
+ payStripeOrder.setStripeId(session.getPaymentIntent());
+ PaymentIntent intent = stripeConfig.queryOrderIntent(session.getPaymentIntent());
+ payStripeOrder.setAmount(intent.getAmount()+"");
+ payStripeOrder.setPayTime(new Date(intent.getCreated()*1000));
+ payStripeOrder.setCallbackData(intent.toString());
+ payStripeOrderService.updateById(payStripeOrder);
+ if ("abroadBook".equals(buyOrder.getOrderType())){
+ userEbookBuyService.addBookForUser(buyOrder.getUserId(), Arrays.asList(buyOrder.getAbroadBookId()));
+ }
+ if ("point".equals(buyOrder.getOrderType())){
+ BookBuyConfigEntity bookBuyConfigEntity = bookBuyConfigService.getById(buyOrder.getProductId());
+ MyUserEntity userEntity = userService.getById(buyOrder.getUserId());
+ String money = bookBuyConfigEntity.getMoney();
+ //更新账户余额
+ userService.rechargeHSPoint(userEntity,Integer.valueOf(money));
+ //插入虚拟币消费记录
+ transactionDetailsService.rechargeRecord(userEntity,money,payStripeOrder.getId(),"StripePay",buyOrder.getOrderSn());
+ //插入花生币充值记录
+ payPaymentOrderService.insertDetail(userEntity,bookBuyConfigEntity,payStripeOrder.getId().toString());
+ }
+ buyOrder.setOrderStatus("3");
+ buyOrderService.updateById(buyOrder);
+ return;
+ }
+ }
+ }
buyOrder.setOrderStatus(Constants.ORDER_STATUS_OUT_OF_TIME);
//回滚优惠卷
if (buyOrder.getCouponId()!=null&&buyOrder.getCouponId()!=0){
diff --git a/src/main/java/com/peanut/modules/pay/stripe/StripeConfig.java b/src/main/java/com/peanut/modules/pay/stripe/StripeConfig.java
new file mode 100644
index 0000000..2ffcc59
--- /dev/null
+++ b/src/main/java/com/peanut/modules/pay/stripe/StripeConfig.java
@@ -0,0 +1,133 @@
+package com.peanut.modules.pay.stripe;
+
+import com.peanut.modules.common.entity.BuyOrder;
+import com.stripe.Stripe;
+import com.stripe.model.Event;
+import com.stripe.model.PaymentIntent;
+import com.stripe.model.Price;
+import com.stripe.model.checkout.Session;
+import com.stripe.net.Webhook;
+import com.stripe.param.PaymentIntentCreateParams;
+import com.stripe.param.PriceCreateParams;
+import com.stripe.param.checkout.SessionCreateParams;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.util.IOUtils;
+import org.springframework.stereotype.Component;
+import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
+
+@Component
+@Slf4j
+public class StripeConfig {
+
+ private String apiKey = "sk_test_51QgdjVPKgQFCEmmSh73AmFpze4tU6bIbjXrcmN9RMwYOuMMKAwRvP6OAHdLZMwCbQDWka3iqrZMj0JpyFzpe6w5o00Val258i6";
+ private String endpointSecret = "whsec_nLR7C84EILXloWGc8wD9WZd4fTAscm5z";
+ //4242 4242 4242 4242
+
+ public Session createOrder(BuyOrder buyOrder,String successUrl,String cancelUrl){
+ try{
+ Stripe.apiKey = apiKey;
+ PriceCreateParams priceParams =
+ PriceCreateParams.builder()
+ .setCurrency("usd")
+ .setUnitAmount(buyOrder.getRealMoney().multiply(new BigDecimal(100)).longValue())//金额,单位为分所以*100
+ .setProductData(
+ PriceCreateParams.ProductData.builder().setName(buyOrder.getRemark()).build()
+ )
+ .build();
+ Price price = Price.create(priceParams);
+ // 生成付款link
+ SessionCreateParams sessionParams =
+ SessionCreateParams.builder()
+ .setMode(SessionCreateParams.Mode.PAYMENT)
+ .addPaymentMethodType(SessionCreateParams.PaymentMethodType.CARD)
+ .setSuccessUrl(successUrl)
+ .setCancelUrl(cancelUrl)
+ .setClientReferenceId(buyOrder.getOrderSn())
+ .setPaymentIntentData(SessionCreateParams.PaymentIntentData.builder()
+ .putMetadata("orderSn", buyOrder.getOrderSn()).build())// 构建付款成功后需要用到的参数
+ .addLineItem(
+ SessionCreateParams.LineItem.builder()
+ .setPrice(price.getId())
+ .setQuantity(1L).build()
+ )
+ .build();
+ Session session = Session.create(sessionParams);
+ log.info(">>>>>>>>>>>stripe下单返回的信息是 result = {}", session.toString());
+ return session;
+ }catch (Exception e) {
+ log.error(">>>>>>>>>>:stripe创建订单网络连接失败 reason = {}", e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ public PaymentIntent createPaymentIntent(){
+ try{
+ Stripe.apiKey = apiKey;
+ PaymentIntentCreateParams params =
+ PaymentIntentCreateParams.builder()
+ .setAmount(2000L)
+ .setCurrency("usd")
+ .setAutomaticPaymentMethods(
+ PaymentIntentCreateParams.AutomaticPaymentMethods.builder()
+ .setEnabled(true)
+ .build()
+ )
+ .build();
+ PaymentIntent paymentIntent = PaymentIntent.create(params);
+ log.info(">>>>>>>>>>>stripeSession查询的信息是 result = {}", paymentIntent.toJson());
+ return paymentIntent;
+ }catch (Exception e) {
+ log.error(">>>>>>>>>>:stripeSession查询失败 reason = {}", e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ public Session queryOrderSession(String stripeSessionId){
+ try{
+ Stripe.apiKey = apiKey;
+ Session session = Session.retrieve(stripeSessionId);
+ log.info(">>>>>>>>>>>stripeSession查询的信息是 result = {}", session.toJson());
+ return session;
+ }catch (Exception e) {
+ log.error(">>>>>>>>>>:stripeSession查询失败 reason = {}", e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ public PaymentIntent queryOrderIntent(String stripeIntentId){
+ try{
+ Stripe.apiKey = apiKey;
+ PaymentIntent intent = PaymentIntent.retrieve(stripeIntentId);
+ log.info(">>>>>>>>>>>stripeIntent查询的信息是 result = {}", intent.toJson());
+ return intent;
+ }catch (Exception e) {
+ log.error(">>>>>>>>>>:stripeIntent查询失败 reason = {}", e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ public Event callback(HttpServletRequest request){
+ try{
+ Stripe.apiKey = apiKey;
+ InputStream inputStream = request.getInputStream();
+ byte[] bytes = IOUtils.toByteArray(inputStream);
+ String payload = new String(bytes, StandardCharsets.UTF_8);
+ String sigHeader = request.getHeader("Stripe-Signature");
+ Event event = Webhook.constructEvent(payload, sigHeader, endpointSecret);
+ log.info(">>>>>>>>>>>stripe回调的信息是 result = {}", event.toJson());
+ return event;
+ }catch (Exception e) {
+ log.error(">>>>>>>>>>:stripe回调失败 reason = {}", e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+}
diff --git a/src/main/java/com/peanut/modules/pay/stripe/StripeController.java b/src/main/java/com/peanut/modules/pay/stripe/StripeController.java
new file mode 100644
index 0000000..0a684d6
--- /dev/null
+++ b/src/main/java/com/peanut/modules/pay/stripe/StripeController.java
@@ -0,0 +1,181 @@
+package com.peanut.modules.pay.stripe;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.peanut.common.utils.R;
+import com.peanut.modules.book.service.*;
+import com.peanut.modules.common.entity.BookBuyConfigEntity;
+import com.peanut.modules.common.entity.BuyOrder;
+import com.peanut.modules.common.entity.MyUserEntity;
+import com.peanut.modules.common.entity.PayStripeOrder;
+import com.peanut.modules.common.service.PayStripeOrderService;
+import com.stripe.Stripe;
+import com.stripe.model.*;
+import com.stripe.model.checkout.Session;
+import com.stripe.param.PaymentIntentCreateParams;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * stripe支付
+ */
+@RestController
+@RequestMapping("/pay/stripe")
+@Slf4j
+public class StripeController {
+ @Autowired
+ private StripeConfig stripeConfig;
+ @Autowired
+ private BuyOrderService buyOrderService;
+ @Autowired
+ private PayStripeOrderService payStripeOrderService;
+ @Autowired
+ private UserEbookBuyService userEbookBuyService;
+ @Autowired
+ private BookBuyConfigService bookBuyConfigService;
+ @Autowired
+ private MyUserService userService;
+ @Autowired
+ private TransactionDetailsService transactionDetailsService;
+ @Autowired
+ private PayPaymentOrderService payPaymentOrderService;
+
+ @RequestMapping("/createOrder")
+ public R createOrder(@RequestBody Map params){
+ int pso = payStripeOrderService.count(new LambdaQueryWrapper()
+ .eq(PayStripeOrder::getOrderSn,params.get("orderSn")));
+ if (pso > 0) {
+ return R.error("An order already exists, please place a new order.");
+ }
+ BuyOrder buyOrder = buyOrderService.getOne(new LambdaQueryWrapper()
+ .eq(BuyOrder::getOrderSn,params.get("orderSn")));
+ if (!"0".equals(buyOrder.getOrderStatus())){
+ return R.error("Abnormal order status");
+ }
+ if ("point".equals(buyOrder.getOrderType())){
+ buyOrder.setRemark("Recharge Virtual Coin");
+ }
+ Session session = stripeConfig.createOrder(
+ buyOrder,
+ params.get("successUrl").toString(),
+ params.get("cancelUrl").toString());
+ if (session != null) {
+ PayStripeOrder payStripeOrder = new PayStripeOrder();
+ payStripeOrder.setOrderId(buyOrder.getOrderId());
+ payStripeOrder.setOrderSn(buyOrder.getOrderSn());
+ payStripeOrder.setUserId(buyOrder.getUserId());
+ payStripeOrder.setCreateTime(new Date());
+ payStripeOrder.setSessionId(session.getId());
+ payStripeOrderService.save(payStripeOrder);
+ return R.ok().put("id",session.getId()).put("url",session.getUrl());
+ }else {
+ return R.error("failed");
+ }
+ }
+
+ @RequestMapping("/createPaymentIntent")
+ public R createPaymentIntent(){
+ PaymentIntent paymentIntent = stripeConfig.createPaymentIntent();
+ return R.ok().put("clientSecret",paymentIntent.getClientSecret());
+ }
+
+ @RequestMapping("/queryOrderSession")
+ public R queryOrderSession(@RequestBody Map params){
+ Session session = stripeConfig.queryOrderSession(params.get("stripeSessionId").toString());
+ return R.ok().put("url",session.toString());
+ }
+
+ @RequestMapping("/queryOrderIntent")
+ public R queryOrderIntent(@RequestBody Map params){
+ PaymentIntent intent = stripeConfig.queryOrderIntent(params.get("stripeIntentId").toString());
+ return R.ok().put("url",intent.toString());
+ }
+
+ @RequestMapping("/callback")
+ @Transactional
+ public void callback(HttpServletRequest request){
+ Event event = stripeConfig.callback(request);
+ if ("payment_intent.succeeded".equals(event.getType())){
+ StripeObject eventObj = event.getDataObjectDeserializer().getObject().get();
+ PaymentIntent intent = (PaymentIntent) eventObj;
+ Map metaData = intent.getMetadata();//自定义传入的参数
+ String orderSn = metaData.get("orderSn");//自定义订单号
+ PayStripeOrder payStripeOrder = payStripeOrderService.getOne(new LambdaQueryWrapper()
+ .eq(PayStripeOrder::getOrderSn,orderSn));
+ payStripeOrder.setStripeId(intent.getId());
+ payStripeOrder.setAmount(intent.getAmount()+"");
+ payStripeOrder.setPayTime(new Date(intent.getCreated()*1000));
+ payStripeOrder.setCallbackData(intent.toString());
+ payStripeOrderService.updateById(payStripeOrder);
+ BuyOrder buyOrder = buyOrderService.getById(payStripeOrder.getOrderId());
+ if ("abroadBook".equals(buyOrder.getOrderType())){
+ userEbookBuyService.addBookForUser(buyOrder.getUserId(), Arrays.asList(buyOrder.getAbroadBookId()));
+ }
+ if ("point".equals(buyOrder.getOrderType())){
+ BookBuyConfigEntity bookBuyConfigEntity = bookBuyConfigService.getById(buyOrder.getProductId());
+ MyUserEntity userEntity = userService.getById(buyOrder.getUserId());
+ String money = bookBuyConfigEntity.getMoney();
+ //更新账户余额
+ userService.rechargeHSPoint(userEntity,Integer.valueOf(money));
+ //插入虚拟币消费记录
+ transactionDetailsService.rechargeRecord(userEntity,money,payStripeOrder.getId(),"Stripe",buyOrder.getOrderSn());
+ //插入花生币充值记录
+ payPaymentOrderService.insertDetail(userEntity,bookBuyConfigEntity,payStripeOrder.getId().toString());
+ }
+ buyOrder.setOrderStatus("3");
+ buyOrderService.updateById(buyOrder);
+ }
+ }
+
+ @RequestMapping("/transfer")
+ public String transfer(String paymentStatus){
+ String res = "\n" +
+ "\n" +
+ "\n" +
+ "\n" +
+ "\n" +
+ "\n" +
+ "Title\n" +
+ "\n" +
+ "\n" +
+ " 3s后自动跳转页面
\n" +
+ " 关闭页面
\n" +
+ "" +
+ "\n" +
+ "\n" +
+ "\n" +
+ "\n";
+ return res;
+ }
+
+
+}