From 31c1f349451712141ce826b585313825e0de41bd Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 09 May 2023 16:47:36 +0800
Subject: [PATCH] 拉卡拉订单查询
---
src/main/java/cc/mrbird/febs/pay/model/LaKaLaQueryOrderReqDate.java | 9 +++
src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java | 147 ++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 130 insertions(+), 26 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/pay/model/LaKaLaQueryOrderReqDate.java b/src/main/java/cc/mrbird/febs/pay/model/LaKaLaQueryOrderReqDate.java
new file mode 100644
index 0000000..c3ff3a8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/model/LaKaLaQueryOrderReqDate.java
@@ -0,0 +1,9 @@
+package cc.mrbird.febs.pay.model;
+
+import lombok.Data;
+
+@Data
+public class LaKaLaQueryOrderReqDate {
+ private String out_order_no;
+ private String merchant_no;
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java
index 36489c4..5e3c641 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/LaKaLaServiceImpl.java
@@ -9,6 +9,7 @@
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.pay.model.LaKaLaBasicReqDate;
import cc.mrbird.febs.pay.model.LaKaLaCreateOrderReqDate;
+import cc.mrbird.febs.pay.model.LaKaLaQueryOrderReqDate;
import cc.mrbird.febs.pay.service.LaKaLaService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.date.DateUtil;
@@ -117,6 +118,10 @@
public final static String apiUrlCreate = "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/create";
public final static String apiUrlCreate_prd = "https://s2.lakala.com/api/v3/ccss/counter/order/create";
+
+ public final static String apiUrlQuery = "https://test.wsmsd.cn/sit/api/v3/ccss/counter/order/query";
+
+ public final static String apiUrlQuery_prd = "https://s2.lakala.com/api/v3/ccss/counter/order/query";
/**
* 支付回调地址
*/
@@ -174,6 +179,7 @@
try {
String body = JSONUtil.parseObj(laKaLaBasicReqDate).toString();
+ log.info("LKL创建请求Body,{}",body);
String authorization = getAuthorization(body);
String apiUrlCreateHttp = "";
@@ -196,6 +202,7 @@
String responseStr = IOUtils.toString(response.getEntity().getContent(), ENCODING);
System.out.println("responseStr " + responseStr);
+ log.info("LKL创建请求返回的responseStr,{}",responseStr);
String source = appid + "\n" + lklapiSerial + "\n" + timestamp + "\n" + nonce + "\n" + responseStr + "\n";
System.out.println("source " + source);
@@ -239,6 +246,7 @@
@Override
public String payCallback(JSONObject jsonObject) {
+ boolean flag = false;
String orderStatus = jsonObject.get("order_status").toString();
if(2 != Integer.parseInt(orderStatus)){
return "FAIL";
@@ -246,37 +254,124 @@
String orderNo = jsonObject.get("out_order_no").toString();
- LambdaQueryWrapper<MallOrderInfo> query = new LambdaQueryWrapper<>();
- query.eq(MallOrderInfo::getOrderNo, orderNo);
- MallOrderInfo orderInfo = this.orderInfoMapper.selectOne(query);
- if ("1".equals(orderInfo.getPayResult())) {
- return "SUCCESS";
+ /*
+ {"req_time":"1660205634885","version":"3.0","req_data":{"out_order_no":"GHSNVDY8033038232443530","merchant_no":"8222900701107M5"}}
+ */
+
+ LaKaLaQueryOrderReqDate laKaLaQueryOrderReqDate = new LaKaLaQueryOrderReqDate();
+ laKaLaQueryOrderReqDate.setOut_order_no(orderNo);
+ if ("dev".equals(active) || "test".equals(active)) {
+ laKaLaQueryOrderReqDate.setMerchant_no(merchant_no);
+ }else{
+ laKaLaQueryOrderReqDate.setMerchant_no(merchant_no_prd);
}
- orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
- orderInfo.setPayResult("1");
- orderInfo.setPayTime(new Date());
- String payOrderNo = jsonObject.get("pay_order_no").toString();
- orderInfo.setPayTradeNo(payOrderNo);
- orderInfoMapper.updateById(orderInfo);
+ String yyyyMMddHHmmss = DateUtil.format(new Date(), "yyyyMMddHHmmss");
+ LaKaLaBasicReqDate laKaLaBasicReqDate = new LaKaLaBasicReqDate();
+ laKaLaBasicReqDate.setReq_time(yyyyMMddHHmmss);
+ laKaLaBasicReqDate.setVersion("3.0");
+ JSONObject jsonObjectQuery = JSONUtil.parseObj(laKaLaQueryOrderReqDate);
+ laKaLaBasicReqDate.setReq_data(jsonObjectQuery);
+ try {
+ String body = JSONUtil.parseObj(laKaLaBasicReqDate).toString();
+ log.info("LKL查询请求Body,{}",body);
+ String authorization = getAuthorization(body);
- commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.WECHAT.getValue());
+ String apiUrlCreateHttp = "";
+ if ("dev".equals(active) || "test".equals(active)) {
+ apiUrlCreateHttp = apiUrlQuery;
+ }else{
+ apiUrlCreateHttp = apiUrlQuery_prd;
+ }
+ HttpResponse response = post(apiUrlCreateHttp , body, authorization);
+ if (response.getStatusLine().getStatusCode() != 200) {
+ return "FAIL";
+ }
- /**
- * 插入一条待处理记录
- * mq处理之后,更新状态
- */
- MallMqRecord mallMqRecord = new MallMqRecord();
- mallMqRecord.setOrderId(orderInfo.getId());
- mallMqRecord.setState(2);
- mallMqRecord.setRetryTimes(2);
- mallMqRecordMapper.insert(mallMqRecord);
- //发送补贴消息
- agentProducer.sendPerkMoneyMsg(orderInfo.getId());
- //发送代理自动升级消息
- agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
+ String appid = getHeadValue(response, "Lklapi-Appid");
+ String lklapiSerial = getHeadValue(response, "Lklapi-Serial");
+ String timestamp = getHeadValue(response, "Lklapi-Timestamp");
+ String nonce = getHeadValue(response, "Lklapi-Nonce");
+ String signature = getHeadValue(response, "Lklapi-Signature");
+ String responseStr = IOUtils.toString(response.getEntity().getContent(), ENCODING);
+ System.out.println("responseStr " + responseStr);
- return "SUCCESS";
+ log.info("LKL查询返回的responseStr,{}",responseStr);
+
+ String source = appid + "\n" + lklapiSerial + "\n" + timestamp + "\n" + nonce + "\n" + responseStr + "\n";
+
+ System.out.println("source " + source);
+ String lklCertificatePathNameStr = "";
+ if ("dev".equals(active) || "test".equals(active)) {
+ lklCertificatePathNameStr = lklCertificatePathName;
+ }else{
+ lklCertificatePathNameStr = lklCertificatePathName_prd;
+ }
+ InputStream fileInputStream = resourceLoader.getResource(lklCertificatePathNameStr).getInputStream();
+ X509Certificate lklCertificate = loadCertificate(fileInputStream);
+ boolean verify = verify(lklCertificate, source.getBytes(ENCODING), signature);
+
+ if (verify) {
+ System.out.println("验签成功");
+ JSONObject parseObj = JSONUtil.parseObj(responseStr);
+ String code = parseObj.get("code").toString();
+ if("000000".equals(code)){
+ Object respData = parseObj.get("resp_data");
+ JSONObject respDataChild = JSONUtil.parseObj(respData);
+ String orderStatusQuery = respDataChild.get("order_status").toString();
+ if(2 != Integer.parseInt(orderStatusQuery)){
+ return "FAIL";
+ }
+
+ Object trade_info_list = respDataChild.get("order_trade_info_list");
+ JSONObject respChild = JSONUtil.parseObj(trade_info_list);
+ String tradeStatus = respChild.get("trade_status").toString();
+ if(!"S".equals(tradeStatus)){
+ return "FAIL";
+ }
+ flag = true;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ if(flag){
+ LambdaQueryWrapper<MallOrderInfo> query = new LambdaQueryWrapper<>();
+ query.eq(MallOrderInfo::getOrderNo, orderNo);
+ MallOrderInfo orderInfo = this.orderInfoMapper.selectOne(query);
+ if ("1".equals(orderInfo.getPayResult())) {
+ return "SUCCESS";
+ }
+
+ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+ orderInfo.setPayResult("1");
+ orderInfo.setPayTime(new Date());
+ String payOrderNo = jsonObject.get("pay_order_no").toString();
+ orderInfo.setPayTradeNo(payOrderNo);
+ orderInfoMapper.updateById(orderInfo);
+
+ commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.WECHAT.getValue());
+
+ /**
+ * 插入一条待处理记录
+ * mq处理之后,更新状态
+ */
+ MallMqRecord mallMqRecord = new MallMqRecord();
+ mallMqRecord.setOrderId(orderInfo.getId());
+ mallMqRecord.setState(2);
+ mallMqRecord.setRetryTimes(2);
+ mallMqRecordMapper.insert(mallMqRecord);
+ //发送补贴消息
+ agentProducer.sendPerkMoneyMsg(orderInfo.getId());
+ //发送代理自动升级消息
+ agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
+
+ return "SUCCESS";
+ }else{
+ return "FAIL";
+ }
+
}
public static void main(String[] args) {
--
Gitblit v1.9.1