添加pcpay 支付

This commit is contained in:
牛叉闪闪
2024-09-12 14:08:03 +08:00
parent 668edeb23c
commit 2695748ab7
17 changed files with 1015 additions and 26 deletions

View File

@@ -1,5 +1,13 @@
package com.chaozhanggui.system.cashierservice.controller;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.request.AlipayUserInfoShareRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.response.AlipayUserInfoShareResponse;
import com.chaozhanggui.system.cashierservice.annotation.LimitSubmit;
import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail;
import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto;
@@ -10,14 +18,18 @@ import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.IpUtil;
import com.chaozhanggui.system.cashierservice.util.RedisCst;
import com.chaozhanggui.system.cashierservice.util.WechatUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
@CrossOrigin(origins = "*")
@RestController
@@ -278,4 +290,98 @@ public class PayController {
){
return payService.getOrderDiscount(staffId, orderId, token);
}
@RequestMapping("pcscanpay")
@LimitSubmit(key = "pcscanpay:%s")
public Result pcscanpay(HttpServletRequest request,@RequestBody PaymentReq paymentReq){
try {
return payService.pcscanpay(paymentReq.getOrderId(),IpUtil.getIpAddr(request),paymentReq.getUserId(),paymentReq.getPayType());
} catch (Exception e) {
e.printStackTrace();
}
return Result.fail(CodeEnum.FAIL);
}
@RequestMapping("createOrder")
public Result createOrder(HttpServletRequest request,@RequestBody PaymentReq paymentReq){
try {
return payService.createOrder(IpUtil.getIpAddr(request),paymentReq.getUserId(),paymentReq.getPayType(),paymentReq.getShopId(),paymentReq.getPayAmount());
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return Result.fail(CodeEnum.FAIL);
}
@Value("${wx.ysk.appId}")
private String appId;
@Value("${wx.ysk.secrete}")
private String secrete;
@Value("${ali.appId}")
private String aliAppId;
@Value("${ali.privateKey}")
private String privateKey;
@Value("${ali.publicKey}")
private String publicKey;
/**
* 获取支付宝或微信openId
* @param code
* @return
*/
@GetMapping("/openId")
public Result getOpenId(
@RequestParam String code,
@RequestParam String payType
) throws AlipayApiException {
if("WECHAT".equals(payType)){
JSONObject SessionKeyOpenId = WechatUtil.getSessionKeyOrOpenId(code, appId, secrete);
log.info("SessionKeyOpenId:{}",SessionKeyOpenId.toString());
String openid = SessionKeyOpenId.getString("openid");
if(Objects.isNull(openid)){
return Result.fail("获取微信id失败");
}
return Result.success(CodeEnum.SUCCESS,openid);
}else if("ALIPAY".equals(payType)){
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppId,privateKey,"json","GBK",publicKey,"RSA2");
AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
AlipayUserInfoShareResponse response = alipayClient.execute(request,code);
log.info("AlipayUserInfoShareResponse:{}",JSONObject.toJSONString(response));
if(!response.isSuccess()){
return Result.fail("获取支付宝userId失败");
}
return Result.success(CodeEnum.SUCCESS,response.getUserId());
}
return Result.fail(CodeEnum.FAIL);
}
}