From 451850ae96ad4ea86054e92f7a9065b8b4414084 Mon Sep 17 00:00:00 2001 From: zhengfangyuan Date: Wed, 24 Aug 2022 15:35:18 +0800 Subject: [PATCH] fix pay v3 --- .../pay/wx/BaseWxPayAdapterService.java | 2 ++ .../appPay/WxMiniAppPayV3AdapterService.java | 27 +++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java index ba8a06b9b..50ed78f5f 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java @@ -2,6 +2,7 @@ package com.iformall.service.pay.service.pay.wx; import java.io.File; import java.util.Date; +import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; @@ -40,6 +41,7 @@ import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.utils.BeanUtils; import com.iformall.utils.MaUtil; +import com.iformall.utils.MapUtil; import com.iformall.utils.QRCodeUtils; import com.iformall.utils.Utility; diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java index 4de025533..0aa914eda 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -108,7 +109,7 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl return req; } - private PayAdapterResult getOrderPResult(String response,WxPayOrder record) { + private PayAdapterResult getOrderPResult(String response,WxPayOrder record,WxPayAccount payAccount,WxAppinfo appInfo) { PayAdapterResult par = new PayAdapterResult(); if (StringUtils.isBlank(response)) { par.setSuccess(false); @@ -124,11 +125,33 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl par.setMsg("success."); record.setPrepayId(prepayId); record.setUpdateTime(new Date()); + par.setData(getPayRetMap(appInfo, prepayId, payAccount, record)); } } return par; } + private Map getPayRetMap(WxAppinfo appInfo,String prepayId,WxPayAccount payAccount,WxPayOrder record) { + String timestamp = String.valueOf(Utility.getCurrentTimeStamp()); + String noncestr = Utility.generate32UUID(); + Map sighMap = MapUtil.getOrderMap(); + sighMap.put("appId", appInfo.getAppId()); + sighMap.put("timeStamp", timestamp); + sighMap.put("nonceStr", noncestr); + sighMap.put("package", "prepay_id=" + prepayId); + sighMap.put("signType", "RSA"); + String signAgent = WxPayment.createSignHMAC(sighMap, payAccount.getApiKey()); + Map returnMap = new HashMap(); + returnMap.put("appId", appInfo.getAppId()); + returnMap.put("timeStamp", timestamp); + returnMap.put("nonceStr", noncestr); + returnMap.put("package", "prepay_id=" + prepayId); + returnMap.put("paySign", signAgent); + returnMap.put("signType", "RSA"); + returnMap.put("payOrderId", String.valueOf(record.getId())); + return returnMap; + } + private V3CombinePayCommonMiniAppReq generateCombinePayReqeust(WxPayAccount payAccount,WxComposeOrder composeOrder,List childOrders,String productName, WxPayOrder record,WxAppinfo appInfo,String openId,String appId,Date currentDate,EnumPayShare isShare) throws Exception { @@ -191,7 +214,7 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl V3PayCommonMiniAppReq payReq = generatePayCommonRequest(payAccount,composeOrder,productName,record,openId,appInfo,currentDate); try { String response = WxPayV3.payCommonWithMiniApp(payService, payReq); - return getOrderPResult(response,record); + return getOrderPResult(response,record,payAccount,appInfo); }catch(WxPayException e) { log.error("wexin pay v3 error",e); throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),e.getCustomErrorMsg());