Thương mại điện tử và bán lẻ

Điểm cuối API của UPS và Mã kiểm tra PHP mẫu

Chúng tôi đang làm việc với một WooCommerce khách hàng ngay bây giờ của ai Vận chuyển UPS xác thực địa chỉ và tính toán chi phí vận chuyển ngừng hoạt động. Vấn đề đầu tiên mà chúng tôi xác định là plugin vận chuyển UPS mà họ sử dụng đã lỗi thời và miền cốt lõi của công ty phát triển nó có phần mềm độc hại… đó không bao giờ là một dấu hiệu tốt. Vì vậy, chúng tôi đã mua Plugin WooCommerce UPS vì nó được hỗ trợ tốt bởi các nhà phát triển của Woocommerce.

Với việc trang web không xác thực địa chỉ cũng như không tích hợp giao hàng, bước đầu tiên của chúng tôi là xác minh rằng giao diện lập trình ứng dụng của UPS (API) đã được thiết lập và hoạt động. UPS có một trang web tốt để kiểm tra trạng thái của API của nó.

Vì API dường như không được thực hiện, bước tiếp theo của chúng tôi là gỡ lỗi cục bộ sự cố. Điều thú vị là, cả plugin đều không có bất kỳ ghi nhật ký hay thử nghiệm nào để xem liệu tích hợp vận chuyển UPS có thực sự hoạt động hay không. Ngay cả cài đặt gỡ lỗi cũng không cung cấp bất kỳ phản hồi nào, cũng như các tệp nhật ký của chúng tôi. Vì vậy, để kiểm tra API, tôi phải lập trình một tập lệnh để thực sự kiểm tra API.

Tôi đã tải về Bộ công cụ dành cho nhà phát triển API của UPS… Trong đó bao gồm các mẫu mã… và vẫn còn bối rối. Tài liệu có hạn, các điểm cuối cho API thậm chí không được liệt kê và các mẫu mã không được ghi chép đầy đủ.

Tải xuống Bộ công cụ dành cho nhà phát triển API của UPS

Do đó, tôi phải thực hiện một số thao tác đào… đầu tiên là xác định các điểm cuối cho API của họ. Tôi đã tìm thấy các điểm cuối thử nghiệm được lập thành văn bản, viết mã của mình và thử nghiệm nó… nhưng không thành công. Đào sâu hơn một chút và tôi phát hiện ra rằng các điểm cuối thử nghiệm về cơ bản là vô dụng. Ặc.

Điểm cuối API của UPS

Tôi có thể tìm thấy một chủ đề trên một trang web phát triển liệt kê Điểm cuối sản xuất API của 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

Cách dễ nhất để kiểm tra là Xác thực địa chỉ (in đậm ở trên) điểm cuối nên tôi đã sử dụng mã được cung cấp để viết một tập lệnh PHP nhỏ chuyển địa chỉ và phản hồi xem nó thành công hay thất bại. Đây là mã trong trường hợp bạn muốn sử dụng nó:

Tệp kiểm tra PHP API của UPS để xác thực địa chỉ

Đây là tập lệnh PHP được cập nhật để kiểm tra Điểm cuối API của UPS xác thực địa chỉ:

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

Tập lệnh này ít nhất sẽ cho bạn biết liệu thông tin đăng nhập của bạn có đang hoạt động với điểm cuối Xác thực địa chỉ API của UPS hay không. Tôi nhận ra rằng phương pháp PHP (fopen) để đăng lên API của họ đã hơi cũ trong ví dụ này ở trên… nhưng tôi chỉ muốn mã thử nghiệm của họ hoạt động.

Tiết lộ: Martech Zone đang sử dụng nó WooCommerce liên kết liên kết trong bài viết này.

Douglas Karr

Douglas Karr là CMO của mởINSIGHTS và người sáng lập ra Martech Zone. Douglas đã giúp hàng chục công ty khởi nghiệp MarTech thành công, đã hỗ trợ thẩm định hơn 5 tỷ USD trong các thương vụ mua lại và đầu tư của Martech, đồng thời tiếp tục hỗ trợ các công ty triển khai và tự động hóa các chiến lược tiếp thị và bán hàng của họ. Douglas là một chuyên gia và diễn giả về chuyển đổi kỹ thuật số và MarTech được quốc tế công nhận. Douglas cũng là tác giả đã xuất bản sách hướng dẫn của Dummie và sách lãnh đạo doanh nghiệp.

Bài viết liên quan

Back to top
Đóng

Đã phát hiện ra khối quảng cáo

Martech Zone có thể cung cấp cho bạn nội dung này miễn phí vì chúng tôi kiếm tiền từ trang web của mình thông qua doanh thu quảng cáo, liên kết đơn vị liên kết và tài trợ. Chúng tôi sẽ đánh giá cao nếu bạn xóa trình chặn quảng cáo của mình khi bạn xem trang web của chúng tôi.