有个小项目,需要用到微信支付,所以就开始鼓捣了,特此记录一下,查看了微信的官方开发文档,
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1 ,基本上按照这里的教程走,然后下载对应的 demo ,就可以把 demo 跑起来,注:在开发教程里 没有提及 OAuth2.0 网页授权回调页面域名的设置,在微信公众后台-开发者中心-网页服务-网页账号里没有设置的话, demo 页面会提示‘ redirect_url 参数错误‘。
demo 跑起来后,就要根据自己的需求来做二次开发了,需求很简单,一个页面,上面有金额的入力框,和一个提交按钮,然点击提交按钮,唤出密码输入框,输入密码,完成一个支付流程。
我这里是 PHP 版本的 demo ,采用的接口是 H5 网页端调起支付接口, demo 页中金额是固定的,提交按钮和初始化调用 JSAPI 的参数都在同一张页上,肯定不能实现我的需求,解决方法是分成 2 张页, A 页是 form 表单提交, B 页是初始化 JSAPI 接口参数,用以调用接口,于是问题出现了,当 A 页通过 POST 提交传递过来的参数 total_fee 无故消失了,在 B 页主要分成 3 个步骤,
步骤 1 :网页授权获取用户 openid
步骤 2 :使用统一支付接口,获取 prepay_id
步骤 3 :使用 jsapi 调起支付
调试发现,参数 total_fee 在执行步骤 1 之前是有的,但之后就消失了,好神奇,于是一番 google 后,也没能找到类似解决的方法,最后在请教了同行后方得意解决,需要把步骤 1 的操作移到 A 页去做,然后获得的 openid ,同样也通过 POST 提交到 B 页,继续步骤 2 ,步骤 3 的操作,这样就可以了。花了不少时间,特此记录下。