记得上下班打卡 | git大法好,push需谨慎

Commit 64f59d22 authored by anjiabin's avatar anjiabin

修改通知逻辑

parent b14d7ab7
......@@ -56,10 +56,7 @@ public class DragonConstant {
public enum PayStatusEnum{
STATUS_UNPAID("0","未支付,或支付中"),
STATUS_PAID("1","已支付"),
STATUS_PAY_FAIL("2","支付失败"),
STATUS_SUCCESS("3","已支付,通知成功,交易结束"),
STATUS_FAIL("4","已支付,通知失败,交易结束"),
STATUS_EXPIRE("5","已支付,通知超时,交易结束");
STATUS_PAY_FAIL("2","支付失败");
private String code;
......@@ -84,6 +81,36 @@ public class DragonConstant {
}
}
/**
* 支付商户通知状态
*/
public enum PayNotifyStatusEnum{
NOTIFY_INIT("0","初始化"),
NOTIFY_SUCCESS("1","已支付,通知成功,交易结束"),
NOTIFY_FAIL("2","已支付,通知失败,交易结束"),
NOTIFY_EXPIRE("3","已支付,通知超时,交易结束");
private String code;
private String message;
PayNotifyStatusEnum(String code, String message) {
this.code = code;
this.message = message;
}
public PayNotifyStatusEnum getEnumByCode(String code){
PayNotifyStatusEnum[] arry = PayNotifyStatusEnum.values();
for (int i = 0; i < arry.length; i++) {
if (arry[i].getCode().equals(code)) {
return arry[i];
}
}
return null;
}
public String getCode() {
return code;
}
}
/**
* 退款状态
*/
......
......@@ -96,14 +96,13 @@ public class DragonPayBiz {
* @param paymentId
* @return
*/
public boolean updateDragonOrderStatus(String code,String paymentId){
public boolean updateOrderStatus(String code,Integer status,String paymentId){
try {
Integer status = Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAID.getCode());
LocalDateTime finishedAt = LocalDateTime.now();
LocalDateTime updateAt = LocalDateTime.now();
//t.status = ? ,t.payment_id = ?,t.finished_at = ?,t.updated_at =? where t.code = ?
boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.update"),
SqlMapping.get("dragon_orders.updateOrderStatus"),
new Object[]{status,paymentId,finishedAt, updateAt,code}
,DragonConstant.MysqlRedisQueueEnum.DRAGON_PAY_KEY.getCode()
);
......@@ -123,7 +122,7 @@ public class DragonPayBiz {
public boolean updateNotifyStatus(String code,Integer status){
try {
LocalDateTime updateAt = LocalDateTime.now();
//update dragon_orders t set t.status = ? ,t.updated_at =? where t.code = ?
//update dragon_orders t set t.notify_status = ? ,t.updated_at =? where t.code = ?
boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.updateNotifyStatus"),
new Object[]{status,updateAt,code}
......@@ -299,24 +298,24 @@ public class DragonPayBiz {
if (response.equals("success")) {
this.createDragonPayNotify(payNotifyReqBo,jsonData);
//更新通知状态-通知成功
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_SUCCESS.getCode()));
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayNotifyStatusEnum.NOTIFY_SUCCESS.getCode()));
} else {
this.createDragonPayNotifyFail(payNotifyReqBo,jsonData);
//更新通知状态-通知失败
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_FAIL.getCode()));
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayNotifyStatusEnum.NOTIFY_FAIL.getCode()));
}
} catch (ConnectTimeoutException e) {
log.error("dragon:sendNotify 请求超时",e);
this.createDragonPayNotifyFail(payNotifyReqBo,jsonData);
//更新通知状态-通知失败
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_EXPIRE.getCode()));
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayNotifyStatusEnum.NOTIFY_EXPIRE.getCode()));
} catch (Exception e) {
log.error("dragon:sendNotify 请求失败",e);
this.createDragonPayNotifyFail(payNotifyReqBo,jsonData);
//更新通知状态-通知失败
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_FAIL.getCode()));
this.updateNotifyStatus(payNotifyDto.getCode(),Integer.valueOf(DragonConstant.PayNotifyStatusEnum.NOTIFY_FAIL.getCode()));
}finally {
//释放连接
......
......@@ -54,7 +54,10 @@ public abstract class AbstractPayChannelStrategyImpl implements IPayChannelStrat
dragonOrdersDto.setPaymentAt(timeEnd);
dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
//更新缓存
dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
//修改订单状态
dragonPayBiz.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto.getStatus(),bankTrxNo);
//通知商户
dragonPayBiz.sendNotify(dragonPayBiz.buildPayNotifyReqBo(dragonOrdersDto));
}
......@@ -68,8 +71,12 @@ public abstract class AbstractPayChannelStrategyImpl implements IPayChannelStrat
log.info("订单支付失败!");
// dragonOrdersDto.setPaymentAt(timeEnd);
// dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_UNPAID.getCode()));
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAY_FAIL.getCode()));
//更新缓存
dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
//修改订单状态
//修改订单状态
dragonPayBiz.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto.getStatus(),null);
//通知商户
dragonPayBiz.sendNotify(dragonPayBiz.buildPayNotifyReqBo(dragonOrdersDto));
}
......
......@@ -8,11 +8,11 @@ dragon_order_refund_call_back.update=UPDATE `dragon_order_refunds` SET updated_a
dragon_order_refund_log.insert=INSERT INTO `dragon_order_refund_logs`(`order_refund_id` ,`refund_type` ,`content`,`created_at`,`updated_at`)VALUES(?,?,?,?,?);
dragon_orders.insert=insert into dragon_orders(order_id, status, code, type, price, name, detail, order_code, client_ip, notify_url, payment_type, payment_id, payment_at, finished_at, created_at, updated_at, deleted_at) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
dragon_orders.insert=insert into dragon_orders(order_id, status, code, type, price, name, detail, order_code, client_ip, notify_url,notify_status, payment_type, payment_id, payment_at, finished_at, created_at, updated_at, deleted_at) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
dragon_order_logs.insert=insert into dragon_order_logs(code, payment_type, content, created_at, updated_at, deleted_at) values(?,?,?,?,?,?)
dragon_pay_notify.insert=insert into dragon_pay_notify (code, order_code, notify_url, notify_data, created_at, updated_at) values(?,?,?,?,?,?)
dragon_pay_notify_fail.insert=insert into dragon_pay_notify_fail (code, order_code, notify_url, notify_data, fail_desc, created_at, updated_at) values(?,?,?,?,?,?,?)
dragon_orders.update=update dragon_orders t set t.status = ? ,t.payment_id = ?,t.finished_at = ?,t.updated_at =? where t.code = ?
dragon_orders.updateNotifyStatus=update dragon_orders t set t.status = ? ,t.updated_at =? where t.code = ?
dragon_orders.updateOrderStatus=update dragon_orders t set t.status = ? ,t.payment_id = ?,t.finished_at = ?,t.updated_at =? where t.code = ?
dragon_orders.updateNotifyStatus=update dragon_orders t set t.notify_status = ? ,t.updated_at =? where t.code = ?
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment