{"value":9.45}
会被 native 转为 {"value":9.449999999999999}
然后上发到服务端。应该改为使用 {"value":"9.45"}
来传递。
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>
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 网关定义 |
错误码 | 描述 |
---|---|
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 调用中指定请求的网关地址。
容器版本 | 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 |
Q:出现如下报错信息:ESLint: 'AlipayJSBridge' is not defined
,该如何解决?
A:AlipayJSBridge 未定义的问题有如下两种解决方案:
方案一:
window.AlipayJSBridge.call('rpc');
方案二:
const { AlipayJSBridge } = window;
AlipayJSBridge.call('rpc');
在文档使用中是否遇到以下问题
更多建议
匿名提交