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);
});