微信支付 - 支付中心回调通知

/*** 支付成功后的微信支付异步通知*/
@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 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();
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部