From f03c79a4ed5389484a1f45538a9d67fd18387270 Mon Sep 17 00:00:00 2001 From: Kit Date: Wed, 25 Sep 2019 16:01:04 +0800 Subject: [PATCH] update --- .../weixin4j/payment/weixin.properties | 15 ++++++---- .../foxinmy/weixin4j/pay/WeixinPayProxy.java | 6 ++-- .../payment/face/PayfaceAuthinfoRequest.java | 30 ++----------------- .../weixin4j/pay/test/TestDepositPay.java | 26 ++++++++++++++++ .../weixin4j/pay/test/TestFacePay.java | 4 +-- .../weixin4j/pay/test/TestHmacSHA256Sign.java | 24 +++++++++++++++ 6 files changed, 68 insertions(+), 37 deletions(-) create mode 100644 weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestDepositPay.java create mode 100644 weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestHmacSHA256Sign.java diff --git a/weixin4j-base/src/main/resources/com/foxinmy/weixin4j/payment/weixin.properties b/weixin4j-base/src/main/resources/com/foxinmy/weixin4j/payment/weixin.properties index 1b69ff2e..635bb53b 100644 --- a/weixin4j-base/src/main/resources/com/foxinmy/weixin4j/payment/weixin.properties +++ b/weixin4j-base/src/main/resources/com/foxinmy/weixin4j/payment/weixin.properties @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/WeixinPayProxy.java b/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/WeixinPayProxy.java index 72b14d15..563d62d4 100644 --- a/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/WeixinPayProxy.java +++ b/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/WeixinPayProxy.java @@ -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); } diff --git a/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/payment/face/PayfaceAuthinfoRequest.java b/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/payment/face/PayfaceAuthinfoRequest.java index 913c3b72..6a3c27e1 100644 --- a/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/payment/face/PayfaceAuthinfoRequest.java +++ b/weixin4j-pay/src/main/java/com/foxinmy/weixin4j/pay/payment/face/PayfaceAuthinfoRequest.java @@ -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(""); - content.append(String.format("%s", payAccount.getId())); - content.append(String.format("%s", payAccount.getMchId())); - if(StringUtil.isNotBlank(payAccount.getSubId())){ - content.append(String.format("%s", payAccount.getSubId())); - } - if(StringUtil.isNotBlank(payAccount.getSubMchId())){ - content.append(String.format("%s", payAccount.getSubMchId())); - } - content.append(String.format("%s", now)); - content.append("1"); - content.append(String.format("%s", SignType.MD5.name())); - content.append(String.format("%s", nonceStr)); - content.append(String.format("%s", getRequestSign())); - content.append(String.format("%s", storeId)); - content.append(String.format("%s", storeName)); - content.append(String.format("%s", deviceId)); - content.append(String.format("%s", rawdata)); - if(StringUtil.isNotBlank(attach)){ - content.append(String.format("", attach)); - } - content.append("");*/ Map paramsMap = getRequestParam(); return XmlStream.map2xml(paramsMap); } diff --git a/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestDepositPay.java b/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestDepositPay.java new file mode 100644 index 00000000..13ef92bb --- /dev/null +++ b/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestDepositPay.java @@ -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()); + } +} diff --git a/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestFacePay.java b/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestFacePay.java index b5d0858c..8b3145c1 100644 --- a/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestFacePay.java +++ b/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestFacePay.java @@ -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); } -} +} \ No newline at end of file diff --git a/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestHmacSHA256Sign.java b/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestHmacSHA256Sign.java new file mode 100644 index 00000000..b8a9a775 --- /dev/null +++ b/weixin4j-pay/src/test/java/com/foxinmy/weixin4j/pay/test/TestHmacSHA256Sign.java @@ -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); + } +}