目标:串接虾皮订单、标签资讯,目前串接虾皮 OpenAPI 2.0 版本,串接手册
串接步骤:
前篇有取得订单的资料了,这次要来尝试串接物流单的 API
在取得物流单前,一样可以先参考一下虾皮的 API Call Flows 里的 Arrange Shipment & Get TrackingNo & Print AirwayBill,有清出列出取得物流单的步骤
这次的取得物流单的前提是,虾皮已经帮我产生物流单号,所以这张图我们只看下半部即可
最上面的菱形区块是在问是否要自己设计物流单,如果是的话就走左边,打 get_shipping_document_info 那个 API,如果不是的话就走右边然後按照顺序执行那四个 API
说明一下,这两者的差异:
方法 1(左边):打一个 API,你会获得物流单上的所有资讯。
方法 2(右边):打完四个步骤的 API,你获得可以直接拿来列印的物流单档案。
这个 API 可以让你取得物流单的资讯
公共参数:
参数 | 类型 | 说明 |
---|---|---|
sign | string | access_token、partner_id、api path、shop_id、timestamp HMAC-SHA256 编码,并用 partner key 当作加密 Key (可参授权商店那一篇) |
partner_id | int | Create App 产生的 partner_id (可参Create App 那一篇) |
timestamp | int | 时间戳,期限 5 min |
access_token | string | 期限 4 小时(可参取得 access token 那一篇) |
shop_id | int | 商店 ID(可参授权商店那一篇) |
业务参数:(因为是 GET,所以要带到 url 的 query)
参数 | 类型 | 说明 |
---|---|---|
order_sn | string | 虾皮的订单单号,必填 |
package_number | string | 虾皮的订单包裹编号,非必填 |
以 PHP 为例
// 取得托运单资讯
function getShippingDocumentInfo(
$host,
$partnerId,
$partnerKey,
$timestamp,
$access_token,
$shop_id,
$order_sn
){
$path='/api/v2/logistics/get_shipping_document_info';
$base_string=strval($partnerId.$path.$timestamp.$access_token.$shop_id);
$sign=hash_hmac('sha256',$base_string,$partnerKey,false);
$paremeter='&order_sn='.$order_sn;
$url=$host.$path.'?partner_id='.$partnerId.'×tamp='.$timestamp.'&sign='.$sign.'&access_token='.$access_token.'&shop_id='.$shop_id.$paremeter;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
$res = curl_exec($ch);
return $res;
}
串接成功後你就会收到物流单对应的资讯,超商物流单上的条码是已经编译好的,只要依照各个物流单的规范把资讯对应到相对的位置就可以自制物流单了!
方法 2 直接取得物流单会需要打四个 API:
URL | 说明 | 请求方式 |
---|---|---|
get_shipping_document_parameter | 取得建议的物流单种类 台湾的话有两种:- NORMAL_AIR_WAYBILL 普通列印(一页可以多张标签) -THERMAL_AIR_WAYBILL 热感列印(一页只有一张标签) | POST |
create_shipping_document | 建立物流单 注意:要在 TrackingNo 产生後才能建立,如果状态已经变成 SHIPPED 就不能再建立 | POST |
get_shipping_document_result | 取得建立物流单的结果 结果有 READY, FAILED, PROCESSING | POST |
download_shipping_document | 下载物流单 get_shipping_document_result 结果是 READY 才可以下载 | POST |
(其他详细内容也可以参考虾皮的【FAQ】)
如果没有 create_shipping_document 直接去打 download_shipping_document 是不会有档案的
所以要乖乖照 API Call Flows 的流程走才会顺利取得物流单
以 7-11 店到店为例,download_shipping_document 最後会跳到平常用店到店要列印物流单的画面,这样你就可以直接列印物流单了
方法 1 相对来说自由度高一些,因为只会有资讯,你可以用那些资讯排版,然後再自由加上一些你想加的资讯,方法 2 的话,可以直接列印物流单,不用自己排版,相对来说方便一点。
总之两种方法都各有好处,就看自己要怎麽利用了。
个人觉得虾皮的 API 除了前面授权取 access token 时需要花一点时间研究,後面串接资料的时有感受到开发者的贴心,请求的参数很弹性,取得资料的栏位也可以自行决定,另外手册的范例、说明也都蛮清楚,就连印个标签也有两种方式让你选呢!
API Call Flows
【FAQ】Open API_物流相关问题
<<: crontab 自动检测服务关闭,自动开启- 相关笔记 20220519
>>: 资安学习路上-picoCTF 解题(crypto)2
66. Plus One 今天这一题相对单纯、简单一些,但当中也有一些小技巧和观念,还是蛮值得一看的...
=== 书接上回 [Day 21] Edge Impulse + BLE Sense实现唤醒词辨识(...
攻击者会使用Trojan horses(木马程序)来诱骗使用者在电脑上执行预先设计的操作, 一旦木马...
昨天我们聊完了子代出生後所要面临的第一个挑战 - 突变。 我们接着来聊聊整个基因演算法里面最重要的一...
Azure machine learning: Upload data- 自己的资料自己传 要做汇率...