工作流
基本流程:1.用户打开小程序-> 2.进入小程序,跳转项目首页-> 3.用户点击登录-> 4.发送请求至 auth/rest/user/wcminipauth.json,调起wechat(传值redirecturl)-> 5.小程序原生代码获取授权-> 6.跳转回项目自定义登录页面(附带scene,paystatus,locationdata,shareurl,phonenumber等值)
小程序仅处理授权和向服务器发送通知,除分享外并不完成跳转,分享时会根据分享的url,将对应url作为首页
2. 后台配置小程序信息
项目的后台页面打开auth模块的第三方登录,配置微信中的小程序相关配置。如果没有相关配置需要更新API模块
3.更新auth
代码中查看lib/auth/wxjsconfig.js version 至少为2019091201 ,否则无法实现小程序登录等功能
至少需要提交:
auth/rest/user/wcminipauth.json
auth/rest/user/wcminiplogin.json
auth/rest/user/wcminipparsing.json
auth/rest/user/wcminipupdate.json
auth/rest/user/wcminipuserinfo.json
以上几个接口,否则会造成无法登录创建用户,获取手机号等,如果不需要额外功能则不需要提交。
4.项目中添加一个自定义登录页面
这个页面是实现登录的必要页面,小程序中获取的所有参数会以数据层变量的形式传给这个页面,页面中需要添加接口接受这些参数并作处理
注意token参数为一个特殊参数,这个参数必须以get方式传给接口,否则会无法登录。
shareurl为需要跳转的首页地址或分享的地址,需要根据这个参数完成跳转。
5.项目中需要小程序登录或定位的位置请求接口
接口auth/rest/user/wcminipauth.json 接受redirecturl和type参数。
redirecturl参数为登录或其他操作后的跳转地址
type参数为操作类型目前支持登录(默认,留空或auth)获取定位(getlocation),获取手机号(getphone)
小程序支付已经内置到omnipay模块,支付方式的view app.html在小程序打开时会自动变更为小程序支付,如果需要变更需要自行提交小程序支付的网关类型wechatpayminip至v/omnipay/use/cpurchase.json
如果产生在部分机型小程序支付提示错误,可能是小程序环境判断代码未生效,需要支撑团队判断是bug还是需要自行实现。小程序可能会被识别为公众号环境。
小程序分享在打包时勾选分享即可,如果需要传参需要更改当前页面的url,小程序的分享是微信自动实现的,会将读取到的url传给小程序原生代码,用户打开后会自动跳转的对应页面。
其他功能的实现(分享和获取定位)与登录类似,都需要调用指定接口。其后接口会自动调用原生小程序代码完成功能。
如果需要自定义小程序页面需要查看微信的相关文档,自行修改相关代码,如下例子是获取手机号的页面。
除部分标签与html不同外,html中的基本语法都可以在小程序中使用,参照 小程序官方文档 实现页面
安装微信开发者工具测试页面。 查看手册安装微信开发者工具
<block class="test" >
<view wx:if="true" class='imagesize'>
<image src="../resource/logo.png" class='in-image' >
</image>
</view>
<view style="margin-top:30px;width:100%;text-align:center;height:30px;line-height:30px">
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" style="width:100%;text-align:center;background-color:#fff;color:#333;border-color:#ddd;padding: 8px 0;"><image style="width:20px;height:20px" src="../resource/icon64_appwx_logo.png"></image>微信授权登录</button>
<button wx:if="true" bindtap="backtologin" style="margin-top:30px;width:100%;text-align:center;background-color:#fff;color:#333;border-color:#ddd;padding: 8px 0;">手机号码登录</button>
</view>
<view style=" margin-top:65vh;text-align:center;">
<label > 跳过,先看看<button bindtap="setDisabled" hidden='true' >skip</button> </label>
</view>
</block>