📅  最后修改于: 2023-12-03 15:03:44.986000             🧑  作者: Mango
本文将介绍如何在PHP中使用DHL API创建一个货件。DHL API是DHL提供的Web服务,可以实现快递查询、标签打印、创建运单等功能。
在使用DHL API之前,您需要先申请一个DHL账号,然后创建一个开发者账号并获取访问密钥。可以参考DHL开发者指南了解如何进行身份验证。
在使用DHL API之前,需要准备API的访问信息。这些信息包括:
$endpoint = 'https://api.dhl.com/';
$access_key = '<your_access_key>';
$secret_password = '<your_secret_password>';
$nonce = time();
创建请求头时,需要使用访问密钥和随机字符串生成一个hash值,并将这个hash值和DHL的API版本号加入到请求头中。
$version = '2';
$signature = base64_encode(hash('sha256', $access_key.$nonce.$timestamp.$secret_password, true));
$headers = [
'Content-Type: application/json',
"Authorization: {$access_key}:{$signature}",
"X-Date: {$timestamp}",
"DHL-API-Version: {$version}"
];
通过DHL API,可以实现创建货件的功能。创建货件的请求体需要包含货件的详细信息,如发件人信息、收件人信息、货物信息、服务类型等。
$data = [
'requestedShipment' => [
'shipTimestamp' => '2022-01-01',
'unitOfMeasurement' => 'SI',
'content' => 'NON_DOCUMENTS',
'paymentInfo' => [
'paymentType' => 'S',
'accountNumber' => '<your_account_number>',
'billingAccountNumber' => '<your_billing_account_number>'
],
'internationalDetail' => [
'commodities' => [
[
'numberOfPieces' => 1,
'description' => 'DHL PHP API Test',
'weight' => [
'value' => 1,
'unitOfMeasurement' => 'KG'
],
'customsValue' => [
'amount' => 10,
'currencyCode' => 'USD'
]
]
]
],
'ship' => [
'shipper' => [
'name' => 'John Smith',
'streetLines' => ['123 Main St'],
'city' => 'Anytown',
'postalCode' => '99999',
'countryCode' => 'US'
],
'recipient' => [
'name' => 'Jane Doe',
'streetLines' => ['321 Oak St'],
'city' => 'Anytown',
'postalCode' => '99999',
'countryCode' => 'US',
'phone' => '111-111-1111'
]
],
'shipperReference' => 'DHL PHP API Test',
'labelResponseType' => 'URL',
'pickup' => [
'pickupType' => 'N',
'pickupDate' => '2022-01-01',
'readyByTime' => '10:00',
'closingTime' => '18:00'
],
'totalWeight' => [
'value' => 1,
'unitOfMeasurement' => 'KG'
],
'numberOfPieces' => 1,
'productCode' => 'P',
'doorTo' => 'DD'
]
];
最后,使用curl发送请求,并处理DHL API返回的响应。如果请求成功,DHL API将返回一个JSON格式的消息体,其中包含货件的详细信息和标签URL等。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $endpoint . 'rest/v1/shipping/CreateShipmentRequest');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);
$response = json_decode($result, true);
if ($response['status']['statusCode'] === '0') {
$labelUrl = $response['label']['labelImage'];
echo "货件创建成功,标签URL为: {$labelUrl}。";
} else {
echo "货件创建失败,错误信息为:{$response['status']['statusMessage']}。";
}
使用DHL API创建货件的流程如上所述。在使用DHL API之前,需要先准备API访问信息,并创建HTTP请求头和请求体。最后,使用curl发送请求,并处理DHL API返回的响应。