请稍等 ...
×

采纳答案成功!

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

发起支付时访问sell.springboot.cn/sell/pay 支付页面提示 404 null

师兄,你修改支付授信息后,发起支付时,页面错误提示已经由"数据库无此openid" 变成了404了. 这也是什么原因啊,视频中没有提到会遇见这个情况呀.

http://sell.springboot.cn/sell/pay?openid=oTgZpwamm7pDqG5Yrd4uFltzpLn8&orderId=1524818056286254206&returnUrl=http://sell.com/#/order/1524818056286254206

以上是我的配置截图

//img1.sycdn.imooc.com//szimg/5ae307b20001575108770638.jpg

//img1.sycdn.imooc.com//szimg/5ae307b20001225010290686.jpg

//img1.sycdn.imooc.com//szimg/5ae307b20001cc7f08770638.jpg

//img1.sycdn.imooc.com//szimg/5ae307b30001bdc006340467.jpg

@Controller
//@RequestMapping("/pay") //错误在此,多一层路径,导致访问 http://xsell.natapp1.cc/pay  出现404
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);
        map.put("returnUrl", returnUrl);

        return new ModelAndView("pay/create", map);
    }
}


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

3回答

廖师兄 2018-04-27 19:41:28

你访问会转发到这个地址   http://xsell.natapp1.cc/pay  

你访问它看看,页面上显示什么

1 回复 有任何疑惑可以回复我~
  • 提问者 vcfriend #1
    谢谢师兄, 问题解决了, 可以继续向下学习了..
    回复 有任何疑惑可以回复我~ 2018-04-28 16:59:25
  • 慕粉3770036 回复 提问者 vcfriend #2
    你好,请问数据库无此openid是怎么解决的呢
    回复 有任何疑惑可以回复我~ 2018-11-22 16:35:38
提问者 vcfriend 2018-04-28 16:58:44

关于支付成功后, 返回订单状态页面时,报404的错误提示.

需要用到 URLEncoder.encode(returnUrl, "UTF-8"), 把 returnUrl 用 UTF-8 编码一下

@Controller
@Slf4j
//@RequestMapping("/pay") //错误在此,多一层路径,导致访问 http://xsell.natapp1.cc/pay  出现404
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/前缀 ,且报404错误
        //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);
    }
}


0 回复 有任何疑惑可以回复我~
  • 你好,你有碰到过点了支付以后,请求里面,发起支付的那个URL: http://sell.springboot.cn/sell/pay?openid=oTgZpwcDx4xfGs9XtQeMmN0miMbw&orderId=undefined&returnUrl=http%3A%2F%2Fsell.com%2F%23%2Forder%2Fundefined, orderId=undefined?
    回复 有任何疑惑可以回复我~ 2018-05-03 17:49:33
提问者 vcfriend 2018-04-28 10:00:26

404错误找到了,访问路径多写了一层pay

@Controller
//@RequestMapping("/pay") //错误在此,多一层路径,导致访问 http://xsell.natapp1.cc/pay  出现404
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);
        map.put("returnUrl", returnUrl);
 
        return new ModelAndView("pay/create", map);
    }
}


关于发起支付时,访问pay.html页面空白, 没有提示错误信息, 就是不能发起支付时, 可参考:

http://coding.imooc.com/learn/questiondetail/28679.html

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