diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPay.java b/mallinkService/src/main/java/com/iformall/pay/WxPay.java index d95755537..ac2f5f991 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPay.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPay.java @@ -80,6 +80,9 @@ public class WxPay { public static String pushOrder(Map params) { return doPost(UNIFIEDORDER_URL, params); } + public static String pushOrderWithChines(Map params) { + return doPostWithChinese(UNIFIEDORDER_URL, params); + } /** * 订单查询 @@ -333,6 +336,10 @@ public class WxPay { public static String doPost(String url, Map params) { return HttpUtil.payPost(url, WxPayment.toXml(params)); } + + public static String doPostWithChinese(String url, Map params) { + return HttpUtil.payPost(url, WxPayment.toXmlWhitChinese(params)); + } public static String doPostSSL(String url, Map params, String certPath, String certPass) { return HttpUtil.payPostSSL(url, WxPayment.toXml(params), certPath, certPass); diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayment.java b/mallinkService/src/main/java/com/iformall/pay/WxPayment.java index 538e5d726..d7ff0f61c 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayment.java @@ -486,7 +486,7 @@ public class WxPayment { * 参数 * @return String */ - public static String toXml(Map params) { + private static String toXmlContent(Map params,boolean containChinese) { StringBuilder xml = new StringBuilder(); xml.append(""); for (Entry entry : params.entrySet()) { @@ -501,12 +501,24 @@ public class WxPayment { } xml.append(""); try { - return new String(xml.toString().getBytes("utf-8"),"ISO-8859-1"); + if (containChinese) { + return new String(xml.toString().getBytes("utf-8"),"ISO-8859-1"); + }else { + return xml.toString(); + } } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; } } + + public static String toXml(Map params) { + return toXmlContent(params,false); + } + + public static String toXmlWhitChinese(Map params) { + return toXmlContent(params,true); + } /** * 针对支付的xml,没有嵌套节点的简单处理 diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java index e91d9096f..69c655ac7 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -279,7 +279,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem public PayAdapterResult pay(String openId,String appId,String mchId,String productName,String attach,String payOrderNo,Integer fee,String ip,String notifyUrl,String apiKey,Date currentDate) throws Exception { WxPayOrderP wxPayOrderP = generateWxPayOrderP(openId, appId, mchId, productName, attach, payOrderNo, fee, ip, notifyUrl, apiKey, currentDate,null); - String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); + String response = WxPay.pushOrderWithChines(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); return getOrderPResult(returnMap,wxPayOrderP.getNonce_str(),apiKey,null); @@ -288,7 +288,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem public PayAdapterResult payIsv(WxPayAccount payAccount,WxAppinfo appInfo,String subMchId,String openId,String productName,String attach,String payOrderNo,Integer fee,String ip,String notifyUrl,Date currentDate,boolean share) throws Exception { String apiKey = payAccount.getApiKey(); WxPayOrderSP wxPayOrderP = generateWxPayOrderSP(openId,appInfo.getParentAppId(),payAccount.getMchId(),appInfo.getAppId(),subMchId,productName,attach,payOrderNo,fee,ip,notifyUrl,null,currentDate,share,apiKey); - String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); + String response = WxPay.pushOrderWithChines(BeanUtils.toStringMap(wxPayOrderP)); log.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); return getOrderSPResult(returnMap,null,appInfo.getAppId(),wxPayOrderP.getNonce_str(),apiKey);