速卖通API开发步骤

关键字段说明

1、appKey和appSecret   

appKey是app的唯一标识,appSecret是app的密钥,它们相当于用户名和密码。注册app之后就会生成一个appKey和appSecret,请妥善保存。

2、code   

即临时令牌。当用户在开放平台访问app前,需对app进行授权,用户授权后,app方可访问用户的隐私数据。用户在完成授权之后,会跳转到redirect_uri,并带上临时令牌code,app再用code从开放平台后台接口换取access_token。code为一次性令牌,有效期为2分钟。

3、accessToken   

即用户授权令牌,为用户一次会话的授权标识,有效期10小时。在获得code后,通过调用开放平台后台接口getToken来获取accessToken。 App在访问用户隐私数据时,需要带上accessToken,也只有accessToken才能作为访问的凭证,其他token如code和refreshToken都不能直接作为访问凭证,需要转换为accessToken之后才能访问用户隐私数据。

4、refreshToken   

即长时令牌,有效期半年。当access_token过期后,可以使用refreshToken换取新的accessToken访问用户数据。

5、redirect_uri   即回调地址,指的是App发起请求时,所传的回调地址参数,必填。请参考授权流程中的说明。 API参考说明地址: http://gw.api.alibaba.com/dev/doc/sys_auth.htm?ns=aliexpress.open   速卖通API官网地址

开发逻辑流程

伸手党福利

代码虽然很乱,但感觉很对的起伸手党了,哈哈!!!

/*
* 获取信息模板
*/
public static function getAccountTemplates($config)
{
$config[‘moduleStatus‘] = ‘approved‘;
$config[‘pageIndex‘] = 1;
$apiname = "api.findAeProductDetailModuleListByQurey";
//获取信息模板
$accountTemplats = Apiservice::getinfo($config,$apiname);
return $accountTemplats;
}

/*
* 获取帐号appkey
*/
public static function getacountinfo($account)
{
$account = DB::SELECT(‘appkey‘,‘account‘,‘appsecret‘)
->from(‘account‘)
->where(‘account‘,‘=‘,$account)
->execute(‘system‘)
->current();
return $account;
}

//新方法获取通行证
public static function newupdatetoken($account)
{
$row = Apiservice::newgetaccounts($account[‘account‘]);
if((strtotime($row[‘access_create_time‘])+10*3600-60*10)<time()){
$ali = new Getapi();
$accessToken = $ali->getaccesstoken($row[‘refresh_token‘],$account[‘appkey‘],$account[‘appsecret‘]); //通过refreshToken换取accessToken
if(isset($accessToken[‘error‘])){
return $accessToken;
}
$set = array(
‘access_token‘ => $accessToken[‘access_token‘],
‘access_create_time‘ => date(‘Y-m-d H:i:s‘,time()),
);

$sql = "UPDATE `erp_aliexpress_accounts`
SET access_token=‘".$accessToken[‘access_token‘]."‘,access_create_time=‘".date(‘Y-m-d H:i:s‘)."‘
WHERE `aliId`=".$accessToken[‘aliId‘];

DB::query(Database::INSERT,$sql)
->execute(‘system‘);

$row[‘access_token‘] = $accessToken[‘access_token‘];
}elseif((strtotime($row[‘refresh_create_time‘])+180*24*3600)<time()){
$row[‘access_token‘] = NULL;
}
return $row[‘access_token‘];
}

/**
* 获取速卖通新帐号
* Enter description here ...
* @param unknown_type $account
*/
public static function newgetaccounts($account = ‘‘,$fields = ‘‘)
{
if(empty($account)){
return ‘账户为空‘;
}else{

$result = DB::select(‘access_token‘,‘refresh_token‘,‘access_create_time‘,‘refresh_create_time‘)
->from(‘erp_aliexpress_accounts‘)
->where(‘aliexpress_account‘,‘=‘,$account)
->execute(‘system‘)
->current();
}
return $result;
}

