نقاط نهاية API UPS ونموذج كود اختبار PHP

يو بي إس api endpoints php اختبار رمز التحقق من صحة العنوان

نحن نعمل مع كتب مريم الدخيل لاكاديمية الثراء العميل الآن الذي UPS الشحن توقف التحقق من صحة العنوان وحسابات تكلفة الشحن عن العمل. كانت المشكلة الأولى التي حددناها هي المكون الإضافي للشحن UPS الذي كان لديهم قديمًا وكان المجال الأساسي للشركة التي طورته يحتوي على برامج ضارة ... وهذه ليست علامة جيدة أبدًا. لذلك ، قمنا بشراء البرنامج المساعد WooCommerce UPS نظرًا لأنه مدعوم جيدًا من قِبل مطوري Woocommerce.

نظرًا لعدم قيام الموقع بالتحقق من صحة العناوين أو دمج الشحن ، كانت خطوتنا الأولى هي التحقق من أن واجهة برمجة تطبيق UPS (API) كان قيد التشغيل. UPS لديها موقع لطيف للتحقق من حالة API الخاص به.

نظرًا لأن واجهة برمجة التطبيقات لم يتم تنفيذها على ما يبدو ، كانت خطوتنا التالية هي تصحيح المشكلة محليًا. ومن المثير للاهتمام ، أنه لم يكن لدى المكون الإضافي أي تسجيل أو اختبار لمعرفة ما إذا كان تكامل الشحن UPS قد نجح بالفعل. حتى إعداد التصحيح لم يقدم أي ملاحظات ، ولا ملفات السجل لدينا. لذلك ، من أجل اختبار API ، كان عليّ برمجة نص برمجي لاختبار API بالفعل.

أنا تحميل مجموعة مطور API UPS... التي تضمنت عينات من التعليمات البرمجية ... وكان مرتبكًا أكثر من أي وقت مضى. الوثائق محدودة ، حتى نقاط النهاية لواجهة برمجة التطبيقات لم يتم سردها ، وعينات التعليمات البرمجية ليست موثقة جيدًا.

قم بتنزيل مجموعة مطور واجهة برمجة تطبيقات UPS

نتيجة لذلك ، كان علي أن أقوم ببعض الحفر ... كان الأول هو تحديد نقاط النهاية لواجهة برمجة التطبيقات الخاصة بهم. لقد عثرت على نقاط نهاية اختبار موثقة ، وكتبت الكود الخاص بي ، واختبرته ... ولكن دون جدوى. بعد مزيد من البحث واكتشفت أن نقاط نهاية الاختبار كانت عديمة الفائدة بشكل أساسي. قرف.

نقاط نهاية API UPS

تمكنت من العثور على موضوع على موقع تطوير أدرج ملف نقاط نهاية إنتاج 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 المحدث لاختبار نقطة نهاية واجهة برمجة تطبيقات UPS للتحقق من العنوان:

<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 أم لا. أدرك أن منهجية PHP (fopen) للنشر على واجهة برمجة التطبيقات الخاصة بهم قديمة بعض الشيء في هذا المثال أعلاه ... لكني أردت فقط تشغيل كود الاختبار الخاص بهم.

الإفصاح: أنا أستخدم كتب مريم الدخيل لاكاديمية الثراء الروابط التابعة في هذه المقالة.