微信支付返回JSAPI缺少参数total_fee和当前页面的URL位注册
微信jsapi支付最常遇到的两个错误
- JSAPI缺少参数total_fee
- 当前页面的URL位注册
JSAPI缺少参数total_fee,原因就很简单就是缺少参数(准确来说是参数不对),但是那个参数出问题不知道,
当前页面的URL位注册,原因也很简单就是支付目录没配对
咱就文字叙述一下jsapi的支付流程,具体支付的流程图官方文档有,反正我看到不是很明白,我就说下调用时咱的操作,
jsapi支付整个调用时的操作流程:
- 首先咱是要获取支付需要的信息 (应用iD,商户号,商品描述,商品订单号,通知地址,金额和支付用户)
- 去调用通用下单接口这时会返回一个 预支付交易会话标识(我一般叫预支付id)
- 再去调用jsapi支付的接口是会发现有一个字段是订单详情拓展字符串这里面填的值是prepay_id=wx6232cczxcz15123231ca这种值这就是预支付id要调用jsapi支付就要从统一下单接口返回的预支付id进行的支付调用,其他的签名什么的那可以忽略了,但是是必填的
- 这个时候调用jsapi支付成功也就成功了,就进入到支付页面了,但是没成功,很大概率会报两个错误码JSAPI缺少参数total_fee和当前页面的URL未注册
JSAPI缺少参数total_fee
一般出现问题都是在第一步获取调用通用下单接口的参数出来问了,价格不对,openID不对,还有就是预支付id过期了,预支付id返回后只有两个小时的时间
当前页面的URL未注册
这个问题就是微信支付配置支付目录的路径不对
举栗:
- 换域名了,支付目录没换
- 添加证书了转强制HTTPS了(对了调用微信支付的接口好像都要HTTPS)
- 填写支付目录时不能指向到支付的那个文件,指向到支付调用文件的上一级就行还有就是要以 / 结尾
- 填写的商户号是A商户的,支付目录配在了B商户上
在最后说下我写过的支付;
jsapi:这个是在手机微信浏览器可以调用直接支付
H5支付:这个是在非微信浏览器可以使用
小程序支付:我遇到的坑是我做后端的,突然让我搞小程序,然后就各种查文档本来jsapi支付和H5支付都完成了,突然加这个,这个时候才发现小程序和公众号是属于完成不同的两个体系,openID都叫openID但是不一样的,公众号的openID是公众号下唯一的,小程序是小程序的,然后我就在页面和后台加各种判断判断是小程序还是公众号,是电脑还是手机,是普通浏览器还是微信浏览器,
支付宝手机支付和支付宝电脑支付:这俩没太深的研究因为是外包要求写代码的效率不考虑代码冗余,我就直接把sdk和Demo下载下来放到项目里(就随便扔个地方能访问到就行我的是PHP项目)在自己的调用时把参数准备好放到一起通过post或者get请求自己的那个小demo参数一替换就行了,但是还是有不少坑的自己体会把经历过才记得清楚(严谨点就不会遇到)
给所有小白一句话(虽然我也是):
如果你写的程序bug多,并且后续修改好了,那么恭喜你,你正在进步
当你还是小白的时候,你不去写bug那你写什么,趁着自己还是小白,不去犯错,等你掌握了关键代码的时候再犯错后果就很严重了,
该哭哭该闹闹,趁着你还小犯错了长辈还能护着,当你成长起来后再犯的错长,辈就不一定能护住你了,