/*
* 获取帐号appkey
*/
public static function getacountinfo($account)
{
$account = DB::SELECT(‘appkey‘,‘account‘,‘appsecret‘)
->from(‘account‘)
->where(‘account‘,‘=‘,$account)
->execute(‘system‘)
->current();
return $account;
}

/*
* 公用方法
*/
public static function getinfo($config,$apiname)
{
$appkey = Apiservice::getacountinfo($config[‘account‘]);
$config[‘appkey‘] = $appkey[‘appkey‘];
//获取信息模板
$api = new getapi();
$result = $api::api($config,$apiname);
return $result;
}

const URL = ‘http://gw.api.alibaba.com/openapi/‘;
const SITE = ‘aliexpress‘;

/*
* api公用方法
*/
public function api($set,$apiname)
{
if(empty($set[‘access_token‘])){
return FALSE;
}
$api_url = ‘param2/1/aliexpress.open/‘.$apiname.‘/‘.$set[‘appkey‘];
$url = Getapi::URL.$api_url;
$data = http_build_query($set);
$result = Getapi::sendRequestCurl($url,$data);
return $result;
}

/**
* 发送请求
* Enter description here ...
* @param unknown_type $url
* @param unknown_type $data
*/
protected static function sendRequestCurl($url,$data)
{

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_TIMEOUT,300);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response,TRUE);
return $response;
}

/*
* 通过refreshToken换取accessToken
* Enter description here ...
* @param unknown_type $refreshToken
*/
public function getaccesstoken($refreshtoken,$appkey,$appsecret)
{
$code_arr = array(
‘client_id‘ => $appkey,
‘grant_type‘ => ‘refresh_token‘,
‘client_secret‘ => $appsecret,
‘refresh_token‘ => $refreshtoken,
);
$sign_str = ‘param2/1/system.oauth2/refreshToken/544880‘;
$code_sign = Getapi::apiSign($appsecret,$code_arr,$sign_str,$appsecret);
$getTokenUrl = ‘https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/refreshToken/‘.$appkey;
$data = ‘grant_type=refresh_token&refresh_token=‘.$refreshtoken.‘&client_id=‘.$appkey.‘&client_secret=‘.$appsecret.‘&_aop_signature=‘.$code_sign;
$result = $this->sendRequestCurl($getTokenUrl,$data);
return $result;
}

/**
* 签名串组规则
* Enter description here ...
* @param unknown_type $redirectUrl
*/
protected static function apiSign($appsecret,$code_arr,$sign_str = ‘‘)
{
ksort($code_arr);
foreach($code_arr as $key => $val){
$sign_str .= $key.$val;
}
$code_sign = strtoupper(bin2hex(hash_hmac("sha1",$sign_str,$appsecret,TRUE)));
return $code_sign;
}

时间: 2024-11-01 14:57:57

速卖通API开发步骤的相关文章

外贸开发,用java调用速卖通api第一步,token的获取。

