eコマースと小売

UPSAPIエンドポイントとサンプルPHPテストコード

私たちは WooCommerce 今のクライアント UPS配送 住所の検証と送料の計算が機能しなくなりました。 私たちが特定した最初の問題は、UPS配送プラグインが古く、それを開発した会社のコアドメインにマルウェアが含まれていたことでした…これは決して良い兆候ではありません。 そこで、 WooCommerceUPSプラグイン Woocommerceの開発者によって十分にサポートされているからです。

サイトが住所を検証せず、配送を統合していないため、最初のステップは、UPSアプリケーションプログラミングインターフェイス(API)稼働していた。 UPSには、 APIのステータス.

APIが実行されていないように見えたため、次のステップは問題をローカルでデバッグすることでした。 興味深いことに、プラグインには、UPS配送統合が実際に機能するかどうかを確認するためのログ記録もテストもありませんでした。 デバッグ設定でさえフィードバックを提供せず、ログファイルも提供しませんでした。 そのため、APIをテストするには、実際にAPIをテストするスクリプトをプログラムする必要がありました。

私がダウンロードしました UPSAPI開発者キット…コードサンプルが含まれていました…そして相変わらず混乱していました。 ドキュメントは限られており、APIのエンドポイントもリストされておらず、コードサンプルも十分にドキュメント化されていません。

UPSAPI開発者キットをダウンロードする

その結果、私はいくつかの掘り下げをしなければなりませんでした…最初は、APIのエンドポイントを特定することでした。 文書化されたテストエンドポイントを見つけ、コードを記述してテストしましたが、成功しませんでした。 もう少し掘り下げてみると、テストエンドポイントは基本的に役に立たないことがわかりました。 うーん。

UPSAPIエンドポイント

開発サイトで、 UPSAPI本番エンドポイント:

  • 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スクリプトを記述しました。 使用したい場合のコードは次のとおりです。

アドレス検証用のUPSAPIPHPテストファイル

アドレス検証UPSAPIエンドポイントをテストするための更新されたPHPスクリプトは次のとおりです。

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

このスクリプトは、少なくとも、資格情報がUPSAPIアドレス検証エンドポイントで機能しているかどうかを示します。 上記の例では、APIに投稿するPHPの方法論(fopen)が少し古くなっていることに気付きました…しかし、テストコードを機能させたかっただけです。

情報開示: Martech Zone そのを使用しています WooCommerce この記事のアフィリエイトリンク。

Douglas Karr

Douglas Karr のCMOです オープンインサイト の創設者であり、 Martech Zone。 ダグラスは、マーテックのスタートアップ企業数十社の成功を支援し、マーテックの買収と投資における 5 億ドルを超えるデューデリジェンスを支援し、企業の販売戦略とマーケティング戦略の実装と自動化を支援し続けています。 ダグラスは、国際的に認められたデジタル変革と MarTech の専門家兼講演者です。 ダグラスは、ダミーズ ガイドやビジネス リーダーシップに関する書籍の著者でもあります。

関連記事

先頭へ戻るボタンに
閉じる

Adblockが検出されました

Martech Zone は、広告収入、アフィリエイト リンク、スポンサーシップを通じてサイトを収益化しているため、このコンテンツを無料で提供できます。 当サイトをご覧になる際は、広告ブロッカーを削除していただければ幸いです。