Skip to content

Commit 216eec2

Browse files
author
yangzhao
committed
新增支付宝H5支付实现
1 parent 229f9bb commit 216eec2

File tree

5 files changed

+128
-18
lines changed

5 files changed

+128
-18
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.yz.common.payment.trade.pay;
2+
3+
import java.math.BigDecimal;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
import com.alibaba.fastjson.JSON;
8+
import com.alipay.api.AlipayClient;
9+
import com.alipay.api.DefaultAlipayClient;
10+
import com.alipay.api.request.AlipayTradeWapPayRequest;
11+
import com.alipay.api.response.AlipayTradeWapPayResponse;
12+
import com.yz.common.payment.config.AliPayConfig;
13+
import com.yz.common.payment.trade.pay.bo.AliTradePayResponse;
14+
import com.yz.common.payment.trade.pay.params.AliTradeH5PayParams;
15+
16+
/**
17+
* @author: yangzhao
18+
* @Date: 2019/7/10 17:43
19+
* @Description:
20+
*/
21+
public class AliH5TradePayImpl implements TradePay<AliTradeH5PayParams, AliTradePayResponse> {
22+
23+
private AliPayConfig aliPayConfig;
24+
25+
public AliH5TradePayImpl(AliPayConfig aliPayConfig) {
26+
this.aliPayConfig = aliPayConfig;
27+
}
28+
29+
@Override
30+
public AliTradePayResponse createTradePay(AliTradeH5PayParams aliTradeH5PayParams) throws Exception {
31+
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
32+
aliPayConfig.getAppId(), aliPayConfig.getAppPrivateKey(), "json", aliPayConfig.getCharset(),
33+
aliPayConfig.getAliPayPublicKey(), aliPayConfig.getSignType());
34+
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
35+
request.setNotifyUrl(aliTradeH5PayParams.getNotifyUrl());
36+
request.setReturnUrl(aliTradeH5PayParams.getQuitUrl());
37+
Map<String, Object> bizContent = new HashMap<>();
38+
BigDecimal bigDecimal = new BigDecimal(aliTradeH5PayParams.getTotalAmount());
39+
// BigDecimal bigDecimal = new BigDecimal("0.01");
40+
bigDecimal = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);
41+
bizContent.put("total_amount", bigDecimal.toString());
42+
bizContent.put("subject", aliTradeH5PayParams.getSubject());
43+
bizContent.put("out_trade_no", aliTradeH5PayParams.getOutTradeNo());
44+
bizContent.put("quit_url", aliTradeH5PayParams.getQuitUrl());
45+
bizContent.put("product_code", "QUICK_WAP_WAY");
46+
request.setBizContent(JSON.toJSONString(bizContent));
47+
AlipayTradeWapPayResponse alipayTradeWapPayResponse = alipayClient.pageExecute(request);
48+
if (!alipayTradeWapPayResponse.isSuccess()) {
49+
return null;
50+
}
51+
logger.info("支付宝H5统一下单成功");
52+
return AliTradePayResponse.generator(alipayTradeWapPayResponse);
53+
}
54+
}

common-pay/src/main/java/com/yz/common/payment/trade/pay/bo/AliTradePayResponse.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.yz.common.payment.trade.pay.bo;
22

33
import com.alipay.api.response.AlipayTradeAppPayResponse;
4+
import com.alipay.api.response.AlipayTradeWapPayResponse;
45

56
/**
67
* @author: yangzhao
@@ -70,7 +71,7 @@ public void setTradeNo(String tradeNo) {
7071
this.tradeNo = tradeNo;
7172
}
7273

73-
public static AliTradePayResponse generator(AlipayTradeAppPayResponse alipayTradeAppPayResponse){
74+
public static AliTradePayResponse generator(AlipayTradeAppPayResponse alipayTradeAppPayResponse) {
7475
AliTradePayResponse aliTradePayResponse = new AliTradePayResponse();
7576
aliTradePayResponse.setOutTradeNo(alipayTradeAppPayResponse.getOutTradeNo());
7677
aliTradePayResponse.setTotalAmount(alipayTradeAppPayResponse.getTotalAmount());
@@ -79,4 +80,15 @@ public static AliTradePayResponse generator(AlipayTradeAppPayResponse alipayTra
7980
aliTradePayResponse.setSellerId(alipayTradeAppPayResponse.getSellerId());
8081
return null;
8182
}
83+
84+
public static AliTradePayResponse generator(AlipayTradeWapPayResponse alipayTradeAppPayResponse) {
85+
AliTradePayResponse aliTradePayResponse = new AliTradePayResponse();
86+
aliTradePayResponse.setOutTradeNo(alipayTradeAppPayResponse.getOutTradeNo());
87+
aliTradePayResponse.setTotalAmount(alipayTradeAppPayResponse.getTotalAmount());
88+
aliTradePayResponse.setTradeNo(alipayTradeAppPayResponse.getOutTradeNo());
89+
aliTradePayResponse.setSellerId(alipayTradeAppPayResponse.getSellerId());
90+
aliTradePayResponse.setBody(alipayTradeAppPayResponse.getBody());
91+
return aliTradePayResponse;
92+
}
93+
8294
}

common-pay/src/main/java/com/yz/common/payment/trade/pay/bo/TradePayResponse.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,14 @@
66
* @Description:
77
*/
88
public abstract class TradePayResponse {
9+
10+
private String body;
11+
12+
public String getBody() {
13+
return body;
14+
}
15+
16+
public void setBody(String body) {
17+
this.body = body;
18+
}
919
}

