API 文档

sign加密方式

签名生成步骤

1、参数排序:ksort($pars, SORT_STRING) 对 $pars 数组按键名排序。

2、构建字符串:排除键名为 sign、answer_data 和 answer_mark 的键值对将其他键值对格式化为 key=value 并附加 &。末尾追加 key= 和 $appkey。

3、加密:使用 md5($string1) 生成 32 位哈希值。使用 strtoupper 转换为大写。

    function getsign($pars, $appkey) {
        ksort($pars, SORT_STRING);
        $string1 = '';
        foreach ($pars as $k => $v) {
            if($k != 'sign' && $k != 'answer_data' && $k != 'answer_mark'){
                $string1 .= "$k=$v&";
            }
        }
        $string1 .= "key=" . $appkey;
        return strtoupper(md5($string1));
    }

                            
获取某类产品列表
请求地址

/api/exam/getExams

请求参数
参数名 类型 描述 是否必传 是否参与加密
channel_id number 产品分类id
api_key (点击查看) string 对接请求生成的密钥
sign string 请求加密的参数
成功返回示例【返回json格式】
{
	"code": 1,
	"msg": "ok",
	"time": "1726037335",
	"data": {
		"data": {
	"code": 1,
	"msg": "操作成功",
	"time": "1726039679",
	"data": {
		"data": [{
			"api_id": 18,
			"title": "MBTI测试93题(标准版)",
			"image": "http:\/\/api.nbmgkj.com\/uploads\/20240226\/4109152d35f3fe54b8d48e2bb3bc4e3d.jpg",
			"question_num": 93,
			"channel_id": 10
		}, {
			"api_id": 23,
			"title": "MBTI测试72题(经典版)",
			"image": "http:\/\/api.nbmgkj.com\/uploads\/20240226\/ff69bece8186ec117ae77fc2a65c766f.jpg",
			"question_num": 72,
			"channel_id": 10
		}]
	}
}
失败返回示例【返回json格式】
{
	"code": 10002,
	"msg": "签名不正确",
	"time": "1726039834",
	"data": ""
}
获取单个产品信息
请求地址

/api/exam/getExamInfo

请求参数
参数名 类型 描述 是否必传 是否参与加密
api_id number 产品id
api_key (点击查看) string 对接请求生成的密钥
sign string 请求加密的参数
成功返回示例【返回json格式】
{
	"code": 1,
	"msg": "ok",
	"time": "1726037335",
	"data": {
		"data": {
			"api_id": 194,
			"title": "mbti测试题",
			"back_type": 4,
			"content": "mbti测试题的介绍",
			"image": "\/uploads\/20240224\/636a17bb0f7f3cdf5266f8dc114a5902.png",
			"channel_id": 30,
			"question_num": 72
		}
	}
}
失败返回示例【返回json格式】
{
	"code": 10002,
	"msg": "签名不正确",
	"time": "1726039834",
	"data": ""
}
获取测试题问题
请求地址

/api/exam/getQuestions

请求参数
参数名 类型 描述 是否必传 是否参与加密
api_id number 产品id
api_key (点击查看) string 对接请求生成的密钥
sign string 请求加密的参数
成功返回示例【返回json格式】
{
	"code": 1,
	"msg": "操作成功",
	"time": "1726040211",
	"data": {
		"question_data": [{
			"id": 1959,
			"question": "下列描述中最符合你的是:",
			"selectdata": [{
				"key": "A",
				"value": "我浪漫并富于幻想。"
			}, {
				"key": "B",
				"value": "我很实际并实事求是。"
			}]
		}, {
			"id": 1960,
			"question": "下列描述中最符合你的是:",
			"selectdata": [{
				"key": "A",
				"value": "我倾向于接受冲突。"
			}, {
				"key": "B",
				"value": "我倾向于避免冲突。"
			}]
		}
		.................................
		],
		"count": 144
	}
}
失败返回示例【返回json格式】
{
	"code": 10002,
	"msg": "签名不正确",
	"time": "1726039834",
	"data": ""
}
提交测试记录获取解析
请求地址

/api/exam/getExamResult

请求参数
参数名 类型 描述 是否必传 是否参与加密
api_id number 产品id
answer_data json 复杂测试传,如[{"qid":1959,"answer":"A"},{"qid":1960,"answer":"B"},{"qid":1961,"answer":"B"}]
answer_mark json 简单测试传,如A,B
api_key (点击查看) string 对接请求生成的密钥
sign string 请求加密的参数
成功返回示例【返回json格式】
{
	"code": 1,
	"msg": "ok",
	"time": "1726041840",
	"data": {
		"three_user_id": "",
		"out_trade_no": "QF2024091116040048575398_kp1",
		"stat_data": {
			"data": {
				"E": {
					"name": "E",
					"score": 2
				},
				"N": {
					"name": "N",
					"score": 2
				},
				.....................
			},
			"rate": {
				"E": 67,
				"N": 67,
				.....................
			}
		},
		"answer_info": {
			"id": 17,
			"content": "1.反应快****问题。",
			"title": "ENTP",
			"mark": "ENTP",
			"intro": "外倾|****|知觉",
			"type": 0,
			"cover": "",
			"product_id": 104,
			"max_score": 0,
			"full_cover": "http:\/\/api.nbmgkj.com"
		},
		"answer_back": [{
			"id": 17,
			"content": "1.反应快****问题.",
			"title": "ENTP",
			"mark": "ENTP",
			"intro": "外倾|****|知觉",
			"type": 0,
			"cover": "",
			"product_id": 104,
			"max_score": 0,
			"full_cover": "http:\/\/api.nbmgkj.com"
		}],
		"back_type": 0,
		"show_type": "mount",
		"max_score": 0,
		"res_txt": "ENTP"
	}
}
失败返回示例【返回json格式】
{
	"code": 10002,
	"msg": "签名不正确",
	"time": "1726039834",
	"data": ""
}
错误参照码
返回码 说明
10001 您没有开通该产品
10002 签名不正确
10003 当前等级今日次数已达上限~
10004 请求出错
10005 测试题不存在
10006 获取起始参数有误
10007 请选择产品栏目
10008 产品id不能为空
10009 产品不存在
10010 使用额度不足,请充值
10011 当前无该产品的调用权限
10012 提交的答案格式或编号有误,请仔细核对
11000 日志记录出错