El. Prekyba ir mažmeninė prekyba

UPS API galutiniai taškai ir PHP testo kodo pavyzdys

Mes dirbame su a WooCommerce klientas šiuo metu kurio UPS siuntimas nustojo veikti adreso patvirtinimo ir siuntimo išlaidų skaičiavimai. Pirmoji problema, kurią nustatėme, buvo tai, kad jų turimas UPS siuntimo papildinys buvo pasenęs, o pagrindiniame jį sukūrusios įmonės domene buvo kenkėjiškų programų... tai niekada nėra geras ženklas. Taigi, mes įsigijome WooCommerce UPS papildinys nes ją puikiai palaiko „Woocommerce“ kūrėjai.

Kadangi svetainė nepatvirtina adresų ir neintegruoja siuntimo, pirmasis žingsnis buvo patikrinti, ar UPS taikomųjų programų programavimo sąsaja (API) buvo sukurtas ir veikė. UPS turi puikią svetainę, kurioje galima patikrinti jo API būsena.

Kadangi atrodė, kad API nebuvo sukurta, kitas žingsnis buvo problemos derinimas vietoje. Įdomu tai, kad nei vienas papildinys neturėjo nei registravimo, nei testavimo, siekiant išsiaiškinti, ar UPS siuntimo integracija iš tikrųjų veikė. Net derinimo nustatymas nepateikė jokių atsiliepimų, taip pat mūsų žurnalo failai. Taigi, norėdamas išbandyti API, turėjau užprogramuoti scenarijų, kad iš tikrųjų išbandyčiau API.

Aš parsiųsta UPS API kūrėjo rinkinys... į kurį buvo įtraukti kodo pavyzdžiai... ir buvo supainioti kaip visada. Dokumentacija yra ribota, API galutiniai taškai net nebuvo išvardyti, o kodo pavyzdžiai nėra gerai dokumentuoti.

Atsisiųskite UPS API kūrėjo rinkinį

Dėl to turėjau šiek tiek iškasti… pirmiausia buvo nustatyti jų API galinius taškus. Radau dokumentuotus testavimo galutinius taškus, parašiau savo kodą ir išbandžiau... nesėkmingai. Dar šiek tiek kasinėjau ir sužinojau, kad testavimo galutiniai taškai iš esmės buvo nenaudingi. Ugh.

UPS API galutiniai taškai

Kūrimo svetainėje man pavyko rasti giją, kurioje nurodyta UPS API gamybos galutiniai taškai:

  • 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

Lengviausia išbandyti yra Adreso patvirtinimas (paryškintas aukščiau) galutinis taškas, todėl naudojau pateiktą kodą, kad parašyčiau nedidelį PHP scenarijų, kuris perdavė adresą ir atsakė, ar jis buvo sėkmingas, ar ne. Štai kodas, jei norite jį naudoti:

UPS API PHP bandomasis failas adreso patvirtinimui

Štai atnaujintas PHP scenarijus, skirtas adreso patvirtinimo UPS API galutinio taško testavimui:

<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>

Šis scenarijus bent parodys, ar jūsų kredencialai dirba su UPS API adreso patvirtinimo galutiniu tašku. Suprantu, kad PHP metodika (fopen), skirta skelbti jų API, šiame pavyzdyje yra šiek tiek pasenusi... bet aš tiesiog norėjau, kad jų bandomasis kodas veiktų.

Atskleidimas: Martech Zone naudojasi juo WooCommerce filialų nuorodos šiame straipsnyje.

Douglas Karr

Douglas Karr yra BRO OpenINSIGHTS ir įkūrėjas Martech Zone. Douglas padėjo daugybei sėkmingų MarTech pradedančiųjų įmonių, padėjo atlikti daugiau nei 5 mlrd. Douglas yra tarptautiniu mastu pripažintas skaitmeninės transformacijos ir MarTech ekspertas bei pranešėjas. Douglasas taip pat yra paskelbtas Dummie vadovo ir verslo lyderystės knygos autorius.

Susiję straipsniai

Atgal į viršų mygtukas
arti

Aptiktas skelbimų blokas

Martech Zone gali pateikti jums šį turinį nemokamai, nes gauname pajamų iš savo svetainės per pajamas iš skelbimų, filialų nuorodas ir rėmimą. Būtume dėkingi, jei peržiūrėdami mūsų svetainę pašalintumėte skelbimų blokavimo priemonę.