微信 支付回调java
时间: 2023-09-02 21:09:03 浏览: 51
好的,针对微信支付回调的Java代码可以参考以下示例:
```java
@RestController
@RequestMapping("/api/wechat/pay")
public class WechatPayController {
@Autowired
private WechatPayService wechatPayService;
/**
* 微信支付结果回调
*/
@RequestMapping(value = "/notify", method = RequestMethod.POST, produces = "application/xml")
public String payNotify(@RequestBody String xmlData) {
try {
Map<String, String> resultMap = XmlUtil.xmlToMap(xmlData);
if (wechatPayService.verifyNotify(resultMap)) {
// 验证签名通过
String tradeNo = resultMap.get("out_trade_no"); // 商户订单号
String transactionId = resultMap.get("transaction_id"); // 微信支付订单号
String totalFee = resultMap.get("total_fee"); // 订单总金额,单位为分
// TODO: 处理支付成功逻辑
return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
} else {
// 签名验证失败
return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名验证失败]]></return_msg></xml>";
}
} catch (Exception e) {
e.printStackTrace();
return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[系统异常]]></return_msg></xml>";
}
}
}
```
其中,`WechatPayService`是一个支付相关的服务类,`XmlUtil`是一个用于XML转Map的工具类。在`payNotify`方法中,首先将微信支付回调的XML数据转为Map对象,然后调用`wechatPayService.verifyNotify`方法进行签名验证。如果验证通过,则处理支付成功逻辑并返回`SUCCESS`给微信服务器;如果验证失败,则返回`FAIL`给微信服务器。注意,返回的数据必须是XML格式的字符串。