测试下单功能后,bug修复
This commit is contained in:
parent
95f5db067c
commit
2a1c93a934
@ -7,5 +7,5 @@ public class TimeConstant {
|
|||||||
* 订单超时 毫秒 默认30分钟
|
* 订单超时 毫秒 默认30分钟
|
||||||
*/
|
*/
|
||||||
// todo 测试时将时间改为了5分钟 ,记得改回30分钟
|
// todo 测试时将时间改为了5分钟 ,记得改回30分钟
|
||||||
public static final long ORDER_PAY_TIMEOUT_MILLS = 1000 * 60 * 5;
|
public static final long ORDER_PAY_TIMEOUT_MILLS = 1000 * 60 * 30;
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ public class CouponRecordController {
|
|||||||
public JsonData lockCouponRecords(@ApiParam("锁定优惠券请求对象") @RequestBody LockCouponRecordRequest request) {
|
public JsonData lockCouponRecords(@ApiParam("锁定优惠券请求对象") @RequestBody LockCouponRecordRequest request) {
|
||||||
|
|
||||||
JsonData jsonData = couponRecordService.lockCouponRecords(request);
|
JsonData jsonData = couponRecordService.lockCouponRecords(request);
|
||||||
return JsonData.buildSuccess();
|
return jsonData;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -73,5 +73,4 @@ mqconfig:
|
|||||||
coupon_release_routing_key: coupon.release.routing.key
|
coupon_release_routing_key: coupon.release.routing.key
|
||||||
|
|
||||||
#消息过期时间,毫秒,测试改为15秒
|
#消息过期时间,毫秒,测试改为15秒
|
||||||
#为了测试修改时间 todo 记得修改回1500
|
ttl: 15000
|
||||||
ttl: 360000
|
|
@ -30,7 +30,7 @@
|
|||||||
set use_state =#{useState} where user_id = #{userId} and use_state = 'NEW'
|
set use_state =#{useState} where user_id = #{userId} and use_state = 'NEW'
|
||||||
and id in
|
and id in
|
||||||
<foreach collection="lockCouponRecordIds"
|
<foreach collection="lockCouponRecordIds"
|
||||||
index="index" item="i" separator="," open="(" close=")">#{id}
|
index="index" item="id" separator="," open="(" close=")">#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package net.jieyuu.component;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alipay.api.AlipayApiException;
|
import com.alipay.api.AlipayApiException;
|
||||||
|
import com.alipay.api.domain.AlipayTradeQueryModel;
|
||||||
import com.alipay.api.request.AlipayTradePagePayRequest;
|
import com.alipay.api.request.AlipayTradePagePayRequest;
|
||||||
import com.alipay.api.request.AlipayTradeQueryRequest;
|
import com.alipay.api.request.AlipayTradeQueryRequest;
|
||||||
import com.alipay.api.request.AlipayTradeWapPayRequest;
|
import com.alipay.api.request.AlipayTradeWapPayRequest;
|
||||||
@ -33,9 +34,9 @@ public class AlipayStrategy implements PayStrategy {
|
|||||||
public String unifiedorder(PayInfoVO payInfoVO) {
|
public String unifiedorder(PayInfoVO payInfoVO) {
|
||||||
HashMap<String, String> content = new HashMap<>();
|
HashMap<String, String> content = new HashMap<>();
|
||||||
//商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
|
//商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
|
||||||
String no = UUID.randomUUID().toString();
|
|
||||||
log.info("订单号:{}", no);
|
log.info("订单号:{}", payInfoVO.getOutTradeNo());
|
||||||
content.put("out_trade_no", no);
|
content.put("out_trade_no", payInfoVO.getOutTradeNo());
|
||||||
content.put("product_code", "FAST_INSTANT_TRADE_PAY");
|
content.put("product_code", "FAST_INSTANT_TRADE_PAY");
|
||||||
//订单总金额,单位为元,精确到小数点后两位
|
//订单总金额,单位为元,精确到小数点后两位
|
||||||
content.put("total_amount", payInfoVO.getPayFee().toString());
|
content.put("total_amount", payInfoVO.getPayFee().toString());
|
||||||
@ -52,7 +53,7 @@ public class AlipayStrategy implements PayStrategy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
|
// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
|
||||||
content.put("timeout_express", Double.valueOf(timeout) + "m");
|
content.put("timeout_express", Double.valueOf(timeout).intValue() + "m");
|
||||||
|
|
||||||
String clientType = payInfoVO.getClientType();
|
String clientType = payInfoVO.getClientType();
|
||||||
String form = "";
|
String form = "";
|
||||||
@ -64,14 +65,13 @@ public class AlipayStrategy implements PayStrategy {
|
|||||||
request.setBizContent(JSON.toJSONString(content));
|
request.setBizContent(JSON.toJSONString(content));
|
||||||
request.setNotifyUrl(payUrlConfig.getAlipayCallbackUrl());
|
request.setNotifyUrl(payUrlConfig.getAlipayCallbackUrl());
|
||||||
request.setReturnUrl(payUrlConfig.getAlipaySuccessReturnUrl());
|
request.setReturnUrl(payUrlConfig.getAlipaySuccessReturnUrl());
|
||||||
|
|
||||||
AlipayTradeWapPayResponse alipayResponse = AlipayConfig.getInstance().pageExecute(request);
|
AlipayTradeWapPayResponse alipayResponse = AlipayConfig.getInstance().pageExecute(request);
|
||||||
|
|
||||||
log.info("日志响应:{}", alipayResponse);
|
log.info("响应日志:alipayResponse={}", alipayResponse);
|
||||||
if (alipayResponse.isSuccess()) {
|
if (alipayResponse.isSuccess()) {
|
||||||
form = alipayResponse.getBody();
|
form = alipayResponse.getBody();
|
||||||
} else {
|
} else {
|
||||||
log.error("支付宝构建h5表单失败:request={},payInfo={}", alipayResponse, payInfoVO);
|
log.error("支付宝构建H5表单失败:alipayResponse={},payInfo={}", alipayResponse, payInfoVO);
|
||||||
}
|
}
|
||||||
} else if (ClientType.PC.name().equalsIgnoreCase(clientType)) {
|
} else if (ClientType.PC.name().equalsIgnoreCase(clientType)) {
|
||||||
// PC支付
|
// PC支付
|
||||||
@ -81,7 +81,7 @@ public class AlipayStrategy implements PayStrategy {
|
|||||||
request.setReturnUrl(payUrlConfig.getAlipaySuccessReturnUrl());
|
request.setReturnUrl(payUrlConfig.getAlipaySuccessReturnUrl());
|
||||||
AlipayTradePagePayResponse alipayResponse = AlipayConfig.getInstance().pageExecute(request);
|
AlipayTradePagePayResponse alipayResponse = AlipayConfig.getInstance().pageExecute(request);
|
||||||
|
|
||||||
log.info("日志响应:{}", alipayResponse);
|
log.info("响应日志:alipayResponse={}", alipayResponse);
|
||||||
if (alipayResponse.isSuccess()) {
|
if (alipayResponse.isSuccess()) {
|
||||||
form = alipayResponse.getBody();
|
form = alipayResponse.getBody();
|
||||||
} else {
|
} else {
|
||||||
@ -91,19 +91,24 @@ public class AlipayStrategy implements PayStrategy {
|
|||||||
} catch (AlipayApiException e) {
|
} catch (AlipayApiException e) {
|
||||||
log.error("支付宝构建表单异常:payInfo={},异常={}", payInfoVO, e);
|
log.error("支付宝构建表单异常:payInfo={},异常={}", payInfoVO, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return form;
|
return form;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String refund(PayInfoVO payInfoVO) {
|
public String refund(PayInfoVO payInfoVO) {
|
||||||
return PayStrategy.super.refund(payInfoVO);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单状态
|
* 查询订单状态
|
||||||
* 成功返回非空
|
* 支付成功 返回非空
|
||||||
* 其他返回空
|
* 其他返回空
|
||||||
|
* <p>
|
||||||
|
* 未支付
|
||||||
|
* {"alipay_trade_query_response":{"code":"40004","msg":"Business Failed","sub_code":"ACQ.TRADE_NOT_EXIST","sub_msg":"交易不存在","buyer_pay_amount":"0.00","invoice_amount":"0.00","out_trade_no":"adbe8e8f-3b18-4c9e-b736-02c4c2e15eca","point_amount":"0.00","receipt_amount":"0.00"},"sign":"xxxxx"}
|
||||||
|
* <p>
|
||||||
|
* 已经支付
|
||||||
|
* {"alipay_trade_query_response":{"code":"10000","msg":"Success","buyer_logon_id":"mqv***@sandbox.com","buyer_pay_amount":"0.00","buyer_user_id":"2088102176996700","buyer_user_type":"PRIVATE","invoice_amount":"0.00","out_trade_no":"adbe8e8f-3b18-4c9e-b736-02c4c2e15eca","point_amount":"0.00","receipt_amount":"0.00","send_pay_date":"2020-12-04 17:06:47","total_amount":"111.99","trade_no":"2020120422001496700501648498","trade_status":"TRADE_SUCCESS"},"sign":"xxxx"}
|
||||||
*
|
*
|
||||||
* @param payInfoVO
|
* @param payInfoVO
|
||||||
* @return
|
* @return
|
||||||
@ -112,11 +117,14 @@ public class AlipayStrategy implements PayStrategy {
|
|||||||
public String queryPaySuccess(PayInfoVO payInfoVO) {
|
public String queryPaySuccess(PayInfoVO payInfoVO) {
|
||||||
|
|
||||||
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
|
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
|
||||||
HashMap<String, String> content = new HashMap<>();
|
// HashMap<String, String> content = new HashMap<>();
|
||||||
|
|
||||||
// 订单商位号,64位
|
//订单商户号,64位
|
||||||
content.put("out_trade_no", payInfoVO.getOutTradeNo());
|
// content.put("out_trade_no", payInfoVO.getOutTradeNo());
|
||||||
request.setBizContent(JSON.toJSONString(content));
|
// request.setBizContent(JSON.toJSONString(content));
|
||||||
|
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
|
||||||
|
model.setOutTradeNo(payInfoVO.getOutTradeNo());
|
||||||
|
request.setBizModel(model);
|
||||||
|
|
||||||
AlipayTradeQueryResponse response = null;
|
AlipayTradeQueryResponse response = null;
|
||||||
try {
|
try {
|
||||||
@ -125,7 +133,6 @@ public class AlipayStrategy implements PayStrategy {
|
|||||||
|
|
||||||
} catch (AlipayApiException e) {
|
} catch (AlipayApiException e) {
|
||||||
log.error("支付宝订单查询异常:{}", e);
|
log.error("支付宝订单查询异常:{}", e);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response.isSuccess()) {
|
if (response.isSuccess()) {
|
||||||
|
@ -33,7 +33,6 @@ public class PayFactory {
|
|||||||
} else if (ProductOrderPayTypeEnum.WECHAT.name().equalsIgnoreCase(payType)) {// 微信支付
|
} else if (ProductOrderPayTypeEnum.WECHAT.name().equalsIgnoreCase(payType)) {// 微信支付
|
||||||
PayStrategyContext payStrategyContext = new PayStrategyContext(wechatPayStrategy);
|
PayStrategyContext payStrategyContext = new PayStrategyContext(wechatPayStrategy);
|
||||||
return payStrategyContext.executeUnifiedorder(payInfoVO);
|
return payStrategyContext.executeUnifiedorder(payInfoVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@ -41,21 +40,25 @@ public class PayFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单支付状态
|
* 查询订单支付状态
|
||||||
|
* <p>
|
||||||
|
* 支付成功返回非空,其他返回空
|
||||||
*
|
*
|
||||||
* @param payInfoVO
|
* @param payInfoVO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String querySuccess(PayInfoVO payInfoVO) {
|
public String queryPaySuccess(PayInfoVO payInfoVO) {
|
||||||
|
|
||||||
String payType = payInfoVO.getPayType();
|
String payType = payInfoVO.getPayType();
|
||||||
if (ProductOrderPayTypeEnum.ALIPAY.name().equalsIgnoreCase(payType)) {// 支付宝
|
|
||||||
|
if (ProductOrderPayTypeEnum.ALIPAY.name().equalsIgnoreCase(payType)) {
|
||||||
|
//支付宝支付
|
||||||
PayStrategyContext payStrategyContext = new PayStrategyContext(alipayStrategy);
|
PayStrategyContext payStrategyContext = new PayStrategyContext(alipayStrategy);
|
||||||
|
|
||||||
return payStrategyContext.executeQueryPaySuccess(payInfoVO);
|
return payStrategyContext.executeQueryPaySuccess(payInfoVO);
|
||||||
|
|
||||||
} else if (ProductOrderPayTypeEnum.WECHAT.name().equalsIgnoreCase(payType)) {// 微信支付
|
} else if (ProductOrderPayTypeEnum.WECHAT.name().equalsIgnoreCase(payType)) {
|
||||||
|
//微信支付 暂未实现
|
||||||
PayStrategyContext payStrategyContext = new PayStrategyContext(wechatPayStrategy);
|
PayStrategyContext payStrategyContext = new PayStrategyContext(wechatPayStrategy);
|
||||||
return payStrategyContext.executeQueryPaySuccess(payInfoVO);
|
return payStrategyContext.executeQueryPaySuccess(payInfoVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,11 @@ public class AlipayConfig {
|
|||||||
/**
|
/**
|
||||||
* 应用私钥 todo
|
* 应用私钥 todo
|
||||||
*/
|
*/
|
||||||
public static final String APP_PRI_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXErw8mdLqhNbQqNBAC4mUYXpRb3hbTYCg+W+JJe5R7oid7yGI61h9DhdWPZIKelKIN3km7QX8wa7BygBLx0U8LVmxh1Y14kxluNqykqeZc/250L+Y2fTTWZBoeaQvajZnLgnMm8ym/Z0Ned6vvCp+2OY4xjpAxJQm3RW6EMdQDQ3did8pAX03KU7W3+TZ7t3I8Ml9JeNyh4wyM4KNVH0aKTGYYn0uR6Euh5On1hID86ENRuSg3Xu9cvUkH2px/6RX2HBG43/kKHniz3T2AB+Htx6r+1GMqKjx8f3dxkKYro2EmxBxdSxEJgOqh7JjGP0qqiWwaW8zgicwtmrccI7XAgMBAAECggEAGz/Q3ilsxspRKO/aKEMsfKwccQXnMqjHE8IKITXLR9H7qGkSpmy02FGrWe3fIq6vpkxDOQc1tkKFMAUsin6V+WXAsOnVXgDEgPCX2e/j9STb1iFV/c8Kfvi/uGiAeeDxkSjXsaVEg7ZpFp4t0YriK2EaHZF7vmT2yA/GtHoESWbYw/2bchW/6OUbmugIzR7GVAjvc7/ZmkZVCnG4xDdW2Nu5jHNLPvNTluB5CZUnjjXvdRtChTdktgQD1t8LSQ6I1NHJutw10/N1anwQ99uO+LMxDUnZZvZshP26ooO2Og/kWPEU2oUgdB37DGJ0OfSWrEF67fzCyKuBxKT1TnmikQKBgQD0R09FD6vo+H6gd4WhN/BfUHtoN5Lyz8kkvaDWDzyCC/t+utJ+hNXTSHgz+hA/OQxCk0iIlPnPfBJRhzhxB2yUVwD//nXB3lu3hnfnkXrg3iKKjqkO6SP9yDHi7XghDTdU2P1F1cj+gfH+nasMElesDBSjtfHYLBS0WiHUec6LLwKBgQCeUoBZAa5p5ILHflnFva4eFQdEtr5gAwH8oRqFCTZBQtWdCDUQ9MvciLK1Pe9hBhR8iOCtP15Qgpc867vld/ZF1VeW0TYtxBwfM+u3JdXllYtx6KIt1L83jWhcmHWdv73bCCUPw/m7FTPi3lrUAGRw0+jWYoLVpmEHrd9THHes2QKBgHh7g3mIlT2+8pWq3dn6gTBBvdxVLMFeAtOARAfQVAPAbTbAZnnIgr5HDCJ2v/Su6oEbq7bR47SWeWKE0y3Mf51anD+m/eW1Cn+mbxVkB7tJVLgKTQ/xpbLSPuiyP4HtxtCuhZ0gKJZ++SCgG3FEysEs5DEq2DHK7BtYKT9nJJw5AoGAQzRMDPwcuBBqvxnQK5LvlQ9iDXXw67p7HmyYYD5fzGX9XPH97Jus6YkRKsQGl83H5nEHxiKu+0fjwNVj5ez9GfmMe5WFBPpI4andddnWqOTI02pnZUL4hDE/Sobg7jxU7+POL5oFqLdAVh4CuhkMiaQ6Ir6gQOamK2dP8+ySlEkCgYEA1kBmBFtKFl4V+ZshqcjMWcMCAANWf3jKkBAf9Dvr632vcafQeXTZdnWLQkwuwz/r0aoSKcCIuhxPzKpalSoyItX5DYYNG5BiC/Wwo3ktTvv+2xdnkpgx/+2gvbJLtNsikCDWC6zWO7Q/4/v0LsrzEWNgMXUIepqPffI3NUGtWkU=";
|
public static final String APP_PRI_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD3h1fjm+ERZWep9X8MQSNL8fvFnVhki6JreUvaHTi1a9Kf05czNM9YP5WU9WeNZLBhlJalXTaLZcLxzS3Id3Ig6iQ6IEG0LQPN9DBL5RZG8TDGfD/vaZAmXQ8hOWjwzgAmjko/fMXXnLMW8WCGJF6qv9KhkgTFH5w9PdW4XgjcxKx6EmgYSf4Qi1cWzMQmZP/RpED6Tqwh5/U7Bqszsq0QeFWDHl40dh5J3czDUBxWeumu2qE24NxWMKrpYqigTfBGGQCJQMQ9l+hHNHnd49wYqnrUPSSnji30nKF8wMGTjfxvME2bVMrzCItKFIykazHrmGyAKsv9CV/joTlJZVHBAgMBAAECggEBAM3yzi2ShLD0rku69vo7OCL4M4M4Z1NA2uKRCYtwxL4t+BEC+8qfJeVHAi3uATqjjB2kg7MS208gXBLTpEQnHc5FAd9a90/yJDg38/cxpFdiVjLPLmMEcet5gh0ipy20OGvb9+ra5cF/n4J3UthJanqnH5lO5Kkeo+BQkoHTu4vydJuGB6vWrCxUL+gvpsG506EhcUqpR0MXZ+KUiRLurHfooWj5+/XwoFj99hZNjr9wIM583gkDmcpjfNbRYmcXoTd/NcyBgB1ijWkWrv/kkxXs3Rr94wZ6vYTp6EB57dnKqMJxIqJT/FSzdTcrlddIG0qk7fsTMC1Uup6szuEL1AECgYEA//86BRESx1thvdTN9IO3VDqNBYet52f9lW0ROY3pA1f3KovDJfspUKQo4r/tlj1lkDTuYo5WqTaGRBW6dzMldF0pmdMg+JOAXdx/92QC4pSOiTRCOzXDBETJVw3fm8E+tRyidA8yUd8meHQvi+cnWznI5dSPBLHLiOhjCVhCCj8CgYEA94gXUfe/0Iiw+lOTLD+rxGcRIucV3g7N7aeD9kUTR+MSeeg0SSAm1uqsITRYIkf2P/Fe0KiusY5ATVBI+d/3KwM5Z47NtUjgp4H451PtgVqlBNFuTS4MWI/KXXbU6VWmZxxZF/QkIcAg0zyASNaqD7IcLi6bk09s029W6ZEpo/8CgYB6xyZEl9Ox2ZofOZkt1J5wv0QzisdVXQK6T/0a5X0EJYRd23pVFQjTrGgPmI2SqQ+1Ai3zBuF5drUeom00DkvAa44wQJpnnhbK7Z5SQJ1Bno5eL7o0O6y0t2j5X6YHRb+VjY48q60upyAEVXUYXFz729MGp9OQJNXBa/NT4AiMcQKBgFfxbfedQfTg25/UWZF6/ZfF1nzEBSzjrZ4lyeiRGgyMTGArc4gXeDUbIxSY+EcVshN9ueYASDClDYtqXsMII1SQzLBSOBuUTNy2fKwTUWqHveE8VyfsmE5Op+MU+Qf9eiVgGPc9siibjg3+jMVUHw98hC6UOInZyhxEjmhlPpoZAoGAITeVYRulrUcGh7DqkNRYRDHxAbXmKG4qvzqwZXSyEtwiy2tA5zhzCoboHdPPdqnTdQxiszG3f5P7N0SLQzl3BKTQ4svc5lKlU/CG0JD11K1ReA41MxstFsIX1A605Uh7BtWK9eUyizDrxXN8fOxolM0XUxFpFK1WYrtxwfGjwu8=";
|
||||||
/**
|
/**
|
||||||
* 支付宝公钥 todo
|
* 支付宝公钥 todo
|
||||||
*/
|
*/
|
||||||
public static final String ALIPAY_PUB_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj4BMyZx16Xpfd00w25ub4ZcWzRiWCx1v6EScmq2ezu/W95FO70r6EawFGVh2nE+XqZFlf53bIBhwtxUCV2xJEy9qHuooVvqByoMRdSs4y1BlUR99WfYqc+67i41rp8hDDZ8s31/9gXbiVfsSFe3YqHq3WzCuYbqwpwt0vEFbX829DZP3BNJ/DTbx2mtFYEJYFRi8nKkHFjivjjMw9nbAQsFQT6Q7GpPR6cqUGX1YYzvsdo1U+XF3FG4SoPYZKh6KVdRJQ/RKzYnNgPN7d6UydUarFRCnyLQ9qa/gFTX373pM+IlD9WhW15ixGq/USgcOBLZ+1Ujc90OLym0mulCGRQIDAQAB";
|
public static final String ALIPAY_PUB_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj4BMyZx16Xpfd00w25ub4ZcWzRiWCx1v6EScmq2ezu/W95FO70r6EawFGVh2nE+XqZFlf53bIBhwtxUCV2xJEy9qHuooVvqByoMRdSs4y1BlUR99WfYqc+67i41rp8hDDZ8s31/9gXbiVfsSFe3YqHq3WzCuYbqwpwt0vEFbX829DZP3BNJ/DTbx2mtFYEJYFRi8nKkHFjivjjMw9nbAQsFQT6Q7GpPR6cqUGX1YYzvsdo1U+XF3FG4SoPYZKh6KVdRJQ/RKzYnNgPN7d6UydUarFRCnyLQ9qa/gFTX373pM+IlD9WhW15ixGq/USgcOBLZ+1Ujc90OLym0mulCGRQIDAQAB";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 签名类型
|
* 签名类型
|
||||||
*/
|
*/
|
||||||
|
@ -27,5 +27,5 @@ public interface CouponFeignService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/api/coupon_record/v1/lock_records")
|
@PostMapping("/api/coupon_record/v1/lock_records")
|
||||||
JsonData lockCouponRecords(@ApiParam("锁定优惠券请求对象") @RequestBody LockCouponRecordRequest lockCouponRecordRequest);
|
JsonData lockCouponRecords(@RequestBody LockCouponRecordRequest lockCouponRecordRequest);
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
|
|||||||
String payResult = payFactory.pay(payInfoVO);
|
String payResult = payFactory.pay(payInfoVO);
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(payResult)) {
|
if (StringUtils.isNotBlank(payResult)) {
|
||||||
log.error("创建支付订单成功:payInfo={},payResult={}", payInfoVO, payResult);
|
log.info("创建支付订单成功:payInfo={},payResult={}", payInfoVO, payResult);
|
||||||
return JsonData.buildSuccess(payResult);
|
return JsonData.buildSuccess(payResult);
|
||||||
} else {
|
} else {
|
||||||
log.error("创建支付订单失败:payInfo={},payResult={}", payInfoVO, payResult);
|
log.error("创建支付订单失败:payInfo={},payResult={}", payInfoVO, payResult);
|
||||||
@ -306,7 +306,7 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 验价
|
// 验价
|
||||||
if (realPayAmount.compareTo(orderRequest.getTotalAmount()) != 0) {
|
if (realPayAmount.compareTo(orderRequest.getRealPayAmount()) != 0) {
|
||||||
log.error("订单验价失败:{}", orderRequest);
|
log.error("订单验价失败:{}", orderRequest);
|
||||||
throw new BizException(BizCodeEnum.ORDER_CONFIRM_PRICE_FAIL);
|
throw new BizException(BizCodeEnum.ORDER_CONFIRM_PRICE_FAIL);
|
||||||
}
|
}
|
||||||
@ -411,7 +411,7 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
|
|||||||
PayInfoVO payInfoVO = new PayInfoVO();
|
PayInfoVO payInfoVO = new PayInfoVO();
|
||||||
payInfoVO.setPayType(productOrderDO.getPayType());
|
payInfoVO.setPayType(productOrderDO.getPayType());
|
||||||
payInfoVO.setOutTradeNo(orderMessage.getOutTradeNo());
|
payInfoVO.setOutTradeNo(orderMessage.getOutTradeNo());
|
||||||
String payResult = payFactory.querySuccess(payInfoVO);
|
String payResult = payFactory.queryPaySuccess(payInfoVO);
|
||||||
|
|
||||||
// 订单结果为空,支付不成功,取消订单
|
// 订单结果为空,支付不成功,取消订单
|
||||||
if (StringUtils.isBlank(payResult)) {
|
if (StringUtils.isBlank(payResult)) {
|
||||||
|
@ -61,13 +61,12 @@ mqconfig:
|
|||||||
order_close_routing_key: order.close.routing.key
|
order_close_routing_key: order.close.routing.key
|
||||||
|
|
||||||
#消息过期时间,毫秒,测试改为15秒
|
#消息过期时间,毫秒,测试改为15秒
|
||||||
# 为了测试修改时间为300秒 todo 记得修改
|
ttl: 15000
|
||||||
ttl: 300000
|
|
||||||
|
|
||||||
# 支付宝配置
|
# 支付宝配置
|
||||||
alipay:
|
alipay:
|
||||||
# 支付成功的跳转页面
|
# 支付成功的跳转页面
|
||||||
success_return_url: http://jieyuu.net
|
success_return_url: http://jieyuu.net
|
||||||
# 支付宝通知回调接口
|
# 支付宝通知回调接口
|
||||||
callback_url: http://jieyuu.net
|
callback_url: http://8.134.32.140:13001/api/callback/order/v1/alipay
|
||||||
|
|
||||||
|
@ -18,28 +18,31 @@
|
|||||||
|
|
||||||
<!-- 通用查询结果列 -->
|
<!-- 通用查询结果列 -->
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
id, product_order_id, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
|
id
|
||||||
|
, product_order_id, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<!-- 通用查询结果列 -->
|
<!-- 通用查询结果列 -->
|
||||||
<sql id="Base_Column_NO_List">
|
<sql id="Base_Column_List_No_Id">
|
||||||
id, product_order_id, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
|
product_order_id
|
||||||
|
, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<insert id="insertBatch">
|
<insert id="insertBatch">
|
||||||
|
|
||||||
insert into product_order_item
|
insert into product_order_item
|
||||||
(<include refid="Base_Column_NO_List"/>)
|
(<include refid="Base_Column_List_No_Id"/>)
|
||||||
values
|
values
|
||||||
<foreach collection="orderItemList" item="item" index="index" separator=",">
|
<foreach collection="orderItemList" item="item" index="index" separator=",">
|
||||||
(
|
(
|
||||||
#{item.productOrderId}
|
#{item.productOrderId},
|
||||||
#{item.outTradeNo}
|
#{item.outTradeNo},
|
||||||
#{item.productId}
|
#{item.productId},
|
||||||
#{item.productName}
|
#{item.productName},
|
||||||
#{item.productImg}
|
#{item.productImg},
|
||||||
#{item.buyNum}
|
#{item.buyNum},
|
||||||
#{item.createTime}
|
#{item.createTime},
|
||||||
#{item.totalAmount}
|
#{item.totalAmount},
|
||||||
#{item.amount}
|
#{item.amount}
|
||||||
)
|
)
|
||||||
</foreach>
|
</foreach>
|
||||||
|
@ -90,7 +90,6 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, ProductDO> im
|
|||||||
@Override
|
@Override
|
||||||
public ProductVO findDetailById(long productId) {
|
public ProductVO findDetailById(long productId) {
|
||||||
ProductDO productDO = productMapper.selectById(productId);
|
ProductDO productDO = productMapper.selectById(productId);
|
||||||
|
|
||||||
return beanProcess(productDO);
|
return beanProcess(productDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,7 +163,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, ProductDO> im
|
|||||||
log.info("商品库存锁定信息延迟消息发送成功:{}", productMessage);
|
log.info("商品库存锁定信息延迟消息发送成功:{}", productMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return JsonData.buildSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -229,7 +228,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, ProductDO> im
|
|||||||
private ProductVO beanProcess(ProductDO obj) {
|
private ProductVO beanProcess(ProductDO obj) {
|
||||||
ProductVO productVO = new ProductVO();
|
ProductVO productVO = new ProductVO();
|
||||||
BeanUtils.copyProperties(obj, productVO);
|
BeanUtils.copyProperties(obj, productVO);
|
||||||
|
productVO.setStock(obj.getStock() - obj.getLockStock());
|
||||||
return productVO;
|
return productVO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,5 +62,4 @@ mqconfig:
|
|||||||
stock_release_routing_key: stock.release.routing.key
|
stock_release_routing_key: stock.release.routing.key
|
||||||
|
|
||||||
#消息过期时间,毫秒,测试改为15秒
|
#消息过期时间,毫秒,测试改为15秒
|
||||||
#为了测试修改时间 todo 记得修改回1500
|
ttl: 15000
|
||||||
ttl: 360000
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
update product
|
update product
|
||||||
set lock_stock = lock_stock + #{buyNum}
|
set lock_stock = lock_stock + #{buyNum}
|
||||||
where id = #{productId}
|
where id = #{productId}
|
||||||
and stock - lock_stock >={buyNum}
|
and stock - lock_stock >= #{buyNum}
|
||||||
</update>
|
</update>
|
||||||
<!--解锁商品库存-->
|
<!--解锁商品库存-->
|
||||||
<update id="unlockProductStock">
|
<update id="unlockProductStock">
|
||||||
|
Loading…
Reference in New Issue
Block a user