微信支付 - 支付中心回调通知
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                微信支付 - 支付中心回调通知
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            /*** 支付成功后的微信支付異步通知*/
@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();
}
 
                        
                        
                        ?
總結
以上是生活随笔為你收集整理的微信支付 - 支付中心回调通知的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 微信支付 - 提供支付中心商户订单查询
- 下一篇: 支付宝支付 - 构建支付表单填并提交