第一步 定义速卖通api的常量 public String client_id; public String client_key; public String site; 第二步 获取登陆的uRL /** * getloginurl * @param redirect_uri * @return */ public String GetLoginUrl(String redirect_uri) { String param = (new StringBuilder("client_id=&qu

分享下速卖通api的java的入门代码

package com.print.base; import java.io.*; import java.math.BigInteger; import java.net.URL; import java.net.URLEncoder; import java.util.*; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import net.sf.json.JSONArray; import net.sf.j

速卖通AE平台+聚石塔+奇门 完整教程V2

公司是跨境电商,在阿里马马的速卖通平台上开有店铺,并且基于速卖通开放平台,自主研发了ERP系统,居今已有3年多的时间了,一直很稳定. 今年初,速卖通AE开放平台改版,并入淘宝开放平台中,我们的麻烦就开始了...从最初始的申请资格开始,一步一步的研究.自测.到最近才小有成就.下面就把一路走来填的坑分享下,希望给新人指点吧 使用速卖通AE新版开放平台,我们先看看需要哪些条件 1,要有一个企业级别的支付宝帐号,注:必须是企业级别. 2,要有软著,就是软件著作权证书 这2个都有了,才能去申请. 申请类型

速卖通返回503错误

问题:调用速卖通接口出现503错误,可能你的网络连接设置了国外的DNS,导致无法訪问到速卖通接口 原因:因为速卖通接口仅仅能在国内訪问,而一些客户设置国外的DNS,比如非常多客户会用GOOGLE DNS,8.8.8.8和8.8.4.4.就会出现上述的问题. 解决的方法,不用dns解析,直接用ip地址 将http://gw.api.alibaba.com    替换成  110.75.69.81 本来url是这种 http://gw.api.alibaba.com/openapi/param2/1

速卖通 排序规则解析

排序规则解析 一.搜索排序的原则 AliExpress搜索的整体目标是帮助我们的买家快速找到想要的商品并且能够有比较好的采购交易体验,而搜索的排名的目标就是要将最好的商品.服务能力最好的卖家优先推荐给我们的买家,谁能带给买家最好的采购体验,谁的商品就会排序靠前. 在排序过程中,我们将始终坚持公平的原则,对于所有的卖家采取相同的标准,给予表现好的卖家更多的曝光机会,降低表现差的卖家曝光机会甚至没有曝光机会.我们提倡卖家间公平竞争,优胜劣汰,能够提供最好的采购体验给我们的买家,让更多的买家满意愿意来

第一篇:速卖通产品采集系列 之 产品采集分析

电商网站产品采集,我相信是一个很需要的功能,主要能够减轻产品编辑和上架所带来一些繁琐的事情,当然除了电商这块,其他方面数据采集也是需要的,比喻新闻类门户等,这系列我们来讲讲如何来采集速卖通产品,主要要说明一下,这里不考虑Ajax,验证码等特殊环境,我们采集速卖通如果不是采集很频繁,就当作为一个良性的采集环境,下面就不太多废话了,直接先分析采集产品信息,包含变体(有Color,Size,且价格不一样,做为多个产品采集下来). 一.采集前技术和相关工具 1. C#正则表达式学习:(正则表达式用来干嘛

速卖通流量入口有哪些,速卖通怎么引流?

有足够多的流量是提升店铺成交量的前提,今天要和大家分享速卖通怎么引流?速卖通站内.站外流量入口有哪些? 一.速卖通站内流量 1.速卖通橱窗推荐 速卖通平台在卖家达到一定等级或者在一些特殊活动中会赠送橱窗位.与线下商店靠近窗户或门口的橱窗位置相似,被橱窗推荐的产品将在同等质量的产品中优先排名,近一步提升曝光.合理利用这一点也能获取不菲的免费流量. 挑选好橱窗产品是关键中的关键,一般可以结合以下几点来挑选橱窗产品:主打产品.热销产品.新出产品.或者结合季节和展会. 需要强调的是,橱窗在速卖通平台的买

速卖通---发布商品aeopAeProductPropertys这个字段值报07004013的错误

由于文档的说明很少,导致里面改填写那些值都是靠自己推敲出来,当然可以根据他们的错误提示了研究,他们的错误提示也给出了相关的帮助了, 例如通过categoryid的200000001获取到"id":10,"values":[{"id":200002203,"names":{"zh":"醋酸纤维","en":"Acetate"},"attri

速卖通新店运营必看的6个思路

1. 打破原有思路,优化产品结构. 杂货时代已经过去了,再想凭借多发布产品来获取更多流量已经不可能了,比如现在在淘宝上,谁还记得淘宝的第一个金冠店柠檬绿茶呢?所以,在新形势下,一定要做到优化产品结构,重点打造核心产品,而不是盲目铺货,胡乱上新. 2. 提高产品质量,精选高质产品. Ebay已经因为整个平台产品品质不高而开始没落,Amazon则因为产品品质和物流时效得到越来越多的顾客的青睐,速卖通虽然凭着起步时蛮干抢粮的方式,从新兴国家市场拔得头筹,但下一步的发展,对产品品质方面的要求会越来越高,