自定义消息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

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

必填

请求发送时间,时间戳,毫秒

  • 鉴权

  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