添加新版开放平台支付

This commit is contained in:
韩鹏辉
2024-05-17 16:59:25 +08:00
parent 8ce08d18a3
commit 1da6507162
4 changed files with 85 additions and 32 deletions

View File

@@ -21,6 +21,13 @@ public class TbMerchantThirdApply implements Serializable {
private String appToken;
private String smallAppid;
private String storeId;
private static final long serialVersionUID = 1L;
public Integer getId() {
@@ -94,4 +101,20 @@ public class TbMerchantThirdApply implements Serializable {
public void setAppToken(String appToken) {
this.appToken = appToken == null ? null : appToken.trim();
}
public String getSmallAppid() {
return smallAppid;
}
public void setSmallAppid(String smallAppid) {
this.smallAppid = smallAppid;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
}

View File

@@ -21,10 +21,7 @@ import com.chaozhanggui.system.cashierservice.thirdpay.resp.OrderStatusQueryResp
import com.chaozhanggui.system.cashierservice.thirdpay.resp.PublicResp;
import com.chaozhanggui.system.cashierservice.thirdpay.resp.WxScanPayResp;
import com.chaozhanggui.system.cashierservice.thirdpay.service.ThirdPayService;
import com.chaozhanggui.system.cashierservice.util.BeanUtil;
import com.chaozhanggui.system.cashierservice.util.MD5Util;
import com.chaozhanggui.system.cashierservice.util.N;
import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil;
import com.chaozhanggui.system.cashierservice.util.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -236,7 +233,7 @@ public class PayService {
reqbody=body.toString();
}
PublicResp<WxScanPayResp> publicResp= thirdPayService.scanpay(thirdUrl,thirdApply.getAppId(),reqbody,reqbody,payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).longValue(),"wx212769170d2c6b2a","wx212769170d2c6b2a",openId,ip,orderInfo.getOrderNo(),"S2405103298",callBack,null,thirdApply.getAppToken());
PublicResp<WxScanPayResp> publicResp= thirdPayService.scanpay(thirdUrl,thirdApply.getAppId(),reqbody,reqbody,payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).longValue(),"WECHAT",thirdApply.getSmallAppid(),openId,ip,orderInfo.getOrderNo(),thirdApply.getStoreId(),callBack,null,thirdApply.getAppToken());
if(ObjectUtil.isNotNull(publicResp)&&ObjectUtil.isNotEmpty(publicResp)){
if("000000".equals(publicResp.getCode())){
WxScanPayResp wxScanPayResp= publicResp.getObjData();
@@ -385,7 +382,7 @@ public class PayService {
reqbody=body.toString();
}
PublicResp<WxScanPayResp> publicResp= thirdPayService.scanpay(thirdUrl,thirdApply.getAppId(),reqbody,reqbody,payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).longValue(),"wx212769170d2c6b2a","wx212769170d2c6b2a",userId,ip,orderInfo.getOrderNo(),"S2405103298",callBack,null,thirdApply.getAppToken());
PublicResp<WxScanPayResp> publicResp= thirdPayService.scanpay(thirdUrl,thirdApply.getAppId(),reqbody,reqbody,payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).longValue(),"WECHAT",thirdApply.getSmallAppid(),userId,ip,orderInfo.getOrderNo(),thirdApply.getStoreId(),callBack,null,thirdApply.getAppToken());
if(ObjectUtil.isNotNull(publicResp)&&ObjectUtil.isNotEmpty(publicResp)){
if("000000".equals(publicResp.getCode())){
WxScanPayResp wxScanPayResp= publicResp.getObjData();
@@ -430,6 +427,7 @@ public class PayService {
}
TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(groupOrderInfo.getMerchantId());
MsgException.checkNull(thirdApply, "支付参数配置错误");
ReturnOrderReq req = new ReturnOrderReq();
req.setAppId(thirdApply.getAppId());
req.setTimestamp(System.currentTimeMillis());
@@ -547,7 +545,7 @@ public class PayService {
}
}
}else {
PublicResp<OrderStatusQueryResp> publicResp=thirdPayService.queryOrder(thirdUrl,thirdApply.getAppId(),orderInfo.getOrderNo(),null,thirdApply.getAppToken());
PublicResp<OrderStatusQueryResp> publicResp=thirdPayService.queryOrder(thirdUrl,thirdApply.getAppId(),payment.getTradeNumber(),null,thirdApply.getAppToken());
if(ObjectUtil.isNotNull(publicResp)&&ObjectUtil.isNotEmpty(publicResp)){
if("000000".equals(publicResp.getCode())){
String cartStatus="";
@@ -641,37 +639,59 @@ public class PayService {
tbMemberInMapper.insert(memberIn);
if("ysk".equals(thirdPayType)){
PayReq req=new PayReq();
PayReq req=new PayReq();
req.setAppId(thirdApply.getAppId());
req.setTimestamp(System.currentTimeMillis());
req.setIp(ip);
req.setMercOrderNo(SnowFlakeUtil.generateOrderNo());
req.setNotifyUrl(callBackIn);
req.setPayAmt(amount);
req.setPayType("03");
req.setPayWay("WXZF");
req.setSubject("充值");
req.setUserId(openId);
req.setAppId(thirdApply.getAppId());
req.setTimestamp(System.currentTimeMillis());
req.setIp(ip);
req.setMercOrderNo(SnowFlakeUtil.generateOrderNo());
req.setNotifyUrl(callBackIn);
req.setPayAmt(amount);
req.setPayType("03");
req.setPayWay("WXZF");
req.setSubject("充值");
req.setUserId(openId);
Map<String,Object> map= BeanUtil.transBeanMap(req);
req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
Map<String,Object> map= BeanUtil.transBeanMap(req);
req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
ResponseEntity<String> response= restTemplate.postForEntity(url.concat("trans/pay"),req,String.class);
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
JSONObject object=JSONObject.parseObject(response.getBody());
if(object.get("code").equals("0")){
memberIn.setOrderNo(object.getJSONObject("data").get("orderNumber").toString());
memberIn.setUpdateTime(new Date());
tbMemberInMapper.updateByPrimaryKeySelective(memberIn);
ResponseEntity<String> response= restTemplate.postForEntity(url.concat("trans/pay"),req,String.class);
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
JSONObject object=JSONObject.parseObject(response.getBody());
if(object.get("code").equals("0")){
memberIn.setOrderNo(object.getJSONObject("data").get("orderNumber").toString());
memberIn.setUpdateTime(new Date());
tbMemberInMapper.updateByPrimaryKeySelective(memberIn);
return Result.success(CodeEnum.SUCCESS,object.getJSONObject("data"));
}else {
return Result.fail(object.getString("msg"));
return Result.success(CodeEnum.SUCCESS,object.getJSONObject("data"));
}else {
return Result.fail(object.getString("msg"));
}
}
}else {
PublicResp<WxScanPayResp> publicResp= thirdPayService.scanpay(thirdUrl,thirdApply.getAppId(),"会员充值","会员充值",new BigDecimal(amount).setScale(2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).longValue(),"WECHAT",thirdApply.getSmallAppid(),userId,ip, DateUtils.getsdfTimesSS(),thirdApply.getStoreId(),callBack,null,thirdApply.getAppToken());
if(ObjectUtil.isNotNull(publicResp)&&ObjectUtil.isNotEmpty(publicResp)){
if("000000".equals(publicResp.getCode())){
WxScanPayResp wxScanPayResp= publicResp.getObjData();
if("TRADE_SUCCESS".equals(wxScanPayResp.getState())){
memberIn.setOrderNo(wxScanPayResp.getPayOrderId());
memberIn.setUpdateTime(new Date());
tbMemberInMapper.updateByPrimaryKeySelective(memberIn);
return Result.success(CodeEnum.SUCCESS,wxScanPayResp.getPayInfo());
}else{
return Result.fail(publicResp.getMsg());
}
}
}
}
return Result.fail("失败");
}

View File

@@ -25,6 +25,8 @@ public class DateUtils {
private final static SimpleDateFormat sdfTimeSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss");
private final static SimpleDateFormat sdfTimesSS = new SimpleDateFormat("yyyyMMddHHmmssSSS");
private final static SimpleDateFormat sdfday = new SimpleDateFormat("MM-dd HH:mm");
@@ -77,6 +79,12 @@ public class DateUtils {
}
public static String getsdfTimesSS(){
return sdfTimesSS.format(new Date());
}
public static String getNextSdfTimes(Date date){
return sdfTimes.format(date);
}

View File

@@ -10,12 +10,14 @@
<result column="applyment_state" jdbcType="VARCHAR" property="applymentState" />
<result column="created_at" jdbcType="BIGINT" property="createdAt" />
<result column="updated_at" jdbcType="BIGINT" property="updatedAt" />
<result column="small_appid" jdbcType="VARCHAR" property="smallAppid" />
<result column="store_id" jdbcType="VARCHAR" property="storeId" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.chaozhanggui.system.cashierservice.entity.TbMerchantThirdApply">
<result column="app_token" jdbcType="LONGVARCHAR" property="appToken" />
</resultMap>
<sql id="Base_Column_List">
id, type, app_id, status, pay_password, applyment_state, created_at, updated_at
id, type, app_id, status, pay_password, applyment_state, created_at, updated_at,small_appid,store_id
</sql>
<sql id="Blob_Column_List">
app_token