Browse Source

feat 0 支付工程

devlop
yang_shj 4 years ago
parent
commit
ddcf26df53
  1. 34
      payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java
  2. 31
      payment-base-app/src/main/java/com/base/springcloud/wxsdk/MyConfig.java
  3. 4
      payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPay.java
  4. 2
      payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPayRequest.java

34
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;
import com.base.springcloud.entity.WxpayTradeVo.WxTradeAmountVo; import com.base.springcloud.entity.WxpayTradeVo.WxTradeAmountVo;
import com.base.springcloud.service.WecPaymentService; 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 com.base.springcloud.wxsdk.WxpayUtils;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Service @Service
@ -80,6 +84,33 @@ public class WecPaymentServiceImp implements WecPaymentService {
*/ */
@Override @Override
public void codePay(CodePayBO codePayBO) { 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<String, String> 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<String, String> responseMap = wxPay.microPay(data);
}catch (Exception e){
e.printStackTrace();
}
} }
/** /**
@ -92,7 +123,6 @@ public class WecPaymentServiceImp implements WecPaymentService {
public Boolean orderResult(OrderBO orderBO) { public Boolean orderResult(OrderBO orderBO) {
Order order = orderBO.getOrder(); Order order = orderBO.getOrder();
String url = PaymentConstant.WX_ORDER_PAY_URL + order.getOrderNo() + "?mchid=" + order.getMchId(); 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()); return WxpayUtils.queryWxOrder(PaymentConstant.PAY_ORDER,url,orderBO.getMchId(),orderBO.getMchPrivateKey(),orderBO.getCertificate(),orderBO.getSerialNo());
} }

31
payment-base-app/src/main/java/com/base/springcloud/wxsdk/MyConfig.java

@ -1,44 +1,39 @@
package com.base.springcloud.wxsdk; package com.base.springcloud.wxsdk;
import lombok.Data;
import sun.misc.BASE64Decoder; import sun.misc.BASE64Decoder;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Data
public class MyConfig extends WXPayConfig { public class MyConfig extends WXPayConfig {
private String appid = "wxa91984b310053c3d"; private String appid;
private String mchid = "1610494969"; private String mchid;
private String key = "yDXt3Jczcs2dSKvwUxGkYYfHzCe8SXtY"; private String key;
/**
* 加载证书 这里证书需要到微信商户平台进行下载
*/
private byte[] certData; private byte[] certData;
public MyConfig() throws Exception { public MyConfig(String appId,String mchId,String key,String certificate){
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=="); this.appid = appId;
this.mchid = mchId;
this.key = key;
this.certData = certificate.getBytes(StandardCharsets.UTF_8);
} }
@Override @Override
String getAppID() { String getAppID() {
return this.appid; return appid;
} }
@Override @Override
String getMchID() { String getMchID() {
return this.mchid; return mchid;
} }
@Override
String getKey() {
return this.key;
}
void setKey(String key){this.key = key;}
@Override @Override
InputStream getCertStream() { InputStream getCertStream() {
return new ByteArrayInputStream(this.certData); return new ByteArrayInputStream(this.certData);

4
payment-base-app/src/main/java/com/base/springcloud/wxsdk/WXPay.java

@ -14,7 +14,7 @@ public class WXPay {
private String notifyUrl; private String notifyUrl;
private WXPayRequest wxPayRequest; private WXPayRequest wxPayRequest;
public WXPay(final WXPayConfig config) throws Exception { public WXPay(final WXPayConfig config){
this(config, null, true, false); this(config, null, true, false);
} }
@ -35,7 +35,7 @@ public class WXPay {
this(config, notifyUrl, autoReport, false); 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.config = config;
this.notifyUrl = notifyUrl; this.notifyUrl = notifyUrl;
this.autoReport = autoReport; this.autoReport = autoReport;

2
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 { public class WXPayRequest {
private WXPayConfig config; private WXPayConfig config;
public WXPayRequest(WXPayConfig config) throws Exception{ public WXPayRequest(WXPayConfig config){
this.config = config; this.config = config;
} }

Loading…
Cancel
Save