# 异步调用服务平台接口说明
服务平台上架服务中有些处理耗时较长,以异步API的形式提供服务。
# 服务端使用方式
- 开发者可通过invokeService接口获取request_id
- 然后调用retrieve接口获取异步处理后的数据。
- 基本使用流程如下:
- 除了主动查询,还提供消息推送的能力,详情请看文档下发的说明。
注意
1、 对于异步API,在调用invokeService API时必须填写async:true
参数。
2、retrieve入参需要填写触发异步请求的invokeSevice请求返回的request_id,该API同样会返回本次请求的request_id,与入参的request_id不同。
3、异步请求取回结果有有效期,最长不超过24小时,不同API的有效期可能不同,需参考具体API文档。
4、异步API只有触发请求扣费,轮询请求不扣费。若服务提供方超时未返回结果,或返回错误,本次请求费用会退回给开发者。
# 服务端消息推送
如果开发者在开发设置中启用并正确配置了消息推送信息,且开发者使用的API提供了消息推送的能力,开发者会在异步请求处理完成后收到一条包含请求处理结果的事件推送。
# 消息推送格式:
字段名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
ToUserName | string | 是 | 小程序原始ID | |
FromUserName | string | 是 | 微信团队在该小程序下的OpenID | |
CreateTime | number | 是 | 推送时间 | |
MsgType | string | 是 | 事件类型,固定为"event" | |
Event | string | 是 | 事件类型,固定为"servicemarket_async_api_result" | |
Api | string | 是 | API 名 | |
Data | string | 是 | API 结果 | |
RequestID | string | 是 | 触发请求的RequestID | |
Service | string | 是 | 服务提供方ServiceID |
示例:
{
"ToUserName": "gh_3fe144c9bded",
"FromUserName": "oG1Ug5fdiwJi2GZ1BzTHo3JS3dQo",
"CreateTime": 1603439487,
"MsgType": "event",
"Event": "servicemarket_async_api_result",
"Api": "api_name",
"Data": "{\"result\":\"hello world\"}",
"RequestID": "MLymLNve4FwfMA4YlZ4yiYQKJzqTksjLYZpP2OOoWrPiEe6rMkj5JymcJq6tL7p3LKk",
"Service": "wx10427c80e0ae4c1d"
}
注意:
1、无论是小程序端触发还是服务端触发,只要同时满足正确启用了消息推送及该API支持消息推送两个条件,服务端都会收到处理结果事件推送。
2、若小程序将服务市场权限集授权给了第三方平台,该事件会推送给第三方平台,不会推送到开发者后台。