mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-05-08 03:56:48 +08:00
1.修复bug
2.优化文档
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
package com.egzosn.pay.demo.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.egzosn.pay.ali.bean.AliTransactionType;
|
||||
import com.egzosn.pay.common.api.Callback;
|
||||
import com.egzosn.pay.common.api.PayConfigStorage;
|
||||
@@ -310,8 +309,8 @@ public class PayController {
|
||||
PayResponse payResponse = service.getPayResponse(payId);
|
||||
PayConfigStorage storage = payResponse.getStorage();
|
||||
//获取支付方返回的对应参数
|
||||
// Map<String, Object> params = payResponse.getService().getParameter2Map(request.getParameterMap(), request.getInputStream());
|
||||
Map<String, Object> params = JSONObject.parseObject("{\"bizType\":\"000201\",\"signPubKeyCert\":\"-----BEGIN CERTIFICATE-----\\r\\nMIIEQzCCAyugAwIBAgIFEBJJZVgwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMC\\r\\nQ04xMDAuBgNVBAoTJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhv\\r\\ncml0eTEXMBUGA1UEAxMOQ0ZDQSBURVNUIE9DQTEwHhcNMTcxMTAxMDcyNDA4WhcN\\r\\nMjAxMTAxMDcyNDA4WjB3MQswCQYDVQQGEwJjbjESMBAGA1UEChMJQ0ZDQSBPQ0Ex\\r\\nMQ4wDAYDVQQLEwVDVVBSQTEUMBIGA1UECxMLRW50ZXJwcmlzZXMxLjAsBgNVBAMU\\r\\nJTA0MUBaMjAxNy0xMS0xQDAwMDQwMDAwOlNJR05AMDAwMDAwMDEwggEiMA0GCSqG\\r\\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDIWO6AESrg+34HgbU9mSpgef0sl6avr1d\\r\\nbD/IjjZYM63SoQi3CZHZUyoyzBKodRzowJrwXmd+hCmdcIfavdvfwi6x+ptJNp9d\\r\\nEtpfEAnJk+4quriQFj1dNiv6uP8ARgn07UMhgdYB7D8aA1j77Yk1ROx7+LFeo7rZ\\r\\nDdde2U1opPxjIqOPqiPno78JMXpFn7LiGPXu75bwY2rYIGEEImnypgiYuW1vo9UO\\r\\nG47NMWTnsIdy68FquPSw5FKp5foL825GNX3oJSZui8d2UDkMLBasf06Jz0JKz5AV\\r\\nblaI+s24/iCfo8r+6WaCs8e6BDkaijJkR/bvRCQeQpbX3V8WoTLVAgMBAAGjgfQw\\r\\ngfEwHwYDVR0jBBgwFoAUz3CdYeudfC6498sCQPcJnf4zdIAwSAYDVR0gBEEwPzA9\\r\\nBghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNu\\r\\nL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNh\\r\\nLmNvbS5jbi9SU0EvY3JsMjQ4NzIuY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQU\\r\\nmQQLyuqYjES7qKO+zOkzEbvdFwgwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUF\\r\\nBwMEMA0GCSqGSIb3DQEBBQUAA4IBAQAujhBuOcuxA+VzoUH84uoFt5aaBM3vGlpW\\r\\nKVMz6BUsLbIpp1ho5h+LaMnxMs6jdXXDh/du8X5SKMaIddiLw7ujZy1LibKy2jYi\\r\\nYYfs3tbZ0ffCKQtv78vCgC+IxUUurALY4w58fRLLdu8u8p9jyRFHsQEwSq+W5+bP\\r\\nMTh2w7cDd9h+6KoCN6AMI1Ly7MxRIhCbNBL9bzaxF9B5GK86ARY7ixkuDCEl4XCF\\r\\nJGxeoye9R46NqZ6AA/k97mJun//gmUjStmb9PUXA59fR5suAB5o/5lBySZ8UXkrI\\r\\npp/iLT8vIl1hNgLh0Ghs7DBSx99I+S3VuUzjHNxL6fGRhlix7Rb8\\r\\n-----END CERTIFICATE-----\",\"orderId\":\"20171213224128\",\"signature\":\"l8xBYSoMNzt01DDa9/JYcrQKWxN5tasUgSxf6NNsQK5t+DqMr2G9qhHXnDg5bEzeRyTFP4bM3htX9RTRhXYDy7EEsL46ZD4ib5I6mp2wXx+26zscUcLdJUiddkY5eFvQK4tPC8blw7Y6p858yiVJpHgbOK3cONhS7vwPJtK2jMbkY+GATu3aZ4iygkQc75cG+EW8nJQVwLNh7q9A6A6II18EFxR7XubdlIHXv/InVaS6ux8Wh2nmQlhRRnLtHq1ri7v1QPlu2FzM+kaf7/fn61iGr8zEPj62NzWDXue62LUfb4kTRgdkcJnfJBJl8vjZ/w93UtsnK3zjzJC/Nu+wCw==\",\"txnSubType\":\"01\",\"traceNo\":\"492156\",\"accNo\":\"6221********0000\",\"settleAmt\":\"1000\",\"settleCurrencyCode\":\"156\",\"settleDate\":\"1213\",\"txnType\":\"01\",\"encoding\":\"UTF-8\",\"version\":\"5.1.0\",\"queryId\":\"511712132241284921568\",\"accessType\":\"0\",\"exchangeRate\":\"0\",\"respMsg\":\"success\",\"traceTime\":\"1213224128\",\"txnTime\":\"20171213224128\",\"merId\":\"777290058154626\",\"currencyCode\":\"156\",\"respCode\":\"00\",\"signMethod\":\"01\",\"txnAmt\":\"1000\"}");
|
||||
Map<String, Object> params = payResponse.getService().getParameter2Map(request.getParameterMap(), request.getInputStream());
|
||||
// Map<String, Object> params = JSONObject.parseObject("{\"bizType\":\"000201\",\"signPubKeyCert\":\"-----BEGIN CERTIFICATE-----\\r\\nMIIEQzCCAyugAwIBAgIFEBJJZVgwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMC\\r\\nQ04xMDAuBgNVBAoTJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhv\\r\\ncml0eTEXMBUGA1UEAxMOQ0ZDQSBURVNUIE9DQTEwHhcNMTcxMTAxMDcyNDA4WhcN\\r\\nMjAxMTAxMDcyNDA4WjB3MQswCQYDVQQGEwJjbjESMBAGA1UEChMJQ0ZDQSBPQ0Ex\\r\\nMQ4wDAYDVQQLEwVDVVBSQTEUMBIGA1UECxMLRW50ZXJwcmlzZXMxLjAsBgNVBAMU\\r\\nJTA0MUBaMjAxNy0xMS0xQDAwMDQwMDAwOlNJR05AMDAwMDAwMDEwggEiMA0GCSqG\\r\\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDIWO6AESrg+34HgbU9mSpgef0sl6avr1d\\r\\nbD/IjjZYM63SoQi3CZHZUyoyzBKodRzowJrwXmd+hCmdcIfavdvfwi6x+ptJNp9d\\r\\nEtpfEAnJk+4quriQFj1dNiv6uP8ARgn07UMhgdYB7D8aA1j77Yk1ROx7+LFeo7rZ\\r\\nDdde2U1opPxjIqOPqiPno78JMXpFn7LiGPXu75bwY2rYIGEEImnypgiYuW1vo9UO\\r\\nG47NMWTnsIdy68FquPSw5FKp5foL825GNX3oJSZui8d2UDkMLBasf06Jz0JKz5AV\\r\\nblaI+s24/iCfo8r+6WaCs8e6BDkaijJkR/bvRCQeQpbX3V8WoTLVAgMBAAGjgfQw\\r\\ngfEwHwYDVR0jBBgwFoAUz3CdYeudfC6498sCQPcJnf4zdIAwSAYDVR0gBEEwPzA9\\r\\nBghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNu\\r\\nL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNh\\r\\nLmNvbS5jbi9SU0EvY3JsMjQ4NzIuY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQU\\r\\nmQQLyuqYjES7qKO+zOkzEbvdFwgwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUF\\r\\nBwMEMA0GCSqGSIb3DQEBBQUAA4IBAQAujhBuOcuxA+VzoUH84uoFt5aaBM3vGlpW\\r\\nKVMz6BUsLbIpp1ho5h+LaMnxMs6jdXXDh/du8X5SKMaIddiLw7ujZy1LibKy2jYi\\r\\nYYfs3tbZ0ffCKQtv78vCgC+IxUUurALY4w58fRLLdu8u8p9jyRFHsQEwSq+W5+bP\\r\\nMTh2w7cDd9h+6KoCN6AMI1Ly7MxRIhCbNBL9bzaxF9B5GK86ARY7ixkuDCEl4XCF\\r\\nJGxeoye9R46NqZ6AA/k97mJun//gmUjStmb9PUXA59fR5suAB5o/5lBySZ8UXkrI\\r\\npp/iLT8vIl1hNgLh0Ghs7DBSx99I+S3VuUzjHNxL6fGRhlix7Rb8\\r\\n-----END CERTIFICATE-----\",\"orderId\":\"20171213224128\",\"signature\":\"l8xBYSoMNzt01DDa9/JYcrQKWxN5tasUgSxf6NNsQK5t+DqMr2G9qhHXnDg5bEzeRyTFP4bM3htX9RTRhXYDy7EEsL46ZD4ib5I6mp2wXx+26zscUcLdJUiddkY5eFvQK4tPC8blw7Y6p858yiVJpHgbOK3cONhS7vwPJtK2jMbkY+GATu3aZ4iygkQc75cG+EW8nJQVwLNh7q9A6A6II18EFxR7XubdlIHXv/InVaS6ux8Wh2nmQlhRRnLtHq1ri7v1QPlu2FzM+kaf7/fn61iGr8zEPj62NzWDXue62LUfb4kTRgdkcJnfJBJl8vjZ/w93UtsnK3zjzJC/Nu+wCw==\",\"txnSubType\":\"01\",\"traceNo\":\"492156\",\"accNo\":\"6221********0000\",\"settleAmt\":\"1000\",\"settleCurrencyCode\":\"156\",\"settleDate\":\"1213\",\"txnType\":\"01\",\"encoding\":\"UTF-8\",\"version\":\"5.1.0\",\"queryId\":\"511712132241284921568\",\"accessType\":\"0\",\"exchangeRate\":\"0\",\"respMsg\":\"success\",\"traceTime\":\"1213224128\",\"txnTime\":\"20171213224128\",\"merId\":\"777290058154626\",\"currencyCode\":\"156\",\"respCode\":\"00\",\"signMethod\":\"01\",\"txnAmt\":\"1000\"}");
|
||||
|
||||
if (null == params) {
|
||||
return payResponse.getService().getPayOutMessage("fail", "失败").toMessage();
|
||||
|
||||
@@ -88,9 +88,9 @@ public class ApyAccountRepository {
|
||||
apyAccount4.setPublicKey("D:/certs/acp_test_middle.cer;D:/certs/acp_test_root.cer");
|
||||
//私钥, 私钥证书格式: 私钥证书路径;私钥证书对应的密码
|
||||
apyAccount4.setPrivateKey("D:/certs/acp_test_sign.pfx;000000");
|
||||
apyAccount4.setNotifyUrl("http://b1234780541.eicp.net/payBack4.json");
|
||||
apyAccount4.setNotifyUrl("http://127.0.0.1/payBack4.json");
|
||||
// 无需同步回调可不填 app填这个就可以
|
||||
apyAccount4.setReturnUrl("http://b1234780541.eicp.net/payBack4.json");
|
||||
apyAccount4.setReturnUrl("http://127.0.0.1/payBack4.json");
|
||||
apyAccount4.setSeller("");
|
||||
apyAccount4.setInputCharset("UTF-8");
|
||||
apyAccount4.setSignType(SignUtils.RSA2.name());
|
||||
|
||||
@@ -111,7 +111,7 @@ public class PayResponse {
|
||||
.handler(autowire(new FuiouPayMessageHandler(payId)))
|
||||
.end()
|
||||
.rule()
|
||||
.msgType(MsgType.text.name())
|
||||
.msgType(MsgType.json.name())
|
||||
.payType(PayType.unionPay.name())
|
||||
.handler(autowire(new UnionPayMessageHandler(payId)))
|
||||
.end()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
|
||||
## 微信支付简单例子
|
||||
## 银联支付简单例子
|
||||
|
||||
#### 支付配置
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
```java
|
||||
|
||||
UnionPayService service = new UnionPayService(unionPayConfigStorage);
|
||||
|
||||
unionPayConfigStorage.setCertSign(true);//是否为证书签名
|
||||
|
||||
```
|
||||
|
||||
@@ -57,6 +59,19 @@
|
||||
```java
|
||||
PayOrder payOrder = new PayOrder("订单title", "摘要", new BigDecimal(0.01) , new SimpleDateFormat("yyyyMMddHHmmss").format(System.currentTimeMillis()));
|
||||
```
|
||||
#### 网页支付
|
||||
```java
|
||||
// 手机网页支付(WAP支付)
|
||||
payOrder.setTransactionType(UnionTransactionType.WAP);
|
||||
// 网关支付
|
||||
// payOrder.setTransactionType(UnionTransactionType.WEB);
|
||||
// 企业网银支付(B2B支付)
|
||||
// payOrder.setTransactionType(UnionTransactionType.B2B);
|
||||
//获取支付所需的信息
|
||||
Map directOrderInfo = service.orderInfo(payOrder);
|
||||
//获取表单提交对应的字符串,将其序列化到页面即可,
|
||||
String directHtml = service.buildRequest(directOrderInfo, MethodType.POST);
|
||||
```
|
||||
|
||||
#### 主扫申请二维码交易
|
||||
|
||||
@@ -99,7 +114,7 @@
|
||||
#### 文件传输类接口:后台获取对账文件交易,只有同步应答
|
||||
|
||||
```java
|
||||
String fileConten = service.downloadbill(new Date(),"格式为MMDD");
|
||||
String fileConten = service.downloadbill(null,"文件类型,一般商户填写00即可");
|
||||
```
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.egzosn.pay.union.bean;
|
||||
|
||||
import com.egzosn.pay.common.bean.TransactionType;
|
||||
import com.egzosn.pay.common.util.str.StringUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -90,7 +91,9 @@ public enum UnionTransactionType implements TransactionType{
|
||||
//业务类型
|
||||
contentData.put(SDKConstants.param_bizType,this.getBizType());
|
||||
//渠道类型
|
||||
contentData.put(SDKConstants.param_channelType,this.getChannelType());
|
||||
if(StringUtils.isNotBlank(this.getChannelType())){
|
||||
contentData.put(SDKConstants.param_channelType,this.getChannelType());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.egzosn.pay.union.bean.UnionTransactionType;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -21,9 +20,14 @@ public class PayTest {
|
||||
|
||||
|
||||
UnionPayConfigStorage unionPayConfigStorage = new UnionPayConfigStorage();
|
||||
//是否为证书签名
|
||||
unionPayConfigStorage.setCertSign(true);
|
||||
//商户id
|
||||
unionPayConfigStorage.setMerId("商户id");
|
||||
unionPayConfigStorage.setKeyPublic("公钥,验签证书链格式: 中级证书路径;根证书路径");
|
||||
unionPayConfigStorage.setKeyPrivate("私钥, 私钥证书格式: 私钥证书路径;私钥证书对应的密码");
|
||||
//公钥,验签证书链格式: 中级证书路径;根证书路径
|
||||
unionPayConfigStorage.setKeyPublic("D:/certs/acp_test_middle.cer;D:/certs/acp_test_root.cer");
|
||||
//私钥, 私钥证书格式: 私钥证书路径;私钥证书对应的密码
|
||||
unionPayConfigStorage.setKeyPrivate("D:/certs/acp_test_sign.pfx;000000");
|
||||
unionPayConfigStorage.setNotifyUrl("异步回调地址");
|
||||
unionPayConfigStorage.setReturnUrl("同步回调地址");
|
||||
unionPayConfigStorage.setSignType("RSA2");
|
||||
@@ -36,8 +40,13 @@ public class PayTest {
|
||||
PayOrder payOrder = new PayOrder("订单title", "摘要", new BigDecimal(0.01) , new SimpleDateFormat("yyyyMMddHHmmss").format(System.currentTimeMillis()));
|
||||
|
||||
|
||||
/*----------- 网关支付-------------------*/
|
||||
/*----------- 网页支付-------------------*/
|
||||
// 手机网页支付(WAP支付)
|
||||
// payOrder.setTransactionType(UnionTransactionType.WAP);
|
||||
// 网关支付
|
||||
payOrder.setTransactionType(UnionTransactionType.WEB);
|
||||
// 企业网银支付(B2B支付)
|
||||
// payOrder.setTransactionType(UnionTransactionType.B2B);
|
||||
//获取支付所需的信息
|
||||
Map directOrderInfo = service.orderInfo(payOrder);
|
||||
//获取表单提交对应的字符串,将其序列化到页面即可,
|
||||
@@ -74,8 +83,7 @@ public class PayTest {
|
||||
|
||||
|
||||
/*-----------文件传输类接口:后台获取对账文件交易,只有同步应答 ------------------------------*/
|
||||
String fileConten = service.downloadbill(new Date(),"格式为MMDD");
|
||||
/*-----------退货交易:后台资金类交易,有同步应答和后台通知应答------------------------------*/
|
||||
String fileConten = service.downloadbill(null,"文件类型,一般商户填写00即可"); /*-----------退货交易:后台资金类交易,有同步应答和后台通知应答------------------------------*/
|
||||
|
||||
|
||||
/*-----------回调处理-------------------*/
|
||||
|
||||
Reference in New Issue
Block a user