请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

支付成功后,跳出404页面,无法弹出支付成功信息

详细如下图。我找了下别人的回答。有几个特别类似的提问,但是没有看到结论的。

请师兄帮忙好好看下,实在是搞不定。

下面第一个链接跟我的问题一模一样。

https://coding.imooc.com/learn/questiondetail/21044.html

第二个链接中问题下面回答中的提问跟我的也是一样

https://coding.imooc.com/learn/questiondetail/37325.html

都没有解答说明。在学习群里也请教了。没有得出结论。这几个前端跳转说实话有些晕晕呼呼,不了解透彻那个sell.springboot.cn的代理跳转没有办法很好的定位这个问题,需要师兄指教。

详细如下图。

https://img1.sycdn.imooc.com//szimg/5a9c11bb0001dad006740247.jpg

https://img1.sycdn.imooc.com//szimg/5a9c11bb00016c7211280624.jpg

微信可以支付成功,支付成功会跳转到404页面。

通过抓包工具查看

https://img1.sycdn.imooc.com//szimg/5a9c124e0001a1d809630410.jpg

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时却可以看到正常页面

https://img1.sycdn.imooc.com//szimg/5a9c12f200014d0206840923.jpg

开始怀疑returnUrl有问题后,也试过再create.ftl中将链接写死为慕课网,一样打不开。

https://img1.sycdn.imooc.com//szimg/5a9c134d00016f1715110704.jpg


一时也想不起还有哪里没有描述清楚的,就是还有个奇怪的问题,我notify中打的断点压根就没进去。https://img1.sycdn.imooc.com//szimg/5a9c1464000103a107330152.jpg

显示没有执行的方法。

这里用/notify和/pay/notify都试过

yaml里面地址用notify_url: http://izyi7.com/sell/pay/notify

带pay不带pay带sell不带sell也都试过了。。。

正在回答 回答被采纳积分+3

3回答

vcfriend 2018-04-28 16:13:20

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);
    }
}


1 回复 有任何疑惑可以回复我~
  • zero菌 #1
    不是URLEncoder.encode,是用URLDecoder.decode才对
    回复 有任何疑惑可以回复我~ 2018-05-17 18:09:22
  • boncsunny 回复 zero菌 #2
    对,过来的地址已经encode了。肯定要decode才行。
    回复 有任何疑惑可以回复我~ 2019-01-04 10:08:09
  • 暮色如虹 回复 zero菌 #3
    手动点赞
    回复 有任何疑惑可以回复我~ 2019-12-16 21:57:36
慕桂英5328456 2018-03-07 10:37:47

我现在出现了和你相同的问题,请问你解决了吗?

1 回复 有任何疑惑可以回复我~
  • 你这段代码贴得出来吗。或者说你在二群吗。可以发出来看看。我前端的跳转还是没搞懂。但是后来莫名其妙就好了。(我这边试了很多次,decode还是需要做的)
    然后还有就是那个notify的地址,是你的域名/notify  ,什么别的都不要加,不要pay也不要sell。
    回复 有任何疑惑可以回复我~ 2018-03-08 21:25:19
  • 已经解决了,美女,1003317637可以加一下
    回复 有任何疑惑可以回复我~ 2018-03-08 21:27:12
  • 都说解决了, 是怎么解决的啊.. 把答案发出来都看看嘛, 我不是美女可以加你不.^_^
    回复 有任何疑惑可以回复我~ 2018-04-28 15:09:10
廖师兄 2018-03-06 14:19:44

能跳到这个地址说明出错了

http://sell.springboot.cn/sell/http%3A%2F%2Fsell.com%2F%23%2Forder%2F1520176098133969660

显然,你需要跳到的是

http://sell.com/#/order/1520176098133969660

从这个点着手去找原因, 控制跳转的逻辑在前端,把链接打印处理观察一下, alert(url)


1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信