[关闭]
@jameszuo 2018-10-26T15:58:21.000000Z 字数 1629 阅读 423

小程序跳转指引

文档


跳转流程

商户小程序代码示例

  1. // 处理微信支付人脸小程序授权回调代码示例
  2. // 如果用户完成人脸授权后却没有点击页面上的返回按钮(不会执行navigateBackMiniProgram),而是主动打开商户小程序,就不会通过回调参数返回授权状态,此时就需要商户小程序通过后台主动查询人脸开通状态。
  3. /**
  4. * @type {Boolean} 授权状态: null 未知, true 已授权, false 未知
  5. */
  6. let wxFaceAuthed = null
  7. App({
  8. getWxFaceAuthStatus() {
  9. return new Promise((resolve, reject) => {
  10. // 如果人脸小程序已返回授权状态,即表示已授权
  11. if (typeof wxFaceAuthed === 'boolean') {
  12. resolve(true)
  13. }
  14. // 如果人脸小程序未返回授权状态,则需要主动查询授权状态
  15. else {
  16. fetch('/your-server/query-wxfaceauth')
  17. .then(res => {
  18. // 授权状态
  19. wxFaceAuthed = res['auth_status'] === 1
  20. resolve(wxFaceAuthed)
  21. })
  22. .catch(reject)
  23. }
  24. })
  25. },
  26. // 理论上来说每次切换回商户小程序,都应该判断人脸授权状态,以规避用户主动回到商户小程序
  27. onShow({referrerInfo} = {}) {
  28. let {appId, extraData = {}} = referrerInfo
  29. /**
  30. * @type {Boolean} 授权状态 true 已授权, false 未知
  31. */
  32. let {authStatus} = extraData
  33. // 检查回调来源、授权状态
  34. if (appId === 'wxd6ced4b24adebe76') {
  35. wxFaceAuthed = authStatus
  36. } else {
  37. wxFaceAuthed = null // 未知
  38. }
  39. }
  40. })
  1. <block wx:if="{{wxFaceAuthed === null}}">
  2. 加载中
  3. </block>
  4. <block wx:if="{{wxFaceAuthed === true}}">
  5. 已授权
  6. </block>
  7. <block wx:if="{{wxFaceAuthed === false}}">
  8. <button bind:tap="handleWXFaceAuth">跳转微信支付人脸授权</button>
  9. </block>
  1. Page({
  2. data: {
  3. wxFaceAuthed: null,
  4. },
  5. // 显示时检查授权状态
  6. onShow() {
  7. getApp().getWxFaceAuthStatus()
  8. .then(wxFaceAuthed => {
  9. this.setData({wxFaceAuthed})
  10. })
  11. .catch(err => {
  12. // ...
  13. })
  14. },
  15. handleWXFaceAuth() {
  16. wx.navigateToMiniProgram({
  17. // 人脸小程序APPID
  18. appId: 'wxd6ced4b24adebe76',
  19. // 页面路径
  20. path: 'pages/auth/auth',
  21. // 参数
  22. extraData: {
  23. /**
  24. * 门店ID,最大长度32
  25. * @type {String}
  26. */
  27. store_id: 'SZ_123',
  28. /**
  29. * 生效时间戳(如:酒店入住时间),最大长度64,单位秒
  30. * @type {Number}
  31. */
  32. effective_time: 1540563473,
  33. /**
  34. * 过期时间戳(如:酒店退房时间),最大长度64,单位秒。永远不失效则传9999999999(10位数字)
  35. * @type {Number}
  36. */
  37. expire_time: 1540612345,
  38. /**
  39. * 订单号,用于记录人脸授权对应的酒店流水号,最大长度32
  40. * @type {String}
  41. */
  42. mch_trade_no: 'MP20000712789337612637',
  43. },
  44. success(res) {
  45. // 拉起成功
  46. },
  47. fail(err) {
  48. // 拉起失败
  49. },
  50. })
  51. }
  52. })
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注