Alipay, China's leading third-party online payment solutionAlipay, China's leading third-party online payment solution

JSAPI(Macao)

AlipayJSBridge注入

window.onload以后,容器会初始化,产生一个全局变量AlipayJSBridge, 然后触发此事件

AlipayJSBridge注入是一个异步过程,因此尽可能先监听该事件后再call接口。

copy
<h1>bridge使用方法</h1>

<script>
function ready(callback) {
  if (window.AlipayJSBridge) {
    callback && callback();
  } else {
    document.addEventListener('AlipayJSBridgeReady', callback, false);
  }
}

ready(function() {
  alert('bridge ready');
});
</script>

授权 - getAuthCode

入参

名称

类型

描述

必选

默认值

scopeNicks

Array

授权类型:

手机号授权[auth_user_info_contact]

Y

必须有值,详见示例

clientId

String

Client ID

Y

必须有值,详见示例

merchantId

String

商户id

Y

必须有值,详见示例

出参

名称

类型

描述

必选

默认值

authCode

String

authCode

Y

必须有值

status

String

cancel/confirm

Y

弹框后必须有值

表示用户取消获取的authCode和用户点击确认获取的authCode

如果已授权过,不会弹框,直接返回authCode,status也不会有值

异常码

名称

类型

描述

必选

默认值

error

String

11

Y

error为11

errorMessage

String

人氣太旺,請稍後再試

Y

人氣太旺,請稍後再試

静默授权样例

copy
AlipayJSBridge.call('getAuthCode', {
    scopeNicks: ['auth_base'],
    clientId: '5C5XSR3USG0CQJ05',
    merchantId: '2182400000001037',
  }, function (res) {
    var authCode = JSON.stringify(res.authCode); //获取authcode
    if (authCode != '' && authCode != null && authCode != undefined) { //判断authCode是否为空
      $.ajax({
        type: "post",
        data: { code: authCode },
        url: 'https://isv.com/auth', // 该url是您自己的服务地址,实现的功能是服务端拿到authcode去开放平台进行token验证
        dataType: 'json',
        success: function (res2) {
          //获取到后台传递的uid
        }
      });
    } else { //authCode为空, 关闭当前打开的页面
      AlipayJSBridge.call('popWindow');
    }
})

用户信息授权样例

copy
AlipayJSBridge.call('getAuthCode', {
    scopeNicks: ['auth_user_info_contact'],
    clientId: '5C5XSR3USG0CQJ05',
    merchantId: '2182400000001037',
  }, function (res) {
    var authCode = JSON.stringify(res.authCode); //获取authcode
    var status = res.status;//用户授权confirm,或者取消cancel

    if (status == "用户授权confirm,或者取消cancel") {//用户同意,获取authcode请求后台,取用户电话号码
      if (authCode != '' && authCode != null && authCode != undefined) { //判断authCode是否为空
        $.ajax({
          type: "post",
          data: { code: authCode },
          url: 'https://isv.com/getuserinfo', // 该url是您自己的服务地址,实现的功能是服务端拿到authcode去开放平台进行token验证
          dataType: 'json',
          success: function (res2) {
            //获取到后台传递的uid, 电话号码
          }
        });
      } else { //authCode为空, 关闭当前打开的页面
        AlipayJSBridge.call('popWindow');
      }
    } else { //用户取消, 关闭当前打开的页面
      AlipayJSBridge.call('popWindow');
    }
})

Session使用

注意事项:

  • 当app退出之后,数据自动清除。
  • 没有办法去remove sesionData的key,只有通过设置一个空值来清除。
  • 假如用户账号在其他设备登入导致logout,那么并不会清除数据,这个时候如果这个设备登入另一个账号,是可以看到这个数据的。
  • 特别注意的是,在安卓下,你存进去的内容,取出来之后类型并不能保证不变。比如,存进去一个number: 200,getSessionData获取的值会变成”200”。

写入session

copy
AlipayJSBridge.call('setSessionData', {
  data: {
    phone: '12345678'
  }
});

读取session

copy
AlipayJSBridge.call('getSessionData', {
  keys: ['phone']
}, function(result) {
  console.log(result.data.phone);
});