关于java支付宝接口的异步通知的问题

1 篇文章 0 订阅
1 篇文章 0 订阅

在做java版本的支付宝接口的时候,最初是遇到了这样的问题,就是说,在直接的扫码支付,或者是直接的登录账号支付,是没有问题的,

但是,在这样的一种情况下是出现了一个问题,


我web端调用支付宝接口进行支付,一般都是支付成功之后,获得支付成功信息,然后同时去更改我本地订单状态(已付款)。

但是有一种情况是这样的:
调用支付宝接口,你输入账号密码之后, 在支付宝最后一步你不去点确认付款。直接退出(相当于你没有付款)。
然后,你用自己的手机支付宝客户端打开,你会看到有一个未付款的订单(也就是刚才你没付款但生成的订单)~这个时候 如果你去付款了,付款成功之后,就不可能调到我的web端呀?这样我就不能更改我本地的订单状态了。

想问下,大家遇到这种情况是怎么处理的?

有人说,每10秒钟通过订单号去支付宝查询并得到该订单状态。这种方法貌似可以,但是我百度了半天没有见到如何 根据订单号去查询订单状态啊!!! 支付宝的接口我有(Danbao担保)。不太会用。

希望大神给予指点!!!在线坐等,感激万分!!!


这个问题是来自一位博友,最开始也是没有意识到什么问题,为什么是收到钱了,但是却是没有调用自己的逻辑代码,

在看到了这位博友的问题之后,才是发现了自己的问题所在,所以在这里感谢一下,

然后是想说的是,知道了是什么问题之后,然后就是专注于解决这个问题,在考虑了一上午之后还是不明白这个异步通知是怎么的接收到,然后是在一个偶然是看见了,一个提示,是说,自己的项目时候是允许这个路径的访问,因为异步通知是服务器通知,如果是你的过滤器或者是springmvc拦截器,把这个路径拦截掉之后,那么你就肯定是接收不到这个异步通知了,


这个问题真的是很简单,但是却是纠结了一上午,在过滤器中将这个异步通知路径放开之后,然后就是支付成功之后,也是执行了自己的逻辑代码,


这个就是这个异步通知的遇到的问题,

以下是 Java 支付宝异步回调接口案例的代码示例: ```java @RequestMapping(value = "/notify_url") public String notifyUrl(HttpServletRequest request) { Map<String, String> params = new HashMap<>(); Map<String, String[]> requestParams = request.getParameterMap(); for (Iterator<String> iterator = requestParams.keySet().iterator(); iterator.hasNext(); ) { String name = iterator.next(); String[] values = requestParams.get(name); StringBuilder valueStr = new StringBuilder(); for (int i = 0; i < values.length; i++) { valueStr.append((i == values.length - 1) ? values[i] : values[i] + ","); } // 将参数放入 map 中 params.put(name, valueStr.toString()); } // 验证签名 boolean signVerified = false; try { signVerified = AlipaySignature.rsaCheckV1(params, alipayPublicKey, charset, signType); } catch (AlipayApiException e) { e.printStackTrace(); } if (signVerified) { // 验证成功 // 处理业务逻辑,例如更新订单状态 return "success"; } else { // 验证失败 return "fail"; } } ``` 其中 `notify_url` 是在支付宝开发文档中配置的异步通知接口,当有支付成功的订单时,支付宝会向该接口发送一个 POST 请求,参数会以键值对的形式传递过来,我们需要将其放入一个 Map 中,然后使用 `AlipaySignature.rsaCheckV1` 方法验证签名,如果验证成功,就可以执行业务逻辑,例如更新订单状态,并返回 "success",如果验证失败,就返回 "fail",告诉支付宝不要再发送通知
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值