加入支付宝跳转接口
This commit is contained in:
@@ -3,9 +3,9 @@ server:
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:mysql://47.104.224.184:3306/ysr_mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: 507admin
|
||||
url: jdbc:mysql://192.168.31.162:3306/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||
username: lion
|
||||
password: leeqiang
|
||||
druid:
|
||||
initial-size: 5 #连接池初始化大小
|
||||
min-idle: 10 #最小空闲连接数
|
||||
@@ -17,10 +17,10 @@ spring:
|
||||
login-password: druid
|
||||
|
||||
redis:
|
||||
host: 47.104.224.184 # Redis服务器地址
|
||||
database: 0 # Redis数据库索引(默认为0)
|
||||
host: 192.168.31.162 # Redis服务器地址
|
||||
database: 1 # Redis数据库索引(默认为0)
|
||||
port: 6379 # Redis服务器连接端口
|
||||
password: redis # Redis服务器连接密码(默认为空)
|
||||
password: leeqiang # Redis服务器连接密码(默认为空)
|
||||
jedis:
|
||||
pool:
|
||||
max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
|
||||
@@ -30,7 +30,7 @@ spring:
|
||||
timeout: 3000ms # 连接超时时间(毫秒)
|
||||
|
||||
rabbitmq:
|
||||
host: 47.104.224.184
|
||||
host: 192.168.122.201
|
||||
port: 5672
|
||||
virtual-host: /mall
|
||||
username: mall
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||||
@@ -83,6 +83,13 @@
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>1.3.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 支付宝支付 -->
|
||||
<dependency>
|
||||
<groupId>com.alipay.sdk</groupId>
|
||||
<artifactId>alipay-sdk-java</artifactId>
|
||||
<version>4.39.246.ALL</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.buy507.mall.portal.controller;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -132,7 +134,25 @@ public class OmsPortalOrderController {
|
||||
public CommonResult<Map<String, String>> wxPrePay(@RequestParam Long orderId) {
|
||||
return portalOrderService.wxPrePay(orderId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ApiOperation("支付宝web跳转接口")
|
||||
@ApiImplicitParam(name = "orderId", value = "订单ID", paramType = "query")
|
||||
@RequestMapping(value = "/toAlipayWeb", method = RequestMethod.POST)
|
||||
public CommonResult<Map<String, String>> toAlipayWeb(@RequestParam Long orderId, HttpServletResponse response)
|
||||
throws IOException {
|
||||
String result = portalOrderService.toAlipayWeb(orderId);
|
||||
if(result != null){
|
||||
String charset = "UTF-8";
|
||||
response.setContentType("text/html;charset=" + charset);
|
||||
OutputStream out = response.getOutputStream();
|
||||
out.write(result.getBytes(charset));
|
||||
response.getOutputStream().flush();
|
||||
}
|
||||
return CommonResult.failed("调用支付宝支付失败");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 微信支付成功回调方法
|
||||
* @param request
|
||||
@@ -142,5 +162,17 @@ public class OmsPortalOrderController {
|
||||
public void wxPayCallback(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
portalOrderService.wxPayCallback(request, response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 支付宝支付成功回调方法
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
@RequestMapping("/alipay/callback")
|
||||
public void alipayCallback(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
portalOrderService.wxPayCallback(request, response);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.buy507.mall.portal.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AlipayPayTradeDto {
|
||||
|
||||
private String subject;
|
||||
|
||||
private String outTradeNo;
|
||||
|
||||
private String totalFee;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.buy507.mall.portal.pay.alipay;
|
||||
|
||||
import com.alipay.api.AlipayClient;
|
||||
import com.alipay.api.DefaultAlipayClient;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class AlipayConfig {
|
||||
|
||||
@Value("${alipay.appId}")
|
||||
private String appId;
|
||||
|
||||
@Value("${alipay.appPrivateKey}")
|
||||
private String appPrivateKey;
|
||||
|
||||
@Value("${alipay.alipayPublicKey}")
|
||||
private String alipayPublicKey;
|
||||
|
||||
@Value("${alipay.serverUrl}")
|
||||
private String serverUrl;
|
||||
|
||||
@Value("${alipay.format}")
|
||||
private String format;
|
||||
|
||||
@Value("${alipay.charset}")
|
||||
private String charset;
|
||||
|
||||
@Value("${alipay.signType}")
|
||||
private String signType;
|
||||
|
||||
@Bean
|
||||
public AlipayClient alipayClient() {
|
||||
return new DefaultAlipayClient(serverUrl, appId, appPrivateKey, format, charset, alipayPublicKey, signType);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.buy507.mall.portal.service;
|
||||
|
||||
|
||||
import com.buy507.mall.portal.domain.AlipayPayTradeDto;
|
||||
|
||||
public interface AlipayService {
|
||||
/**
|
||||
* 跳转支付宝支付
|
||||
* @param tradeDto
|
||||
* @return
|
||||
*/
|
||||
String createPayment(AlipayPayTradeDto tradeDto);
|
||||
}
|
||||
@@ -87,6 +87,13 @@ public interface OmsPortalOrderService {
|
||||
* @return
|
||||
*/
|
||||
CommonResult<Map<String, String>> wxPrePay(Long orderId);
|
||||
|
||||
/**
|
||||
* 支付宝预支付
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
String toAlipayWeb(Long orderId);
|
||||
|
||||
/**
|
||||
* 微信支付成功回调方法
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.buy507.mall.portal.service.impl;
|
||||
|
||||
import com.alipay.api.AlipayClient;
|
||||
import com.alipay.api.request.AlipayTradeWapPayRequest;
|
||||
import com.alipay.api.response.AlipayTradeWapPayResponse;
|
||||
import com.buy507.mall.portal.domain.AlipayPayTradeDto;
|
||||
import com.buy507.mall.portal.service.AlipayService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AlipayServiceImpl implements AlipayService {
|
||||
|
||||
@Autowired
|
||||
private AlipayClient alipayClient;
|
||||
|
||||
@Value("${alipay.payCallBackUrl}")
|
||||
private String WECHAT_PAY_PAY_CALLBACK_URL;
|
||||
|
||||
|
||||
@Override
|
||||
public String createPayment(AlipayPayTradeDto tradeDto) {
|
||||
AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
|
||||
alipayRequest.setNotifyUrl(WECHAT_PAY_PAY_CALLBACK_URL);
|
||||
|
||||
alipayRequest.setBizContent("{" +
|
||||
"\"out_trade_no\":\"" + tradeDto.getOutTradeNo() + "\"," +
|
||||
"\"total_amount\":\"" + tradeDto.getTotalFee() + "\"," +
|
||||
"\"subject\":\"" + tradeDto.getSubject() + "\"," +
|
||||
"\"product_code\":\"QUICK_WAP_WAY\"" +
|
||||
"}");
|
||||
|
||||
try {
|
||||
AlipayTradeWapPayResponse response = alipayClient.pageExecute(alipayRequest, "POST");
|
||||
return response.getBody();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -16,6 +16,8 @@ import java.util.concurrent.ExecutorService;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.buy507.mall.portal.domain.*;
|
||||
import com.buy507.mall.portal.service.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -65,23 +67,9 @@ import com.buy507.mall.portal.component.CancelOrderSender;
|
||||
import com.buy507.mall.portal.component.DistributeSender;
|
||||
import com.buy507.mall.portal.component.RedisLock;
|
||||
import com.buy507.mall.portal.dao.PortalOrderDao;
|
||||
import com.buy507.mall.portal.domain.CartOrderParam;
|
||||
import com.buy507.mall.portal.domain.LogisticsResult;
|
||||
import com.buy507.mall.portal.domain.OfflinePaymentParam;
|
||||
import com.buy507.mall.portal.domain.OfflinePaymentRecordResult;
|
||||
import com.buy507.mall.portal.domain.OmsOrderDetail;
|
||||
import com.buy507.mall.portal.domain.OrderItemResult;
|
||||
import com.buy507.mall.portal.domain.OrderParam;
|
||||
import com.buy507.mall.portal.domain.OrderResult;
|
||||
import com.buy507.mall.portal.domain.SellerBankAccountResult;
|
||||
import com.buy507.mall.portal.domain.WxPayTradeDto;
|
||||
import com.buy507.mall.portal.pay.wxpay.MyConfig;
|
||||
import com.buy507.mall.portal.pay.wxpay.WXPay;
|
||||
import com.buy507.mall.portal.pay.wxpay.WXPayUtil;
|
||||
import com.buy507.mall.portal.service.OmsPortalOrderService;
|
||||
import com.buy507.mall.portal.service.PortalCommonService;
|
||||
import com.buy507.mall.portal.service.RedisService;
|
||||
import com.buy507.mall.portal.service.UmsMemberService;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
@@ -161,6 +149,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
|
||||
@Autowired
|
||||
private RedisLock redisLock;
|
||||
|
||||
@Autowired
|
||||
private AlipayService alipayService;
|
||||
|
||||
@Value("${kuaidi100.url}")
|
||||
private String KUAIDI100_URL;
|
||||
@@ -1393,7 +1384,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
|
||||
try {
|
||||
WxPayTradeDto tradeDto = new WxPayTradeDto();
|
||||
tradeDto.setBody("渝森蓉商城-森态空气");
|
||||
tradeDto.setBody("森态空气");
|
||||
tradeDto.setOutTradeNo(order.getOrderSn());
|
||||
Double totalFree = order.getPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() * 100;
|
||||
tradeDto.setTotalFee(String.valueOf(totalFree.intValue()));
|
||||
@@ -1415,7 +1406,34 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
return CommonResult.failed("调用微信支付失败");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String toAlipayWeb(Long orderId) {
|
||||
|
||||
OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
|
||||
// 支付方式为1才允许支付
|
||||
if(order != null && order.getPayType() == 1) {
|
||||
|
||||
//如果实际支付金额大于0,调用支付接口
|
||||
//flag = -1,表示PayAmount小于zero;flag = 0,表示PayAmount等于zero;flag = 1,表示PayAmount大于zero;
|
||||
if (order.getPayAmount().compareTo(BigDecimal.ZERO) == 1) {
|
||||
|
||||
AlipayPayTradeDto tradeDto = new AlipayPayTradeDto();
|
||||
tradeDto.setSubject("订单号:"+order.getOrderSn());
|
||||
tradeDto.setOutTradeNo(order.getOrderSn());
|
||||
Double totalFree = order.getPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
tradeDto.setTotalFee(String.valueOf(totalFree.intValue()));
|
||||
|
||||
return alipayService.createPayment(tradeDto);
|
||||
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private Map<String, String> wxPay(WxPayTradeDto tradeDto, String notifyUrl) throws Exception {
|
||||
MyConfig config = new MyConfig(WECHAT_APPID, WECHAT_PAY_MCHID, WECHAT_PAY_KEY);
|
||||
WXPay wxpay = new WXPay(config);
|
||||
@@ -1462,7 +1480,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 微信支付成功回调方法
|
||||
* @param request
|
||||
@@ -1625,4 +1643,5 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@ server:
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:mysql://47.104.224.184:3306/ysr_mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: 507admin
|
||||
url: jdbc:mysql://192.168.31.162:3306/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||
username: lion
|
||||
password: leeqiang
|
||||
druid:
|
||||
initial-size: 5 #连接池初始化大小
|
||||
min-idle: 10 #最小空闲连接数
|
||||
@@ -18,15 +18,15 @@ spring:
|
||||
|
||||
data:
|
||||
mongodb:
|
||||
host: 47.104.224.184
|
||||
port: 27017
|
||||
host: 192.168.31.162
|
||||
port: 40001
|
||||
database: mall-port
|
||||
|
||||
redis:
|
||||
host: 47.104.224.184 # Redis服务器地址
|
||||
host: 192.168.31.162 # Redis服务器地址
|
||||
database: 0 # Redis数据库索引(默认为0)
|
||||
port: 6379 # Redis服务器连接端口
|
||||
password: redis # Redis服务器连接密码(默认为空)
|
||||
password: leeqiang # Redis服务器连接密码(默认为空)
|
||||
jedis:
|
||||
pool:
|
||||
max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
|
||||
@@ -36,7 +36,7 @@ spring:
|
||||
timeout: 3000ms # 连接超时时间(毫秒)
|
||||
|
||||
rabbitmq:
|
||||
host: 47.104.224.184
|
||||
host: 192.168.122.201
|
||||
port: 5672
|
||||
virtual-host: /mall
|
||||
username: mall
|
||||
@@ -77,3 +77,13 @@ logging:
|
||||
com.buy507.mall.mapper: debug
|
||||
com.buy507.mall.portal: debug
|
||||
|
||||
alipay:
|
||||
appId: 9021000141666104
|
||||
appPrivateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCPp50bwLpQ5ofFcUztw46BTcc1lOGKoyuOtI+biJmgNfysl0nqeDYEriPTZo0pe7gwujrwNSMBKvmKLQ+awQSM7XEQfDj7oGNp1yw5EFjT62tFlIoi7bMueRUZnxQRTkZhNobj6+BfOeMMg0HURVE1VinUr4UVjO7IIODLCkYDURNMfSr3f4paO0odPCRSw47+b6euuzoszd81nfZUa7f6NPBaf6iAn6i2aSPTASlfAW/TZ9IHmVd13tI3pWSpsaMu0KcKZIfTz+l/VazHWQBLACzOF0LJ+eSjsj8aNGOp9Jo82zh+GddK94fElqCjoFQySeYjQ6OErGLsz1Pm6CJhAgMBAAECggEAK+p+0hQqIT9IdGi9rtYgw5DGfK/l/18AmuDCIjcxV9QJSa36b86OHQIre54XO35SAbt89yAXcmzz2nUKFzI4tOiFrxd6yBnxKlMYdt1zel227o+JZ0Ipi+SCOdHy7ZNzWpazyAu9DP+CVLnvrvf96oNLyHRcCAmMmevLLOcYHjz+d56pTS/JblPQWz/WRPkqSJt2FcMKQCbGNhthjHFf+EFF/OGVGTSpS8AW6gytUR/k713UBrrY9eYAsZ+ZA/wAsECQCvRnoxO7zy+7rTlVT+I6kJu+BfUuTgx2FOO4gjQa8ICZI/ncpW+7X7DLhcNA6Yh20T4sY8AlMU3tIoyuQQKBgQDJbzva1J3MpTwUo1FtkWrrne8X58lqKOo7T7+J2xvif3sFd9/nu/R2FX9QoJuxIgHGsl0AA5wsaEReUFf00m542zLQAfOWmPtCQ0D5zzE6MBr2BwUvNHdw0UlYzFqfq0xfty27fwIv3rI60cJ0GnxIrBB9/BaGPX6i7Pv3nXy2iQKBgQC2kY8KWMOT8r+EMs6Lm4tf+lKauYbGLIjZuAcjP1p8NO6B1psTnwQfrI/JBipXxdgwlNyfytYPTah5m2zWDfaUkcbNIu+wXUZCvVUgLi3ZYj0hlOOOzXkYiRg7k9yirzXxjdk3yRGJ0DZqxCMcizNrsQmM1B8nMcg4N+e48bQXGQKBgHzzeBCFZSFFuiAfMuqhks53WJHeoQ0uNiX2kRzlgsWcSGaa9pRb/gelzCTqi8l0C+ACUjgpBR5yyz4p3nWqdwaXCk0HeN+JJAr1hv+u651pq7/DmQ6wIAsmd7YShYCYFLcm/MJaxbOGE87ywQmeSEwYF97emeZJjR1pnd76nRrpAoGABzqeQlefbuVGxhJI8Wg4TZWY3b2I46HxzUUnKzMf/xkNdKCtxUofnK11iA0xcgZIeCv8zGr4rORzTlVkKtmksN9Q0uCWQxJ+bLgYfcy2TgxAxWqi1A24xMrw5bMGIn7zkNwABOB2TFGtRe78QO4WHCaHbUcc8K1c8zTrfPw9GEkCgYB+mMZXsFe8KDOsy+fRdnB2KN+FlZIKKP2ehTGZnj9JENIR6A8//MgC4astniIy/K2JY6EsvPpHzT9nSK0uQBFSIXFgXm4qnVLXATZskKu8mvQgcYcvXKZHdQHNzvn+J53xfxnAcqXtcMPzvLzCoTMcbjKJ8YC0bBr0eNonb4ea5g==
|
||||
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6dBwV5KsJHqqvxh29bkGxEW8eIb8WJx6Ax5NuERvbM5BcTKEe/yse/mCR5OEZSWSNnxa3SQCql50xcxt0cfSe/QcmXP+Mi6sY07LO2/tK+N8PhYWzKunnq+KbanQ+R0wGw4oVl02g/vXx097aWiDZdLcHu8No78b6VIy79EsqThbiQuqJdmFkXfrePzKxNbIrAr4ENZJVcmp2+/LU7LrdAqgnlzyx4Ya0begj7d/MPz+weteSmoyBeAH2xzPiKpdOtR5HdKyaaTIRBGyr+BTYMdyeZYrGtB7HNPv2ydAHJwiQj88dDCCGhCRyDLpLdF15xZGLxTq8FlqKzfzut/UowIDAQAB
|
||||
serverUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
|
||||
format: json
|
||||
charset: UTF-8
|
||||
signType: RSA2
|
||||
payCallBackUrl: https://yusenrong.507buy.com/member/order/alipay/callback
|
||||
|
||||
|
||||
@@ -77,4 +77,12 @@ logging:
|
||||
com.buy507.mall.portal: debug
|
||||
path: /var/logs
|
||||
|
||||
|
||||
alipay:
|
||||
appId: your_app_id
|
||||
appPrivateKey: your_app_private_key
|
||||
alipayPublicKey: your_alipay_public_key
|
||||
serverUrl: https://openapi.alipay.com/gateway.do
|
||||
format: json
|
||||
charset: UTF-8
|
||||
signType: RSA2
|
||||
payCallBackUrl: https://yusenrong.507buy.com/member/order/alipay/callback
|
||||
|
||||
@@ -22,4 +22,4 @@ redis:
|
||||
authCode: "portal:authCode:"
|
||||
orderId: "portal:orderId:"
|
||||
expire:
|
||||
authCode: 300 # 验证码超期时间 5分钟有效
|
||||
authCode: 300 # 验证码超期时间 5分钟有效
|
||||
|
||||
Reference in New Issue
Block a user