From ddcf26df53fc94371b1b8f2eef3ebe33a0da8e23 Mon Sep 17 00:00:00 2001 From: yang_shj Date: Tue, 15 Mar 2022 10:49:36 +0800 Subject: [PATCH] =?UTF-8?q?feat=200=20=E6=94=AF=E4=BB=98=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/imp/WecPaymentServiceImp.java | 34 +++++++++++++++++-- .../com/base/springcloud/wxsdk/MyConfig.java | 31 +++++++---------- .../com/base/springcloud/wxsdk/WXPay.java | 4 +-- .../base/springcloud/wxsdk/WXPayRequest.java | 2 +- 4 files changed, 48 insertions(+), 23 deletions(-) diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java index 2600510..a756d72 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java @@ -10,13 +10,17 @@ import com.base.springcloud.entity.WxpayRefundVo; import com.base.springcloud.entity.WxpayTradeVo; import com.base.springcloud.entity.WxpayTradeVo.WxTradeAmountVo; import com.base.springcloud.service.WecPaymentService; -import com.base.springcloud.util.StringHelper; +import com.base.springcloud.util.DateUtil; +import com.base.springcloud.wxsdk.MyConfig; +import com.base.springcloud.wxsdk.WXPay; +import com.base.springcloud.wxsdk.WXPayUtil; import com.base.springcloud.wxsdk.WxpayUtils; import lombok.SneakyThrows; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.Map; @Service @@ -80,6 +84,33 @@ public class WecPaymentServiceImp implements WecPaymentService { */ @Override public void codePay(CodePayBO codePayBO) { + String appId = codePayBO.getAppId(); + String mchId = codePayBO.getMchId(); + String key = codePayBO.getMchPrivateKey(); + String certificate = codePayBO.getCertificate(); + MyConfig config = new MyConfig(appId,mchId,key,certificate); + WXPay wxPay = new WXPay(config); + Map data = new HashMap(); + //公众账号ID (微信分配的公众账号ID(企业号corpid即为此appId)) + data.put("appid", "wxa91984b310053c3d"); + //商户号 (微信支付分配的商户号) + data.put("mch_id", "1610494969"); + data.put("device_info", "sb0001"); + //商品描述 (商品简单描述,该字段须严格按照规范传递) 店名-销售商品类目 例 小张南山店-超市 + data.put("body", "Image形象店-深圳腾大-QQ公仔"); + //商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一 + data.put("out_trade_no", DateUtil.getDateString(25)); + //订单总金额,单位为分,只能为整数 + data.put("total_fee", "1"); + data.put("auth_code", "135080797699902868"); + data.put("spbill_create_ip", "8.8.8.8"); + try { + //付款码 (扫码支付付款码,设备读取用户微信中的条码或者二维码信息(注:用户付款码条形码规则:18位纯数字,以10、11、12、13、14、15开头)) + data.put("sign", WXPayUtil.generateSignature(data,"yDXt3Jczcs2dSKvwUxGkYYfHzCe8SXtY")); + Map responseMap = wxPay.microPay(data); + }catch (Exception e){ + e.printStackTrace(); + } } /** @@ -92,7 +123,6 @@ public class WecPaymentServiceImp implements WecPaymentService { public Boolean orderResult(OrderBO orderBO) { Order order = orderBO.getOrder(); String url = PaymentConstant.WX_ORDER_PAY_URL + order.getOrderNo() + "?mchid=" + order.getMchId(); - logger.info("order_result_url : {}",url); return WxpayUtils.queryWxOrder(PaymentConstant.PAY_ORDER,url,orderBO.getMchId(),orderBO.getMchPrivateKey(),orderBO.getCertificate(),orderBO.getSerialNo()); } diff --git a/payment-base-app/src/main/java/com/base/springcloud/wxsdk/MyConfig.java b/payment-base-app/src/main/java/com/base/springcloud/wxsdk/MyConfig.java index 1286ae3..7455a48 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/wxsdk/MyConfig.java +++ b/payment-base-app/src/main/java/com/base/springcloud/wxsdk/MyConfig.java @@ -1,44 +1,39 @@ package com.base.springcloud.wxsdk; +import lombok.Data; import sun.misc.BASE64Decoder; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; +@Data public class MyConfig extends WXPayConfig { - private String appid = "wxa91984b310053c3d"; - private String mchid = "1610494969"; - private String key = "yDXt3Jczcs2dSKvwUxGkYYfHzCe8SXtY"; - - /** - * 加载证书 这里证书需要到微信商户平台进行下载 - */ + private String appid; + private String mchid; + private String key; private byte[] certData; - public MyConfig() throws Exception { - this.certData = new BASE64Decoder().decodeBuffer("MIID9jCCAt6gAwIBAgIUHPQVmPutv7O6ub4lOfSWhLWhflowDQYJKoZIhvcNAQELBQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsTFFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3QgQ0EwHhcNMjEwNjA5MDMzMjQ5WhcNMjYwNjA4MDMzMjQ5WjCBhzETMBEGA1UEAwwKMTYxMDQ5NDk2OTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTMwMQYDVQQLDCrotLXlt57pgJrnqIvlhYTlvJ/lt6XnqIvmnLrmorDmnInpmZDlhazlj7gxCzAJBgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJVXLgJStFM8lnj2+4r1OvlG6t3d0Td6LPuWydY8BiBm11awLpM5FRo/Q/H9ky1olg1REylUoLmShdlI9M2v1E4droHohfiVMwRHMeCJXMYiouUT+3AFhdtK6HzJfLeTn1p0UNhlk037ZMdZ2y3YCjukP4ZeUNvLyB8XrtrH0JtarnLLHoxgwofA5V7cf843alyZlHojzT0vBrjN+ZTI57PVTmnA2LC/ZzKiszlRfNUyy8rmN8goNqyQ1UhX/5rHXm1/45D/q32JpbNEBXXN54l39O5VUYH9BTmyWDnHIjBqorMkzUfefrh6vlA1EqlTfVG7R0fMlNbuWO0gtYJBm5sCAwEAAaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEACoG5Uf3X33UlDY6VWxgvN6Kg1W9ZRwcwcxSPuURv7OVO1o1JH0c1lPRqY3H8A+TeVI4/5wt5GPRRkSOtecPhMikgvhUjxJZnM0b30sxEv7hoqgEqNcsu2Kc60W6hGzVW0Fw8qimjOmoREBAaOOpYNr/zIrZZiW4vJd//ESNXvpTlwwK1xE9VW3VJGHW7mMZ+Whr3S13esH7rds5mLE6OQvrL6B2weEcVlzP1oEZAbaZW5bgz2gQBR5WheU8QGySnU/e38nzLsdwY0r7ztaWQ39z7fsOeY2gupB8cZ251pWZ9oYvUu4u0VFflrbJiMdLLEZDej02MYtgO6o9xb8BNmw=="); + public MyConfig(String appId,String mchId,String key,String certificate){ + this.appid = appId; + this.mchid = mchId; + this.key = key; + this.certData = certificate.getBytes(StandardCharsets.UTF_8); } @Override String getAppID() { - return this.appid; + return appid; } @Override String getMchID() { - return this.mchid; + return mchid; } - @Override - String getKey() { - return this.key; - } - - void setKey(String key){this.key = key;} - @Override InputStream getCertStream() { return new ByteArrayInputStream(this.certData); diff --git a/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPay.java b/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPay.java index 2e8df72..2ce7774 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPay.java +++ b/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPay.java @@ -14,7 +14,7 @@ public class WXPay { private String notifyUrl; private WXPayRequest wxPayRequest; - public WXPay(final WXPayConfig config) throws Exception { + public WXPay(final WXPayConfig config){ this(config, null, true, false); } @@ -35,7 +35,7 @@ public class WXPay { this(config, notifyUrl, autoReport, false); } - public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport, final boolean useSandbox) throws Exception { + public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport, final boolean useSandbox){ this.config = config; this.notifyUrl = notifyUrl; this.autoReport = autoReport; diff --git a/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPayRequest.java b/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPayRequest.java index cad3463..b588009 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPayRequest.java +++ b/payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPayRequest.java @@ -27,7 +27,7 @@ import static com.base.springcloud.wxsdk.WXPayConstants.USER_AGENT; public class WXPayRequest { private WXPayConfig config; - public WXPayRequest(WXPayConfig config) throws Exception{ + public WXPayRequest(WXPayConfig config){ this.config = config; }