pc的demo很多,不记。
移动端做支付的时候要先配置可测试域名和授权域名,一个在公众平台里的微信支付里配置
注意,获取open的Id的方法需要写到这个配置好的域名下。否则会说域名未授权。
还有一个是在微信支付里配置的授权域名,在最下面有个网页授权,里面配置你的测试域名,然后需要下载一个文件,建议放到域名根目录下就可以。
想把官方的SDK下载一份,appid什么的配置好。
然后就可以生成订单测试了,这才是坑的开始。
首先是获取openid,我猜他的机制是通过你发出请求,然后他请求微信支付的开放平台,然后给你返回openid,这时候你携带的参数就显得尤为重要,如果你链接用/来链接参数和值的话他可能把你的参数当成路径,报一个域名未注册的错误,当支付的时候依旧试图调起微信,然后不会成功,安卓系统不会报错,ios会在调起之后报错(不知道是不是我手机的原因)。
报错1 域名未注册,仔细检查他报错的域名和你的配置域名是否一样,判断是参数格式的原因还是你获取openid的方法不在你注册域名下的原因。(可以参考 example文件夹里面的WxPay.JsApiPay.php 找到他拼装你链接的那行代码.打印下看看[我忘了几行了])
报错2 缺少参数, timeStamp,还在WxPay.JsApiPay.php类里找到GetJsApiParameters,timeStamp应该是字符串类型,你看他现在是不是整型,是的话加引号就解决了.
报错3 redirect_url参数错误:请仔细检查微信支付->账户中心->审核配置->网页授权,保证你的测试网页已经设置.
报错 4 什么都不报....压根儿就没试图调起支付,应该是你做的统一下单没有成功,导致没有生成订单无法支付,然后WxPay.JsApiPay.php会报错不会返回结果.只有一种情况就是有参数没有传过去(价格,订单编号,名称,openid...),一个个的打印,总会解决.还有请查看是否生成必须的两个参数:jsApiParameters,editAddress;
报错 5 调起后没有弹出支付,报什么订单失效之类的,然后然后就是试图调起但是没报错没弹出输入密码框,这个错误很常见,也最不好找...就是获取到的jsApiParameters,editAddress这两个参数应该是对象json格式的,如果报上述错误,十有八九是因为你返回的是字符串,千万记得要转成json对象
备注:倘若想要让生成订单和支付在同一个页面完成的话,不要试图用ajax生成订单后获取openid,那样是不会给你返回任何东西的,要在当前页面的方法里就获取openid,然后传到本页面,然后ajax生成订单后把openid和订单信息传到后台,调用微信接口统一下单,返回两个必要参数(jsApiParameters,editAddress)后进行支付.
做一个心中有料的人.<shiyan_stz@163.com>