## Opt - 支付工具回写&页面返回地址
This commit is contained in:
parent
d3fad46ad3
commit
9486658bef
|
@ -33,6 +33,15 @@ public enum EPayType {
|
|||
*/
|
||||
BANK_ONLINE(4, "网上银行", 0, EnumsPrefixConstants.PAY_TYPE + "4"),
|
||||
|
||||
// , 5=(京东)小金库, 6=(京东)白条, 7=(京东)超级白条, 8=(京东)钱包余额), 9=(京东)云闪付
|
||||
MINI_TREASURY(5, "小金库", 0, EnumsPrefixConstants.PAY_TYPE + "5"),
|
||||
CREDIT_LINE(6, "白条", 0, EnumsPrefixConstants.PAY_TYPE + "6"),
|
||||
SUPER_CREDIT_LINE(7, "超级白条", 0, EnumsPrefixConstants.PAY_TYPE + "7"),
|
||||
WALLET_BALANCE(8, "钱包余额", 0, EnumsPrefixConstants.PAY_TYPE + "8"),
|
||||
CLOUD_PAY(9, "云闪付", 0, EnumsPrefixConstants.PAY_TYPE + "9"),
|
||||
|
||||
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.hzs.third.pay.controller.notify;
|
|||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.hzs.common.core.enums.EPayChannel;
|
||||
import com.hzs.common.core.enums.EPayType;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.third.pay.config.JdPayConfig;
|
||||
import com.hzs.third.pay.constants.JdPayConstants;
|
||||
|
@ -134,9 +135,9 @@ public class JdPayNotifyController extends JdBaseController {
|
|||
// 订单金额
|
||||
int tradeAmount = Integer.parseInt(successNotify.getTradeAmount());
|
||||
BigDecimal payMoney = new BigDecimal(tradeAmount).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
|
||||
|
||||
Integer payType = convertPayType(successNotify.getPayTool());
|
||||
// 支付后续业务处理
|
||||
if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.JD, channelNumber)) {
|
||||
if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.JD, channelNumber, payType)) {
|
||||
return SUCCESS;
|
||||
}
|
||||
} else {
|
||||
|
@ -150,6 +151,37 @@ public class JdPayNotifyController extends JdBaseController {
|
|||
}
|
||||
return ERROR;
|
||||
}
|
||||
private Integer convertPayType(String payName){
|
||||
Integer result = EPayType.WECHAT.getValue();
|
||||
switch (payName){
|
||||
case "XJK":
|
||||
result = EPayType.MINI_TREASURY.getValue();
|
||||
break;
|
||||
case "JIOU":
|
||||
result = EPayType.CREDIT_LINE.getValue();
|
||||
break;
|
||||
case "SJIOU":
|
||||
result = EPayType.SUPER_CREDIT_LINE.getValue();
|
||||
break;
|
||||
case "ACCT":
|
||||
result = EPayType.WALLET_BALANCE.getValue();
|
||||
break;
|
||||
case "EXPR":
|
||||
result = EPayType.BANK_CARD.getValue();
|
||||
break;
|
||||
case "WX":
|
||||
result = EPayType.WECHAT.getValue();
|
||||
break;
|
||||
case "ALIPAY":
|
||||
result = EPayType.ALIPAY.getValue();
|
||||
break;
|
||||
case "YSF":
|
||||
result = EPayType.CLOUD_PAY.getValue();
|
||||
break;
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -69,6 +69,11 @@ public class JdPayAggregateCreateOrderRequest implements Serializable {
|
|||
* 同步通知页面url
|
||||
*/
|
||||
private String pageBackUrl;
|
||||
|
||||
/**
|
||||
* 点击完成按钮后跳转页面
|
||||
*/
|
||||
private String callbackUrl;
|
||||
/**
|
||||
* 风控信息map-- json串
|
||||
*/
|
||||
|
|
|
@ -27,6 +27,10 @@ public interface IPayService {
|
|||
boolean notifyHandle(String businessType, String businessCode, String originalOrder,
|
||||
String payNumber, Date payTime, BigDecimal payMoney,
|
||||
EPayChannel ePayChannel, String channelNumber);
|
||||
|
||||
boolean notifyHandle(String businessType, String businessCode, String originalOrder,
|
||||
String payNumber, Date payTime, BigDecimal payMoney,
|
||||
EPayChannel ePayChannel, String channelNumber, Integer payType);
|
||||
|
||||
/**
|
||||
* 业务处理重试
|
||||
|
|
|
@ -245,6 +245,7 @@ public class JdPayServiceImpl implements IJdPayService {
|
|||
.userId(userId)
|
||||
// 同步通知URL(收银台必传,页面回调地址)
|
||||
.pageBackUrl(jdPayBankProperties.getPageBackUrl() + "?extParam=" + onlinePayment.getExtParam())
|
||||
.callbackUrl(jdPayBankProperties.getPageBackUrl() + "?extParam=" + onlinePayment.getExtParam())
|
||||
// 支付回调地址
|
||||
.notifyUrl(jdPayBankProperties.getNotifyUrl())
|
||||
// 交易类型
|
||||
|
|
|
@ -118,6 +118,65 @@ public class PayServiceImpl implements IPayService {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean notifyHandle(String businessType, String businessCode, String originalOrder, String payNumber, Date payTime, BigDecimal payMoney, EPayChannel ePayChannel, String channelNumber, Integer payType) {
|
||||
Long pkId = null;
|
||||
String redisKey = CacheConstants.ONLINE_PAY_KEY + businessCode;
|
||||
|
||||
try {
|
||||
// 校验支付信息状态、业务与支付金额是否一致等
|
||||
TOnlinePayment onlinePayment = itOnlinePaymentService.queryByBusiness(
|
||||
ObjectUtil.isNotEmpty(businessType) ? Integer.valueOf(businessType) : null
|
||||
, businessCode, null);
|
||||
if (null == onlinePayment || EPayStatus.PAID.getValue() == onlinePayment.getPayStatus()) {
|
||||
log.error("支付信息不存在或已支付");
|
||||
return false;
|
||||
}
|
||||
pkId = onlinePayment.getPkId();
|
||||
|
||||
if (!PayUtil.checkAmount(onlinePayment.getBusinessMoney(), payMoney)) {
|
||||
// 业务金额 大于 实际支付金额
|
||||
log.error("业务金额大于实际支付金额,支付编号:{}, 支付金额:{}", onlinePayment.getPaymentCode(), payMoney);
|
||||
}
|
||||
|
||||
onlinePayment.setPayStatus(EPayStatus.PAID.getValue());
|
||||
onlinePayment.setPayNumber(payNumber);
|
||||
onlinePayment.setPayTime(payTime);
|
||||
onlinePayment.setPayMoney(payMoney);
|
||||
onlinePayment.setOriginalOrder(originalOrder);
|
||||
onlinePayment.setChannelNumber(channelNumber);
|
||||
onlinePayment.setPkModified(MagicNumberConstants.PK_ADMIN);
|
||||
onlinePayment.setModifiedTime(new Date());
|
||||
onlinePayment.setPayType(payType);
|
||||
if (null != ePayChannel) {
|
||||
onlinePayment.setPayChannel(ePayChannel.getValue());
|
||||
}
|
||||
// 更新支付相关信息
|
||||
if (itOnlinePaymentService.updateById(onlinePayment)) {
|
||||
// 进行支付业务处理
|
||||
this.handleBusiness(onlinePayment, true);
|
||||
// 更新业务处理信息
|
||||
itOnlinePaymentService.updateById(onlinePayment);
|
||||
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("在线支付信息回调处理异常", e);
|
||||
|
||||
if (null != pkId) {
|
||||
// 更新业务处理信息
|
||||
itOnlinePaymentService.update(Wrappers.<TOnlinePayment>lambdaUpdate()
|
||||
.eq(TOnlinePayment::getPkId, pkId)
|
||||
.set(TOnlinePayment::getCallbackStatus, ECallbackStatus.FAIL.getValue())
|
||||
.set(TOnlinePayment::getCallbackInfo, e.getMessage())
|
||||
);
|
||||
}
|
||||
} finally {
|
||||
redisService.unlock(redisKey);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean retryHandle(TOnlinePayment tOnlinePayment, boolean mqPush) {
|
||||
// 支付业务处理
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
CREATE TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC" (
|
||||
CREATE TABLE "T_ONLINE_PAYMENT_SEP_ACC" (
|
||||
"PK_ID" NUMBER(20,0),
|
||||
"PK_PAYMENT" NUMBER(20,0),
|
||||
"VERSION" VARCHAR2(255),
|
||||
|
@ -15,33 +15,33 @@ CREATE TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC" (
|
|||
)
|
||||
;
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."PK_PAYMENT" IS '在线支付信息ID';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."PK_PAYMENT" IS '在线支付信息ID';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."VERSION" IS '版本号';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."VERSION" IS '版本号';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."REQ_CONTENT" IS '支付请求信息';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."REQ_CONTENT" IS '支付请求信息';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."REQ_CONTENT_SEP_ACC" IS '分账请求信息';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."REQ_CONTENT_SEP_ACC" IS '分账请求信息';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."RESP_CONTENT" IS '支付响应信息';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."RESP_CONTENT" IS '支付响应信息';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."DEL_FLAG" IS '逻辑删除 (0=未删除,1已删除)';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."DEL_FLAG" IS '逻辑删除 (0=未删除,1已删除)';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."CREATION_TIME" IS '创建时间';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."CREATION_TIME" IS '创建时间';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."MODIFIED_TIME" IS '修改时间';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."MODIFIED_TIME" IS '修改时间';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."PK_CREATOR" IS '创建者';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."PK_CREATOR" IS '创建者';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."PK_MODIFIED" IS '更新者';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."PK_MODIFIED" IS '更新者';
|
||||
|
||||
COMMENT ON TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC" IS '支付请求主表';
|
||||
COMMENT ON TABLE "T_ONLINE_PAYMENT_SEP_ACC" IS '支付请求主表';
|
||||
|
||||
CREATE SEQUENCE T_ONLINE_PAYMENT_SEP_ACC_SEQ
|
||||
START WITH 1
|
||||
INCREMENT BY 1;
|
||||
|
||||
CREATE TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D" (
|
||||
CREATE TABLE "T_ONLINE_PAYMENT_SEP_ACC_D" (
|
||||
"PK_ID" NUMBER(20,0),
|
||||
"PK_SEP_ACC" NUMBER(20,0),
|
||||
"ACCOUNT" VARCHAR2(255),
|
||||
|
@ -56,44 +56,44 @@ CREATE TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D" (
|
|||
)
|
||||
;
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."PK_SEP_ACC" IS '支付请求主表ID';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."PK_SEP_ACC" IS '支付请求主表ID';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."ACCOUNT" IS '分账账号';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."ACCOUNT" IS '分账账号';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."PROPORTION" IS '分账比例';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."PROPORTION" IS '分账比例';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."DEL_FLAG" IS '逻辑删除 (0=未删除,1已删除)';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."DEL_FLAG" IS '逻辑删除 (0=未删除,1已删除)';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."CREATION_TIME" IS '创建时间';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."CREATION_TIME" IS '创建时间';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."MODIFIED_TIME" IS '修改时间';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."MODIFIED_TIME" IS '修改时间';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."PK_CREATOR" IS '创建者';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."PK_CREATOR" IS '创建者';
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."PK_MODIFIED" IS '更新者';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."PK_MODIFIED" IS '更新者';
|
||||
|
||||
COMMENT ON TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D" IS '支付请求子表(分账)';
|
||||
COMMENT ON TABLE "T_ONLINE_PAYMENT_SEP_ACC_D" IS '支付请求子表(分账)';
|
||||
|
||||
CREATE SEQUENCE T_ONLINE_PAYMENT_SEP_ACC_D_SEQ
|
||||
START WITH 1
|
||||
INCREMENT BY 1;
|
||||
|
||||
|
||||
ALTER TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"
|
||||
ALTER TABLE "T_ONLINE_PAYMENT_SEP_ACC"
|
||||
ADD ("TRADE_AMOUNT" NUMBER(16,2));
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."TRADE_AMOUNT" IS '总金额';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."TRADE_AMOUNT" IS '总金额';
|
||||
|
||||
|
||||
ALTER TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"
|
||||
ALTER TABLE "T_ONLINE_PAYMENT_SEP_ACC_D"
|
||||
ADD ("TRADE_AMOUNT" NUMBER(16,2));
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."TRADE_AMOUNT" IS '分账金额';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."TRADE_AMOUNT" IS '分账金额';
|
||||
|
||||
ALTER TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"
|
||||
ALTER TABLE "T_ONLINE_PAYMENT_SEP_ACC"
|
||||
ADD ("OUT_TRADE_NO" VARCHAR2(255));
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC"."OUT_TRADE_NO" IS '支付流水号';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC"."OUT_TRADE_NO" IS '支付流水号';
|
||||
|
||||
ALTER TABLE "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"
|
||||
ALTER TABLE "T_ONLINE_PAYMENT_SEP_ACC_D"
|
||||
ADD ("OUT_TRADE_NO" VARCHAR2(255));
|
||||
|
||||
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT_SEP_ACC_D"."OUT_TRADE_NO" IS '支付流水号';
|
||||
COMMENT ON COLUMN "T_ONLINE_PAYMENT_SEP_ACC_D"."OUT_TRADE_NO" IS '支付流水号';
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
COMMENT ON COLUMN "RETAIL"."T_ONLINE_PAYMENT"."PAY_TYPE" IS '支付类型(1=支付宝,2=微信,3=银行卡,4=网上银行, 5=(京东)小金库, 6=(京东)白条, 7=(京东)超级白条, 8=(京东)钱包余额), 9=(京东)银行卡, 10=(京东)云闪付'
|
Loading…
Reference in New Issue