妈耶,支付终于通了,这里给大家说下我都咋解决的

来源:8-4 动态注入参数发起支付

黑子的一生

2020-04-05

一.怎么将授权和支付连接起来调

1.我在applicaiton.yml创建了两个appid,一个是用于授权,一个用于支付,然后分别赋值

wechat:
  mpAuthrizeAppId: wxd898fcb01713c658 #测试账号 用于授权
  mpAppId: wxd898fcb01713c658 #正式账号 用于支付

2.其次,你需要将生成商户订单这里openid硬编码为借用的openid,不要从数据库里取,因为前端生成订单的时候他传过来的openid是你测试账号生成的openid,所以它是不能支付的,会告诉你数据库中没有该openid...

 @Override
    public PayResponse create(OrderDTO orderDTO) {
        PayRequest payRequest = new PayRequest();
        //硬编码为借用的openid
        payRequest.setOpenid("oTgZpwcc3Xw-aUxIC56kZ1e5Msh0");
        payRequest.setOrderId(orderDTO.getOrderId());
        payRequest.setOrderAmount(orderDTO.getOrderAmount().doubleValue());
        payRequest.setOrderName("微信订单测试");
        payRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);
        log.info("【微信支付】生成商户订单request={}", payRequest);
        PayResponse payResponse = bestPayService.pay(payRequest);
        log.info("【微信支付】返回预付单信息response={}", payResponse);
        return payResponse;
    }

二.支付成功,跳转的详情页面为404?

需要对returnUrl进行解码

 map.put("returnUrl", URLDecoder.decode(returnUrl));

三.支付成功,跳转的详情页面没数据?

我抓包看了下,前端传过来的orderId,这个I是大写的,老师带我们写的是小写,改一下就好了

四.怎么进入自己的create方法

在前端config/index.js配置,后面的openid就是借用的openid,老师会根据你的openid转发到你申请时填写的链接从而跳转

wechatPayUrl: 'http://proxy.springboot.cn/pay?openid=oTgZpwcc3Xw-aUxIC56kZ1e5Msh0'

然后这时候你还会报错,因为在前端代码里,它也传了授权得到的openid,这时候链接就成了http://proxy.springboot.cn/pay?openid=oTgZpwcc3Xw-aUxIC56kZ1e5Msh0?openid=oTgZpwcc3Xw-aUxIC56kZ1e5Msh0&openid=12312414&returnUrl=sell.com,解决办法就是去掉前端代码里的orderid,找到src目录下的payment/index.vue,然后删掉圈住的

五.productId为null

当你创建订单时会发现,orderDetail集合,也就是items中的productId为null,为了大家方便,一个快速解决问题的方法,还是刚才那个目录,将原先的代码写死,具体为啥没传过去不知道

写回答

7回答

廖师兄

2020-04-06

也就是items中的productId为null,可以抓包看看请求

0
1
黑子的一生
非常感谢!
2020-04-08
共1条回复

慕先生3051470

2020-06-04

谢谢大佬,困扰一周的问题终于成功了

0
0

小龙人哎

2020-05-12

提供一种别的解决方法 https://blog.csdn.net/qq_39021393/article/details/106081771

0
0

小龙人哎

2020-05-12

提供一种解决办法

0
0

weixin_慕容8513646

2020-05-12

授权这块具体是咋弄的呀 

0
0

qq_慕数据0528687

2020-04-19

大佬请问一下,第一步中,我是用wxPayH5Config.setAppId(accountConfig.getMpAuthrizeAppId());获取授权,然后之后怎么用mpAppId去覆盖MpAuthrizeAppId哇


0
1
黑子的一生
看我上面写的,配置两个Appid,一个授权,一个支付,它们配置又不共用
2020-04-20
共1条回复

小龙人哎

2020-04-10

我想问下 修改js后如何使修改部分其生效 

0
2
小龙人哎
回复
黑子的一生
好的 谢谢 我解决了
2020-04-11
共2条回复

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

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

6410 学习 · 5247 问题

查看课程