API调用详解

服务器地址
测试服务器http://test.quanmama.com:7996/ThirdApi/ThirdApiHandler.ashx
线上服务器https://app.quanmama.com/ThirdApi/ThirdApiHandler.ashx

系统参

调用任何一个API都必须传入的参数:

参数名称 参数类型 是否必填参数描述
appKeystring券妈妈分配的AppKey,向商务要
apiNamestringAPI接口名称,详见各API接口文档
timestampstringUNIX时间戳,单位:秒
versionstring版本号,固定为:v1
signstringAPI输入参数的签名结果,签名算法参照下面的【签名算法

业务参数

API调用除了必须包含系统参数外,如果API本身有业务级的参数也必须传入,每个API的业务级参数请考各自API文档的说明。


签名算法

为了防止API调用过程中被黑客恶意篡改,调用任何一个API都需要携带签名,服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝。

签名大体过程如下:

1-API的所有参数按照参数名升序排列

2-把排序后的结果按照 参数名+参数值 的方式拼接

3-拼装好的字符串首尾拼接AppSecret进行md5加密,然后转小写,AppSecret向商务要

    特别注意以下重要规则:
        ◆如果参数值为空,不参与签名
        ◆参数名区分大小写
        ◆参数名ASCII码从小到大排序(字典序)


调用示例

1、输入参数为:

array (
'apiName'=> 'qmm.third.user.getDetail',
'appKey' => '2020082401',
'version' => 'v1', 'timestamp' => 1598923065, 'userId' => TestUserId111111,
)

2、按首字母升序排列

array (
'apiName'=> 'qmm.third.user.getDetail',
'appKey' => '2020082401',
'timestamp' => 1598923065,
'userId' => TestUserId111111,
'version' => 'v1',

)

连接字符串,并在首尾加上AppSecret,假设AppSecret为3aa3ad800b5e4cf18894bf9a0cdade5c,如下:

3aa3ad800b5e4cf18894bf9a0cdade5capiNameqmm.third.user.getDetailappKey2020082401timestamp1598923065userIdTestUserId111111versionv13aa3ad800b5e4cf18894bf9a0cdade5c

3、生成签名

MD5(3aa3ad800b5e4cf18894bf9a0cdade5capiNameqmm.third.user.getDetailappKey2020082401timestamp1598923065userIdTestUserId111111versionv13aa3ad800b5e4cf18894bf9a0cdade5c

=a3579445fd093a157c931612203d28c0

4、拼装API请求

{host}/ThirdApi/ThirdApiHandler.ashx?appKey=2020082401&apiName=qmm.third.user.getDetail&timestamp=1598923065&sign=a3579445fd093a157c931612203d28c0&version=v1&userId=TestUserId111111


系统级错误码
错误码错误描述解决办法
 0执行成功  
执行成功
100系统参数不全检查是否按照要求传入了系统必需的参数
101API调用超时检查时间戳参数,单位:秒
102非授权平台检查参数appKey和商务给的appKey是否一致
103无效签名检查是否按照说明生成的签名
104非授权接口1.检查参数apiName是否和接口文档中的一致,区分大小写
2.和券妈妈商务确认是否有对应API的调用权限
105接口调用次数超限调用过于频繁,请调整调用频率
106Api初始化失败向券妈妈商务反馈