微信支付 - 支付中心回调通知
生活随笔
收集整理的這篇文章主要介紹了
微信支付 - 支付中心回调通知
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** 支付成功后的微信支付異步通知*/
@RequestMapping(value="/wxpay")
public void wxpay(HttpServletRequest request, HttpServletResponse response) throws Exception {log.info("支付成功后的微信支付異步通知");// 獲取微信支付結果PayResult payResult = wxOrderService.getWxPayResult(request.getInputStream());boolean isPaid = payResult.getReturn_code().equals("SUCCESS") ? true : false;// 查詢該筆訂單在微信那邊是否成功支付// 支付成功,商戶處理后同步返回給微信參數PrintWriter writer = response.getWriter();if (isPaid) {String merchantOrderId = payResult.getOut_trade_no(); // 商戶訂單號String wxFlowId = payResult.getTransaction_id();Integer paidAmount = payResult.getTotal_fee();// System.out.println("================================= 支付成功 =================================");// ====================== 操作商戶自己的業務,比如修改訂單狀態等 start ==========================String merchantReturnUrl = paymentOrderService.updateOrderPaid(merchantOrderId, paidAmount);// ============================================ 業務結束, end ==================================log.info("************* 支付成功(微信支付異步通知) - 時間: {} *************", DateUtil.getCurrentDateString(DateUtil.DATETIME_PATTERN));log.info("* 商戶訂單號: {}", merchantOrderId);log.info("* 微信訂單號: {}", wxFlowId);log.info("* 實際支付金額: {}", paidAmount);log.info("*****************************************************************************");// 通知天天吃貨服務端訂單已支付
// String url = "http://192.168.1.2:8088/orders/notifyMerchantOrderPaid";MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>();requestEntity.add("merchantOrderId", merchantOrderId);String httpStatus = restTemplate.postForObject(merchantReturnUrl, requestEntity, String.class);log.info("*** 通知天天吃貨后返回的狀態碼 httpStatus: {} ***", httpStatus);// 通知微信已經收到消息,不要再給我發消息了,否則微信會10連擊調用本接口String noticeStr = setXML("SUCCESS", "");writer.write(noticeStr);writer.flush();} else {System.out.println("================================= 支付失敗 =================================");// 支付失敗String noticeStr = setXML("FAIL", "");writer.write(noticeStr);writer.flush();}}
/*** @Description: 支付結果封裝類*/
public class PayResult {private String return_code; // 返回狀態碼private String appid; // 公眾賬號IDprivate String mch_id; // 商戶號private String nonce_str; // 隨機字符串private String sign; // 簽名private String result_code; // 業務結果private String openid; // 用戶標識private String trade_type; // 交易類型private String bank_type; // 付款銀行private int total_fee; // 總金額private int cash_fee; // 現金支付金額private String transaction_id; // 微信支付訂單號private String out_trade_no; // 商戶訂單號private String time_end; // 支付完成時間private String return_msg; // 返回信息private String device_info; // 設備號private String err_code; // 錯誤代碼private String err_code_des; // 錯誤代碼描述private String is_subscribe; // 是否關注公眾賬號private String fee_type; // 貨幣種類private String cash_fee_type; // 現金支付貨幣類型private String coupon_fee; // 代金券或立減優惠金額private String coupon_count; // 代金券或立減優惠使用數量private String coupon_id_$n; // 代金券或立減優惠IDprivate String coupon_fee_$n; // 單個代金券或立減優惠支付金額private String attach; // 商家數據包
}
@Transactional(propagation=Propagation.REQUIRED)
@Override
public String updateOrderPaid(String merchantOrderId, Integer paidAmount) {Example example = new Example(Orders.class);Example.Criteria criteria = example.createCriteria();criteria.andEqualTo("merchantOrderId", merchantOrderId);Orders paidOrder = new Orders();paidOrder.setPayStatus(PaymentStatus.PAID.type);paidOrder.setAmount(paidAmount);int result = ordersMapper.updateByExampleSelective(paidOrder, example);return queryMerchantReturnUrl(merchantOrderId);
}
/*** @Description: 支付中心的支付狀態 10:未支付 20:已支付 30:支付失敗 40:已退款*/
public enum PaymentStatus {WAIT_PAY(10, "未支付"),PAID(20, "已支付"),PAY_FAILED(30, "支付失敗"),SUCCESS(40, "已退款");public final Integer type;public final String value;PaymentStatus(Integer type, String value){this.type = type;this.value = value;}}
@PostMapping("notifyMerchantOrderPaid")
public Integer notifyMerchantOrderPaid(String merchantOrderId) {orderService.updateOrderStatus(merchantOrderId, OrderStatusEnum.WAIT_DELIVER.type);return HttpStatus.OK.value();
}
?
總結
以上是生活随笔為你收集整理的微信支付 - 支付中心回调通知的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信支付 - 提供支付中心商户订单查询
- 下一篇: 支付宝支付 - 构建支付表单填并提交