虚心使人进步

虚心学习,天天向上......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

调用EcStore中的API接口

Posted on 2020-12-21 14:36  Showker  阅读(215)  评论(0编辑  收藏  举报

<?php
//bbc调用方式 dorequest_order_list(); function dorequest_order_list() { $posturl='http://192.168.1.112/index.php/api';//接口地址 $token ='';// '73b2395d6f20b1de2cf33c7a755433de7fa7b22bb3bcc21333508c2a5e17cff2eeef382';//生成sign用的token,xgang的 $apiParams['v'] = 'v1'; $apiParams['format'] = 'json'; $apiParams['method'] ='trade.get.list'; $apiParams['format'] = 'json'; $apiParams['create_time_start'] = '1514801250'; $apiParams['create_time_end'] = '1516334603'; /* $apiParams['item_id'] = 188; $apiParams['sku_id'] = 594;*/ //$apiParams['status'] =''; $apiParams['fields'] ='tid'; $apiParams['timestamp'] = time(); $apiParams['sign_type'] = 'MD5'; $apiParams['sign'] =sign($apiParams,$token); $ret=docurl($posturl,$apiParams); //echo 'params:'."\r\n"; // print_r($apiParams); //echo "\r\n"; // echo "response:"."\r\n"; print_r($ret); exit; } function dorequest() { $posturl='http://192.168.1.111/index.php/api';//接口地址 $token = '73b2395d6f20b1de3222cfc733a755433de7fa7bbb3bcc2152208c2a5e17cff2eeef382';//生成sign用的token $apiParams['v'] = 'v1'; $apiParams['format'] = 'json'; $apiParams['method'] ='item.sku.get'; $apiParams['item_id'] = 188; $apiParams['sku_id'] = 594; $apiParams['method'] = 'item.sku.get'; $apiParams['timestamp'] = time(); $apiParams['sign_type'] = 'MD5'; $apiParams['sign'] =sign($apiParams,$token); $ret=docurl($posturl,$apiParams); echo 'params:'."\r\n"; print_r($apiParams); echo "\r\n"; echo "response:"."\r\n"; print_r($ret); exit; } //curl请求 function docurl($url,$post_data){ //初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL,$url); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, 0); //设置获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设置post方式提交 curl_setopt($curl, CURLOPT_POST, 1); //设置post数据 curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); //执行命令 $data = curl_exec($curl); //关闭URL请求 curl_close($curl); //显示获得的数据 return $data; } //生成签名 function sign($params, $token) { return strtoupper(md5(strtoupper(md5(assemble($params))).$token)); } //拼接参数 function assemble($params) { if(!is_array($params)) return null; ksort($params, SORT_STRING); $sign = ''; foreach($params AS $key=>$val){ if(is_null($val)) continue; if(is_bool($val)) $val = ($val) ? 1 : 0; $sign .= $key . (is_array($val) ? assemble($val) : $val); } return $sign; } ?>

  

 

ecstore的方式

<?php
/**/
/*$str='a:2:{i:0;a:20:{s:7:"item_id";s:3:"882";s:8:"order_id";s:15:"151118174115513";s:6:"obj_id";s:3:"882";s:8:"products";a:21:{s:10:"product_id";s:3:"986";s:8:"goods_id";s:3:"323";s:7:"barcode";N;s:5:"title";N;s:2:"bn";s:16:"FF31122800101037";s:5:"price";a:3:{s:5:"price";a:1:{s:5:"price";s:5:"3.590";}s:4:"cost";a:1:{s:5:"price";s:5:"2.300";}s:8:"mktprice";a:1:{s:5:"price";s:6:"20.000";}}s:4:"name";s:6:"香菜";s:6:"weight";s:7:"180.000";s:4:"unit";s:3:"份";s:5:"store";s:4:"9990";s:11:"store_place";s:0:"";s:5:"freez";s:2:"10";s:10:"goods_type";s:6:"normal";s:9:"spec_info";N;s:9:"spec_desc";b:0;s:10:"is_default";s:4:"true";s:15:"qrcode_image_id";s:32:"c83a2a4f85ba1d80d00014923a51ee43";s:6:"uptime";N;s:11:"last_modify";s:10:"1447839685";s:8:"disabled";s:5:"false";s:6:"status";s:4:"true";}s:8:"goods_id";s:3:"323";s:7:"type_id";s:1:"3";s:2:"bn";s:16:"FF31122800101037";s:4:"name";s:6:"香菜";s:4:"cost";s:5:"2.300";s:5:"price";s:5:"3.590";s:7:"g_price";s:5:"3.590";s:6:"amount";s:5:"3.590";s:5:"score";s:1:"0";s:6:"weight";s:3:"180";s:8:"quantity";s:1:"1";s:7:"sendnum";s:1:"0";s:5:"addon";s:0:"";s:9:"item_type";s:7:"product";s:10:"floatstore";s:1:"0";s:4:"send";s:5:"1.000";}i:1;a:20:{s:7:"item_id";s:3:"883";s:8:"order_id";s:15:"151118174115513";s:6:"obj_id";s:3:"883";s:8:"products";a:21:{s:10:"product_id";s:4:"1144";s:8:"goods_id";s:3:"467";s:7:"barcode";N;s:5:"title";N;s:2:"bn";s:16:"FF31122800302046";s:5:"price";a:3:{s:5:"price";a:1:{s:5:"price";s:6:"16.990";}s:4:"cost";a:1:{s:5:"price";s:6:"12.000";}s:8:"mktprice";a:1:{s:5:"price";s:6:"19.500";}}s:4:"name";s:25:"蛇果(4只装,约800g)";s:6:"weight";s:7:"800.000";s:4:"unit";s:3:"份";s:5:"store";s:2:"28";s:11:"store_place";s:0:"";s:5:"freez";s:2:"10";s:10:"goods_type";s:6:"normal";s:9:"spec_info";N;s:9:"spec_desc";b:0;s:10:"is_default";s:4:"true";s:15:"qrcode_image_id";s:32:"edf45247715d2766b3328961cbd97579";s:6:"uptime";N;s:11:"last_modify";s:10:"1447839685";s:8:"disabled";s:5:"false";s:6:"status";s:4:"true";}s:8:"goods_id";s:3:"467";s:7:"type_id";s:1:"4";s:2:"bn";s:16:"FF31122800302046";s:4:"name";s:25:"蛇果(4只装,约800g)";s:4:"cost";s:6:"12.000";s:5:"price";s:6:"16.990";s:7:"g_price";s:6:"16.990";s:6:"amount";s:6:"16.990";s:5:"score";s:1:"2";s:6:"weight";s:3:"800";s:8:"quantity";s:1:"1";s:7:"sendnum";s:1:"0";s:5:"addon";s:0:"";s:9:"item_type";s:7:"product";s:10:"floatstore";s:1:"0";s:4:"send";s:5:"1.000";}}';
print_r(unserialize($str));exit;*/


ini_set('display_errors',"Off");
date_default_timezone_set('Asia/Chongqing');
$url='http://www.aaa.com/index.php/api';
$token='a300067beb551053aadc3a2bdf3bed712386c25dc834f977d1c5dc8e7c611f1a';
$params['direct']='true';
$params["method"]="b2c.delivery.create";
$params['format']='json';
$params['date']=date('Y-m-d H:i:s');

/*业务参数*/
$params['order_bn']='151205235445729';
$params['delivery']='1';
$params['delivery_bn']=$params['order_bn'].'FHD';
/*$params['ship_distinct']='鼓楼区';
$params['logi_no']='88888888';
$params['logi_name']='申通快递';*/
$params['ship_name']='张杰';
/*$params['ship_states']='江苏省';
$params['ship_city']='南京市';*/
$params['ship_addr']='京口路199号';

/*$params['ship_tel']='025-888899';*/
$params['ship_mobile']='18652815878';
$params['memo']='速速发货';
$params['t_begin']=time();
$params['status']='succ';//准备中-不要succ
$params['items']=json_encode(
    array(
        0=>array('product_bn'=>'FF31122800101021','product_name'=>'青菜(约450g)','number'=>'1'),//1个商品1个
/*       1=>array('product_bn'=>'FF31122800302046','product_name'=>'蛇果','number'=>'1'),//1个商品1个*/


    )
);
$params['items']=
'[{"product_bn":"FF31122800101036","product_name":"菠菜(约300g)","number":"1"},{"product_bn":"FF31121500203013","product_name":"百乡缘乌鸡(当天现宰  净膛)(约1000g)","number":"1"},{"product_bn":"FF31122800101021","product_name":"青菜(约450g)","number":"1"},{"product_bn":" FF31120000107158","product_name":"500g咸亨糟方腐乳","number":"1"}]';

/*业务参数end*/

//print_r($params);exit;

$retsign=get_sign($params,$token);
$params['sign']=$retsign;
$ret=docurl($url,$params);
//print_r($params);exit;
//print_r($ret);
//exit;

$ret=json_decode($ret,true);//创建发货单成功后
//print_r($ret);exit;
unset($params);

//再重置params,来一次修改发货单的操作
if($ret['rsp']=='succ'){
   $params['direct']='true';
    $params["method"]="b2c.delivery.update";
    $params['format']='json';
    $params['date']=date('Y-m-d H:i:s');
    $params['order_bn']=$ret['data']['tid'];
    $params['delivery_bn']=$ret['data']['delivery_id'];
   $params['status']='succ';


    $retsign=get_sign($params,$token);
    $params['sign']=$retsign;

    $ret=docurl($url,$params);
    print_r($ret);
}
else{
    echo $ret['res'];
}





function get_sign($params, $token) {
    return strtoupper(md5(strtoupper(md5(assemble($params))). $token));
}
function assemble($params) {
    if (!is_array($params))
        return null;
    ksort($params, SORT_STRING);//要排序
   // print_r($params);exit;
    $sign = '';
    foreach ($params AS $key => $val) {
        $sign .= $key . (is_array($val) ? assemble($val) : $val);//json的
    }
    return $sign;
}
//获取https的get请求结果
function docurl($c_url,$data)
{
    //print_r($data);exit;
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $c_url); // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    if($data){
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
    }
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl); // 执行操作
    if (curl_errno($curl)) {
        echo 'Errno'.curl_error($curl);//捕抓异常
    }
    curl_close($curl); // 关闭CURL会话
    return $tmpInfo; // 返回数据
}
?>

  

