From 94b6015d7e4b5b93452244073cab8d08ecb2d442 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 25 Aug 2022 16:04:43 +0800
Subject: [PATCH] 20220822
---
src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java | 6 ++
src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java | 23 ++++++-
src/main/java/cc/mrbird/febs/pay/service/UnipayService.java | 12 +++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 68 ++++++++++++++--------
src/main/java/cc/mrbird/febs/pay/model/AgreeMentPaySmsDto.java | 13 ++-
src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java | 9 ++
6 files changed, 92 insertions(+), 39 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java
index 9d2094f..e2b1290 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java
@@ -31,4 +31,10 @@
@ApiModelProperty(value = "支付凭证")
private String payImage;
+
+ @ApiModelProperty(value = "签约短信验证码")
+ private String smsCode;
+
+ @ApiModelProperty(value = "银行卡号")
+ private String bankNo;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 2f2ff02..fa7e82e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -17,6 +17,7 @@
import cc.mrbird.febs.mall.vo.OrderDetailVo;
import cc.mrbird.febs.mall.vo.OrderListVo;
import cc.mrbird.febs.mall.vo.OrderRefundVo;
+import cc.mrbird.febs.pay.model.AgreementPayDto;
import cc.mrbird.febs.pay.model.AgreementSignDto;
import cc.mrbird.febs.pay.model.UnipayDto;
import cc.mrbird.febs.pay.service.IPayService;
@@ -39,6 +40,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
+import java.text.DecimalFormat;
import java.util.*;
/**
@@ -257,7 +259,7 @@
if("fail" == unipayStr){
throw new FebsException("支付失败");
}else{
- JSONUtil.parseObj(unipayStr);
+// JSONUtil.parseObj(unipayStr);
JSONObject jsonObject = JSONUtil.parseObj(unipayStr);
payResultStr = (String) jsonObject.get("r7_TrxNo");
rcResult = (String) jsonObject.get("rc_Result");
@@ -333,31 +335,45 @@
case "5":
AgreementSignDto agreementSignDto = new AgreementSignDto();
agreementSignDto.setOrderNo(orderInfo.getOrderNo());
- unipayService.agreementSign(agreementSignDto);
-// UnipayDto unipayDto = new UnipayDto();
-//// unipayDto.setAmount(new BigDecimal("0.01"));
-// unipayDto.setAmount(orderInfo.getAmount());
-// unipayDto.setFrpCode("ALIPAY_H5");
-// unipayDto.setTradeMerchantNo("777180800385820");
-// unipayDto.setOrderNo(orderInfo.getOrderNo());
-// List<MallOrderItem> items = orderInfo.getItems();
-// if(CollUtil.isEmpty(items)){
-// unipayDto.setProductName("商品");
-// }else{
-// unipayDto.setProductName(items.get(0).getGoodsName());
-// }
-// String agreementSignStr = "";
-// if("fail" == unipayStr){
-// throw new FebsException("支付失败");
-// }else{
-// JSONUtil.parseObj(unipayStr);
-// JSONObject jsonObject = JSONUtil.parseObj(unipayStr);
-// payResultStr = (String) jsonObject.get("r7_TrxNo");
-// rcResult = (String) jsonObject.get("rc_Result");
-// }
- orderInfo.setPayOrderNo(payResultStr);
- orderInfo.setPayMethod("支付宝支付");
-// agentProducer.sendOrderReturn(orderInfo.getId());
+ agreementSignDto.setSmsCode(payOrderDto.getSmsCode());
+ String agreementSignStr = unipayService.agreementSign(agreementSignDto);
+ if("fail" == agreementSignStr){
+ throw new FebsException("支付失败");
+ }else{
+ JSONObject jsonObject = JSONUtil.parseObj(agreementSignStr);
+ payResultStr = (String) jsonObject.get("biz_code");
+ if("JS000000" != payResultStr){
+ throw new FebsException("支付失败");
+ }
+ }
+
+ AgreementPayDto agreementPayDto = new AgreementPayDto();
+ agreementPayDto.setOrderNo(orderInfo.getOrderNo());
+
+ BigDecimal value = orderInfo.getAmount().setScale(2, BigDecimal.ROUND_DOWN);
+ DecimalFormat decimalFormat = new DecimalFormat("0.00#");
+ String strVal = decimalFormat.format(value);
+ agreementPayDto.setOrderAmount(new BigDecimal(strVal));
+ agreementPayDto.setOrderTime(DateUtil.now());
+ List<MallOrderItem> itemsGoods = orderInfo.getItems();
+ if(CollUtil.isEmpty(itemsGoods)){
+ agreementPayDto.setOrderDesc("商品");
+ }else{
+ agreementPayDto.setOrderDesc(itemsGoods.get(0).getGoodsName());
+ }
+ agreementPayDto.setBankNo(payOrderDto.getBankNo());
+ String agreementPayStr = unipayService.agreementPay(agreementPayDto);
+
+ if("fail".equals(agreementSignStr)){
+ throw new FebsException("支付失败");
+ }else{
+ JSONObject jsonObject = JSONUtil.parseObj(agreementPayStr);
+ payResultStr = (String) jsonObject.get("biz_code");
+ if(!"JS000000".equals(payResultStr)){
+ throw new FebsException("支付失败");
+ }
+ }
+ orderInfo.setPayMethod("快捷协议支付");
break;
default:
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
index 2a7eada..7a7f3e4 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
@@ -153,8 +153,12 @@
@ApiOperation(value = "获取协议支付签约短信", notes = "获取协议支付签约短信")
@PostMapping(value = "getAgreeMentPaySms")
public FebsResponse getAgreeMentPaySms(@RequestBody AgreeMentPaySmsDto agreeMentPaySmsDto) {
- unipayService.getAgreeMentPaySms(agreeMentPaySmsDto);
- return new FebsResponse().success().message("申请成功");
+ String agreeMentPaySms = unipayService.getAgreeMentPaySms(agreeMentPaySmsDto);
+ if("fail".equals(agreeMentPaySms)){
+ return new FebsResponse().fail().message("获取失败");
+ }else{
+ return new FebsResponse().success().message("获取成功");
+ }
}
// public static void main(String[] args) {
@@ -186,6 +190,7 @@
orderInfo.setPayResult("1");
orderInfo.setPayTime(DateUtil.parse(pay_success_time));
orderInfo.setPayTradeNo(jp_order_no);
+ orderInfo.setPayOrderNo(orderNo);
orderInfoMapper.updateById(orderInfo);
boolean hasTc = false;
diff --git a/src/main/java/cc/mrbird/febs/pay/model/AgreeMentPaySmsDto.java b/src/main/java/cc/mrbird/febs/pay/model/AgreeMentPaySmsDto.java
index c166a1a..4dbf055 100644
--- a/src/main/java/cc/mrbird/febs/pay/model/AgreeMentPaySmsDto.java
+++ b/src/main/java/cc/mrbird/febs/pay/model/AgreeMentPaySmsDto.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@@ -12,20 +13,22 @@
public class AgreeMentPaySmsDto {
// 商户订单号
+
+ @ApiModelProperty(value = "订单号")
private String orderNo;
- // 订单金额;金额保留两位小数
- private BigDecimal orderAmount;
- //创建时间
-// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
- private String createdTime;
// 姓名
+ @ApiModelProperty(value = "姓名")
private String name;
//证件类型
+ @ApiModelProperty(value = "证件类型")
private String idType;
//证件号码
+ @ApiModelProperty(value = "证件号码")
private String idCardNum;
// 银行卡号
+ @ApiModelProperty(value = "银行卡号")
private String bankNo;
// 手机号
+ @ApiModelProperty(value = "手机号")
private String phone;
}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java b/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java
index 549ced2..b61ed57 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java
@@ -6,10 +6,20 @@
import cc.mrbird.febs.pay.model.UnipayDto;
public interface UnipayService {
-
+ /**
+ * 聚合支付-微信支付宝
+ * @param unipayDto
+ * @return
+ */
String unipay(UnipayDto unipayDto);
/**
+ * 协议快捷支付步骤
+ * 1快捷协议支付-签约短信接口
+ * 2快捷协议支付-签约接口
+ * 3快捷协议支付-无短支付接口
+ */
+ /**
* 快捷协议支付-签约短信接口
* @param agreeMentPaySmsDto
* @return
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java
index 65e9a09..fc530b3 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java
@@ -1,14 +1,18 @@
package cc.mrbird.febs.pay.service.impl;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.pay.model.*;
import cc.mrbird.febs.pay.service.UnipayService;
import cc.mrbird.febs.pay.util.*;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -44,6 +48,9 @@
public static final String agreementPayNotifyUrl = "http://47.111.90.145:8800/api/unipay/agreementPayCallBack";
public static final String p1MerchantNo = "888118000001971";/** 商户编号 */
public static final String aesKey = "1234567891234567";/** 商户编号 */
+
+ @Autowired
+ private MallOrderInfoMapper orderInfoMapper;
@Override
@Transactional
@@ -180,7 +187,7 @@
map.put("mch_order_no",agreementPayDto.getOrderNo()); // 商户订单号
map.put("order_amount", agreementPayDto.getOrderAmount()); // 订单金额;金额保留两位小数
map.put("mch_req_time", agreementPayDto.getOrderTime()); // 订单时间
- map.put("order_desc", agreementPayDto.getOrderDesc()); // 订单时间
+ map.put("order_desc", agreementPayDto.getOrderDesc()); // 商品名称
map.put("callback_url", agreementPayNotifyUrl); // 异步通知地址
map.put("bank_card_no", AESUtil.Aes256Encode(agreementPayDto.getBankNo(),aesKey)); // 签约银行卡号
@@ -250,9 +257,15 @@
e.printStackTrace();
}
- map.put("mch_order_no", "NO_"+agreeMentPaySmsDto.getOrderNo()); // 商户订单号
- map.put("order_amount", agreeMentPaySmsDto.getOrderAmount()); // 订单金额
- map.put("mch_req_time", agreeMentPaySmsDto.getCreatedTime()); // 下单时间
+
+ MallOrderInfo orderInfo = orderInfoMapper.selectByOrderNo(agreeMentPaySmsDto.getOrderNo());
+ map.put("mch_order_no", "NO_"+orderInfo.getOrderNo()); // 商户订单号
+
+ BigDecimal value = orderInfo.getAmount().setScale(2, BigDecimal.ROUND_DOWN);
+ DecimalFormat decimalFormat = new DecimalFormat("0.00#");
+ String strVal = decimalFormat.format(value);
+ map.put("order_amount", strVal); // 订单金额
+ map.put("mch_req_time", DateUtil.now()); // 下单时间
map.put("payer_name",AESUtil.Aes256Encode(agreeMentPaySmsDto.getName(),aesKey)); // 姓名
map.put("id_type", agreeMentPaySmsDto.getIdType()); // 证件类型
map.put("id_no", AESUtil.Aes256Encode(agreeMentPaySmsDto.getIdCardNum(),aesKey)); // 证件号码
@@ -323,7 +336,7 @@
e.printStackTrace();
}
- map.put("mch_order_no", agreementSignDto.getOrderNo()); // 商户订单号
+ map.put("mch_order_no", "NO_"+agreementSignDto.getOrderNo()); // 商户订单号
map.put("sms_code", agreementSignDto.getSmsCode()); // 签约短信验证码
requestParam.setData(JsonUtil.toString(map));
--
Gitblit v1.9.1