common-pay/src/main/java/com/yz/common/payment/trade/pay/builder/AliTradePayParamsBuilder.java

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.yz.common.payment.trade.pay.builder;
22

3-
43
import com.yz.common.payment.enums.PayTypeEnum;
54
import com.yz.common.payment.trade.pay.bo.UserOrder;
65
import com.yz.common.payment.trade.pay.params.AliTradeAppPayParams;
6+
import com.yz.common.payment.trade.pay.params.AliTradeH5PayParams;
77
import com.yz.common.payment.trade.pay.params.TradePayParams;
88

99
/**
@@ -19,39 +19,48 @@ public class AliTradePayParamsBuilder {
1919

2020
private String returnUrl;
2121

22-
public static AliTradePayParamsBuilder builder(){
22+
public static AliTradePayParamsBuilder builder() {
2323
return new AliTradePayParamsBuilder();
2424
}
2525

26-
public AliTradePayParamsBuilder userOrder(UserOrder userOrder){
27-
this.userOrder=userOrder;
26+
public AliTradePayParamsBuilder userOrder(UserOrder userOrder) {
27+
this.userOrder = userOrder;
2828
return this;
2929
}
3030

31-
public AliTradePayParamsBuilder notifyUrl(String notifyUrl){
32-
this.notifyUrl=notifyUrl;
31+
public AliTradePayParamsBuilder notifyUrl(String notifyUrl) {
32+
this.notifyUrl = notifyUrl;
3333
return this;
3434
}
35-
public AliTradePayParamsBuilder returnUrl(String returnUrl){
36-
this.returnUrl=returnUrl;
35+
36+
public AliTradePayParamsBuilder returnUrl(String returnUrl) {
37+
this.returnUrl = returnUrl;
3738
return this;
3839
}
3940

40-
public TradePayParams build(){
41-
TradePayParams tradePayParams=null;
42-
Integer payType=userOrder.getPayType();
43-
if (payType== PayTypeEnum.JS.getCode()){
44-
45-
}else if (payType==PayTypeEnum.APP.getCode()){
41+
public TradePayParams build() {
42+
TradePayParams tradePayParams = null;
43+
Integer payType = userOrder.getPayType();
44+
if (payType == PayTypeEnum.JS.getCode()) {
45+
AliTradeH5PayParams aliTradeH5PayParams = new AliTradeH5PayParams();
46+
aliTradeH5PayParams.setBody(userOrder.getSubject());
47+
aliTradeH5PayParams.setOutTradeNo(userOrder.getOrderNum());
48+
aliTradeH5PayParams.setSubject(userOrder.getSubject());
49+
aliTradeH5PayParams.setTotalAmount(userOrder.getActualPrice().toString());
50+
aliTradeH5PayParams.setMethod("alipay.trade.wap.pay");
51+
aliTradeH5PayParams.setNotifyUrl(notifyUrl);
52+
aliTradeH5PayParams.setQuitUrl(returnUrl);
53+
tradePayParams = aliTradeH5PayParams;
54+
} else if (payType == PayTypeEnum.APP.getCode()) {
4655
AliTradeAppPayParams aliTradeAppPayParams = new AliTradeAppPayParams();
4756
aliTradeAppPayParams.setBody(userOrder.getSubject());
4857
aliTradeAppPayParams.setOutTradeNo(userOrder.getOrderNum());
4958
aliTradeAppPayParams.setSubject(userOrder.getSubject());
50-
aliTradeAppPayParams.setTotalAmount(userOrder.getOriginalPrice().toString());
59+
aliTradeAppPayParams.setTotalAmount(userOrder.getActualPrice().toString());
5160
aliTradeAppPayParams.setMethod("alipay.trade.app.pay");
5261
aliTradeAppPayParams.setNotifyUrl(notifyUrl);
53-
tradePayParams=aliTradeAppPayParams;
54-
}else if (payType==PayTypeEnum.PC.getCode()){
62+
tradePayParams = aliTradeAppPayParams;
63+
} else if (payType == PayTypeEnum.PC.getCode()) {
5564

5665
}
5766
return tradePayParams;

common-pay/src/main/java/com/yz/common/payment/trade/pay/params/AliTradeH5PayParams.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,29 @@ public class AliTradeH5PayParams extends AliTradePayParams {
1616
*/
1717
private String product_code;
1818

19+
private String notifyUrl;
20+
21+
public String getQuitUrl() {
22+
return quitUrl;
23+
}
24+
25+
public void setQuitUrl(String quitUrl) {
26+
this.quitUrl = quitUrl;
27+
}
28+
29+
public String getProduct_code() {
30+
return product_code;
31+
}
32+
33+
public void setProduct_code(String product_code) {
34+
this.product_code = product_code;
35+
}
36+
37+
public String getNotifyUrl() {
38+
return notifyUrl;
39+
}
40+
41+
public void setNotifyUrl(String notifyUrl) {
42+
this.notifyUrl = notifyUrl;
43+
}
1944
}

0 commit comments

Comments
 (0)