延迟队列处理过期支付订单问题

延迟队列处理过期支付订单问题

在 内网穿透natapp 这一章最后布置的作业,用延迟队列处理过期支付订单。

生产者端:

https://img1.sycdn.imooc.com//climg/647768fe09c2796f12590759.jpg

消费者:

https://img1.sycdn.imooc.com//climg/64776a340911d04311660771.jpg

消费者端,从支付中心查询订单,提示 查询参数[merchantOrderId]不能为空! 感觉应该是支付中心没有接受到merchantOrderId参数,是不是HttpEntity实体类传入的参数有问题?还有希望老师能给下此处作业的答案做参考!


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

支付中心肯定是没有问题的,因为其他同学也是用的这个接口,而且别的实战也是用的这个接口。排查一下自己的查询参数啥的是不是有问题呢?课程里记得写过查询订单这个接口呀~~

  • 慕数据9212320 提问者 #1

    老师,我没有怀疑是支付中心的问题,用apipost测试查询接口也是没有问题的。课程里是支付中心有查询接口,本地项目是没有写查询订单,只是用postman测试了下。课程里讲了远程调用是在向支付中心发起订单,那个HttpEntity对象 里传的参数是merchantOrdersBO实体对象和headers,这个merchantOrdersBO是支付中心的参数是对应的。

    https://img1.sycdn.imooc.com//climg/6477804a09f5095c11840495.jpg


    我的问题是,在延迟队列消费者端,向中心查询支付订单时,请求参数要求是String类型的merchantOrderId,这里的entity实体类的参数要怎么传?不管我怎么试,都是报merchantOrderId为空!

    https://img1.sycdn.imooc.com//climg/6477849a0973c93212290843.jpg


    2023-06-01 01:33:44
  • 风间影月 回复 提问者 慕数据9212320 #2
    url后面拼接一个参数啊。。这个和post没有关系,不管get或者post,都可以在url后面拼接参数的。支付中心绝对没有问题。架构师以及其他实战等课程都是用的这个接口。。
    2023-06-01 08:52:10
  • 慕数据9212320 提问者 回复 风间影月 #3

    是的,终于搞通了,基础太差了。

    https://img1.sycdn.imooc.com//climg/64780bc40971c36912340752.jpg

    拿到查询的数据后,这里的graceJSONResult.getData()的数据类型是Object,我这里是强转之后,得到

    支付状态payStatus之后更新状态,感觉这样不太优雅,风哥有没有比较好的方式拿到graceJSONResult.getData()里面的数据呢?

    2023-06-01 11:13:36
风间影月 2023-05-31 23:53:30

订单穿参是用get请求url的参数,而不是body的entity ,看下吧

  • 提问者 慕数据9212320 #1

    支付中心的查询接口是post请求。

    https://img1.sycdn.imooc.com//climg/64778542096778ec09680543.jpg

    2023-06-01 01:38:57
  • 提问者 慕数据9212320 #2

    已解决。url地址错了,我把地址传参和body传参搞混淆了,哎,基础太差了。

    2023-06-01 11:04:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java高级工程师
  • 参与学习       412    人
  • 解答问题       306    个

通过一个大型项目贯穿,掌握主流技术栈,提升技术广度与深度 实现复杂度极高的招聘业务,用户端+企业端+SaaS平台全覆盖 构建技术+业务+工程实战+就业服务闭环,实现从初中级到高级工程师的跨越!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师