Titik Akhir API UPS dan Contoh Kod Ujian PHP
Kami sedang bekerjasama dengan a WooCommerce pelanggan sekarang yang Penghantaran UPS pengesahan alamat dan pengiraan kos penghantaran berhenti berfungsi. Isu pertama yang kami kenal pasti ialah pemalam penghantaran UPS yang mereka miliki sudah lapuk dan domain teras untuk syarikat yang membangunkannya mempunyai perisian hasad... itu bukan petanda yang baik. Jadi, kami membeli Pemalam WooCommerce UPS kerana ia disokong dengan baik oleh pembangun Woocommerce.
Dengan tapak tidak mengesahkan alamat atau menyepadukan penghantaran, langkah pertama kami adalah untuk mengesahkan bahawa antara muka pengaturcaraan aplikasi UPS (API) telah siap dan beroperasi. UPS mempunyai tapak yang bagus untuk menyemak status APInya.
Memandangkan API nampaknya tidak selesai, langkah seterusnya kami ialah menyahpepijat isu itu secara setempat. Menariknya, kedua-dua pemalam tidak mempunyai sebarang pengelogan atau ujian untuk melihat sama ada penyepaduan penghantaran UPS benar-benar berfungsi. Malah tetapan nyahpepijat tidak memberikan sebarang maklum balas, begitu juga fail log kami. Jadi, untuk menguji API, saya terpaksa memprogramkan skrip untuk benar-benar menguji API.
Saya muat turun Kit Pembangun API UPS… yang termasuk sampel kod… dan keliru seperti biasa. Dokumentasi adalah terhad, titik akhir untuk API tidak disenaraikan, dan sampel kod tidak didokumenkan dengan baik.
Muat turun Kit Pembangun API UPS
Akibatnya, saya terpaksa melakukan beberapa penggalian... yang pertama ialah mengenal pasti titik akhir untuk API mereka. Saya menemui titik akhir ujian yang didokumenkan, menulis kod saya dan mengujinya… tanpa kejayaan. Menggali sedikit lagi dan saya mendapati bahawa titik akhir ujian pada dasarnya tidak berguna. Ugh.
Titik Akhir API UPS
Saya dapat mencari benang di tapak pembangunan yang menyenaraikan Titik akhir pengeluaran API UPS:
- https://onlinetools.ups.com/ups.app/xml/TimeInTransit
- https://onlinetools.ups.com/ups.app/xml/License
- https://onlinetools.ups.com/ups.app/xml/QVEvents
- https://onlinetools.ups.com/ups.app/xml/Register
- https://onlinetools.ups.com/ups.app/xml/AV
- https://onlinetools.ups.com/ups.app/xml/ShipAccept
- https://onlinetools.ups.com/ups.app/xml/Void
- https://onlinetools.ups.com/ups.app/xml/XAV
- https://onlinetools.ups.com/ups.app/xml/Track
- https://onlinetools.ups.com/ups.app/xml/Rate
- https://onlinetools.ups.com/ups.app/xml/ShipConfirm
- https://onlinetools.ups.com/ups.app/xml/LabelRecovery
Yang paling mudah untuk diuji ialah Pengesahan Alamat (tebal di atas) titik akhir jadi saya menggunakan kod yang disediakan untuk menulis skrip PHP kecil yang melepasi alamat dan membalas sama ada ia berjaya atau gagal. Berikut ialah kod sekiranya anda ingin menggunakannya:
Fail Ujian PHP API UPS untuk Pengesahan Alamat
Berikut ialah skrip PHP yang dikemas kini untuk menguji Titik Akhir API Pengesahan Alamat:
<html>
<head>UPS Address Validation Test</head>
<body>Response: <?php
// Configuration
$accessLicenseNumber = "Insert Your API Key";
$userId = "Insert Your User ID";
$password = "Insert Your Password";
$endpointurl = 'https://onlinetools.ups.com/ups.app/xml/AV';
try {
// Create AccessRequest XMl
$accessRequestXML = new SimpleXMLElement ( "<AccessRequest></AccessRequest>" );
$accessRequestXML->addChild ( "AccessLicenseNumber", $accessLicenseNumber );
$accessRequestXML->addChild ( "UserId", $userId );
$accessRequestXML->addChild ( "Password", $password );
// Create AddressValidationRequest XMl
$avRequestXML = new SimpleXMLElement ( "<AddressValidationRequest ></AddressValidationRequest >" );
$request = $avRequestXML->addChild ( 'Request' );
$request->addChild ( "RequestAction", "AV" );
$address = $avRequestXML->addChild ( 'Address' );
$address->addChild ( "City", "ALPHARETTA" );
$address->addChild ( "PostalCode", "300053778" );
$requestXML = $accessRequestXML->asXML () . $avRequestXML->asXML ();
$form = array (
'http' => array (
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => "$requestXML"
)
);
// get request
$request = stream_context_create ( $form );
$browser = fopen ( $endpointurl, 'rb', false, $request );
if (! $browser) {
throw new Exception ( "Connection failed." );
}
// get response
$response = stream_get_contents ( $browser );
fclose ( $browser );
if ($response == false) {
throw new Exception ( "Bad data." );
} else {
// get response status
$resp = new SimpleXMLElement ( $response );
echo $resp->Response->ResponseStatusDescription . "\n";
}
} catch ( Exception $ex ) {
echo $ex;
}
?>
</body>
</html>
Skrip ini sekurang-kurangnya akan menunjukkan kepada anda sama ada kelayakan anda berfungsi dengan titik akhir Pengesahan Alamat API UPS atau tidak. Saya sedar metodologi PHP (fopen) untuk menghantar ke API mereka agak lama dalam contoh di atas ini... tetapi saya hanya mahu memastikan kod ujian mereka berfungsi.
Pendedahan: Martech Zone sedang menggunakan WooCommerce pautan gabungan dalam artikel ini.