API调用方式:POST

API接口的地址: http://域名/api
API调用参数:
系统级参数:
'to_api_v' => '2.0', API版本号
'direct' => 'true', 直接调用方式(主要用于测试)
'app_id' => 'ecos.b2c', 实现API服务的Ecstore App

业务级参数:
'method' => 'b2c.goods.get_goods_intro', 调用的API接口名
'goods_id' => '8010', 商品ID

安全签名参数:
'sign' => 参数组键值对和密钥token组合后的MD5值

用于API调用的密钥token,在服务器安装后在config目录下寻找certi.php,就是里面的token值

 

--------------------------------------------------------------------
ecstore 被外部系统请求的api接口

订单相关
b2c.order.iframe_url 外部订单编辑url地址获取
b2c.payment.create 添加订单支付单
b2c.refund.create 添加订单退款单
b2c.delivery.create 添加发货单
b2c.delivery.update 修改发货单
b2c.reship.create 添加退货单
b2c.order.search 搜索订单
b2c.order.detail 查询订单详情
b2c.order.remark 修改订单备注
b2c.order.leave_message 添加订单买家留言
b2c.order.status_update 修改订单状态
b2c.order.ship_status_update 订单发货状态更新接口
b2c.order.check_cost 确认订单价格统计接口
b2c.order.get_wap_order_detail 订单详情接口

