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

Commit 64f59d22 authored by anjiabin's avatar anjiabin

修改通知逻辑

parent b14d7ab7
...@@ -56,10 +56,7 @@ public class DragonConstant { ...@@ -56,10 +56,7 @@ public class DragonConstant {
public enum PayStatusEnum{ public enum PayStatusEnum{
STATUS_UNPAID("0","未支付,或支付中"), STATUS_UNPAID("0","未支付,或支付中"),
STATUS_PAID("1","已支付"), STATUS_PAID("1","已支付"),
STATUS_PAY_FAIL("2","支付失败"), STATUS_PAY_FAIL("2","支付失败");
STATUS_SUCCESS("3","已支付,通知成功,交易结束"),
STATUS_FAIL("4","已支付,通知失败,交易结束"),
STATUS_EXPIRE("5","已支付,通知超时,交易结束");
private String code; private String code;
...@@ -84,6 +81,36 @@ public class DragonConstant { ...@@ -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 { ...@@ -96,14 +96,13 @@ public class DragonPayBiz {
* @param paymentId * @param paymentId
* @return * @return
*/ */
public boolean updateDragonOrderStatus(String code,String paymentId){ public boolean updateOrderStatus(String code,Integer status,String paymentId){
try { try {
Integer status = Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAID.getCode());
LocalDateTime finishedAt = LocalDateTime.now(); LocalDateTime finishedAt = LocalDateTime.now();
LocalDateTime updateAt = LocalDateTime.now(); LocalDateTime updateAt = LocalDateTime.now();
//t.status = ? ,t.payment_id = ?,t.finished_at = ?,t.updated_at =? where t.code = ? //t.status = ? ,t.payment_id = ?,t.finished_at = ?,t.updated_at =? where t.code = ?
boolean insertResult = mqHandleUtil.sendMySqlRedis( boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.update"), SqlMapping.get("dragon_orders.updateOrderStatus"),
new Object[]{status,paymentId,finishedAt, updateAt,code} new Object[]{status,paymentId,finishedAt, updateAt,code}
,DragonConstant.MysqlRedisQueueEnum.DRAGON_PAY_KEY.getCode() ,DragonConstant.MysqlRedisQueueEnum.DRAGON_PAY_KEY.getCode()
); );
...@@ -123,7 +122,7 @@ public class DragonPayBiz { ...@@ -123,7 +122,7 @@ public class DragonPayBiz {
public boolean updateNotifyStatus(String code,Integer status){ public boolean updateNotifyStatus(String code,Integer status){
try { try {
LocalDateTime updateAt = LocalDateTime.now(); 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( boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_orders.updateNotifyStatus"), SqlMapping.get("dragon_orders.updateNotifyStatus"),
new Object[]{status,updateAt,code} new Object[]{status,updateAt,code}
...@@ -299,24 +298,24 @@ public class DragonPayBiz { ...@@ -299,24 +298,24 @@ public class DragonPayBiz {
if (response.equals("success")) { if (response.equals("success")) {
this.createDragonPayNotify(payNotifyReqBo,jsonData); 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 { } else {
this.createDragonPayNotifyFail(payNotifyReqBo,jsonData); 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) { } catch (ConnectTimeoutException e) {
log.error("dragon:sendNotify 请求超时",e); log.error("dragon:sendNotify 请求超时",e);
this.createDragonPayNotifyFail(payNotifyReqBo,jsonData); 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) { } catch (Exception e) {
log.error("dragon:sendNotify 请求失败",e); log.error("dragon:sendNotify 请求失败",e);
this.createDragonPayNotifyFail(payNotifyReqBo,jsonData); 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 { }finally {
//释放连接 //释放连接
......
...@@ -54,7 +54,10 @@ public abstract class AbstractPayChannelStrategyImpl implements IPayChannelStrat ...@@ -54,7 +54,10 @@ public abstract class AbstractPayChannelStrategyImpl implements IPayChannelStrat
dragonOrdersDto.setPaymentAt(timeEnd); dragonOrdersDto.setPaymentAt(timeEnd);
dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号 dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号
dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode())); dragonOrdersDto.setStatus(Integer.parseInt(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
//更新缓存
dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto); dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
//修改订单状态
dragonPayBiz.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto.getStatus(),bankTrxNo);
//通知商户 //通知商户
dragonPayBiz.sendNotify(dragonPayBiz.buildPayNotifyReqBo(dragonOrdersDto)); dragonPayBiz.sendNotify(dragonPayBiz.buildPayNotifyReqBo(dragonOrdersDto));
} }
...@@ -68,8 +71,12 @@ public abstract class AbstractPayChannelStrategyImpl implements IPayChannelStrat ...@@ -68,8 +71,12 @@ public abstract class AbstractPayChannelStrategyImpl implements IPayChannelStrat
log.info("订单支付失败!"); log.info("订单支付失败!");
// dragonOrdersDto.setPaymentAt(timeEnd); // dragonOrdersDto.setPaymentAt(timeEnd);
// dragonOrdersDto.setPaymentId(bankTrxNo);// 设置银行流水号 // 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); dataUtils.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto);
//修改订单状态
//修改订单状态
dragonPayBiz.updateOrderStatus(dragonOrdersDto.getCode(),dragonOrdersDto.getStatus(),null);
//通知商户 //通知商户
dragonPayBiz.sendNotify(dragonPayBiz.buildPayNotifyReqBo(dragonOrdersDto)); dragonPayBiz.sendNotify(dragonPayBiz.buildPayNotifyReqBo(dragonOrdersDto));
} }
......
...@@ -8,11 +8,11 @@ dragon_order_refund_call_back.update=UPDATE `dragon_order_refunds` SET updated_a ...@@ -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_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_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.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_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.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.status = ? ,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