1、新建一个app,如果testapi
2、testapi下面有app.xml和service.xml,app.xml就不再说了,在service.xml注册一个service。
<service id="openapi.testapi"> <class>testapi_testapi</class> </service>
3、testapi下面新建一个lib文件夹,在lib下面建立testapi.php
4、// 以下代码是自己研究的,错误的地方欢迎纠正
<?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ class testapi_testapi{ private $token; function __construct() { $this->token='ecstore_testopenapi' ; } function sign_check($params) { $sign=$params['sign'];//远程传递过来的sign if (isset($params['sign'])) { unset($params['sign']); } $sign2= $this->get_sign($params, $this->token);//本地sign if($sign===$sign2) { return true; } else { $error['code']='0x009'; $this->send_user_error($error); } } function test(){ $args=$_POST; $this->sign_check($args); if($arg==1) { $this->send_user_succ('我的测试成功'); }else { $error['code']='0x003'; $this->send_user_error($error); } } //返回成功 function send_user_succ($result){ $result_json = array( 'rsp'=>'succ', 'data'=>$result, ); echo json_encode($result_json); exit; } //返回失败 function send_user_error($error){ if( $error['code'] == null ){ $error_code = null; $error_msg = $error['msg']; }else{ $arr_error = $this->_error_list(); $error_code = $error['code']; $error_msg = $arr_error[$error_code]; } $res = array( 'rsp' => 'fail', 'res' => $error_code, 'data' => $error_msg, ); echo json_encode($res); exit; } //获取签名验证 function get_sign($params,$token){ return strtoupper(md5(strtoupper(md5($this->assemble($params))).$token)); } function assemble($params) { if(!is_array($params)) return null; ksort($params,SORT_STRING); $sign = ''; foreach($params AS $key=>$val){ $sign .= $key . (is_array($val) ? assemble($val) : $val); } return $sign; } function _error_list(){ $error_msg = array( '0x001' => '用户名或密码错误', '0x002' => '请求/执行超时', '0x003' => '数据异常', '0x004' => '数据库执行失败', '0x005' => '服务器异常', '0x006' => '用户权限不够', '0x007' => '服务不可以用', '0x008' => '方法不可用', '0x009' => '签名无效', '0x010' => '版本丢失', '0x011' => 'API 版本异常', '0x012' => 'API 需要升级', '0x013' => '网店服务异常', '0x014' => '网店空间不足', '0x020' => 'session 已过期,请重新登录', '0x021' => '数据冲突,本地数据不是最新数据', ); return $error_msg; } }