API接口基: 请求地址:http://www.mf178.cn/api/open 将请求结构数据 post给接口地址 http://www.mf178.cn/api/open 请求数据结构 { "action" : "login", //接口名 "app_key" :"xxxxx", //开发者应用KEY "time": 212123232, //当前unix时间戳 "token" : "xxxx", //login接口可填空 "sign" : "xxxxx", //请求数据签名 ... //其它参数,详见各接口 } 关于Unix时间戳:http://tool.chinaz.com/Tools/unixtime.aspx 返回数据结构: { "ret" : 0, //为0时,表示请求成功,data中会返回对应数据 其它时为失败 msg中会返回失败原因 "msg" : "", //返回消息 "data" : "" //返回数据 } 请求数据签名算法: 步骤:1.将请求数据根据key进行排序 2.将请求数据按 KeyValueKeyValue 进行拼接 (除sign参数外,所有参数都必须参数签名) 3.再将系统分配的app_secret 拼接在签名串后 4.对签名串进行md5 php代码示例 function sign($params, $secret) { //第一步 ksort($params); //第二步 $buff = ''; foreach ($params as $k => $v) { if ($k != "sign") { $buff .= $k . $v; } } //第三步 $buff .= $secret; //第四步 return md5($buff); } 详细说明:如登录接口的加密参数算法为: 已知需要参数为: "username":"13800138000", "password":"12345678", "action":"login", "app_key":"10541524", "token":"", "time":1528083148 参数key按字母的排序顺序为: action app_key password time token username 组合key+value之后的字符串为: actionloginapp_key10541524password12345678time1528083148tokenusername13800138000 则最后的sign参数为: 如果app_secret为234241asdfasdfa,app_secret加在最后面 md5(actionloginapp_key10541524password12345678time1528083148tokenusername13800138000234241asdfasdfa) 即为:808318464f65a1573b375a22a9349443 先使用登录接口获取token,其它接口请求时需带token访问 请求示例: --------------------------------------------- POST http://www.mf178.cn/api/open HTTP/1.1 Host: www.mf178.cn Accept: */* Connection: Keep-Alive Content-Type: application/json Content-Length: 157 {"username":"13800138000","password":"12345678","action":"login","app_key":"10541524","token":"","time":1528083148,"sign":"808318464f65a1573b375a22a9349443"} --------------------------------------------- 返回数据: --------------------------------------------- HTTP/1.1 200 OK Date: Mon, 04 Jun 2018 03:32:28 GMT Server: Apache/2.4.33 (Win32) OpenSSL/1.1.0g PHP/7.2.4 Content-Length: 108 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 {"ret":1,"msg":"密码尝试次数过多,冻结24小时,或通过密码找回重置密码","data":false} --------------------------------------------- /////////////////////////////////////////////////////// 1.登录接口 参数:username 用户名 password 密码(明文) 返回数据:token 32位登录token 请求: { "action" : "login", //接口名 "app_key" :"91999206", //开发者应用KEY "time": 212123232, //当前时间 "token" : "", //login接口可填空 "sign" : "xxxxx", //请求数据签名 "username":"13800138000", "password";"aaabbb" } 正确返回: { "ret" : 0, "msg" : "SUCCESS", //返回消息 "data" : "77754b9000d9ac80c2c3bd9e934cd587" //32位登录token 有效期30分钟,每次请求都会刷新过期时间 } 错误返回: { "ret" : 1, "msg" : "用户登录失败", //返回消息 "data" : false } /////////////////////////////////////////////////////// 2.上报卡密接口 参数: card_type 卡种类型 具体卡种类型ID请联系运营人员获取 face_type 卡密面值,100元面值填100,200元面值填200,类推,支持面值查看官网 recovery_type 卡密回收类型,只有卡密是为2, 包含卡密和卡号是为8 callback_url 卡密回调地址,销卡结果会上报提供的回调地址 attach 附加备注,查询或回调的时候会原样返回 data 卡密数据信息,卡号和卡密之间用空格隔开,不同卡之间用竖号“|”隔开,需要urlencode 如:上报两个卡密:卡密|卡密 上报两个含卡号的:卡号 卡密|卡号 卡密 返回数据:token 32位登录token 请求: { "action" : "card_upload", //接口名 "app_key" :"91999206", //开发者应用KEY "time": 212123232, //当前时间 "token" : "77754b9000d9ac80c2c3bd9e934cd587", //除login接口外,需填写 "sign" : "xxxxx", //请求数据签名 "card_type": 2, "face_type": 300, "recovery_type": 8, "callback_url" : "http://xxx.com/api/callback" "attach": "附加备注", "data": 123123123123123 1231231231231231231|234232342342342 4534534534534534534" } 正确返回: {"ret":0,"msg":"提交成功,共提交2条,请耐心等待后台处理","data":[{"id":"264168","cardpwd":"1231231231231231231"},{"id":"264169","cardpwd":"4534534534534534534"}]} 错误返回: {"ret":1,"msg":"以下卡号已存在:123123123123123|234232342342342","data":false} /////////////////////////////////////////////////////// 3.查看卡密状态 参数: order_id 接口2返回的id 请求: { "action" : "card_getinfo", //接口名 "app_key" :"91999206", //开发者应用KEY "time": 212123232, //当前时间 "token" : "77754b9000d9ac80c2c3bd9e934cd587", //除login接口外,需填写 "sign" : "xxxxx", //请求数据签名 "order_id": 264168 } 正确返回: {"ret":0,"msg":"","data":{"id":"264168","state":"8","state_info":"处理失败","remark":"卡密错误","attach":"附加备注","deal_time":"处理时间", "amount": 100}} {"ret":0,"msg":"","data":{"id":"264168","state":"9","state_info":"处理成功","remark":"充值面值100","attach":"附加备注","deal_time":"处理时间", "amount": 100}} 错误返回: {"ret":1,"msg":"没有该订单","data":false} /////////////////////////////////////////////////////// 4. 卡密销卡结果自动回调 销卡结果会上报到您提交卡密是的callback_url地址(如:http://xxx.com/api/callback),包含下列参数 参数: order_id 接口2提交对应的id state 状态,8失败,9成功 state_info 状态描述 8处理失败,9处理成功 remark 订单备注 attach 附加备注 app_key 软件所有者的app_key timestamp 时间戳 sign 签名参数,签名和其他接口的签名方式一致 deal_time 处理时间---不参与sign签名 amount 成功面值---不参与sign签名 最终组合成url使用GET请求你们的接口,如: http://xxx.com/api/callback?order_id=360045&state=9&state_info=%E5%A4%84%E7%90%86%E6%88%90%E5%8A%9F&remark=%E9%9D%A2%E5%80%BC%EF%BC%9A1000&attach=%E9%9D%A2%E5%80%BC&app_key=59993986×tamp=1540190671&sign=6097f327df310291c3ed8106cb3bd326 如果你们接口收到我们的请求,请返回success /////////////////////////////////////////////////////// 5.卡密订单修改折扣(只支持暂未处理的订单) 参数: card_type 卡种类型,具体卡种类型ID请联系运营人员获取 face_type 卡密面值,100元面值填100,200元面值填200,类推,支持面值查看官网 discount 卡密折扣,具体卡种面值可支持折扣,请查看官网-我的订单记录-卡密订单-批量改价格页面 请求: { "action" : "modify_discount", // 接口名 "app_key" : "91999206", // 开发者应用KEY "time" : 212123232, // 当前时间 "token" : "77754b9000d9ac80c2c3bd9e934cd587", // 除login接口外,需填写 "sign" : "xxxxx", // 请求数据签名 "card_type" : 2, // 卡种类型,整型 "face_type" : 20, // 卡密面值,整型 "discount" : 980 // 卡密折扣,整型 } 正确返回: {"ret":0,"msg":"修改成功","data":[]} 错误返回: {"ret":1,"msg":"修改失败","data":[]} /////////////////////////////////////////////////////// 6.卡密订单取消接口(只支持暂未处理的订单) 参数: id 订单ID,具体订单ID,请查看官网-我的订单记录-卡密订单-订单ID 请求: { "action" : "cancel_order", // 接口名 "app_key" : "91999206", // 开发者应用KEY "time" : 212123232, // 当前时间 "token" : "77754b9000d9ac80c2c3bd9e934cd587", // 除login接口外,需填写 "sign" : "xxxxx", // 请求数据签名 "id" : 69977352, // 订单ID } 正确返回: {"ret":0,"msg":"操作成功","data":[]} 错误返回: {"ret":1,"msg":"未查询到订单","data":[]} ///////////////////////////////////////////////////////