PayOldApi优化
This commit is contained in:
parent
f956c66481
commit
d518eef5f8
@ -39,7 +39,7 @@ public class MapUtil {
|
|||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<String, String>();
|
||||||
JSONObject obj = null;
|
JSONObject obj = null;
|
||||||
if (object instanceof String) {
|
if (object instanceof String) {
|
||||||
obj = JSONObject.parseObject(object.toString());
|
obj = JSONObject.parseObject((String) object);
|
||||||
} else {
|
} else {
|
||||||
obj = ListsuffixResultSerializer.serializeToJSON(object);
|
obj = ListsuffixResultSerializer.serializeToJSON(object);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,8 +25,6 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.TypeReference;
|
||||||
import com.alibaba.fastjson.parser.Feature;
|
import com.alibaba.fastjson.parser.Feature;
|
||||||
import com.foxinmy.weixin4j.cache.CacheStorager;
|
|
||||||
import com.foxinmy.weixin4j.cache.FileCacheStorager;
|
|
||||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||||
import com.foxinmy.weixin4j.http.weixin.JsonResult;
|
import com.foxinmy.weixin4j.http.weixin.JsonResult;
|
||||||
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
|
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
|
||||||
@ -42,6 +40,7 @@ import com.foxinmy.weixin4j.mp.oldpayment.WeixinOldPayAccount;
|
|||||||
import com.foxinmy.weixin4j.mp.oldpayment.WeixinOldPaymentSignature;
|
import com.foxinmy.weixin4j.mp.oldpayment.WeixinOldPaymentSignature;
|
||||||
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
|
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
|
||||||
import com.foxinmy.weixin4j.payment.PayRequest;
|
import com.foxinmy.weixin4j.payment.PayRequest;
|
||||||
|
import com.foxinmy.weixin4j.setting.Weixin4jSettings;
|
||||||
import com.foxinmy.weixin4j.sign.WeixinPaymentSignature;
|
import com.foxinmy.weixin4j.sign.WeixinPaymentSignature;
|
||||||
import com.foxinmy.weixin4j.sign.WeixinSignature;
|
import com.foxinmy.weixin4j.sign.WeixinSignature;
|
||||||
import com.foxinmy.weixin4j.token.TokenManager;
|
import com.foxinmy.weixin4j.token.TokenManager;
|
||||||
@ -68,6 +67,7 @@ import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
|
|||||||
*/
|
*/
|
||||||
public class PayOldApi extends MpApi {
|
public class PayOldApi extends MpApi {
|
||||||
|
|
||||||
|
private final Weixin4jSettings<WeixinOldPayAccount> settings;
|
||||||
private final WeixinOldPayAccount weixinAccount;
|
private final WeixinOldPayAccount weixinAccount;
|
||||||
private final TokenManager tokenManager;
|
private final TokenManager tokenManager;
|
||||||
private final WeixinSignature weixinMD5Signature;
|
private final WeixinSignature weixinMD5Signature;
|
||||||
@ -77,32 +77,26 @@ public class PayOldApi extends MpApi {
|
|||||||
* 默认使用weixin4j.properties配置信息
|
* 默认使用weixin4j.properties配置信息
|
||||||
*/
|
*/
|
||||||
public PayOldApi() {
|
public PayOldApi() {
|
||||||
this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
|
this(new Weixin4jSettings<WeixinOldPayAccount>(JSON.parseObject(
|
||||||
WeixinOldPayAccount.class), new FileCacheStorager<Token>(
|
Weixin4jConfigUtil.getValue("account"),
|
||||||
Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
|
WeixinOldPayAccount.class)));
|
||||||
System.getProperty("java.io.tmpdir"))));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PayOldApi(WeixinOldPayAccount payAccount) {
|
/**
|
||||||
this(payAccount, new FileCacheStorager<Token>(
|
*
|
||||||
Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
|
* @param settings
|
||||||
System.getProperty("java.io.tmpdir"))));
|
* 微信配置信息
|
||||||
}
|
*/
|
||||||
|
public PayOldApi(Weixin4jSettings<WeixinOldPayAccount> settings) {
|
||||||
public PayOldApi(CacheStorager<Token> cacheStorager) {
|
this.settings = settings;
|
||||||
this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
|
this.weixinAccount = settings.getAccount();
|
||||||
WeixinOldPayAccount.class), cacheStorager);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PayOldApi(WeixinOldPayAccount weixinAccount,
|
|
||||||
CacheStorager<Token> cacheStorager) {
|
|
||||||
this.weixinAccount = weixinAccount;
|
|
||||||
this.tokenManager = new TokenManager(new WeixinTokenCreator(
|
this.tokenManager = new TokenManager(new WeixinTokenCreator(
|
||||||
weixinAccount.getId(), weixinAccount.getSecret()),
|
weixinAccount.getId(), weixinAccount.getSecret()),
|
||||||
cacheStorager);
|
settings.getCacheStorager0());
|
||||||
this.weixinMD5Signature = new WeixinPaymentSignature(
|
this.weixinMD5Signature = new WeixinPaymentSignature(
|
||||||
weixinAccount.getPartnerKey());
|
weixinAccount.getPartnerKey());
|
||||||
this.weixinOldSignature = new WeixinOldPaymentSignature();
|
this.weixinOldSignature = new WeixinOldPaymentSignature(
|
||||||
|
weixinAccount.getPaySignKey(), weixinAccount.getPartnerKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
public WeixinOldPayAccount getWeixinPayAccount() {
|
public WeixinOldPayAccount getWeixinPayAccount() {
|
||||||
@ -145,10 +139,8 @@ public class PayOldApi extends MpApi {
|
|||||||
*/
|
*/
|
||||||
public String createPayJsRequestJson(PayPackageV2 payPackage) {
|
public String createPayJsRequestJson(PayPackageV2 payPackage) {
|
||||||
PayRequest payRequest = new PayRequest(weixinAccount.getId(),
|
PayRequest payRequest = new PayRequest(weixinAccount.getId(),
|
||||||
weixinOldSignature.sign(payPackage,
|
weixinOldSignature.sign(payPackage));
|
||||||
weixinAccount.getPartnerKey()));
|
payRequest.setPaySign(weixinOldSignature.sign(payRequest));
|
||||||
payRequest.setPaySign(weixinOldSignature.sign(payRequest,
|
|
||||||
weixinAccount.getPaySignKey()));
|
|
||||||
payRequest.setSignType(SignType.SHA1);
|
payRequest.setSignType(SignType.SHA1);
|
||||||
return JSON.toJSONString(payRequest);
|
return JSON.toJSONString(payRequest);
|
||||||
}
|
}
|
||||||
@ -287,9 +279,7 @@ public class PayOldApi extends MpApi {
|
|||||||
KeyStore ks = null;
|
KeyStore ks = null;
|
||||||
String jksPwd = "";
|
String jksPwd = "";
|
||||||
File jksFile = new File(String.format("%s%stenpay_cacert.jks",
|
File jksFile = new File(String.format("%s%stenpay_cacert.jks",
|
||||||
Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
|
settings.getTmpdir0(), File.separator));
|
||||||
System.getProperty("java.io.tmpdir")),
|
|
||||||
File.separator));
|
|
||||||
// create jks ca
|
// create jks ca
|
||||||
if (!jksFile.exists()) {
|
if (!jksFile.exists()) {
|
||||||
CertificateFactory cf = CertificateFactory
|
CertificateFactory cf = CertificateFactory
|
||||||
|
|||||||
@ -65,9 +65,9 @@ public class NativePayResponseV2 extends PayRequest {
|
|||||||
super(weixinAccount.getId(), null);
|
super(weixinAccount.getId(), null);
|
||||||
this.retCode = "0";
|
this.retCode = "0";
|
||||||
this.retMsg = "OK";
|
this.retMsg = "OK";
|
||||||
WeixinOldPaymentSignature weixinSignature = new WeixinOldPaymentSignature();
|
WeixinOldPaymentSignature weixinSignature = new WeixinOldPaymentSignature(
|
||||||
setPackageInfo(weixinSignature.sign(payPackage,
|
weixinAccount.getPaySignKey(), weixinAccount.getPartnerKey());
|
||||||
weixinAccount.getPartnerKey()));
|
setPackageInfo(weixinSignature.sign(payPackage));
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<String, String>();
|
||||||
map.put("appid", weixinAccount.getId());
|
map.put("appid", weixinAccount.getId());
|
||||||
map.put("appkey", weixinAccount.getPaySignKey());
|
map.put("appkey", weixinAccount.getPaySignKey());
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package com.foxinmy.weixin4j.mp.oldpayment;
|
package com.foxinmy.weixin4j.mp.oldpayment;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alibaba.fastjson.JSONPath;
|
import com.alibaba.fastjson.JSONPath;
|
||||||
@ -20,6 +18,20 @@ import com.foxinmy.weixin4j.util.MapUtil;
|
|||||||
*/
|
*/
|
||||||
public class WeixinOldPaymentSignature extends AbstractWeixinSignature {
|
public class WeixinOldPaymentSignature extends AbstractWeixinSignature {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付签名密钥
|
||||||
|
*/
|
||||||
|
private final String paySignKey;
|
||||||
|
/**
|
||||||
|
* package签名密钥
|
||||||
|
*/
|
||||||
|
private final String partnerKey;
|
||||||
|
|
||||||
|
public WeixinOldPaymentSignature(String paySignKey, String partnerKey) {
|
||||||
|
this.paySignKey = paySignKey;
|
||||||
|
this.partnerKey = partnerKey;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean lowerCase() {
|
public boolean lowerCase() {
|
||||||
return true;
|
return true;
|
||||||
@ -27,15 +39,12 @@ public class WeixinOldPaymentSignature extends AbstractWeixinSignature {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String sign(Object obj) {
|
public String sign(Object obj) {
|
||||||
return DigestUtil.SHA1(join(obj).toString());
|
if (obj instanceof String) {
|
||||||
}
|
obj = JSON.parse((String) obj);
|
||||||
|
|
||||||
public String sign(Object obj, String paySignKey) {
|
|
||||||
if (obj instanceof Map) {
|
|
||||||
JSONPath.set(obj, "appKey", paySignKey);
|
|
||||||
} else {
|
} else {
|
||||||
((JSONObject) JSON.toJSON(obj)).put("appKey", paySignKey);
|
obj = ((JSONObject) JSON.toJSON(obj));
|
||||||
}
|
}
|
||||||
|
JSONPath.set(obj, "appKey", paySignKey);
|
||||||
return DigestUtil.SHA1(join(obj).toString());
|
return DigestUtil.SHA1(join(obj).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,11 +53,9 @@ public class WeixinOldPaymentSignature extends AbstractWeixinSignature {
|
|||||||
*
|
*
|
||||||
* @param packageInfo
|
* @param packageInfo
|
||||||
* package对象
|
* package对象
|
||||||
* @param partnerKey
|
|
||||||
* 签名key
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String sign(PayPackageV2 packageInfo, String partnerKey) {
|
public String sign(PayPackageV2 packageInfo) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
// a.对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) 后,
|
// a.对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) 后,
|
||||||
// 使用 URL 键值 对的格式(即 key1=value1&key2=value2...)拼接成字符串 string1
|
// 使用 URL 键值 对的格式(即 key1=value1&key2=value2...)拼接成字符串 string1
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import com.foxinmy.weixin4j.mp.model.KfSession.KfSessionCounter;
|
|||||||
/**
|
/**
|
||||||
* 客服消息测试
|
* 客服消息测试
|
||||||
*
|
*
|
||||||
* @className MessageNotifyTest
|
* @className CustomTest
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2014年4月10日
|
* @date 2014年4月10日
|
||||||
* @since JDK 1.6
|
* @since JDK 1.6
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import org.junit.Test;
|
|||||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||||
import com.foxinmy.weixin4j.mp.api.PayOldApi;
|
import com.foxinmy.weixin4j.mp.api.PayOldApi;
|
||||||
import com.foxinmy.weixin4j.mp.oldpayment.WeixinOldPayAccount;
|
import com.foxinmy.weixin4j.mp.oldpayment.WeixinOldPayAccount;
|
||||||
|
import com.foxinmy.weixin4j.setting.Weixin4jSettings;
|
||||||
import com.foxinmy.weixin4j.type.IdQuery;
|
import com.foxinmy.weixin4j.type.IdQuery;
|
||||||
import com.foxinmy.weixin4j.type.IdType;
|
import com.foxinmy.weixin4j.type.IdType;
|
||||||
|
|
||||||
@ -24,12 +25,13 @@ import com.foxinmy.weixin4j.type.IdType;
|
|||||||
*/
|
*/
|
||||||
public class PayTest {
|
public class PayTest {
|
||||||
protected final static PayOldApi PAY2;
|
protected final static PayOldApi PAY2;
|
||||||
protected final static WeixinOldPayAccount ACCOUNT2;
|
protected final static Weixin4jSettings<WeixinOldPayAccount> settings;
|
||||||
static {
|
static {
|
||||||
ACCOUNT2 = new WeixinOldPayAccount("请填入v2版本的appid",
|
settings = new Weixin4jSettings<WeixinOldPayAccount>(
|
||||||
"请填入v2版本的appSecret", "请填入v2版本的paysignkey", "请填入v2版本的partnerId",
|
new WeixinOldPayAccount("请填入v2版本的appid", "请填入v2版本的appSecret",
|
||||||
"请填入v2版本的partnerKey");
|
"请填入v2版本的paysignkey", "请填入v2版本的partnerId",
|
||||||
PAY2 = new PayOldApi(ACCOUNT2);
|
"请填入v2版本的partnerKey"));
|
||||||
|
PAY2 = new PayOldApi(settings);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 商户证书文件
|
* 商户证书文件
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user