自定义消息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":"18321956010@163.com",
    "trace":"aaaaaaaaaabbbbbbbbbb11111",
    "sign":"Zni/VixZVrxAt2GzIgRetSFub4Kk1C7JQsURlbXDJmHllv4Vr1SfJC66dnk0OPdylf4qlT9UQle+pAcbNKEBjMHkgeucaAG82syPNi18StNTWx+DNPvl1VvUGGJQQw6I7QClaEIefccyXUDqW78+gEIq8i5VNm/eop0bBoPu8Ao=",
    "title":"验证码",
    "content":"【XXXX】您好,您的验证码是847999。",
    "timestamp":1651118320014
}

参数说明

  • 短信参数

{
    "pushType":"whatapp",
    "pushId":"whatapp user id",
    "toUser":"18321956010",
    "trace":"aaaaaaaaaabbbbbbbbbb11111",
"sign":"Zni/VixZVrxAt2GzIgRetSFub4Kk1C7JQsURlbXDJmHllv4Vr1SfJC66dnk0OPdylf4qlT9UQle+pAcbNKEBjMHkgeucaAG82syPNi18StNTWx+DNPvl1VvUGGJQQw6I7QClaEIefccyXUDqW78+gEIq8i5VNm/eop0bBoPu8Ao=",
    "content":"【XXXX】您好,您的验证码是847999。",
    "timestamp":1651118320014
}

参数说明

  • 鉴权

  1. 对请求参数sign解密,得到结果记为signContent: 1)从请求参数中获取sign字段的值,记为data; 2)使用自己的私钥,记为privateKey; 3) 对data、privateKey进行base64解码:Base64.decodeBase64(data)、Base64.decodeBase64(privateKey); 4)使用上步base64解码后的两个数据,进行RSA解密,得到字节数组,转为String,记为signContent;

  2. 根据请求参数,获取加密原文,记为signContentSource 1)邮件的加密原文:signContentSource=toUser@timestamp@trace; 1)短信的加密原文:signContentSource=toUser@timestamp@trace;

  3. 将加密原文(signContentSource)、解密结果(signContent)进行比较:相等则鉴权通过。

成功响应数据

{
    "msg":"success",
    "code":"200"
}

Last updated