请求地址:https://taoapi.ndxiu.com/service/get_sku.php
请求方式:get
请求示例:{tid:'商品id',appkey:'专属appkey',sign:'签名参数',noncestr:'随机字符串'}
建议场景:为了保证接口调用效率,建议在客户端使用ajax方法发起调用。
请求参数信息
SKU接口返回的信息
上图是SKU接口返回的信息,可以看出包括商品主图、标题等基础信息和SKU数据信息,SKU数据中包括了sku_id、各个sku_id的库存数量、价格以及sku对应的图片等信息。有了这些数据就可以通过jq构造出SKU选择功能了。
服务端生成签名参数(以PHP为例):
//这里是您自己的鉴权代码,通过鉴权后才开始下面的签名
$appkey = 'tbw******'; //这里填写您的appkey
$appsecret = '******'; //这里填写您的appsecret
$noncestr = getNonceStr(6); //生成随机字符串
$signature = getSignature($appkey,$appsecret,$noncestr,$tid); //生成签名
echo json_encode(array('tid'=>$tid,'appkey'=>$appkey,'sign'=>$signature,'noncestr'=>$noncestr)); //输出json字符串到客户端
//获取随机字符串的函数
function getNonceStr($length){
$chars = 'abcdefghijklmnopqrstuvwxyz';
$str = '';
for($i = 0; $i < $length; $i++){
$str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
return $str.date('dHi'); //附带上时间,共生成12位长度的随机字符串
}
//通过md5加密生成签名的函数
function getSignature($appkey,$appsecret,$noncestr,$tid){
$string = $appkey.$appsecret.$noncestr.$tid;
$md5 = md5($string);
return $md5;
}
何时开始签名?当您的用户访问商品详情页并点击“立即购买”或“加入购物车”时发起签名,使用 getJSON 方法从您自己的服务器获取,也就是当您需要调用本站SKU接口时才开始获取签名,如此可以最大限度保证您的签名参数不被他人使用。再举个例子,您可以在服务端签名代码的头部加入 Referer 白名单验证(为了防止伪造Referer,应同时使用SessionID进行验证),或者直接使用您自己的鉴权方法(比如用户目前是登录状态的情况下才能获取签名),以避免签名接口被恶意调用。
值得注意的是,每次生成的签名只能调用一次SKU接口,不能复用。
客户端使用ajax发起调用:
function getSku(tid,appkey,sign,noncestr){ //传入的实参建议不要暴露给全局
$.ajax({
type: 'GET', //使用GET请求方式
async: false,
url: 'https://taoapi.ndxiu.com/service/get_sku.php',
data: {
tid:tid,
appkey:appkey,
sign:sign,
noncestr:noncestr
},
dataType: 'jsonp', //解决跨域调用问题
jsonp: 'callback',
jsonpCallback: 'showSku',
success: function(jsonp){
if(!$.isEmptyObject(jsonp.skuBase)){
//生成并显示SKU选择页
}else{
//不存在SKU,则直接转到下单页
}
},
error: function(){}
});
}











网友评论