售后相关
b2c.aftersale.create 添加售后申请
b2c.aftersale.update 修改售后申请

支付方式相关
ectools.get_payments.get_all(获取所有支付方式)

商品相关
b2c.update_store.updateStore 更新商品库存
b2c.goods.get_cat_list 根据商品分类ID获取下级分类列表
b2c.goods.get_type_detial 根据商品类型ID,获取商品类型详情
b2c.goods.get_store 根据货品ID 查询货品库存
b2c.goods.get_lv_price 根据货品ID 查询货品对应等级价格
b2c.goods.get_goods_intro 根据商品ID,查询商品详情
b2c.goods.search_properties_goods 根据筛选条件查询商品
b2c.goods.get_goods_detail 根据货品ID获取单个货品的详细信息
b2c.brand.get_brand_detail 获取品牌数据(根据品牌排序查询列表)

会员相关
b2c.member.get_encrypt_params 获取会员加密密码参数
b2c.member.signin 会员登录 bbc的方式:
b2c.member.send_signup_sms 对注册的手机号发送验证码
b2c.member.signup 会员注册接口
b2c.member.change_password 会员修改密码
b2c.member.lost_send_vcode 找回密码1,根据手机号码发送验证码
b2c.member.lost_verify_vcode 找回密码2,验证码验证
b2c.member.lost_reset_password 找回密码3,设定新密码 ,并进行修改密码后续操作(发送短信或邮件)
b2c.member.get_cart_info 根据会员ID获取购物车信息
b2c.member.add_cart 保存会员新添加的购物车信息
b2c.member.update_cart 更新购物车信息购物车信息
b2c.member.remove_cart 清除购物车信息购物车信息
b2c.member.save_address 保存会员新建/编辑的收货地址
b2c.member.get_address 根据会员查询收货地址
b2c.member.get_member_info 用户基本信息查询
b2c.member.get_fav 根据用户id获取商品收藏列表
b2c.member.get_order_list 根据用户id调取其订单列表,按照下单时间降序排序
b2c.member.add_comments 发表评论
b2c.member.is_discuss 根据商品ID判断时候能进行评论
b2c.member.get_cat_comments 根据商品ID获取评论列表
b2c.member.get_point_params 获取商品评论的评分参数