支付成功后,跳出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的代理跳转没有办法很好的定位这个问题,需要师兄指教。

详细如下图。

http://img.mukewang.com/szimg/5a9c11bb0001dad006740247.jpg

http://img.mukewang.com/szimg/5a9c11bb00016c7211280624.jpg

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

通过抓包工具查看

http://img.mukewang.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时却可以看到正常页面

http://img.mukewang.com/szimg/5a9c12f200014d0206840923.jpg

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

http://img.mukewang.com/szimg/5a9c134d00016f1715110704.jpg


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

显示没有执行的方法。

这里用/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);
    }
}


1
3
暮色如虹
回复
端碗吹水
手动点赞
2019-12-16
共3条回复

慕桂英5328456

2018-03-07

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

1
3
vcfriend
都说解决了, 是怎么解决的啊.. 把答案发出来都看看嘛, 我不是美女可以加你不.^_^
2018-04-28
共3条回复

廖师兄

2018-03-06

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

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

显然,你需要跳到的是

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

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


1
0

Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统

从0到1开发中小型企业级Java应用,并学会迭代重构技巧

6410 学习 · 5247 问题

查看课程