注意事项

1. 请求方式: HTTP + JSON + POST / GET

2. 字段名均为小写

3. 统一使用UTF-8编码

4. 文档中 partner 变量为具体合作方标识,我要申请

5. 春雨测试服务地址 https://test.chunyu.me/,正式服务地址 https://www.chunyuyisheng.com/

6. 双方进行通信时使用加密密钥(partner_key)进行安全校验, 密钥请严格保密

7. 出于安全考虑,sign必须在服务器端生成

8. 第三方用户可以使用管理后台进行自测,该管理账户请联系相关春雨人员开通。管理后台入口

9. 第三方不需要缓存医生价钱信息,该信息必须实时获取。

10. sign 为签名密钥值, 生成方式如下:

# PYTHON 版本 生成方法
import hashlib
# 合作方 partner_key,注意不是 partner
partner_key = 'XKBP1Oqut0r2LiGV'
# UNIX TIMESTAMP 最小单位为秒
atime = '1467098815'
# 第三方用户唯一标识,可以为字母与数字组合的字符串
user_id = 'A800130'
# 获得签名: md5的32位结果取中间16位
sign = hashlib.md5(partner_key + atime + user_id).hexdigest()[8:-8]
# 输出sign:5afda19c5d65a7a7
print sign
// PHP 版本 生成方法
// 合作方 partner_key, 注意不是 partner
$partner_key = "XKBP1Oqut0r2LiGV";
// UNIX TIMESTAMP 最小单位为秒
$atime = "1467098815";
// 第三方用户唯一标识,可以为字母与数字组合的字符串。
$user_id = "A800130";
// 生成签名 5afda19c5d65a7a7
$sign = substr(md5($partner_key.$atime.$user_id), 8, 16);
// 输出sign:5afda19c5d65a7a7
echo "sign: ".$sign;
// JAVA 版本 生成方法
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Hex;

public class SignTest {

    // 计算 Sign
    private static String getSign(String partner_key, String atime, String user_id)
                throws NoSuchAlgorithmException{
        String info = partner_key + atime + user_id;
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        byte[] srcBytes = info.getBytes();
        md5.update(srcBytes);
        byte[] resultBytes = md5.digest();
        String resultString = new String(new Hex().encode(resultBytes));
        return resultString.substring(8, 24);
    }

    public static void main( final String[] args ){
        try {
            // 合作方 partner_key, 注意不是 partner
            String partner_key = "XKBP1Oqut0r2LiGV";
            // UNIX TIMESTAMP 最小单位为秒
            String atime = "1467098815";
            // 第三方用户唯一标识,可以为字母与数字组合的字符串。
            String user_id = "A800130";
            // 计算sign结果为: 5afda19c5d65a7a7
            String sign = SignTest.getSign(partner_key, atime, user_id);
            System.out.println(sign);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }

    }
}
// C# 版本 生成方法
using System;
using System.Security.Cryptography;
using System.Text;

public class Test
{
    public static void Main()
    {
        // C#版本生成方法
        string partner_key = "XKBP1Oqut0r2LiGV";
        // UNIX TIMESTAMP 最小单位为秒
        string atime = "1467098815";
        // 第三方用户唯一标识,可以为字母与数字组合的字符串
        string user_id = "A800130";
        // 获得签名: md5的32位结果取中间16位
        MD5 md5 = new MD5CryptoServiceProvider();
        byte[] output = md5.ComputeHash(Encoding.UTF8.GetBytes(partner_key+atime+user_id));
        string sign = BitConverter.ToString(output).Replace("-","").Substring(8, 16).ToLower();
        // 输出sign:5afda19c5d65a7a7
        Console.WriteLine(sign);
    }
}

提问数据结构

JSONArray集合,格式: [contentItem 1, contentItem 2,..., contentItem n]

contentItem含义:

生成content代码示例如下:

# PYTHON 版本 生成方法
import json
# 创建对话内容
content = [
    {"type": "text","text": "这是一段文本形式的内容"},
    {"type": "image","file": "这是图片形式的内容,这里是图片的 url'"},
    {"type": "audio","file": "这是语音形式的内容,这里是音频文件的 url"},
    {"type": "patient_meta","age": "15岁","sex": "男"}
]
# 获得json string 格式结果,接口中content字段使用该结果
content = json.dumps(content)
// 创建对话内容
import json
// 创建对话内容
$content_list = array(
    array ('type'=>'text','text'=>'这是一段文本形式的内容'),
    array ('type'=>'image','file'=>'这是图片形式的内容,这里是图片的 url'),
    array ('type'=>'audio','file'=>'这是语音形式的内容,这里是音频文件的 url'),
    array ('type'=>'patient_meta','age'=>'15 岁', 'sex'=>'男'),
);
// 获得json string 格式结果,接口中content字段使用该结果
echo json_encode($content_list);
// JAVA 版本 生成方法
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONException;

public class JsonTest {

    public static void main(String[] args) throws JSONException, ParseException {
        ArrayList content_list = new ArrayList();
        // 添加文本内容
        Map c_text = new HashMap();
        c_text.put("type", "text");
        c_text.put("text", "这是一段文本形式的内容");
        content_list.add(c_text);
        // 添加图片内容
        Map c_image = new HashMap();
        c_image.put("type", "image");
        c_image.put("file", "这是图片形式的内容,这里是图片的 url");
        content_list.add(c_image);
        // 添加音频内容
        Map c_audio = new HashMap();
        c_audio.put("type", "audio");
        c_audio.put("file", "这是一段文本形式的内容,这里是音频文件的 url");
        content_list.add(c_audio);
        // 添加患者信息
        Map c_patient_meta = new HashMap();
        c_patient_meta.put("type", "patient_meta");
        c_patient_meta.put("age", "15 岁");
        c_patient_meta.put("sex", "男");
        content_list.add(c_patient_meta);
        // 输出结果
        JSONArray content_json = JSONArray.fromObject(content_list);
        String content = content_json.toString();
        System.out.println(content);
    }
}