package com.allinpay.syb.lib;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.TypeReference;
|
import com.allinpay.syb.model.PayOrderNotifyParam;
|
import com.allinpay.syb.model.PayOrderRefundResponse;
|
import com.allinpay.syb.model.PayPublicModel;
|
import com.doumee.core.utils.HttpsUtil;
|
import com.doumee.dao.business.model.Orders;
|
import com.doumee.dao.business.model.Refund;
|
import lombok.Data;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.IOException;
|
import java.net.URLEncoder;
|
import java.util.Date;
|
import java.util.Map;
|
import java.util.TreeMap;
|
|
@Slf4j
|
@Data
|
public class DoumeeTLUtil {
|
public static final String SUCCESS_CODE = "SUCCESS";
|
public static final String FAIL_CODE = "FAIL";
|
private PayPublicModel publicModel;
|
private String appkey;
|
private String pubKey;
|
public DoumeeTLUtil(PayPublicModel model){
|
this.publicModel = model;
|
}
|
public static String REFUND_SN_PREFIX = "refund_";
|
public PayOrderRefundResponse sendRefundOrder(String reqsn, String oldReqsn, String money, String remark) {
|
TreeMap<String, String> params = new TreeMap<String, String>();
|
params.put("cusid", publicModel.getCusid());
|
params.put("appid", publicModel.getAppid());
|
params.put("version", publicModel.getVersion());
|
params.put("trxid", "");
|
params.put("randomstr", SybUtil.getValidatecode(8));
|
params.put("signtype", publicModel.getSigntype());
|
params.put("notify_url",publicModel.getNotifyUrl());
|
params.remove("sign");
|
params.put("reqsn",REFUND_SN_PREFIX+reqsn);
|
params.put("oldreqsn",oldReqsn);
|
params.put("trxamt",money);
|
params.put("remark",remark);
|
return sendRequest(params,publicModel.getUrl()+"/tranx/refund",publicModel.getAppkey(),publicModel.getAppPubkey(),new TypeReference<PayOrderRefundResponse>(){});
|
}
|
public PayOrderNotifyParam sendQueryOrder(String reqsn ) {
|
TreeMap<String, String> params = new TreeMap<String, String>();
|
params.put("cusid", publicModel.getCusid());
|
params.put("appid", publicModel.getAppid());
|
params.put("version", publicModel.getVersion());
|
params.put("trxid", "");
|
params.put("randomstr", SybUtil.getValidatecode(8));
|
params.put("signtype", publicModel.getSigntype());
|
params.remove("sign");
|
params.put("reqsn",reqsn);
|
return sendRequest(params,publicModel.getUrl()+"/tranx/query",publicModel.getAppkey(),publicModel.getAppPubkey(),new TypeReference<PayOrderNotifyParam>(){});
|
}
|
public static <T> T sendRequest(TreeMap<String,String> params, String url, String appkey, String pubKey, TypeReference<T> typeReference ) {
|
try {
|
params.put("sign", SybUtil.unionSign(params,appkey,params.get("signtype")));
|
String data =getHttpParamsStr(params);
|
log.error("订单交易数据请求================{}",data);
|
String result = HttpsUtil.post(url,data,"application/x-www-form-urlencoded",true);
|
log.error("订单查交据返回================{}",result);
|
T map = handleResult(result,pubKey,params.get("signtype"),typeReference);
|
return map;
|
}catch (Exception e){
|
log.error("通联订单查询异常================{}",e);
|
}
|
return null;
|
}
|
public static String getHttpParamsStr(Map<String, String> params ) throws IOException {
|
StringBuilder outBuf = new StringBuilder();
|
boolean isNotFirst = false;
|
for (Map.Entry<String, String> entry: params.entrySet()){
|
if (isNotFirst)
|
outBuf.append('&');
|
isNotFirst = true;
|
outBuf
|
.append(entry.getKey())
|
.append('=')
|
.append(URLEncoder.encode(StringUtils.defaultString(entry.getValue(),""), "UTF-8"));
|
}
|
System.out.println("参数:"+outBuf.toString());
|
return outBuf.toString();
|
}
|
|
public static <T> T handleResult(String result,String pubKey,String signType, TypeReference<T> typeReference ) throws Exception{
|
log.error("返回数据返回================{}",result);
|
Map map = SybUtil.json2ObjMap(result);
|
if(map == null){
|
log.error("返回数据返回错误================{}",result);
|
throw new Exception("返回数据错误");
|
}
|
if("SUCCESS".equals(map.get("retcode"))){
|
TreeMap tmap = new TreeMap();
|
tmap.putAll(map);
|
if(SybUtil.validSign(tmap, pubKey, signType)){
|
T param = JSONObject.parseObject(result,typeReference.getType());
|
return param;
|
}
|
}
|
return null;
|
}
|
public static TreeMap<String, String> getParams(HttpServletRequest request){
|
TreeMap<String, String> map = new TreeMap<String, String>();
|
Map reqMap = request.getParameterMap();
|
for(Object key:reqMap.keySet()){
|
String value = ((String[])reqMap.get(key))[0];
|
System.out.println(key+";"+value);
|
map.put(key.toString(),value);
|
}
|
return map;
|
}
|
|
}
|