微信支付回调后返回参数
微信支付回调参数详细描述
在微信支付系统中,当用户完成支付操作后,微信会向商户平台发送一个回调请求,以便商户可以接收到支付结果并进行相应的业务处理。这个回调请求通常是通过HTTP POST方式传递给商户的服务器上的指定URL。
回调参数
在回调请求中,微信会携带一些必要的参数供商户处理和验证。这些参数包括:
1. return_code: 回调结果代码* SUCCESS:表示回调成功* FAIL:表示回调失败2. return_msg: 回调结果信息* 如果 return_code 为 SUCCESS,则 return_msg 可能包含一些提示信息,如“支付成功”等3. appid: 公众号或小程序的 AppID4. mch_id: 商户 ID5. nonce_str: 随机字符串,用于防止重复回调6. sign: 签名值,用于验证回调请求的合法性7. result_code: 支付结果代码* SUCCESS:表示支付成功* FAIL:表示支付失败8. err_code: 错误代码*0:表示无错误9. err_msg: 错误信息10. trade_type:交易类型* APP:表示移动应用支付* MWEB:表示小程序支付11. transaction_id:交易 ID12. out_trade_no: 商户订单号13. time_end: 支付完成时间回调示例
以下是微信支付回调请求的示例:
```xml
```
回调处理
在接收到微信支付回调请求后,商户需要进行以下步骤:
1. 验证回调请求的合法性* 检查签名值是否正确* 检查 nonce_str 是否唯一2. 处理回调结果* 如果 return_code 为 SUCCESS,则表示支付成功,可以将订单状态更新为“已付款”
* 如果 return_code 为 FAIL,则表示支付失败,可以将订单状态更新为“未付款”
示例代码
以下是 Java语言的示例代码,用于处理微信支付回调请求:
```javaimport javax.servlet. javax.servlet. org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestControllerpublic class WeChatPayController {
@PostMapping("/wechat/pay/callback")
public String handleCallback(HttpServletRequest request, HttpServletResponse response) {
// 验证回调请求的合法性 String xml = getXmlFromRequest(request);
if (!verifySignature(xml)) {
return "fail";
}
// 处理回调结果 String returnCode = getReturnCode(xml);
if (returnCode.equals("SUCCESS")) {
// 支付成功,更新订单状态为“已付款”
updateOrderStatus(xml);
return "success";
} else {
// 支付失败,更新订单状态为“未付款”
updateOrderStatus(xml);
return "fail";
}
}
private String getXmlFromRequest(HttpServletRequest request) {
// 从请求中获取 XML 数据 return request.getParameter("xml");
}
private boolean verifySignature(String xml) {
// 验证签名值是否正确 // ...
return true;
}
private String getReturnCode(String xml) {
// 获取回调结果代码 // ...
return "SUCCESS";
}
private void updateOrderStatus(String xml) {
// 更新订单状态 // ...
}
}
```
以上是微信支付回调参数的详细描述和示例代码。