记得上下班打卡 | git大法好,push需谨慎

Commit 1a008a15 authored by zhengfuxin's avatar zhengfuxin

修改抖音支付回调。

parent ce1f2675
...@@ -84,7 +84,7 @@ public class PayChannelStrategyDouYinImpl extends AbstractPayChannelStrategyImpl ...@@ -84,7 +84,7 @@ public class PayChannelStrategyDouYinImpl extends AbstractPayChannelStrategyImpl
if (DragonConstant.PayStatusEnum.STATUS_PAID.getCode().equals(dragonOrdersDto.getStatus())) { if (DragonConstant.PayStatusEnum.STATUS_PAID.getCode().equals(dragonOrdersDto.getStatus())) {
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ERROR_HAS_PAID.getCode(),DragonErrorCodeEnum.TRADE_ERROR_HAS_PAID.getMessage()); throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ERROR_HAS_PAID.getCode(),DragonErrorCodeEnum.TRADE_ERROR_HAS_PAID.getMessage());
} }
String sign = msg.get("msg_signature").toString(); String sign = jsonObject.get("msg_signature").toString();
boolean notifyResult = false; boolean notifyResult = false;
if (PayDouYinpayUtils.getInstance().notifySign( sign,jsonObject)) {// 根据配置信息验证签名 if (PayDouYinpayUtils.getInstance().notifySign( sign,jsonObject)) {// 根据配置信息验证签名
//抖音回调 就代表成功了 //抖音回调 就代表成功了
...@@ -98,8 +98,10 @@ public class PayChannelStrategyDouYinImpl extends AbstractPayChannelStrategyImpl ...@@ -98,8 +98,10 @@ public class PayChannelStrategyDouYinImpl extends AbstractPayChannelStrategyImpl
if(notifyResult){ if(notifyResult){
returnStr = "<xml>\n" + " <return_code><![CDATA[SUCCESS]]></return_code>\n" + " <return_msg><![CDATA[OK]]></return_msg>\n" + "</xml>"; returnStr = "<xml>\n" + " <return_code><![CDATA[SUCCESS]]></return_code>\n" + " <return_msg><![CDATA[OK]]></return_msg>\n" + "</xml>";
}*/ }*/
return "{\"err_no\": 0,\"err_tips\": \"success\"}";
} else { } else {
log.error("wepay notify fail code:{} msg:{} ",DragonErrorCodeEnum.TRADE_DOUYINPAY_SIGN_ERROR.getCode(),DragonErrorCodeEnum.TRADE_DOUYINPAY_SIGN_ERROR.getMessage());
log.error("touyin notify fail code:{} msg:{} ",DragonErrorCodeEnum.TRADE_DOUYINPAY_SIGN_ERROR.getCode(),DragonErrorCodeEnum.TRADE_DOUYINPAY_SIGN_ERROR.getMessage());
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -5,6 +5,7 @@ import com.alipay.api.internal.util.file.IOUtils; ...@@ -5,6 +5,7 @@ import com.alipay.api.internal.util.file.IOUtils;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.liquidnet.commons.lang.util.MD5Utils; import com.liquidnet.commons.lang.util.MD5Utils;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry; import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder; import org.apache.http.config.RegistryBuilder;
...@@ -49,6 +50,7 @@ public class PayDouYinpayUtils { ...@@ -49,6 +50,7 @@ public class PayDouYinpayUtils {
private final String APP_ID="tt0d647bd9925c076801"; private final String APP_ID="tt0d647bd9925c076801";
private final String TOKEN="NdUpRqpXmDfddigojFzIxzXNVg1SffdA";
...@@ -155,6 +157,8 @@ public class PayDouYinpayUtils { ...@@ -155,6 +157,8 @@ public class PayDouYinpayUtils {
} }
return hexValue.toString(); return hexValue.toString();
} }
public String createSign(Map<String, Object> paramsMap) { public String createSign(Map<String, Object> paramsMap) {
List<String> paramsArr = new ArrayList<>(); List<String> paramsArr = new ArrayList<>();
for (Map.Entry<String, Object> entry : paramsMap.entrySet()) { for (Map.Entry<String, Object> entry : paramsMap.entrySet()) {
...@@ -196,13 +200,20 @@ public class PayDouYinpayUtils { ...@@ -196,13 +200,20 @@ public class PayDouYinpayUtils {
return this.partnerKey; return this.partnerKey;
} }
public boolean notifySign(String sign, JSONObject jsonObject) { public boolean notifySign(String sign, JSONObject jsonObject) throws Exception {
Map<String, Object> map = new HashMap<>(); jsonObject.remove("msg_signature");
//循环转换 jsonObject.remove("type");
jsonObject.put("token",TOKEN);
SortedMap<String,String> sortedMap = new TreeMap<String,String>();
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
map.put(entry.getKey(), entry.getValue()); sortedMap.put(entry.getValue().toString(), entry.getValue().toString());
}
StringBuffer sb = new StringBuffer();
for(String key:sortedMap.keySet()){
sb.append(sortedMap.get(key));
} }
String signBack=PayDouYinpayUtils.getInstance().createSign(map); String signBack= DigestUtils.sha1Hex(sb.toString());
//PayDouYinpayUtils.getInstance().createSign(map);
if(sign.equals(signBack)) if(sign.equals(signBack))
return true; return true;
else else
...@@ -236,17 +247,21 @@ public class PayDouYinpayUtils { ...@@ -236,17 +247,21 @@ public class PayDouYinpayUtils {
public static void main(String[] args) { public static void main(String[] args) {
String s="{\n" + SortedMap<String,String> sortedMap = new TreeMap<String,String>();
" \"timestamp\":1602507471,\n" + sortedMap.put("timestamp","1602507471");
" \"nonce\":\"797\",\n" + sortedMap.put("nonce","797");
" \"msg\":\"{\\\"appid\\\":\\\"tt07e3715e98c9aac0\\\",\\\"cp_orderno\\\":\\\"out_order_no_1\\\",\\\"cp_extra\\\":\\\"\\\",\\\"way\\\":\\\"2\\\",\\\"payment_order_no\\\":\\\"2021070722001450071438803941\\\",\\\"total_amount\\\":9980,\\\"status\\\":\\\"SUCCESS\\\",\\\"seller_uid\\\":\\\"69631798443938962290\\\",\\\"extra\\\":\\\"null\\\",\\\"item_id\\\":\\\"\\\"}\",\n" + sortedMap.put("msg","{\"appid\":\"tt07e3715e98c9aac0\",\"cp_orderno\":\"out_order_no_1\",\"cp_extra\":\"\",\"way\":\"2\",\"payment_order_no\":\"2021070722001450071438803941\",\"total_amount\":9980,\"status\":\"SUCCESS\",\"seller_uid\":\"69631798443938962290\",\"extra\":\"null\",\"item_id\":\"\"}");
" \"msg_signature\":\"52fff5f7a4bf4a921c2daf83c75cf0e716432c73\",\n" + sortedMap.remove("msg_signature");
" \"type\":\"payment\"\n" + sortedMap.remove("type");
"}"; sortedMap.put("token","NdUpRqpXmDfddigojFzIxzXNVg1SffdA");
JSONObject jsonObject = JSONObject.parseObject(s); StringBuffer sb = new StringBuffer();
System.out.println(jsonObject.getString("type")); for(String key:sortedMap.keySet()){
JSONObject msg = jsonObject.getJSONObject("msg"); sb.append(sortedMap.get(key));
System.out.println(msg.getString("cp_orderno")); }
System.out.println(sortedMap.toString());
System.out.println(sb.toString());
String signBack= DigestUtils.sha1Hex(sb.toString());
System.out.println(signBack);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment