重要:由于 JS 传入的 JSON 数据无法包含数据类型,在 Native 层转为字典时可能会由于数据类型问题导致误差,如果是数字类型的精确值,尽量使用字符串来进行传递。例如:{"value":9.45}
会被 native 转为 {"value":9.449999999999999}
然后上发到服务端。应该改为使用 {"value":"9.45"}
来传递。
RPC 接口的使用方法
AlipayJSBridge.call('rpc', {
operationType: 'alipay.client.xxxx',
requestData: [],
headers: {}
}, function(result) {
console.log(result);
});
代码示例
<h1>点击按钮发起 RPC 请求</h1>
<a href="javascript:void(0)" class="btn rpc">发起请求</a><br/>
<a href="javascript:void(0)" class="btn rpcHeader">发起有响应头返回的请求</a>
<script>
function ready(callback) {
// 如果 jsbridge 已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function() {
document.querySelector('.rpc').addEventListener('click', function() {
AlipayJSBridge.call('rpc', {
operationType: 'alipay.client.xxxx',
requestData: [],
headers: {}
}, function(result) {
alert(JSON.stringify(result));
});
});
document.querySelector('.rpcHeader').addEventListener('click', function() {
AlipayJSBridge.call('rpc', {
operationType: 'alipay.client.xxxx',
requestData: [],
headers: {},
getResponse: true
}, function(result) {
alert(JSON.stringify(result));
});
});
});
</script>
API
AlipayJSBridge.call('rpc', {
operationType:,
requestData:,
headers
}, fn);
入参
名称 |
类型 |
描述 |
必选 |
默认值 |
operationType |
string |
RPC 服务名称 |
Y |
- |
requestData |
array |
RPC 请求的参数。需要开发者根据具体 RPC 接口自行构造 |
N |
- |
headers |
object |
RPC 请求设置的 headers |
N |
{}} |
gateway |
string |
网关地址 |
N |
alipay 网关 |
compress |
boolean |
是否支持 request gzip 压缩 |
N |
true |
disableLimitView |
boolean |
RPC 网关被限流时是否禁止自动弹出统一限流弹窗。 |
N |
false |
timeout |
int |
RPC 超时时间,单位为秒 |
N |
框架统一设置,策略较复杂 iOS 端 Wi-Fi 环境 20s,其它环境 30s。 Android 端 Wi-Fi/4G 环境 12s 到 42s 之间。其它环境 32s 到 60s 之间 |
getResponse |
boolean |
获取 RPC 响应头(注意:如果设置为 true 的话,响应数据会多一层嵌套,可用于数据回流上报获取 traceId/entityId) |
N |
false |
fn |
function |
回调函数 |
N |
- |
出参
回调函数带入的参数 result: {error }。
名称 |
类型 |
描述 |
error |
string |
错误码 |
错误码描述
错误码 |
描述 |
10 |
网络错误 |
11 |
请求超时 |
其他 |
由 mobilegw 网关定义 |
RPC 原生错误码
错误码 |
描述 |
1000 |
成功 |
0 |
未知错误 |
1 |
客户端找不到通讯对象 |
2 |
客户端没有网络(JSAPI 做了转换,返回 10) |
3 |
客户端证书错误 |
4 |
客户端网络连接超时 |
5 |
客户端网络速度过慢 |
6 |
客户端请求服务端没返回 |
7 |
客户端网络 IO 错误 |
8 |
客户端网络请求调度错误 |
9 |
客户端处理错误 |
10 |
客户端数据反序列化错误,服务端数据格式有误 |
11 |
客户端登录失败 |
12 |
客户端登录账号切换 |
13 |
请求中断错误,例如线程中断时网络请求会被中断 |
14 |
客户端网络缓存错误 |
15 |
客户端网络授权错误 |
16 |
DNS 解析错误 |
17 |
operationType 不在白名单 |
1001 |
拒绝访问 |
1002 |
调用次数超过限制:系统繁忙,请稍后再试。 |
2000 |
登录超时,请重新登录 |
3000 |
缺少操作类型或者此操作类型不支持 |
3001 |
请求数据为空:系统繁忙,请稍后再试 |
3002 |
数据格式有误 |
4001 |
服务请求超时,请稍后再试 |
4002 |
远程调用业务系统异常:网络繁忙,请稍后再试 |
4003 |
创建远程调用代理失败:网络繁忙,请稍后再试 |
5000 |
未知错误:抱歉,暂时无法操作,请稍后再试 |
6000 |
RPC-服务找不到 |
6001 |
RPC-目标方法找不到 |
6002 |
RPC-参数数目不正确 |
6003 |
RPC-目标方法不可访问 |
6004 |
RPC-JSON 解析异常 |
6005 |
RPC-调用目标方法时参数不合法 |
6666 |
RPC-业务异常 |
7000 |
没有设置公钥 |
7001 |
验签的参数不够 |
7002 |
验签失败 |
7003 |
验签时间戳校验失败 |
7004 |
验签 RPC 接口 operationType 参数为空 |
7005 |
productId 参数为空 |
7006 |
验签接口 did 参数为空 |
7007 |
验签接口 请求发送时间参数 t 为空 |
7008 |
验签接口 IMEI(客户端设备标识)参数为空 |
7009 |
验签接口 IMSI(客户端用户标识)为空 |
7010 |
验签接口 API 版本号为空 |
7011 |
验签接口 用户没有权限 |
7012 |
验签接口 RPC 没有对外开放 |
7013 |
验签接口 productId 没有注册或者获取密钥为空 |
7014 |
验签接口 加签数据为空 |
7015 |
验签接口 签约无效 |
7016 |
验签接口 请求登录 RPC 传入 sid 为空 |
7017 |
验签接口 请求登录 RPC 传入 sid 无效 |
7018 |
验签接口 请求登录 RPC 传入 token 无效 |
7019 |
验签接口 请求登录 RPC 获取 alipayuserid 为空 |
8001 |
etag:响应数据没有变化 |
RPC 自定义 gateway
可在 RPC 调用中指定请求的网关地址。
RPC 限流逻辑
容器版本 |
disableLimitView |
行为 |
回调参数 |
<=9.9.5 |
true |
静默 |
1002 |
<=9.9.5 |
false |
Alert |
1002 |
>=9.9.6 |
true |
静默 |
1002 |
>=9.9.6 |
false |
网关处理 |
100201 |
行为类型 |
描述 |
静默 |
无 |
Alert |
弹出统一限流框,如下图 |
Toast |
弹出系统 Toast,如果用户关闭系统则没有 |
网关处理 |
根据网关的 RPC 配置,静默 Alert Toast |
RPC 限流弹框

在文档使用中是否遇到以下问题
更多建议
匿名提交