|
@@ -47,7 +47,7 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
@Value("${pay.base.url}")
|
|
|
private String baseUrl = "https://jlpays.kakapaypay.com/";
|
|
|
@Value("${wx.appId}")
|
|
|
- private String appId ="wxb86cb7f459fc3675";
|
|
|
+ private String appId = "wxb86cb7f459fc3675";
|
|
|
|
|
|
@Value("${pay.shopNo}")
|
|
|
private String payShopNo; //平台商户号
|
|
@@ -60,13 +60,13 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
|
|
|
@Override
|
|
|
public JSONObject channelPay(BizTypeEnum bizType, String bizId, String openId, int money) {
|
|
|
- String reqUrl = baseUrl+"/pay/payMoneyCTB";
|
|
|
+ String reqUrl = baseUrl + "/pay/payMoneyCTB";
|
|
|
JSONObject params = new JSONObject();
|
|
|
params = buildPayOrderReqData(payShopNo, paySign, money, openId);
|
|
|
- String result = OkHttpUtil.postJsonParams(reqUrl,params.toJSONString());
|
|
|
- logger.info("request params:"+ params.toJSONString()+" result:"+result);
|
|
|
- if(StringUtils.isBlank(result)){
|
|
|
- LogUtil.error(logger,"创建充值订单接口失败");
|
|
|
+ String result = OkHttpUtil.postJsonParams(reqUrl, params.toJSONString());
|
|
|
+ logger.info("request params:" + params.toJSONString() + " result:" + result);
|
|
|
+ if (StringUtils.isBlank(result)) {
|
|
|
+ LogUtil.error(logger, "创建充值订单接口失败");
|
|
|
return null;
|
|
|
}
|
|
|
JSONObject resultJson = JSONObject.parseObject(result);
|
|
@@ -74,7 +74,7 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
String orderNo = resultJson.getString("order_no");
|
|
|
JSONObject data = resultJson.getJSONObject("pay_info");
|
|
|
String orderstatus = resultJson.getString("orderstatus");
|
|
|
- if(REQ_STATUS_SUCCESS.equalsIgnoreCase(code)){
|
|
|
+ if (REQ_STATUS_SUCCESS.equalsIgnoreCase(code)) {
|
|
|
//保存订单记录
|
|
|
PayOrder payOrder = buildPayOrder(params);
|
|
|
payOrder.setOrderId(resultJson.getString("shop_order_no"));
|
|
@@ -82,12 +82,12 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
payOrder.setCode(code);
|
|
|
payOrder.setBizType(bizType);
|
|
|
payOrder.setBizId(bizId);
|
|
|
- payOrder.setStatus(orderstatus);
|
|
|
+ payOrder.setOrderStatus(orderstatus);
|
|
|
boolean ret = payOrderService.save(payOrder);
|
|
|
- if(ret){
|
|
|
+ if (ret) {
|
|
|
return data;
|
|
|
- }else{
|
|
|
- LogUtil.error(logger,"渠道支付订单数据库保存失败.");
|
|
|
+ } else {
|
|
|
+ LogUtil.error(logger, "渠道支付订单数据库保存失败.");
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
@@ -99,25 +99,25 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
//查询统一支付订单表,查询订单类型,然后根据不同类型做对应的逻辑处理
|
|
|
//查询支付状态为1:支付成功,2:订单创建成功,等待支付。
|
|
|
LambdaQueryWrapper<PayOrder> wrapper = new LambdaQueryWrapper();
|
|
|
- wrapper.eq(PayOrder::getOrderId,orderNo);
|
|
|
- wrapper.eq(PayOrder::getStatus,"1");
|
|
|
+ wrapper.eq(PayOrder::getOrderId, orderNo);
|
|
|
+ wrapper.eq(PayOrder::getOrderStatus, "1");
|
|
|
List<PayOrder> payOrderList = payOrderService.list(wrapper);
|
|
|
- if(payOrderList.size() != 1){
|
|
|
+ if (payOrderList.size() != 1) {
|
|
|
//数据结构异常,告警
|
|
|
- LogUtil.error(logger,"数据结构异常,违反唯一约束,orderNo:"+orderNo);
|
|
|
+ LogUtil.error(logger, "数据结构异常,违反唯一约束,orderNo:" + orderNo);
|
|
|
}
|
|
|
//渠道订单
|
|
|
PayOrder payOrder = payOrderList.get(0);
|
|
|
- logger.info("biz type:"+payOrder.getBizType());
|
|
|
+ LogUtil.info(logger, "支付回调,bizType:{0},bizId:{1}" ,
|
|
|
+ new Object[]{payOrder.getBizType(), payOrder.getBizId()});
|
|
|
if (BizTypeEnum.CHANNEL_ORDER == payOrder.getBizType()) {
|
|
|
- // TODO 业务订单支付成功,调用业务订单服务处理
|
|
|
- // customerOrderService.paySuccess(payOrder);
|
|
|
- }
|
|
|
- else{
|
|
|
+ // 业务订单支付成功,调用业务订单服务处理
|
|
|
+ channelOrderService.paySuccess(payOrder);
|
|
|
+ } else {
|
|
|
//数据结构异常,告警
|
|
|
- LogUtil.error(logger,"该业务单据类型未支持,orderNo:"+orderNo);
|
|
|
+ LogUtil.error(logger, "该业务单据类型未支持,orderNo:" + orderNo);
|
|
|
}
|
|
|
-}
|
|
|
+ }
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -136,104 +136,31 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- private PayOrder buildPayOrder(JSONObject jsonObject){
|
|
|
- PayOrder payOrder = jsonObject.toJavaObject(PayOrder.class);
|
|
|
+ private PayOrder buildPayOrder(JSONObject jsonObject) {
|
|
|
+ PayOrder payOrder = jsonObject.toJavaObject(PayOrder.class);
|
|
|
return payOrder;
|
|
|
}
|
|
|
|
|
|
- private JSONObject buildPayOrderReqData(String shopNo,String sign,int money,String openId){
|
|
|
+ private JSONObject buildPayOrderReqData(String shopNo, String sign, int money, String openId) {
|
|
|
|
|
|
JSONObject sendData = new JSONObject();
|
|
|
- sendData.put("shop_no", shopNo);
|
|
|
- sendData.put("shop_order_no", String.valueOf(bizIdGenerator.newId()));
|
|
|
- sendData.put("shop_order_time", DateUtils.getTime());
|
|
|
- sendData.put("pay_resource", PAY_RESOURCE); //支付来源 1:支付宝 2:微信支付 5:云闪付
|
|
|
- sendData.put("trans_type_code",PAY_RESOURCE_TYPE); //1017:微信小程序
|
|
|
- sendData.put("transaction_amount", money);
|
|
|
- sendData.put("order_remark", "");
|
|
|
- sendData.put("timestamp", System.currentTimeMillis());
|
|
|
- sendData.put("callback_url", callbackUrl);
|
|
|
-
|
|
|
- sendData.put("order_name", "充值");
|
|
|
- sendData.put("sign", sign);
|
|
|
- sendData.put("client_ip", "113.31.163.91");
|
|
|
-
|
|
|
- sendData.put("auth_code", openId);
|
|
|
- sendData.put("notify_url", notifyUrl);
|
|
|
- sendData.put("app_id", appId);
|
|
|
+ sendData.put("shop_no" , shopNo);
|
|
|
+ sendData.put("shop_order_no" , String.valueOf(bizIdGenerator.newId()));
|
|
|
+ sendData.put("shop_order_time" , DateUtils.getTime());
|
|
|
+ sendData.put("pay_resource" , PAY_RESOURCE); //支付来源 1:支付宝 2:微信支付 5:云闪付
|
|
|
+ sendData.put("trans_type_code" , PAY_RESOURCE_TYPE); //1017:微信小程序
|
|
|
+ sendData.put("transaction_amount" , money);
|
|
|
+ sendData.put("order_remark" , "");
|
|
|
+ sendData.put("timestamp" , System.currentTimeMillis());
|
|
|
+ sendData.put("callback_url" , callbackUrl);
|
|
|
+
|
|
|
+ sendData.put("order_name" , "订单支付");
|
|
|
+ sendData.put("sign" , sign);
|
|
|
+ sendData.put("client_ip" , "113.31.163.91");
|
|
|
+
|
|
|
+ sendData.put("auth_code" , openId);
|
|
|
+ sendData.put("notify_url" , notifyUrl);
|
|
|
+ sendData.put("app_id" , appId);
|
|
|
return sendData;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public boolean merchRecharge(PayOrder payOrder) {
|
|
|
- /*String merchId = payOrder.getOrderTypeRefId();
|
|
|
- String orderNo = payOrder.getOrderNo();
|
|
|
- //根据订单类型,查询商户ID
|
|
|
- if(PayOrderTypeEnum.ORDER_MRARCH_BILL.getValue() == payOrder.getOrderType().intValue()){
|
|
|
- //商户支付订单,查询商户信息
|
|
|
- MerchantBill merchantBill = merchantBillService.getById(payOrder.getOrderTypeRefId());
|
|
|
- if(merchantBill == null){
|
|
|
- LogUtil.error(logger,"账单不存在.billId:"+payOrder.getOrderTypeRefId());
|
|
|
- return false;
|
|
|
- }
|
|
|
- merchId = merchantBill.getMerchId();
|
|
|
- }
|
|
|
- //查询资金流水表,是否存在重复订单号
|
|
|
- LambdaQueryWrapper<MerchantMoneyLog> logWrapper = new LambdaQueryWrapper<>();
|
|
|
- logWrapper.eq(MerchantMoneyLog::getRefId, orderNo);
|
|
|
- logWrapper.eq(MerchantMoneyLog::getMerchId, merchId);
|
|
|
- logWrapper.eq(MerchantMoneyLog::getRefType, payOrder.getOrderType());
|
|
|
- List<MerchantMoneyLog> logList = merchantMoneyLogService.list(logWrapper);
|
|
|
- if (logList.size() == 0) {
|
|
|
- Merchant merchant = merchantService.getById(merchId);
|
|
|
- if(null == merchant){
|
|
|
- LogUtil.error(logger,"商户不存在.merchId:"+merchId);
|
|
|
- return false;
|
|
|
- }
|
|
|
- MerchantMoneyLog merchantMoneyLog = new MerchantMoneyLog();
|
|
|
- merchantMoneyLog.setBizTime(
|
|
|
- DateUtils.parseStrToDate(payOrder.getCompleteDate(), DateUtils.YYYY_MM_DD_HH_MM_SS));
|
|
|
- merchantMoneyLog.setMerchId(merchId); //商户ID
|
|
|
- merchantMoneyLog.setType(MerchantMoneyEnum.TYPE_RECHARGE);
|
|
|
- merchantMoneyLog.setCustId(payOrder.getCustId()); //客户ID
|
|
|
- merchantMoneyLog.setStoreId(merchant.getStoreId());
|
|
|
- merchantMoneyLog.setLogMoney(payOrder.getTransactionAmount()); //交易金额
|
|
|
- merchantMoneyLog.setRefId(payOrder.getOrderId()); //订单ID,全局唯一
|
|
|
- merchantMoneyLog.setRefType(payOrder.getOrderType()); //单据类型
|
|
|
- boolean result = merchantMoneyLogService.changeMerchantMoney(merchantMoneyLog);
|
|
|
- Customer customer = customerService.getById(merchantMoneyLog.getCustId());
|
|
|
- // 客户中配置了提现卡号,则认为是充值到了平台账户
|
|
|
- if (null != customer && StringUtils.isNotBlank(customer.getBankCardNo())) {
|
|
|
- CustomerMoneyLog customerMoneyLog = new CustomerMoneyLog();
|
|
|
- customerMoneyLog.setBizTime(merchantMoneyLog.getBizTime());
|
|
|
- customerMoneyLog.setType(CustomerMoneyTypeEnum.MERCH_RECHARGE);
|
|
|
- customerMoneyLog.setCustId(merchantMoneyLog.getCustId());
|
|
|
- customerMoneyLog.setLogMoney(merchantMoneyLog.getLogMoney());
|
|
|
- customerMoneyLog.setIncomeExpense(MerchantMoneyEnum.INCOME);
|
|
|
- customerMoneyLog.setRefId(payOrder.getOrderId());
|
|
|
- customerMoneyLog.setRefType(CustomerMoneyTypeEnum.MERCH_RECHARGE.getValue());
|
|
|
- Store store = storeService.getById(merchant.getStoreId());
|
|
|
- customerMoneyLog.setLogText(merchant.getBrand() + "-" + store.getName());
|
|
|
- customerMoneyLogService.changeCustomerMoney(customerMoneyLog);
|
|
|
- }
|
|
|
- if (result) {
|
|
|
- //充值成功,给订阅者发送消息
|
|
|
- try {
|
|
|
- pulsarClientService.producer(MqTopicType.merch_recharge, JSONObject.toJSONString(merchantMoneyLog));
|
|
|
- } catch (PulsarClientException e) {
|
|
|
- LogUtil.error(logger,"发送异步消息失败.",e);
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
- }else{
|
|
|
- //Todo 数据结构异常,告警
|
|
|
- LogUtil.error(logger,"数据结构异常,违反唯一约束,orderNo:"+orderNo);
|
|
|
- return false;
|
|
|
- }*/
|
|
|
- return false;
|
|
|
- }
|
|
|
}
|