支付成功后,跳出404页面,无法弹出支付成功信息
来源:8-5 微信异步通知(上)
左岸的风有咖啡香
2018-03-04
详细如下图。我找了下别人的回答。有几个特别类似的提问,但是没有看到结论的。
请师兄帮忙好好看下,实在是搞不定。
下面第一个链接跟我的问题一模一样。
https://coding.imooc.com/learn/questiondetail/21044.html
第二个链接中问题下面回答中的提问跟我的也是一样
https://coding.imooc.com/learn/questiondetail/37325.html
都没有解答说明。在学习群里也请教了。没有得出结论。这几个前端跳转说实话有些晕晕呼呼,不了解透彻那个sell.springboot.cn的代理跳转没有办法很好的定位这个问题,需要师兄指教。
详细如下图。
微信可以支付成功,支付成功会跳转到404页面。
通过抓包工具查看
http://sell.springboot.cn/sell/http%3A%2F%2Fsell.com%2F%23%2Forder%2F1520176098133969660
是这个页面无法打开,群里有同学反馈为需要做一下decode,我在代码里面也改了,一样没有效果,手动访问
访问http://sell.springboot.cn/sell/http://sell.com/#/order/1520176098133969660也是一样弹出404
但是手动访问http://sell.com/#/order/1520176098133969660时却可以看到正常页面
开始怀疑returnUrl有问题后,也试过再create.ftl中将链接写死为慕课网,一样打不开。
一时也想不起还有哪里没有描述清楚的,就是还有个奇怪的问题,我notify中打的断点压根就没进去。
显示没有执行的方法。
这里用/notify和/pay/notify都试过
yaml里面地址用notify_url: http://izyi7.com/sell/pay/notify
带pay不带pay带sell不带sell也都试过了。。。
3回答
-
vcfriend
2018-04-28
returnUrl需要encode一下, 廖师兄在诱导我们如何解决问题, 却不告诉我们在哪里解决..我问了一下师兄,总算解决了.
@Controller @Slf4j public class PayController { @Autowired private OrderService orderService; @Autowired private PayService payService; /** * 微信支付帐号借用 * 前端支付地址调用回调 * @param openid 师兄干货处获取的openid * @param orderId 订单id * @param returnUrl 支付完返回地址 * @param map 后端支付页面动态参数 * @return 用户支付页面调用 */ @GetMapping("/pay") public ModelAndView index(@RequestParam("openid") String openid, @RequestParam("orderId") String orderId, @RequestParam("returnUrl") String returnUrl, Map<String, Object> map) { return create(orderId, returnUrl, map); } @GetMapping("/pay/create") public ModelAndView create(@RequestParam("orderId") String orderId, @RequestParam("returnUrl") String returnUrl, Map<String, Object> map) { //1. 查询订单 OrderDTO one = orderService.findOne(orderId); if (one == null) { throw new SellExecption(ResultTypeInfoEnum.ORDER_NOT_EXIST); } //2.创建预支付订单 PayResponse payResponse = payService.create(one); map.put("payResponse", payResponse); //用这个还不行地址返回时会带有 http://sell.springboot.cn/sell/前缀 //map.put("returnUrl", URLEncoder.encode(returnUrl)); try { String decode = URLEncoder.encode(returnUrl, "UTF-8"); map.put("returnUrl", decode); } catch (UnsupportedEncodingException e) { log.error("[支付订单] 解析返回地址错误, returnUrl={}", returnUrl); e.printStackTrace(); } //3.生成JSAPI页面调用的支付参数并签名,返回给微信端让用户向微信支付系统发起支付和确认支付. return new ModelAndView("pay/create", map); } }
132019-12-16 -
慕桂英5328456
2018-03-07
我现在出现了和你相同的问题,请问你解决了吗?
132018-04-28 -
廖师兄
2018-03-06
能跳到这个地址说明出错了
http://sell.springboot.cn/sell/http%3A%2F%2Fsell.com%2F%23%2Forder%2F1520176098133969660
显然,你需要跳到的是
http://sell.com/#/order/1520176098133969660
从这个点着手去找原因, 控制跳转的逻辑在前端,把链接打印处理观察一下, alert(url)
10
相似问题