نقاط پایانی UPS API و نمونه کد تست PHP

اعتبار سنجی آدرس کد تست پی اچ پی ups api endpoints

ما در حال کار با a از WooCommerce مشتری در حال حاضر که حمل و نقل یو پی اس اعتبار سنجی آدرس و محاسبات هزینه حمل و نقل از کار افتاد. اولین مشکلی که ما شناسایی کردیم این بود که پلاگین حمل و نقل UPS آنها قدیمی بود و دامنه اصلی شرکتی که آن را توسعه داده بود بدافزار داشت... این هرگز نشانه خوبی نیست. بنابراین، ما آن را خریداری کردیم افزونه UPS WooCommerce زیرا توسط توسعه دهندگان Woocommerce به خوبی پشتیبانی می شود.

از آنجایی که سایت آدرس ها را تأیید نمی کند و حمل و نقل را یکپارچه نمی کند، اولین قدم ما تأیید این بود که رابط برنامه نویسی برنامه UPS (API) آماده و عملیاتی شد. یو پی اس سایت خوبی برای بررسی دارد وضعیت API آن.

از آنجایی که به نظر نمی رسید API انجام شود، گام بعدی ما رفع اشکال به صورت محلی بود. جالب اینجاست که هیچ یک از پلاگین ها هیچ ثبت و یا آزمایشی نداشتند تا ببینند آیا ادغام حمل و نقل UPS واقعاً کار می کند یا خیر. حتی تنظیمات اشکال‌زدایی هیچ بازخوردی ارائه نمی‌دهد، و همچنین فایل‌های گزارش ما هم این کار را نمی‌کند. بنابراین، برای آزمایش API، مجبور شدم یک اسکریپت را برنامه ریزی کنم تا در واقع API را آزمایش کنم.

من دانلود کیت توسعه دهنده UPS API... که شامل نمونه های کد بود ... و مثل همیشه گیج شده بود. مستندات محدود است، نقاط پایانی برای API حتی فهرست نشده اند، و نمونه کدها به خوبی مستند نشده اند.

دانلود UPS API Developer Kit

در نتیجه، مجبور شدم کمی جستجو کنم... اولین مورد شناسایی نقاط پایانی برای API آنها بود. من نقاط پایانی آزمایش مستند را پیدا کردم، کدم را نوشتم و آن را آزمایش کردم ... بدون موفقیت. کمی بیشتر حفاری کردم و متوجه شدم که نقاط پایانی آزمایش اساساً بی فایده بودند. اوه

نقاط پایانی UPS API

من توانستم موضوعی را در یک سایت توسعه پیدا کنم که در آن لیست شده است نقاط پایانی تولید UPS API:

  • 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

ساده ترین تست این است اعتبار سنجی آدرس نقطه پایان (پررنگ بالا) بنابراین از کد ارائه شده برای نوشتن یک اسکریپت کوچک PHP استفاده کردم که آدرس را ارسال می کرد و با موفقیت یا عدم موفقیت پاسخ می داد. در صورتی که می خواهید از آن استفاده کنید، کد زیر آمده است:

فایل تست UPS API PHP برای اعتبار سنجی آدرس

در اینجا اسکریپت PHP به روز شده برای آزمایش 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>

این اسکریپت حداقل به شما نشان می دهد که آیا اعتبار شما با نقطه پایانی اعتبارسنجی آدرس UPS API کار می کند یا خیر. من متوجه شدم که روش PHP (fopen) برای ارسال به API آنها در این مثال بالا کمی قدیمی است ... اما من فقط می خواستم کد تست آنها را به کار ببرم.

افشای: Martech Zone از آن استفاده می کند از WooCommerce پیوندهای وابسته در این مقاله