| @@ -98,6 +98,8 @@ public class WxPayOrder implements Serializable { | |||||
| /**支付失败原因**/ | /**支付失败原因**/ | ||||
| @io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason") | @io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason") | ||||
| private String failReason; | private String failReason; | ||||
| @io.swagger.annotations.ApiModelProperty(value="支付后结果来源(0:callback, 1:query)",name="payEndFrom") | |||||
| private Integer payEndFrom; | |||||
| public String getTenantId() { | public String getTenantId() { | ||||
| return tenantId; | return tenantId; | ||||
| } | } | ||||
| @@ -227,9 +229,15 @@ public class WxPayOrder implements Serializable { | |||||
| failReason = _failReason; | failReason = _failReason; | ||||
| } | } | ||||
| public Integer getPayEndFrom() { | |||||
| return payEndFrom; | |||||
| } | |||||
| public void setPayEndFrom(Integer payEndFrom) { | |||||
| this.payEndFrom = payEndFrom; | |||||
| } | |||||
| public static enum Field | |||||
| public static enum Field | |||||
| { | { | ||||
| Id_ASC("`id` ASC"),Id_DESC("`id` DESC") | Id_ASC("`id` ASC"),Id_DESC("`id` DESC") | ||||
| ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") | ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") | ||||
| @@ -251,6 +259,7 @@ public class WxPayOrder implements Serializable { | |||||
| ,Share_ASC("`share` ASC"),Share_DESC("`share` DESC") | ,Share_ASC("`share` ASC"),Share_DESC("`share` DESC") | ||||
| ,ShareAmount_ASC("`share_amount` ASC"),ShareAmount_DESC("`share_amount` DESC") | ,ShareAmount_ASC("`share_amount` ASC"),ShareAmount_DESC("`share_amount` DESC") | ||||
| ,FailReason_ASC("`fail_reason` ASC"),FailReason_DESC("`fail_reason` DESC") | ,FailReason_ASC("`fail_reason` ASC"),FailReason_DESC("`fail_reason` DESC") | ||||
| ,PayEndFrom_ASC("`pay_end_from` ASC"),PayEndFrom_DESC("`pay_end_from` DESC") | |||||
| ; | ; | ||||
| private String value; | private String value; | ||||
| Field(String value){ | Field(String value){ | ||||
| @@ -0,0 +1,35 @@ | |||||
| package com.iformall.enums; | |||||
| /** | |||||
| * Created by Stormeye on 2018/08/09. | |||||
| */ | |||||
| public enum EnumPayFrom { | |||||
| CALLBACK(0, "callback"), | |||||
| QUERY(1, "查询"); | |||||
| public static EnumPayFrom getEnum(Integer code) { | |||||
| for (EnumPayFrom value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| EnumPayFrom(Integer code, String message) { | |||||
| this.code = code; | |||||
| this.message = message; | |||||
| } | |||||
| public Integer getCode() { | |||||
| return code; | |||||
| } | |||||
| public String getMessage() { | |||||
| return message; | |||||
| } | |||||
| } | |||||
| @@ -63,8 +63,9 @@ public interface WxPayOrderService { | |||||
| * | * | ||||
| * @param record | * @param record | ||||
| * @param transactionId | * @param transactionId | ||||
| * @param from | |||||
| */ | */ | ||||
| void handleOrderPaySuccess(WxPayOrder record, String transactionId); | |||||
| void handleOrderPaySuccess(WxPayOrder record, String transactionId, Integer from); | |||||
| /** | /** | ||||
| * 刷卡支付成功处理 | * 刷卡支付成功处理 | ||||
| @@ -81,15 +82,6 @@ public interface WxPayOrderService { | |||||
| */ | */ | ||||
| void handlePayOrderStatusUpdate(WxPayOrder record, int status); | void handlePayOrderStatusUpdate(WxPayOrder record, int status); | ||||
| /** | |||||
| * 页面回调 | |||||
| * | |||||
| * @param paramMap 页面通知参数 | |||||
| * @param payWay 支付方式 | |||||
| * @return | |||||
| */ | |||||
| void callback(Map<String, String> paramMap, EnumPayWay payWay); | |||||
| /** | /** | ||||
| * 保存或更新实体 | * 保存或更新实体 | ||||
| * | * | ||||
| @@ -743,7 +743,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| if ("MICROPAY".equals(tradeType)) { | if ("MICROPAY".equals(tradeType)) { | ||||
| handleMicroOrderPaySuccess(record, transactionId, openId, sub_is_subscribe); | handleMicroOrderPaySuccess(record, transactionId, openId, sub_is_subscribe); | ||||
| } else { | } else { | ||||
| handleOrderPaySuccess(record, transactionId); | |||||
| handleOrderPaySuccess(record, transactionId, EnumPayFrom.QUERY.getCode()); | |||||
| } | } | ||||
| return new ResultData(Result.SUCCESS, "订单支付成功", returnMap); | return new ResultData(Result.SUCCESS, "订单支付成功", returnMap); | ||||
| } else if ("REFUND".equals(trade_state)) { | } else if ("REFUND".equals(trade_state)) { | ||||
| @@ -1144,9 +1144,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| timeEnd = new Date(); | timeEnd = new Date(); | ||||
| } | } | ||||
| payOrder.setPayTimeEnd(timeEnd); | payOrder.setPayTimeEnd(timeEnd); | ||||
| payOrder.setPayEndFrom(EnumPayFrom.CALLBACK.getCode()); | |||||
| // 处理支付成功 | // 处理支付成功 | ||||
| handleOrderPaySuccess(payOrder, paramMap.get("transaction_id")); | |||||
| handleOrderPaySuccess(payOrder, paramMap.get("transaction_id"), EnumPayFrom.CALLBACK.getCode()); | |||||
| logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); | logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); | ||||
| SortedMap resultMap = new TreeMap(); | SortedMap resultMap = new TreeMap(); | ||||
| resultMap.put("return_code", "SUCCESS"); | resultMap.put("return_code", "SUCCESS"); | ||||
| @@ -1164,14 +1165,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| return XmlUtil.getRequestXml(resultMap); | return XmlUtil.getRequestXml(resultMap); | ||||
| } | } | ||||
| @Override | |||||
| public void callback(Map<String, String> paramMap, EnumPayWay payWay) { | |||||
| } | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public void handleOrderPaySuccess(WxPayOrder record, String transactionId) { | |||||
| public void handleOrderPaySuccess(WxPayOrder record, String transactionId, Integer from) { // from 0:callback, 1:query | |||||
| Date currentDate = new Date(); | Date currentDate = new Date(); | ||||
| EnumPayStatus payStatus = EnumPayStatus.getEnum(record.getPayOrderStatus()); | EnumPayStatus payStatus = EnumPayStatus.getEnum(record.getPayOrderStatus()); | ||||
| // 判断支付状态 | // 判断支付状态 | ||||