最近公司项目需要接入微信支付购买道具,本人负责h5和微信公众号支付这一块。app支付由另一同事负责,在这里就不说了。
关于公众号支付,腾讯官方有提供demo。下载地址:官方Demo
吐嘈一下,官方Demo的好像有点问题,在WxPay.Api.php line 537 538这两个代码会导致错误码60
修改为
就好了
使用公众号支付时,需要先获取用户的openId(需要设置微信js接口安全域名/网页授权域名(在公众号设置-功能设置))。这个授权在官方给出的demo中使用的是静默授权
关于网页授权的两种scope的区别说明
1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
经过测试,静默授权跳转回到页面需要花费2秒左右。所以我使用ajax去请求授权
首先在业务页面获取code
前端ajax请求用户信息
get_user_info.php代码如下
JsApiPay(Demo中的WxPay.JsApiPay.php)增加两个方法
效果如下:
下单付款:
这个官方给出的Demo有,就不多说了。
以下为微信内和h5页面的对比:
再来说说h5的微信支付,其它和微信内的支付差不了多少。对比图如下:
点击立即付款按钮时动作分别是
微信内
h5页面
上面页面中使用的样式均为weui
原文地址