This commit is contained in:
Kit 2019-09-25 16:01:04 +08:00
parent 2524f34c33
commit f03c79a4ed
6 changed files with 68 additions and 37 deletions

View File

@ -4,6 +4,7 @@
# ----------------------------------------------------------------------------
mch_base_url=https://api.mch.weixin.qq.com
payapp_base_url=https://payapp.weixin.qq.com
# \u53D1\u9001\u73B0\u91D1\u7EA2\u5305
redpack_send_uri={mch_base_url}/mmpaymkttransfers/sendredpack
@ -35,10 +36,6 @@ coupon_send_uri={mch_base_url}/mmpaymkttransfers/send_coupon
couponstock_query_uri={mch_base_url}/mmpaymkttransfers/query_coupon_stock
# \u67E5\u8BE2\u4EE3\u91D1\u5238\u8BE6\u7EC6\u4FE1\u606F
coupondetail_query_uri={mch_base_url}/mmpaymkttransfers/querycouponsinfo
# \u53D1\u9001\u73B0\u91D1\u7EA2\u5305
redpack_send_uri={mch_base_url}/mmpaymkttransfers/sendredpack
# \u67E5\u8BE2\u73B0\u91D1\u7EA2\u5305
redpack_query_uri={mch_base_url}/mmpaymkttransfers/gethbinfo
# \u4F01\u4E1A\u5411\u4E2A\u4EBA\u4ED8\u6B3E
corppayment_send_uri={mch_base_url}/mmpaymkttransfers/promotion/transfers
# \u4F01\u4E1A\u4ED8\u6B3E\u67E5\u8BE2
@ -56,4 +53,12 @@ exchagerate_query_uri={mch_base_url}/pay/queryexchagerate
# \u8BA2\u5355\u9644\u52A0\u4FE1\u606F\u63D0\u4EA4
customsorder_declare_uri={mch_base_url}/mch/customs/customdeclareorder
# \u8BA2\u5355\u9644\u52A0\u4FE1\u606F\u67E5\u8BE2
customsorder_query_uri={mch_base_url}/mch/customs/customdeclarequery
customsorder_query_uri={mch_base_url}/mch/customs/customdeclarequery
# \u5237\u8138\u652F\u4ED8\u4EA4\u4E92\u6D41\u7A0B--\u83B7\u53D6\u8C03\u7528\u51ED\u8BC1
get_wxpayface_authinfo_uri={payapp_base_url}/face/get_wxpayface_authinfo
# \u65E7\u7248\u5237\u8138\u652F\u4ED8\u63A5\u53E3
facepay_url={mch_base_url}/pay/facepay
# \u652F\u4ED8\u62BC\u91D1\uFF08\u4EBA\u8138\uFF09
deposit_facepay_uri={mch_base_url}/deposit/facepay
# \u652F\u4ED8\u62BC\u91D1\uFF08\u4ED8\u6B3E\u7801\uFF09
deposit_micropay_uri={mch_base_url}/deposit/micropay

View File

