自定义消息API
自定义API
消息开放接口,白标对接说明
适用场景
对于MultiMarket不支持的发送通道(邮件、短信),白标可以自己对接发送通道,并提供对外接口,与MultiMarket进行对接,MultiMarket平台将会按照此文档规范调用此接口;
MultiMarket提供一套接口对接API,白标需要按此规范提供接口,api规范详见下文。
然后在白标管理后台页面(短信账号、邮箱账号页面),新增时选择“自定义”,并配置接口url、公钥(鉴权用)。
公私钥规则
非对称加密算法RSA算法,密钥长度1024。
示例:
公钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCa7PS812qm7RMiONbErVCl7fjNtb1gYgQOsaxVOmp/wa0EH8W8QZ3VrtzwF9FbPe9crtES5RHUkV4LNaApk+WDnF6dQ217UnC+S2wb30S7rPMtHBi7DeyRfOqZkDGbsonTM0WW/WMM2eHNBbF4rfAKImzFe2ZkAl2GMHzHXc4aVQIDAQAB
私钥:
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJrs9LzXaqbtEyI41sStUKXt+M21 vWBiBA6xrFU6an/BrQQfxbxBndWu3PAX0Vs971yu0RLlEdSRXgs1oCmT5YOcXp1DbXtScL5LbBvf RLus8y0cGLsN7JF86pmQMZuyidMzRZb9YwzZ4c0FsXit8AoibMV7ZmQCXYYwfMddzhpVAgMBAAEC gYAo3sP9oXKQUNCQYaA+yF4TOAE/+2bXK2RYoASPg1afF2/WO6+FZ2YE/hlo+U+Qm3ku4StkqauX gTXnDSGQdmTAdxh9YO3Aj81qn6VK6tlGkzWcKfcO+NqNyp3AwfF9aSackBi/rLH8GNNQZtoNBy8z Q6KBD2sQQRITuMu7hi4VwQJBANoY3Fi9rIgs3t4JifVMtyZC6Fpi9bEoCLEizZchwTr24P4mcbni 4uV9O0mI9OaqI9nAlet0KVhRaoMxi/ES2nECQQC12ZhxVzHe+wfCyyx/fPMXSr7cwmM1F3lk5IRa /hCXpVc9ncd/n12TNS7lJwVhqc+tBhWP6i3PSEH0hiyp0QglAkEAh/WNj4iWgMGwIazCovezCRgW rxoX3dt+J6bxkTCKvA5hTi57IQ1usu9xwTKusQkJllp3WzOr/pGqm6SMf7loEQJAbf6dJ8lfIAnl atzsIH0aqPcMNYna6i01v2I98LAGp0NaXqnGFxr1ReqAYBlXNvi45mZsum0iomOJiXdzIpCOhQJA AoXt2DlMSrXGIM0j/j56jUKOH0DNsadGned6SORnBiPjGr38eZwTxAIkxsoaPXS+9XJcQ5neWkwc 46caWU1H1Q==
API规范
我方的调用方式为http post
参数使用json格式。
需要对参数进行鉴权
以下具体说明短信、邮件的参数,以及鉴权方式。
邮件参数
{
"pushType":"whatapp",
"pushId":"whatapp user id",
"toUser":"[email protected]",
"trace":"aaaaaaaaaabbbbbbbbbb11111",
"sign":"Zni/VixZVrxAt2GzIgRetSFub4Kk1C7JQsURlbXDJmHllv4Vr1SfJC66dnk0OPdylf4qlT9UQle+pAcbNKEBjMHkgeucaAG82syPNi18StNTWx+DNPvl1VvUGGJQQw6I7QClaEIefccyXUDqW78+gEIq8i5VNm/eop0bBoPu8Ao=",
"title":"验证码",
"content":"【XXXX】您好,您的验证码是847999。",
"timestamp":1651118320014
}
参数说明
pushType
String
非必填
信息推送渠道类型
pushId
String
非必填
信息推送账号ID
toUser
String
必填
邮件接收人
trace
String
必填
全局链路唯一标志
sign
String
必填
签名
title
String
必填
标题
content
String
必填
内容
timestamp
long
必填
请求发送时间,时间戳,毫秒
短信参数
{
"pushType":"whatapp",
"pushId":"whatapp user id",
"toUser":"18321956010",
"trace":"aaaaaaaaaabbbbbbbbbb11111",
"sign":"Zni/VixZVrxAt2GzIgRetSFub4Kk1C7JQsURlbXDJmHllv4Vr1SfJC66dnk0OPdylf4qlT9UQle+pAcbNKEBjMHkgeucaAG82syPNi18StNTWx+DNPvl1VvUGGJQQw6I7QClaEIefccyXUDqW78+gEIq8i5VNm/eop0bBoPu8Ao=",
"content":"【XXXX】您好,您的验证码是847999。",
"timestamp":1651118320014
}
参数说明
pushType
String
非必填
信息推送渠道类型
pushId
String
非必填
信息推送账号ID
toUser
String
必填
短信接收人
trace
String
必填
全局链路唯一标志
sign
String
必填
签名
content
String
必填
内容
timestamp
long
必填
请求发送时间,时间戳,毫秒
鉴权
对请求参数sign解密,得到结果记为signContent: 1)从请求参数中获取sign字段的值,记为data; 2)使用自己的私钥,记为privateKey; 3) 对data、privateKey进行base64解码:Base64.decodeBase64(data)、Base64.decodeBase64(privateKey); 4)使用上步base64解码后的两个数据,进行RSA解密,得到字节数组,转为String,记为signContent;
根据请求参数,获取加密原文,记为signContentSource 1)邮件的加密原文:signContentSource=toUser@timestamp@trace; 1)短信的加密原文:signContentSource=toUser@timestamp@trace;
将加密原文(signContentSource)、解密结果(signContent)进行比较:相等则鉴权通过。
成功响应数据
{
"msg":"success",
"code":"200"
}
Last updated