UPS API endapunktar og sýnishorn af PHP prófunarkóða
Við erum að vinna með a WooCommerce viðskiptavinur núna hvers UPS sendingarkostnaður staðfesting á heimilisfangi og útreikningar á sendingarkostnaði hættu að virka. Fyrsta vandamálið sem við fundum var UPS sendingarviðbótin sem þeir höfðu var úrelt og kjarnalén fyrirtækisins sem þróaði það var með spilliforrit... það er aldrei gott merki. Svo við keyptum WooCommerce UPS viðbót þar sem það er vel stutt af hönnuðum Woocommerce.
Þar sem vefsíðan staðfestir ekki heimilisföng né samþættir sendingar, var fyrsta skrefið okkar að sannreyna að UPS forritunarviðmótið (API) var uppi og gangfær. UPS er með fína síðu til að athuga stöðu API þess.
Þar sem API virtist ekki vera gert var næsta skref okkar að kemba málið á staðnum. Athyglisvert er að hvorki viðbótin hafði neina skráningu né prófun til að sjá hvort UPS flutningssamþættingin virkaði í raun. Jafnvel villuleitarstillingin gaf enga endurgjöf, né annálaskrár okkar. Svo, til þess að prófa API, þurfti ég að forrita handrit til að prófa API.
Ég sótti niður UPS API þróunarsett… sem innihélt kóðasýni … og var ruglað eins og alltaf. Skjölin eru takmörkuð, endapunktar fyrir API voru ekki einu sinni skráðir og kóðasýnin eru ekki vel skjalfest.
Fyrir vikið þurfti ég að grafa smá... það fyrsta var að bera kennsl á endapunkta fyrir API þeirra. Ég fann skjalfesta prófunarendapunkta, skrifaði kóðann minn og prófaði hann ... án árangurs. Aðeins meira að grafa og ég komst að því að prófunarendapunktarnir voru í grundvallaratriðum gagnslausir. Úff.
UPS API endapunktar
Ég gat fundið þráð á þróunarsíðu sem skráði UPS API framleiðsluendapunktar:
- 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
Auðveldast að prófa er Staðfesting heimilisfangs (feitletrað fyrir ofan) endapunkt þannig að ég notaði kóðann sem gefinn var upp til að skrifa lítið PHP forskrift sem fór framhjá heimilisfanginu og svaraði með því hvort það heppnaðist eða mistókst. Hér er kóðinn ef þú vilt nota hann:
UPS API PHP prófunarskrá fyrir staðfestingu heimilisfangs
Hér er uppfært PHP forskrift til að prófa Address Validation UPS API Endpoint:
<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>
Þetta handrit mun að minnsta kosti sýna þér hvort skilríki þín séu að vinna með UPS API Address Validation endapunkti eða ekki. Ég geri mér grein fyrir að PHP aðferðafræðin (fopen) til að senda inn á API þeirra er svolítið gömul í þessu dæmi hér að ofan ... en ég vildi bara fá prófkóðann þeirra til að virka.
Birting: Martech Zone er að nota sitt WooCommerce tengd tenglar í þessari grein.