@ -865,6 +865,8 @@ public class WeixinPayProxy {
* 门店名称由商户定义可用于展示
* @param deviceId
* 终端设备编号由商户定义
* @param attach
* 附加字段字段格式使用Json, 非必填
* @param rawdata
* 初始化数据由微信人脸SDK的接口返回
* @return SDK调用凭证
@ -878,9 +880,9 @@ public class WeixinPayProxy {
* @see PayfaceAuthinfo
*/
public PayfaceAuthinfo getWxPayfaceAuthinfo(String storeId, String storeName, String deviceId,
String rawdata) throws WeixinException {
String attach, String rawdata) throws WeixinException {
PayfaceAuthinfoRequest request = new PayfaceAuthinfoRequest(this.weixinPayAccount, storeId, storeName, deviceId,
rawdata);
attach, rawdata);
return payApi.getWxPayfaceAuthinfo(request);
}

View File

@ -52,43 +52,17 @@ public class PayfaceAuthinfoRequest {
private WeixinPaymentSignature paymentSignature;
public PayfaceAuthinfoRequest(WeixinPayAccount account, String storeId, String storeName, String deviceId,
String rawdata){
String attach, String rawdata){
this.payAccount = account;
this.deviceId = deviceId;
this.rawdata = rawdata;
this.storeId = storeId;
this.storeName = storeName;
this.attach = attach;
this.paymentSignature = new WeixinPaymentSignature(account.getPaySignKey());
}
public void setAttach(String attach) {
this.attach = attach;
}
public String toRequestString(){
/*StringBuilder content = new StringBuilder();
content.append("<xml>");
content.append(String.format("<appid>%s</appid>", payAccount.getId()));
content.append(String.format("<mch_id>%s</mch_id>", payAccount.getMchId()));
if(StringUtil.isNotBlank(payAccount.getSubId())){
content.append(String.format("<sub_appid>%s</sub_appid>", payAccount.getSubId()));
}
if(StringUtil.isNotBlank(payAccount.getSubMchId())){
content.append(String.format("<sub_mch_id>%s</sub_mch_id>", payAccount.getSubMchId()));
}
content.append(String.format("<now>%s</now>", now));
content.append("<version>1</version>");
content.append(String.format("<sign_type>%s</sign_type>", SignType.MD5.name()));
content.append(String.format("<nonce_str>%s</nonce_str>", nonceStr));
content.append(String.format("<sign>%s</sign>", getRequestSign()));
content.append(String.format("<store_id>%s</store_id>", storeId));
content.append(String.format("<store_name>%s</store_name>", storeName));
content.append(String.format("<device_id>%s</device_id>", deviceId));
content.append(String.format("<rawdata>%s</rawdata>", rawdata));
if(StringUtil.isNotBlank(attach)){
content.append(String.format("<attach><![CDATA[%s]]></attach>", attach));
}
content.append("</xml>");*/
Map paramsMap = getRequestParam();
return XmlStream.map2xml(paramsMap);
}

View File

@ -0,0 +1,26 @@
package com.foxinmy.weixin4j.pay.test;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.pay.WeixinPayProxy;
import com.foxinmy.weixin4j.pay.model.WeixinPayAccount;
import com.foxinmy.weixin4j.pay.payment.mch.MchPayRequest;
import org.junit.Test;
public class TestDepositPay {
@Test
public void test() throws WeixinException {
String appid = "";
String mchid = "";
String paySignKey = "";
String code = "";
boolean isFacePay = false; //true - 人脸押金支付false - 付款码押金支付
WeixinPayAccount payAccount = new WeixinPayAccount(appid, paySignKey, mchid);
payAccount.setSubMchId(mchid);
WeixinPayProxy proxy = new WeixinPayProxy(payAccount);
MchPayRequest payRequest = proxy.createDepositPayRequest(code, "测试押金支付", "TESTORDER20190921001", 0.01,
"127.0.0.1", null, null, null, isFacePay);
System.out.println(payRequest.toRequestString());
}
}

View File

@ -6,10 +6,10 @@ import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.pay.WeixinPayProxy;
import com.foxinmy.weixin4j.pay.model.WeixinPayAccount;
import com.foxinmy.weixin4j.pay.payment.mch.MchPayRequest;
import com.foxinmy.weixin4j.pay.type.mch.DepositType;
import org.junit.Test;
public class TestFacePay {
@Test
public void test() throws WeixinException {
String appid = "";
@ -28,4 +28,4 @@ public class TestFacePay {
JSONObject obj = (JSONObject) JSON.toJSON(rsp);
}
}
}

View File

@ -0,0 +1,24 @@
package com.foxinmy.weixin4j.pay.test;
import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.pay.sign.WeixinPaymentSignature;
import com.foxinmy.weixin4j.pay.type.SignType;
import org.junit.Assert;
import org.junit.Test;
/**
* HmacSHA256签名算法测试
* @author kit (kit_21cn@21cn.com)
*/
public class TestHmacSHA256Sign {
@Test
public void test(){
WeixinPaymentSignature signature = new WeixinPaymentSignature("muses");
JSONObject json = new JSONObject();
json.put("appid", "1");
json.put("mch_id", "2");
String sign = signature.sign(json, SignType.HMAC$SHA256);
Assert.assertEquals("637CF27B23F731398B2BE0118F484191B3728749C25D1EEF7479B6E93033602C", sign);
}
}