接口说明文档
<p> </p>
<p><strong>1. 概述</strong></p>
<p><strong>1.1 接口消息协议约定</strong></p>
<p>默认情况下,接口系统提供的接口<strong>遵守</strong><strong>HTTPS+JSON</strong><strong>的数据传输方式</strong>,详见具体接口的协议说明。</p>
<p><strong>2. 公共请求地址和处理</strong></p>
<p><strong>2.1 请求地址</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>环境</th>
<th>HTTP</th>
<th>HTTPS</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>生产</p>
</td>
<td>
<p>http://api.xiaoxi.pingan.com.cn/rest/{type}</p>
</td>
<td>
<p>https://api.xiaoxi.pingan.com.cn/rest/{type}</p>
</td>
</tr>
<tr>
<td>
<p>测试</p>
</td>
<td>
<p>http://apitest.xiaoxi.pingan.com.cn/rest/{type}</p>
</td>
<td>
<p>https://apitest.xiaoxi.pingan.com.cn/rest/{type}</p>
</td>
</tr>
</tbody>
</table>
<p>说明: <em>type为API类型,比如:消息相关为msg,对数据信息安全要求高的消息,建议用HTTPS发送。</em></p>
<p><strong>2.2 公共请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th style="width:102px">名称</th>
<th style="width:61px">类型</th>
<th style="width:63px">默认</th>
<th style="width:68px">示例值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width:102px">
<p>method</p>
</td>
<td style="width:61px">
<p>String</p>
</td>
<td style="width:63px">
<p>必填</p>
</td>
<td style="width:68px"> </td>
<td>API方法名
<ul>
<li>发送短信sendsms</li>
<li>查询短信发送结果querySmsResult</li>
<li>上行短信结果查询fetchNewSms</li>
</ul>
</td>
</tr>
<tr>
<td style="width:102px">
<p>appid</p>
</td>
<td style="width:61px">
<p>String</p>
</td>
<td style="width:63px">
<p>必填</p>
</td>
<td style="width:68px">
<p>123</p>
</td>
<td>
<p>应用编号,在消息云平台申请的应用编号。</p>
</td>
</tr>
<tr>
<td style="width:102px">
<p>timestamp</p>
</td>
<td style="width:61px">
<p>String</p>
</td>
<td style="width:63px">
<p>必填</p>
</td>
<td style="width:68px">20170315120000</td>
<td>
<p>yyyyMMddHHmmss</p>
<p>30分钟有效,在有效期内这个值可以不变,即签名是一样的。在API调用时,该字段默认为系统当前时间即可。</p>
</td>
</tr>
<tr>
<td style="width:102px">
<p>sign</p>
</td>
<td style="width:61px">
<p>String</p>
</td>
<td style="width:63px">
<p>必填</p>
</td>
<td style="width:68px"> </td>
<td>
<p>将secre作为密钥对appid + timestamp + secre进行MD5签名, 再将签名后的MD5字符串转成全大写。</p>
</td>
</tr>
<tr>
<td style="width:102px">
<p>extend</p>
</td>
<td style="width:61px">
<p>String</p>
</td>
<td style="width:63px">
<p>可选</p>
</td>
<td style="width:68px">
<p>123456</p>
</td>
<td>
<p>公共回传参数,在“消息返回”中会透传回该参数;举例:用户可以传入自己的订单编号,在消息返回时,该订单编号会包含在内,用户可以根据该订单编号来识别是那个订单发的短信。</p>
</td>
</tr>
<tr>
<td style="width:102px">
<p>version</p>
</td>
<td style="width:61px">
<p>String</p>
</td>
<td style="width:63px">
<p>可选</p>
</td>
<td style="width:68px">
<p>1.0</p>
</td>
<td>
<p>当前API版本,默认不用填。</p>
</td>
</tr>
</tbody>
</table>
<p>说明:</p>
<p>如下为测试环境的公共应用编号和密钥,在开发调试阶段可以使用它们来进行调试,注意生产上线后,要替换为生产实际的编号和密钥。</p>
<p>appid为:680BB7E2B5F04F54E0537CE21F0A1D88</p>
<p>secret为:6A43C3D60BC8ACBFC1D548E57ED7AFE4</p>
<p><strong>2.3 公共响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th style="width:91px">名称</th>
<th style="width:71px">类型</th>
<th style="width:73px">示例</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width:91px">
<p>code</p>
</td>
<td style="width:71px">
<p>String</p>
</td>
<td style="width:73px">
<p>000000</p>
</td>
<td>
<p>返回码,如果返回非000000,则表明请求异常,用户可根据需求进行异常处理。</p>
</td>
</tr>
<tr>
<td style="width:91px">
<p>msg</p>
</td>
<td style="width:71px">
<p>String</p>
</td>
<td style="width:73px">
<p>成功</p>
</td>
<td>
<p>返回信息描述。</p>
</td>
</tr>
<tr>
<td style="width:91px">
<p>appid</p>
</td>
<td style="width:71px">
<p>String</p>
</td>
<td style="width:73px"> </td>
<td>
<p>应用编号。</p>
</td>
</tr>
<tr>
<td style="width:91px">
<p>extend</p>
</td>
<td style="width:71px">
<p>String</p>
</td>
<td style="width:73px"> </td>
<td>
<p>公共回传参数。</p>
</td>
</tr>
<tr>
<td style="width:91px">
<p>expiretime</p>
</td>
<td style="width:71px">
<p>String</p>
</td>
<td style="width:73px">
<p>20170315123000</p>
</td>
<td>
<p>签名过期时间。</p>
<p>yyyyMMddHHmmss</p>
</td>
</tr>
<tr>
<td style="width:91px">
<p>token</p>
</td>
<td style="width:71px">
<p>String</p>
</td>
<td style="width:73px"> </td>
<td>
<p>新的签名。</p>
</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>签名算法</strong></li>
</ul>
<p>为了防止非法的API调用,调用任何一个API都需要携带签名,API服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝。签名大体过程如下:</p>
<ul>
<li>将appid, timestamp和secre的值进行拼接后,进行MD5签名, 再将签名后的MD5字符串转成全大写。</li>
<li>如:appid=123, timestamp=20170315120000, secret=xxx</li>
<li>根据上面的示例得到的结果为:12320170315120000xxx</li>
<li>把拼装好的字符串采用utf-8编码,使用签名算法对编码后的字节流进行MD5摘要。</li>
</ul>
<p>说明: secre 密钥是在消息云平台申请应用编号时对应的应用密钥。</p>
<ul>
<li><strong>验签流程</strong></li>
</ul>
<p>下面模拟了用户发起发送消息的请求,与消息云平台之间的交互。</p>
<p><br />
<img src="https://pcp-portal-sca.obs-cn-shenzhen.pinganyun.com/pcp-portal-sca/20203112140408-1a05a13096e8.png" /></p>
<p> </p>
<p>(1)第三方应用第一次发起HTTPS请求,携带appid+timestamp+sign。</p>
<p> </p>
<p>(2)消息云平台验证签名是正确的,进入消息发送流程,同时生成一个token且定义了过期时间expiretime,返回这些信息给第三方应用。</p>
<p>(3)消息云平台验证签名是错误的,直接返回签名错误给第三方应用。</p>
<p>(4)第三方应用第二次发起HTTPS请求,检测返回结果带有token且在有效期内,则不用重新签名,</p>
<p>(5)发送请求带上token即可。如下所示:</p>
<p>appid=xxx×tamp=xxx&sign=token</p>
<p>(6)消息云平台验证token正确且在有效期内,进入消息发送流程。如果token找不到或已失效,尝试重新验签。签名不正确,返回错误信息。</p>
<p><strong>3. 发送短信</strong></p>
<ul>
<li><strong>场景描述</strong></li>
</ul>
<p>向指定手机号码发送短信,模板内可设置部分变量。使用前需要获取短信签名与短信模板。测试时请直接使用正式环境HTTPS请求地址。 批量发送(一次传递多个号码eg:1881111111,1882222222)会产生相应的延迟,对时效性要求高的短信建议单条发送。</p>
<ul>
<li><strong>接口消息名称</strong></li>
</ul>
<p>接口地址:https://api.xiaoxi.pingan.com.cn/rest/msg</p>
<p>方法:sendsms</p>
<p>发起方:关联系统</p>
<p>接收方:消息云平台</p>
<p>发送类型:<strong>POST</strong></p>
<p><strong>3.1 请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th style="width:100px">属性</th>
<th style="width:60px">类型</th>
<th style="width:50px">默认</th>
<th style="width:135px">示例值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width:100px">
<p>sendType</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>可选</p>
</td>
<td style="width:135px">
<p>0</p>
</td>
<td>
<p>0(短信通知): 短信通知服务指的是通过短信的方式,向用户签约的手机号码发送各类信息通知</p>
<p>1(otp短信验证码):通过短信的方式,给用户签约的手机号码发送一组数字验证码,用户输入验证码以校验合法身份</p>
<p>2(国际短信):给中国大陆地区以外的手机号码发送短信,包括港澳台和海外其他各个国家及地区。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>templateId</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>必填</p>
</td>
<td style="width:135px">
<p>pscp_demo</p>
</td>
<td>
<p>使用在消息云平台注册的模版id。该属性必填写。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>requestId</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>必填</p>
</td>
<td style="width:135px">
<p>111,222</p>
</td>
<td>
<p>关联系统一天内一条短信的唯一编号。最长为19位,不能以0开头且一天内不重复的正整数。建议为关联系统短信表的主键,一天内相同RequestID的短信会被认为是重复提交,不予发送。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>mobileNo</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>必填</p>
</td>
<td style="width:135px">
<p>13480323810,13480323810</p>
</td>
<td>
<p>11位手机号码,11位不能多也不能少,支持多个手机号码,以英文逗号分隔。</p>
<p>说明: 每次请求最大200。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>paramKeys</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>可选</p>
</td>
<td style="width:135px">
<p>name,amount</p>
</td>
<td>
<p>模板变量名,以英文逗号分隔,如果模板带变量或paramValues有值,则这个必填。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>paramValues</p>
</td>
<td style="width:60px">
<p>Json数组</p>
</td>
<td style="width:50px">
<p>可选</p>
</td>
<td style="width:135px">
<p>1. [[“张三”,”100”],[“李四”,”1000”]]</p>
<p>2. [“王五”,”2000”]</p>
</td>
<td>
<p>模板变量值,是个json格式的数组,变量值个数要跟paramKey一一对应,变量值数组要跟mobileNo个数一一对应。如果变量值数组只有1个,则系统认为所有手机号码的变量值都相同。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>serviceID</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>可选</p>
</td>
<td style="width:135px">
<p>123</p>
</td>
<td>
<p>服务子号,可根据它来区分不同互动业务(子号位长度不能超过3位)。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>arrangeDate</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>可选</p>
</td>
<td style="width:135px"> </td>
<td>
<p>短信安排发送时间,不填短信为立即发送。格式:yyyyMMddHHmmss</p>
<p>说明: 这个参数传过来时为String类型,短信到了该时间点会开始排队发送,具体发送时间要视当时平台短信发送量而定。</p>
</td>
</tr>
<tr>
<td style="width:100px">
<p>expireDate</p>
</td>
<td style="width:60px">
<p>String</p>
</td>
<td style="width:50px">
<p>可选</p>
</td>
<td style="width:135px"> </td>
<td>
<p>过期时间,当时间超过该时间将不再发送。若不填该字段将没有过期时间。</p>
<p>格式:yyyyMMddHHmmss</p>
<p>说明: 这个参数传过来时为String类型。</p>
</td>
</tr>
</tbody>
</table>
<p>说明: 如下为测试环境的公共短信模板及变量,在开发调试阶段可以使用它们来进行调试,注意生产上线后,要替换为生产实际的短信模板及变量。以下模板仅有一个全变量,所以发送短信内容传sms_content变量。如下所示:</p>
<table>
<caption> </caption>
<thead>
<tr>
<th>模版编号</th>
<th>变量</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>otp_00000005685</p>
</td>
<td>
<p>code</p>
</td>
<td>
<p>交易类短信</p>
</td>
</tr>
<tr>
<td>
<p>fwm_00000005686</p>
</td>
<td>
<p>sms_content</p>
</td>
<td>
<p>服务类短信</p>
</td>
</tr>
<tr>
<td>
<p>yxm_00000005687</p>
</td>
<td>
<p>sms_content</p>
</td>
<td>
<p>营销类短信</p>
</td>
</tr>
</tbody>
</table>
<p><strong>3.2 响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>示例</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>公共响应参数</p>
</td>
<td> </td>
<td> </td>
<td>
<p>详细定义参见“公共响应参数”部分。</p>
</td>
</tr>
<tr>
<td>
<p>successList</p>
</td>
<td>
<p>List</p>
</td>
<td> </td>
<td>
<p>处理成功的记录,successList里面每个对象都是Json对象,属性见下表。</p>
</td>
</tr>
<tr>
<td>
<p>failList</p>
</td>
<td>
<p>List</p>
</td>
<td> </td>
<td>
<p>处理失败的记录,failList里面每个对象都是Json对象,属性见下表。</p>
</td>
</tr>
</tbody>
</table>
<p>successList和failList属性</p>
<table>
<caption> </caption>
<thead>
<tr>
<th>属性</th>
<th>类型</th>
<th>示例</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>requestID</p>
</td>
<td>
<p>String</p>
</td>
<td> </td>
<td>
<p>发送端定义的请求ID,参见“请求参数”。</p>
</td>
</tr>
<tr>
<td>
<p>messageID</p>
</td>
<td>
<p>String</p>
</td>
<td> </td>
<td>
<p>短信平台接纳后产生的唯一ID,若出现错误则返回-1。</p>
</td>
</tr>
<tr>
<td>
<p>code</p>
</td>
<td>
<p>String</p>
</td>
<td>0</td>
<td>
<p>结果编号,若成功则返回0 ;不成功则返回非零。</p>
</td>
</tr>
<tr>
<td>
<p>msg</p>
</td>
<td>
<p>String</p>
</td>
<td> </td>
<td>
<p>结果描述,若成功则是。</p>
</td>
</tr>
</tbody>
</table>
<p><strong>3.3 请求示例</strong></p>
<p>https://apitest.xiaoxi.pingan.com.cn/rest/msg?method=sendsms&appid=680BB7E2B5F04F54E0537CE21F0A1D88&timestamp=20170630161054&sign=E0AA7BF266B9BADFF436D62A2D227A88&templateId=fwm_00000000722&paramKeys=sms_content&paramValues=["短信发送内容"]&mobileNo=18820222220&requestId=1000&extend=这是一个扩展字段&version=1.0</p>
<p><strong>用JAVA版本的SDK实现</strong></p>
<table>
<caption> </caption>
<tbody>
<tr>
<td>
<ul>
<li><strong>创建短信发送客户端,输入URL, 应用编号, 密钥</strong></li>
</ul>
<p>MSGOMCPClient msgomcpClient = new MSGOMCPClient("http://apitest.xiaoxi.pingan.com.cn/rest", "52FC69100A311528E0537CE21F0A7CE9", " E0AA7BF266B9BADFF436D62A2D227A88");</p>
<ul>
<li><strong>设置发送内容,模板,唯一编号,手机号码,变量,扩展字段等</strong></li>
</ul>
<p>SmsSendContent smsSendContent = new SmsSendContent("fwm_00000000722");</p>
<p>smsSendContent.setRequestId("201704201512000");</p>
<p>smsSendContent.setMobileNo("18820222220");</p>
<p>smsSendContent.setParamKeys("sms_content"});</p>
<p>smsSendContent.setParamValues("短信发送内容");</p>
<p>smsSendContent.setExtend("这是一个扩展字段");</p>
<ul>
<li><strong>发送短信</strong></li>
</ul>
<p>SmsSendResult result = msgomcpClient.sendsms(smsSendContent);</p>
<p>System.out.println(JSONObject.fromObject(result));</p>
</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>响应示例 (</strong>返回JSON格式<strong>)</strong></li>
</ul>
<p>{</p>
<p>"code": "000000",</p>
<p>"msg": "成功",</p>
<p>"appid": "52FC69100A311528E0537CE21F0A7CE9",</p>
<p>"extend": "这是一个扩展字段",</p>
<p>"expiretime": "20170630164054",</p>
<p>"token": "E0AA7BF266B9BADFF436D62A2D227A88",</p>
<p>"failList": [],</p>
<p>"successList": [</p>
<p>{</p>
<p>"code": "0",</p>
<p>"msg": "",</p>
<p>"requestID": "1000",</p>
<p>"messageID": "2002790572"</p>
<p>}</p>
<p>]</p>
<p>}</p>
<ul>
<li><strong>异常示例 (</strong>返回JSON格式<strong>)</strong></li>
</ul>
<p>{</p>
<p>"code": "000000",</p>
<p>"msg": "成功",</p>
<p>"appid": "52FC69100A311528E0537CE21F0A7CE9",</p>
<p>"extend": "这是一个扩展字段",</p>
<p>"expiretime": "20170630164054",</p>
<p>"token": "E0AA7BF266B9BADFF436D62A2D227A88",</p>
<p>"failList": [</p>
<p>{</p>
<p>"code": "1022",</p>
<p>"msg": "手机号码没有对应的运营商",</p>
<p>"requestID": "1000",</p>
<p>"messageID": "-1"</p>
<p>}</p>
<p>],</p>
<p>"successList": []</p>
<p>}</p>
<p><strong>4. 短信发送结果查询</strong></p>
<ul>
<li><strong>场景描述</strong></li>
</ul>
<p>查询短信发送结果,返回未经查询过的短信发送结果。每次最多返回1000条记录。</p>
<ul>
<li><strong>接口消息名称</strong></li>
</ul>
<p>接口地址:https://api.xiaoxi.pingan.com.cn/rest/msg</p>
<p>方法:querySmsResult</p>
<p>发起方:关联系统</p>
<p>接收方:消息云平台</p>
<p>发送类型:<strong>POST</strong></p>
<p><strong>4.1 请求参数</strong></p>
<p>无</p>
<p><strong>4.2 响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>示例</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>公共响应参数</p>
</td>
<td> </td>
<td> </td>
<td>
<p>详细定义参见“公共响应参数”部分。</p>
</td>
</tr>
<tr>
<td>
<p>results</p>
</td>
<td>
<p>List</p>
</td>
<td> </td>
<td>
<p>results里面每个对象都是Json对象,属性见下表。</p>
</td>
</tr>
</tbody>
</table>
<p>results属性</p>
<table>
<caption> </caption>
<thead>
<tr>
<th style="width:138px">属性</th>
<th style="width:184px">类型</th>
<th style="width:80px">示例</th>
<th style="width:343px">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width:138px">
<p>RequestID</p>
</td>
<td style="width:184px">
<p>String</p>
</td>
<td style="width:80px"> </td>
<td style="width:343px">
<p>业务系统请求发送的ID号。</p>
</td>
</tr>
<tr>
<td style="width:138px">
<p>MessageID</p>
</td>
<td style="width:184px">
<p>String</p>
</td>
<td style="width:80px"> </td>
<td style="width:343px">
<p>短信平台接纳后产生的唯一ID。</p>
</td>
</tr>
<tr>
<td style="width:138px">
<p>ReportTime</p>
</td>
<td style="width:184px">
<p>String</p>
</td>
<td style="width:80px"> </td>
<td style="width:343px">
<p>收到Report的时间。</p>
<p>返回时短信平台已把Date类型按yyyyMMddHHmmss格式转化为String类型。</p>
</td>
</tr>
<tr>
<td style="width:138px">
<p>ReportResultID</p>
</td>
<td style="width:184px">
<p>String</p>
</td>
<td style="width:80px"> </td>
<td style="width:343px">
<p>Report的结果ID,0表示成功,非零表示失败。</p>
</td>
</tr>
<tr>
<td style="width:138px">
<p>ReportResultDescription</p>
</td>
<td style="width:184px">
<p>String</p>
</td>
<td style="width:80px"> </td>
<td style="width:343px">
<p>Report结果的描述。</p>
</td>
</tr>
<tr>
<td style="width:138px">
<p>TotalNumber</p>
</td>
<td style="width:184px">
<p>String</p>
</td>
<td style="width:80px"> </td>
<td style="width:343px">
<p>短信因内容超长而被拆分成多条短信,这个字段标明被拆分为多少条短信。返回1则表示未被拆分。</p>
</td>
</tr>
</tbody>
</table>
<p><strong>4.3 请求示例</strong></p>
<p>https://api.xiaoxi.pingan.com.cn/rest/msg?method=querySmsResult&appid=52FC69100A311528E0537CE21F0A7CE9×tamp=20170420151201&sign=FF15310D72A2B89AF16CB666B1838089&version=1.0</p>
<p><strong>用JAVA版本的SDK实现</strong></p>
<table>
<caption> </caption>
<tbody>
<tr>
<td>
<ul>
<li><strong>创建短信发送客户端,输入URL, 应用编号, 密钥</strong></li>
</ul>
<p>MSGOMCPClient msgomcpClient = new MSGOMCPClient("https:// api.xiaoxi.pingan.com.cn/rest","52FC69100A311528E0537CE21F0A7CE9","B02A0278E6B98DEC70DFA4FC7EFE1C03");</p>
<ul>
<li><strong>查询短信发送状态报告,输入参数为extend</strong></li>
</ul>
<p>SmsQueryResult querySmsResult = msgomcpClient.querySmsResult("扩展字段");</p>
<p>System.out.println(JSONObject.fromObject(querySmsResult));</p>
</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>响应示例 (</strong>返回JSON格式<strong>)</strong></li>
</ul>
<p>{"appid":"52FC69100A311528E0537CE21F0A7CE9","code":"000000","expiretime":"20170420154054","extend":"扩展字段","msg":"成功","results":[{"messageID":"1005764163","reportResultDescription":"正常","reportResultID":"0","reportTime":"20170420151155","requestID":"201704201511530","totalNumber":"1"}],"token":"FF15310D72A2B89AF16CB666B1838089"}</p>
<ul>
<li><strong>异常示例 (</strong>返回JSON格式<strong>)</strong></li>
</ul>
<p>{"appid":"52FC69100A311528E0537CE21F0A7CE9","code":"000000","expiretime":"20170420154054","extend":"扩展字段","msg":"成功","results":[{"messageID":"1005764163","reportResultDescription":"用户原因:手机状态不正确(关机、不在服务区、停机等)","reportResultID":"4","reportTime":"20170420151155","requestID":"201704201511530","totalNumber":"1"}],"token":"FF15310D72A2B89AF16CB666B1838089"}</p>
<p><strong>5. 上行回复短信结果查询</strong></p>
<ul>
<li><strong>场景描述</strong></li>
</ul>
<p>查询用户回复的上行短信发送结果,返回未经查询过的短信发送结果。每次最多返回1000条记录。</p>
<ul>
<li><strong>接口消息名称</strong></li>
</ul>
<p>接口地址:https://api.xiaoxi.pingan.com.cn/rest/msg</p>
<p>方法:fetchNewSms</p>
<p>发起方:关联系统</p>
<p>接收方:消息云平台</p>
<p>发送类型:<strong>POST</strong></p>
<p><strong>5.1 请求参数</strong></p>
<p>无</p>
<p><strong>5.2 响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>示例</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>公共响应参数</p>
</td>
<td> </td>
<td> </td>
<td>
<p>详细定义参见“公共响应参数”部分。</p>
</td>
</tr>
<tr>
<td>
<p>results</p>
</td>
<td>
<p>List</p>
</td>
<td> </td>
<td>
<p>results里面每个对象都是Json对象,属性见下表。</p>
</td>
</tr>
</tbody>
</table>
<p>results属性</p>
<table>
<caption> </caption>
<thead>
<tr>
<th>属性</th>
<th>类型</th>
<th>示例</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>serviceID</p>
</td>
<td>
<p>String</p>
</td>
<td> </td>
<td>
<p>服务子号。可根据服务子号区分不同互动业务(子号位长度不能超过3位)。</p>
</td>
</tr>
<tr>
<td>
<p>mobileNo</p>
</td>
<td>
<p>String</p>
</td>
<td> </td>
<td>
<p>用户的手机号。</p>
</td>
</tr>
<tr>
<td>
<p>content</p>
</td>
<td>
<p>String</p>
</td>
<td> </td>
<td>
<p>用户发送的短信内容。</p>
</td>
</tr>
<tr>
<td>
<p>receiveDate</p>
</td>
<td>
<p>String</p>
</td>
<td> </td>
<td>
<p>用户回复短信到达平台时间。</p>
</td>
</tr>
</tbody>
</table>
<p><strong>5.3 请求示例</strong></p>
<p>http://apitest.xiaoxi.pingan.com.cn/rest/msg?method=fetchNewSms&appid=52FC69100A311528E0537CE21F0A7CE9×tamp=20170821110720&sign=21CF5D93269209B1E011F917CBD94508</p>
<p><strong>用JAVA版本的SDK实现</strong></p>
<table>
<caption> </caption>
<tbody>
<tr>
<td>
<ul>
<li><strong>创建短信发送客户端,输入URL, 应用编号, 密钥</strong></li>
</ul>
<p>MSGOMCPClient msgomcpClient = new MSGOMCPClient("https://apitest.xiaoxi.pingan.com.cn/rest",</p>
<p>"52FC69100A311528E0537CE21F0A7CE9","E0AA7BF266B9BADFF436D62A2D227A88");</p>
<ul>
<li><strong>查询上行回复短信结果状态报告,输入参数为extend</strong></li>
</ul>
<p>SmsQueryResult fetchNewSms = msgomcpClient.fetchNewSms ("扩展字段");</p>
<p>System.out.println(JSONObject.fromObject(fetchNewSms));</p>
</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>响应示例 (</strong>返回JSON格式<strong>)</strong></li>
</ul>
<p>{</p>
<p>"code": "000000",</p>
<p>"msg": "成功",</p>
<p>"appid": "52FC69100A311528E0537CE21F0A7CE9",</p>
<p>"extend": "",</p>
<p>"expiretime": "20170821112636",</p>
<p>"token": "8C48538D348550D6B164E5B8ECC4A372",</p>
<p>"results": [</p>
<p>{</p>
<p>"serviceID": "12",</p>
<p>"mobileNo": "13900139003",</p>
<p>"content": "TD",</p>
<p>"receiveDate": "20170818103452"</p>
<p>}</p>
<p>]</p>
<p>}</p>
<ul>
<li><strong>异常示例 (</strong>返回JSON格式<strong>)</strong></li>
</ul>
<p>{</p>
<p>"appid": "52FC69100A311528E0537CE21F0A7CE9",</p>
<p>"code": "111004",</p>
<p>"expiretime": "",</p>
<p>"extend": "",</p>
<p>"msg": "签名失败",</p>
<p>"token": ""</p>
<p>}</p>
<p><strong>附录</strong></p>
<p><strong>接口返回码</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>返回码</th>
<th>含义</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>000000</p>
</td>
<td>
<p>成功</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>110001</p>
</td>
<td>
<p>查询无数据返回</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>110002</p>
</td>
<td>
<p>必填参数不能为空,或传入的参数名大小写不匹配</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>110003</p>
</td>
<td>
<p>网络错误</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>110004</p>
</td>
<td>
<p>系统内部错误</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>110006</p>
</td>
<td>
<p>HTTP请求方法不支持</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111001</p>
</td>
<td>
<p>当前API方法名method为空或不存在</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111002</p>
</td>
<td>
<p>appid应用不存在或已停用</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111003</p>
</td>
<td>
<p>timestamp不能为空且格式必须为yyyyMMddHHmmss</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111004</p>
</td>
<td>
<p>签名失败</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111005</p>
</td>
<td>
<p>Sign不能为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111006</p>
</td>
<td>
<p>Timestamp跟当前服务器时间相差不能超过10分钟</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111007</p>
</td>
<td>
<p>时间格式必须为yyyyMMddHHmmss</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>111008</p>
</td>
<td>
<p>不是有效的JSON格式</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113001</p>
</td>
<td>
<p>手机号码格式不正确</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113002</p>
</td>
<td>
<p>参数组数量必须与手机数量相同</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113003</p>
</td>
<td>
<p>单个请求发送的手机号码不能超过200个</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113005</p>
</td>
<td>
<p>业务系统ID为空,拒绝处理!</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113006</p>
</td>
<td>
<p>业务系统ID不存在,或已停用,拒绝处理!</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113007</p>
</td>
<td>
<p>客户端业务系统自定的请求号为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113008</p>
</td>
<td>
<p>客户端业务系统自定的请求号RequestID不是long类型</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113009</p>
</td>
<td>
<p>客户端业务系统自定的请求号RequestID长度大于19,长度最大为19</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113010</p>
</td>
<td>
<p>没有所需要的模版</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113011</p>
</td>
<td>
<p>短信过期</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113012</p>
</td>
<td>
<p>没有要发送的手机号码</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113013</p>
</td>
<td>
<p>找不到参数值paramValues</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113014</p>
</td>
<td>
<p>参数值个数跟key的个数不匹配</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113015</p>
</td>
<td>
<p>参数值列表个数跟手机号码个数不匹配</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113016</p>
</td>
<td>
<p>来自客户端业务系统的手机号为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113017</p>
</td>
<td>
<p>接收消息手机长度不合法</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113018</p>
</td>
<td>
<p>接收消息手机号码有非法字符</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113019</p>
</td>
<td>
<p>短信内容重复发送</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113020</p>
</td>
<td>
<p>客户端业务系统自定的请求号RequestID个数跟手机号码数量不匹配</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113021</p>
</td>
<td>
<p>模板不存在或未激活</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113022</p>
</td>
<td>
<p>paramKeys和paramValues必须同时有值</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113023</p>
</td>
<td>
<p>普通短信和国际短信发送失败</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113024</p>
</td>
<td>
<p>国际号码必须以00开头</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113025</p>
</td>
<td>
<p>没有对应的发送类型,请确定是普通短信、OTP短信还是国际短信</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113026</p>
</td>
<td>
<p>OTP短信templateId必须以”otp”作为前缀</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113040</p>
</td>
<td>
<p>{0}条试用短信已用完,请联系客户经理</p>
</td>
<td>{0}表示具体的条数</td>
</tr>
<tr>
<td>
<p>113041</p>
</td>
<td>
<p>手机:{0}不在白名单内,请联系客户经理</p>
</td>
<td>{0}表示具体的手机号码</td>
</tr>
<tr>
<td>
<p>113042</p>
</td>
<td>
<p>试用短信不够本次发送,请减少要发送的手机号码数量</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113043</p>
</td>
<td>
<p>短时间内发送频次太高</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>113044</p>
</td>
<td>
<p>serviceID子号只能为数字格式且长度不能超过3位</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1001</p>
</td>
<td>
<p>无效的<%字段名称%></p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1002</p>
</td>
<td>
<p>短信内容超过限制</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1003</p>
</td>
<td>
<p>传入的tag不全</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1004</p>
</td>
<td>
<p>发送者为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1005</p>
</td>
<td>
<p>发送系列号为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1006</p>
</td>
<td>
<p>没有所需要的模版</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1007</p>
</td>
<td>
<p>模版内容为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1008</p>
</td>
<td>
<p>输入模版变量不全</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1009</p>
</td>
<td>
<p>输入模版变量值过长</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1010</p>
</td>
<td>
<p>不正确的虚拟用户<%虚拟用户名称%></p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1011</p>
</td>
<td>
<p>该虚拟用户<%虚拟用户名称%>无权调用模板<%模板编号%>:<%模板名称%></p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1012</p>
</td>
<td>
<p>该模板不可用<%不可用原因%></p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1013</p>
</td>
<td>
<p>不能发送该内容的信息</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1014</p>
</td>
<td>
<p>短信过期</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1015</p>
</td>
<td>
<p>用户拒绝该短信</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1016</p>
</td>
<td>
<p>短信下发超过最大重发次数</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1017</p>
</td>
<td>
<p>接收消息手机为空或长度不够</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1018</p>
</td>
<td>
<p>接收消息手机号码有非法字符</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1019</p>
</td>
<td>
<p>移动的手机长度为11</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1020</p>
</td>
<td>
<p>其它错误</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1021</p>
</td>
<td>
<p>联通的手机长度为11</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1022</p>
</td>
<td>
<p>输入的手机没有对应的运营商</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1023</p>
</td>
<td>
<p>信息已处理</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1024</p>
</td>
<td>
<p>安排发送时间过期</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1030</p>
</td>
<td>
<p>二次确认不通过</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1031</p>
</td>
<td>
<p>linkID没有下行模板</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1033</p>
</td>
<td>
<p>虚拟用户为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1034</p>
</td>
<td>
<p>超出最大发送条数</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>1035</p>
</td>
<td>
<p>短信内容为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118001</p>
</td>
<td>
<p>签名因子为空或不正确</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118002</p>
</td>
<td>
<p>电话号码为空或不正确</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118003</p>
</td>
<td>
<p>电话号码格式不正确</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118004</p>
</td>
<td>
<p>验证码为空或不正确</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118005</p>
</td>
<td>
<p>验证码格式不正确</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118006</p>
</td>
<td>
<p>验证码发送失败</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118007</p>
</td>
<td>
<p>验证码校验失败或验证码已过期</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118008</p>
</td>
<td>
<p>签名因子有效长度为1-8</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118009</p>
</td>
<td>
<p>签名因子格式不正确(仅允许数字或字母,有效长度为1-100),以逗号分隔</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118010</p>
</td>
<td>
<p>策略有效长度为1-50</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>118011</p>
</td>
<td>
<p>策略格式不正确(仅非中文字符,有效长度为1-50),以逗号分隔</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210000</p>
</td>
<td>
<p>查询短信企业下行汇总错误(三天前)</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210001</p>
</td>
<td>
<p>查询短信企业下行汇总错误(三天内)</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210002</p>
</td>
<td>
<p>查询短信下行企业汇总,出现异常</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210003</p>
</td>
<td>
<p>日期不能为空</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210004</p>
</td>
<td>
<p>日期格式不正确</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210005</p>
</td>
<td>
<p>开始时间不能大于结束时间</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210006</p>
</td>
<td>
<p>只能查询3天前的数据</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210007</p>
</td>
<td>
<p>只能查询3天内的数据</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210008</p>
</td>
<td>
<p>type值只能是true或者false</p>
</td>
<td> </td>
</tr>
<tr>
<td>
<p>210009</p>
</td>
<td>
<p>该应用无权限查询</p>
</td>
<td> </td>
</tr>
</tbody>
</table>
提交成功!非常感谢您的反馈,我们会继续努力做到更好!