微信支付回调返回成功,但是还是继续调用问题

微信支付的心得

首先,微信支付的文档要有顺序的看不能只看某一部分,比如你要做微信支付
,你使用微信的***统一下单接口***------》就要看***支付结果通知***------》还要看***查询订单***,顺序仅供参考,不是必须的,看了后你应该会有已支付的流程在脑海。同时一定要注意细节。

例如查询订单***的接口中的返回值有***交易状态 trade_state 是有返回的,但是在***支付结果通知***的接口中是没有的,一定要看清除,微信的文档一定要仔细对比,否则,你一定会有重新做的冲动。。。。。。。

例如支付结果通知 的接口中返回给微信确定信息是,我想大家都能看到在文档的末尾处返回示例,但是微信还是会回调你的接口,哈哈。。。
我也看其它的博客和论坛,说啥的都有,都不行。。。
其实微信要我们返回字符串给他,记得是类似Stringbuffer拼接的那种字符串,

正确的返回示例

Stringbuffer s = new StringBuffer();
s.append("<xml>");
s.append("<return_code><![CDATA[SUCCESS]]></return_code>");
s.append("<return_msg><![CDATA[OK]]></return_msg>");
s.append("</xml>");
return s;

错误的示例

String s ="";
s= "<xml>" +
 "<return_code><![CDATA[SUCCESS]]></return_code>"
   + "<return_msg><![CDATA[OK]]></return_msg>"
   + "</xml> ";
return s;

看着一样,其实不一样,此时脑海想起一首歌 。。。。。

后续。。。

支付顺序

统一下单接口
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

支付结果通知
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3

查询订单
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_2&index=4

退款顺序

申请退款
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_4&index=6

退款结果通知
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_16&index=11

查询退款
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_5&index=7

写的不好,错误之处,还望不吝赐教,欢迎斧正

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,针对微信支付回调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格式的字符串。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值