mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-06-05 16:09:47 +08:00
微信H5支付案例使用
This commit is contained in:
@@ -17,6 +17,7 @@ import com.egzosn.pay.wx.bean.WxTransactionType;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
@@ -44,6 +45,10 @@ public class PayController {
|
||||
@Resource
|
||||
private ApyAccountService service;
|
||||
|
||||
@RequestMapping("/")
|
||||
public ModelAndView index(){
|
||||
return new ModelAndView("/index.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* 这里模拟账户信息增加
|
||||
@@ -73,11 +78,19 @@ public class PayController {
|
||||
* @return 跳到支付页面
|
||||
*/
|
||||
@RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")
|
||||
public String toPay(Integer payId, String transactionType, String bankType, BigDecimal price) {
|
||||
public String toPay(HttpServletRequest request,Integer payId, String transactionType, String bankType, BigDecimal price) {
|
||||
//获取对应的支付账户操作工具(可根据账户id)
|
||||
PayResponse payResponse = service.getPayResponse(payId);
|
||||
|
||||
PayOrder order = new PayOrder("订单title", "摘要", null == price ? new BigDecimal(0.01) : price, UUID.randomUUID().toString().replace("-", ""), PayType.valueOf(payResponse.getStorage().getPayType()).getTransactionType(transactionType));
|
||||
// ------ 微信H5使用----
|
||||
order.setSpbillCreateIp(request.getHeader("X-Real-IP"));
|
||||
StringBuffer requestURL = request.getRequestURL();
|
||||
//设置网页地址
|
||||
order.setWapUrl(requestURL.substring(0, requestURL.indexOf("/") > 0 ? requestURL.indexOf("/") : requestURL.length() ));
|
||||
//设置网页名称
|
||||
order.setWapName("在线充值");
|
||||
// ------ 微信H5使用----
|
||||
|
||||
//此处只有刷卡支付(银行卡支付)时需要
|
||||
if (StringUtils.isNotEmpty(bankType)) {
|
||||
@@ -87,6 +100,28 @@ public class PayController {
|
||||
return payResponse.getService().buildRequest(orderInfo, MethodType.POST);
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳到支付页面
|
||||
* 针对实时支付,即时付款
|
||||
* @return 跳到支付页面
|
||||
*/
|
||||
@RequestMapping(value = "toWxPay.html", produces = "text/html;charset=UTF-8")
|
||||
public String toWxPay(HttpServletRequest request) {
|
||||
//获取对应的支付账户操作工具(可根据账户id)
|
||||
PayResponse payResponse = service.getPayResponse(2);
|
||||
|
||||
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01) , UUID.randomUUID().toString().replace("-", ""), WxTransactionType.MWEB);
|
||||
order.setSpbillCreateIp(request.getHeader("X-Real-IP"));
|
||||
StringBuffer requestURL = request.getRequestURL();
|
||||
//设置网页地址
|
||||
order.setWapUrl(requestURL.substring(0, requestURL.indexOf("/") > 0 ? requestURL.indexOf("/") : requestURL.length() ));
|
||||
//设置网页名称
|
||||
order.setWapName("在线充值");
|
||||
|
||||
Map orderInfo = payResponse.getService().orderInfo(order);
|
||||
return payResponse.getService().buildRequest(orderInfo, MethodType.POST);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 公众号支付
|
||||
|
||||
@@ -48,21 +48,21 @@ public class ApyAccountRepository {
|
||||
|
||||
ApyAccount apyAccount2 = new ApyAccount();
|
||||
apyAccount2.setPayId(2);
|
||||
apyAccount2.setPartner("2088102169916436");
|
||||
apyAccount2.setAppid("2016080400165436");
|
||||
apyAccount2.setPartner("1469188802");
|
||||
apyAccount2.setAppid("wx3344f4aed352deae");
|
||||
// TODO 2017/2/9 16:20 author: egan sign_type只有单一key时public_key与private_key相等,比如sign_type=MD5的情况
|
||||
apyAccount2.setPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtIlhP1ju6g7fMIcp5cR+v7bk7RUI+irR3HUm0en39K/UnGByAulGFLZU9//IwIu3xCTfGkRHWV8v9iMJhNmxWqbxwehblTCl4f4uEDz9nECc1QzOesGPx6nMsbAx8+3j/Z2p1OCk+Gszs/nUBEjVY/l8NOQoE5kENyWl0WBTFPPONWm8V02YO8dNx0u29egh0dk17OeS+i5G0F+OY7xWnfjSrOqPYAtoo9ccEQUIbhiWz5X3TqmkzjNL3JojsvrymLym97z0COYfl1RlP8tqYhNKLM0FmVndRfcO9HgTx1mO4tj2hsDZN/AnAb3vULaMlESxIg+i6yUBpEOiwj+zLQIDAQAB");
|
||||
apyAccount2.setPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCKA8XdHGExkLnb2Z3mF+6HQUorznXT0XE0GDiRtR+bIM/lE1o6UvAi2vSL5VT1Ob2+yzaSB2zDbfZJrzWcWveU8emN/xVd/yodUbzWnSQkI0k7suLeZDDCcxjT3g5JFSbcWmUec+OFt4n3Ymvrz0rriXfMV4MYlAmru+2UpiyA18SPXUiWWtHXhM4mJ5qAK6Xy2Xpg8fbqcbBLnV5GMipzno2VU0K1WKSe0qhOjPN7vvyZcRXRo5HGd76/Dhc/LhWgM/Ff2oaqQWhSo0tj33/2xmOLxueZaJw5Tx6sBxaBpIaX1huASmeFNgRNb1hSUwbVqkJKuvyEMQvTcz+9wqd9AgMBAAECggEAbtec33ndbUtImZLqx1LNFP+QrCICa324JxiUxiDrI1F05gtm2ZSmm7ex03D5jIE1LLhUOW+RIFt+A6udqNc+I/ctlgcZiAZYMnfk65AE6KkWNcXzgpyAtIpvlCiw3G0KasqGj7CPOGMxgOcguaAgEY60Ef7uoJy0L6KcqlfTQh3X26lHSyduTT/eFQmGstNnfZSnoSgdWoGYJcYwxeI/FZM/AF+qQxqurrB/MWihA+41dko2s+pG/gsnv3JtPiU7uxmzIhkKKo34bNgne6YtLibzamSe2RQNnqRykasrKEibtrUtFoyyzHRhUEjhW4la9je0H3weeyEIqYYrwq3kmQKBgQDUpKh2rmj54ovN7YAk0RkFj495od7IKN4EXRfjeiZHVrsJ97LNzYh2ldh8LRuHOGNP1jI5lBA6UL+VdjObtAiP0a3i5mLgREQ6vU4aQVEgVXiFTiFpgiwURHk3uX7S7DiOolvChmO9UTR91vaATMsTo4/uBLAkC0tQhxLrP/LAIwKBgQCmJ7tBQ9PgKeZCVcfEJQTSUwYeQD+TozjmkBCyn4S6U3pntZAj9XTUVKRiu1pvRCZZ8xjSHQ+xut8wcO4cBCUxSslDWD84HAAj5Aae80Ws7vBq6gS9G3ko1kVxLOOfA/74rB49BUEOcx9P6E2MWVSYhvtzyPvYi0PvLDQGRx2j3wKBgCRzPTVq3C/Jd7GK/qZQ+XsMismMx8WDy9rvokKqE5my8kjZHttMWhIJyZwvl0Jslgl/bAiWqtl0MgMKyfnsuHL+vFHisBxFV3TCMnspqyBhxlEDfZK6b5fhzO2SbHz3ZRJ+HkCQDNTM8LSJfqOrhjwNk4R3ZUIodXaOUN3mjlQFAoGASUJ7betaIBxZSiZITlOELLgummf5oD73d7FNq3RqMT1dWxzS0QgI2xX25RF2bli+ECr/ZqUpplOe1Nz2H6Q0QeeXlfny5epypWCFCtB4iCdSGdHVBQx3/2l6dMw2EIbShRJewsjuRlC8HZ9vkdJRWm8pr4OOh4vgCDSVO69fgkECgYEA0sjX815xMCwO1PDf+7/DNfJ5a2bYdMkVRe6y6a/Dzf83bJDdYZsOKlmSim49kPKEYU9MAT6Mst0Et9GpbzYDIZ4wj6aL01ckYvI42nhn2iylzYz+rOsg8mircFVcwiOh27BoNm8xpMFNzaY743gn37B8n3PaFboXWMO96y2rl8k=");
|
||||
apyAccount2.setNotifyUrl("http://pay.egan.in/payBack1.json");
|
||||
apyAccount2.setPublicKey("991ded0800933ccf8736ab4f7fc61095");
|
||||
apyAccount2.setPrivateKey("991ded0800933ccf8736ab4f7fc61095");
|
||||
apyAccount2.setNotifyUrl("http://pay.egzosn.com/payBack2.json");
|
||||
// 无需同步回调可不填
|
||||
apyAccount2.setReturnUrl("http://192.168.1.58:9096/payBack2.json");
|
||||
apyAccount2.setReturnUrl("http://pay.egzosn.com");
|
||||
apyAccount2.setInputCharset("UTF-8");
|
||||
apyAccount2.setSeller("2088102169916436");
|
||||
apyAccount2.setSignType(SignUtils.RSA2.name());
|
||||
apyAccount2.setPayType(PayType.aliPay);
|
||||
apyAccount2.setMsgType(MsgType.text);
|
||||
apyAccount2.setSeller("1469188802");
|
||||
apyAccount2.setSignType(SignUtils.MD5.name());
|
||||
apyAccount2.setPayType(PayType.wxPay);
|
||||
apyAccount2.setMsgType(MsgType.xml);
|
||||
//设置测试环境
|
||||
apyAccount2.setTest(true);
|
||||
apyAccount2.setTest(false);
|
||||
apyAccounts.put(apyAccount2.getPayId(), apyAccount2);
|
||||
|
||||
ApyAccount apyAccount3 = new ApyAccount();
|
||||
|
||||
@@ -42,7 +42,7 @@ public enum PayType implements BasePayType {
|
||||
AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
|
||||
aliPayConfigStorage.setPid(apyAccount.getPartner());
|
||||
aliPayConfigStorage.setAppId(apyAccount.getAppid());
|
||||
aliPayConfigStorage.setAliPublicKey(apyAccount.getPublicKey());
|
||||
aliPayConfigStorage.setKeyPublic(apyAccount.getPublicKey());
|
||||
aliPayConfigStorage.setKeyPrivate(apyAccount.getPrivateKey());
|
||||
aliPayConfigStorage.setNotifyUrl(apyAccount.getNotifyUrl());
|
||||
aliPayConfigStorage.setReturnUrl(apyAccount.getReturnUrl());
|
||||
@@ -73,6 +73,7 @@ public enum PayType implements BasePayType {
|
||||
wxPayConfigStorage.setAppid(apyAccount.getAppid());
|
||||
wxPayConfigStorage.setKeyPrivate(apyAccount.getPrivateKey());
|
||||
wxPayConfigStorage.setNotifyUrl(apyAccount.getNotifyUrl());
|
||||
wxPayConfigStorage.setReturnUrl(apyAccount.getReturnUrl());
|
||||
wxPayConfigStorage.setSignType(apyAccount.getSignType());
|
||||
wxPayConfigStorage.setPayType(apyAccount.getPayType().toString());
|
||||
wxPayConfigStorage.setMsgType(apyAccount.getMsgType());
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>TEST</title>
|
||||
<title>Egan 充值</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -69,7 +69,8 @@
|
||||
<br>
|
||||
<br>
|
||||
APP提交(返回对应的json,具体实现,app端demo暂时未实现)
|
||||
<form action="getOrderInfo" target="_blank">
|
||||
<form action="
|
||||
getOrderInfo" target="_blank">
|
||||
账户id<input type="text" name="payId">
|
||||
<br>
|
||||
金额<input type="text" name="price">
|
||||
|
||||
Reference in New Issue
Block a user