妈耶,支付终于通了,这里给大家说下我都咋解决的
来源: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回答
-
也就是items中的productId为null,可以抓包看看请求
012020-04-08 -
慕先生3051470
2020-06-04
谢谢大佬,困扰一周的问题终于成功了
00 -
小龙人哎
2020-05-12
提供一种别的解决方法 https://blog.csdn.net/qq_39021393/article/details/106081771
00 -
小龙人哎
2020-05-12
提供一种解决办法
00 -
weixin_慕容8513646
2020-05-12
授权这块具体是咋弄的呀
00 -
qq_慕数据0528687
2020-04-19
大佬请问一下,第一步中,我是用wxPayH5Config.setAppId(accountConfig.getMpAuthrizeAppId());获取授权,然后之后怎么用mpAppId去覆盖MpAuthrizeAppId哇
012020-04-20 -
小龙人哎
2020-04-10
我想问下 修改js后如何使修改部分其生效
022020-04-11
相似问题