単一のAPIを介して複数の運送業者の料金にアクセスする方法(送料無料APIを使用)

公開: 2017-02-27
Multi Carrier

最終更新日-2020年2月24日

この記事では、このAPIにアクセスし、FedEx、UPS、USPSなどのさまざまな配送業者からパッケージの国内および海外の料金を取得する方法を理解します。 暗号化されたJSONデータとして、特定のキャリアの配送業者の住所、受信者の住所、サービスの種類、承認の詳細を指定するだけです。

このAPIを使用するには、http://shippingapi.storepep.comに登録し、電子メールで無料のAPIキーを取得する必要があります。登録時に、電子メールIDを指定するだけです。

GET:利用可能なサービスのリスト

1:利用可能なすべてのFedExServicesを取得します。
Comand curl http://shippingapi.storepep.com/api/shippings/fedex-services

出力
{
"FEDEX_1_DAY_FREIGHT":"FEDEX 1 DAY FREIGHT",
"FEDEX_2_DAY":"FEDEX 2 DAY",
"FEDEX_2_DAY_AM":"FEDEX 2 DAY AM",
"FEDEX_2_DAY_FREIGHT":"FEDEX 2 DAY FREIGHT",
"FEDEX_3_DAY_FREIGHT":"FEDEX 3 DAY FREIGHT",
"FEDEX_DISTANCE_DEFERRED":"FEDEX DISTANCE DEFERRED",
"FEDEX_EXPRESS_SAVER":"FEDEX EXPRESS SAVER",
"FEDEX_FIRST_FREIGHT":"FEDEX FIRST FREIGHT",
"FEDEX_FREIGHT_ECONOMY":"FEDEX FREIGHT ECONOMY",
"FEDEX_FREIGHT_PRIORITY":"FEDEX FREIGHT PRIORITY",
"FEDEX_GROUND":"FEDEX GROUND",
"FEDEX_NEXT_DAY_AFTERNOON":"FEDEX NEXT DAY AFTERNOON",
"FEDEX_NEXT_DAY_EARLY_MORNING":"FEDEX NEXT DAY EARLY MORNING",
"FEDEX_NEXT_DAY_END_OF_DAY":"FEDEX NEXT DAY END OF DAY",
"FEDEX_NEXT_DAY_FREIGHT":"FEDEX NEXT DAY FREIGHT",
"FEDEX_NEXT_DAY_MID_MORNING":"FEDEX NEXT DAY MID MORNING",
"FIRST_OVERNIGHT":"FIRST OVERNIGHT",
"GROUND_HOME_DELIVERY":"GROUND HOME DELIVERY",
"EUROPE_FIRST_INTERNATIONAL_PRIORITY":"EUROPE FIRST INTERNATIONAL PRIORITY",
"INTERNATIONAL_ECONOMY":"INTERNATIONAL ECONOMY",
"INTERNATIONAL_ECONOMY_FREIGHT":"INTERNATIONAL ECONOMY FREIGHT",
"INTERNATIONAL_FIRST":"INTERNATIONAL FIRST",
"INTERNATIONAL_PRIORITY":"INTERNATIONAL PRIORITY",
"INTERNATIONAL_PRIORITY_FREIGHT":"INTERNATIONAL PRIORITY FREIGHT",
"PRIORITY_OVERNIGHT":"PRIORITY OVERNIGHT",
"SAME_DAY":"SAME DAY",
"SAME_DAY_CITY":"SAME DAY CITY",
"SMART_POST":"SMART POST",
"STANDARD_OVERNIGHT":"STANDARD OVERNIGHT"
}

2:利用可能なすべてのUPSサービスを取得します。
Comand curl http://shippingapi.storepep.com/api/shippings/ups-services
出力

{
'01': 'UPS Next Day Air',
'02': 'UPS Second Day Air',
'03': 'UPS Ground',
'07': 'UPS Worldwide Express',
'08': 'UPS Worldwide Expedited',
'11': 'UPS Standard',
'12': 'UPS Three-Day Select',
'13': 'UPS Next Day Air Saver',
'14': 'UPS Next Day Air Early AM',
'54': 'UPS Worldwide Express Plus',
'59': 'UPS Second Day Air AM',
'65': 'UPS Saver',
'82': 'UPS Today Standard',
'83': 'UPS Today Dedicated Courier',
'84': 'UPS Today Intercity',
'85': 'UPS Today Express',
'86': 'UPS Today Express Saver',
'92': 'UPS SurePost (USPS) < 1lb', '93': 'UPS SurePost (USPS) > 1lb',
'94': 'UPS SurePost (USPS) BPM',
'95': 'UPS SurePost (USPS) Media'
}

3:利用可能なすべてのUSPSサービスを取得します。
Comand curl http://shippingapi.storepep.com/api/shippings/usps-services
出力

{
'First Class>LETTER':'First Class>LETTER',
'First Class>FLAT':'First Class>FLAT',
'First Class>PARCEL':'First Class>PARCEL',
'First Class>POSTCARD':'First Class>POSTCARD',
'First Class>PACKAGE SERVICE':'First Class>PACKAGE SERVICE',
'First Class Commercial>PACKAGE SERVICE':'First Class Commercial>PACKAGE SERVICE',
'First Class HFP Commercial>PACKAGE SERVICE':'First Class HFP Commercial>PACKAGE SERVICE',
'Priority':'Priority',
'Priority Commercial':'Priority Commercial',
'Priority Cpp':'Priority Cpp',
'Priority HFP Commercial':'Priority HFP Commercial',
'Priority HFP Cpp':'Priority HFP Cpp',
'Priority Mail Express':'Priority Mail Express',
'Priority Mail Express Commercial':'Priority Mail Express Commercial',
'Priority Mail Express Cpp':'Priority Mail Express Cpp',
'Priority Mail Express HFP':'Priority Mail Express HFP',
'Priority Mail Express HFP Commercial':'Priority Mail Express HFP Commercial',
'Standard Post':'Standard Post',
'Retail Ground':'Retail Ground',
'Media':'Media',
'Library':'Library',
'Online Plus':'Online Plus',
'12':'Global Express Guaranteed',
'1':'Priority Mail Express International',
'2':'Priority Mail International',
'9':'Priority Mail International Medium Flat Rate Box',
'11':'Priority Mail International Large Flat Rate Box',
'16':'Priority Mail International Small Flat Rate Box',
'15':'First Class Package International Service'
}

POST:レートAPI

最初にRatesAPIを使用するには、このAPIリクエストの構造を理解する必要があります

名前説明
Common_Params すべての海運会社に共通の内部要素が含まれています
Common_Params >環境テストモードの場合:サンドボックス、本番モードの場合:ライブ
Common_Params > emailid このAPIに登録されているメールID
Common_Params > key 登録時に受け取ったAPIキー
Common_Params > host オプション(ホスト名)
Common_Params > os オプション(オペレーティングシステムの詳細)
Common_Params > Shipping_PersonName 送信者名
Common_Params > Shipping_CompanyName 送信者の会社
Common_Params > Shipping_PhoneNumber 送信者の電話番号
Common_Params >Shipper_Address_StreetLines 送信者の住所
Common_Params >Shipper_Address_City 送信者の都市
Common_Params > Shipping_Address_StateOrProvinceCode 送信者の州/県コード(* 2文字以内)
Common_Params >Shipper_Address_PostalCode 送信者の郵便番号
Common_Params > Shipping_Address_CountryCode 送信者の国コード(* 2文字のコードのみ)
Common_Params > Recipient_PersonName 受取人の氏名
Common_Params > Recipient_CompanyName 受信者の会社
Common_Params > Recipient_PhoneNumber 受信者の電話番号
Common_Params > Recipient_Address_StreetLines 受信者の住所
Common_Params > Recipient_Address_City 受信者の都市
Common_Params > Recipient_Address_StateOrProvinceCode 受信者の州/県コード()
Common_Params > Recipient_Address_PostalCode 受信者の郵便番号
Common_Params > Recipient_Address_CountryCode 受信者の国コード
Common_Params > Recipient_Address_CountryName 受信者の国名
Common_Params > Recipient_Address_Residential True / False(受信者の住所です)
Common_Params > fedex_key FedExから受け取ったキー
Common_Params > fedex_password FedExパスワード
Common_Params > fedex_account_number FedExアカウント番号
Common_Params > fedex_meter_number FedExメーター番号
Common_Params > ups_key UPSから受け取ったキー
Common_Params > ups_password UPSパスワード
Common_Params > ups_account_number UPSアカウント番号
Common_Params > ups_username UPSから受け取ったユーザー名
Common_Params > usps_username USPSユーザー名
Request_Array このオブジェクトには、複数の会社と複数のパッケージに対するリクエストが含まれています
Request_Array >リクエストの配列1つの配列で渡された複数のリクエスト

リクエストの構造( Request_Arrayのように)

名前説明
リクエストすべての運送業者(運送会社)に共通の内部要素が含まれています
リクエスト>id このパッケージを識別するための任意の一意のID(この配列要素のID)
リクエスト>会社このパッケージのこれらの会社から料金を取得するための配送業者の名前(例:「fedex」、「ups」、「usps」)
リクエスト>Weight_Units 重量の単位(現在、「LB」のみがサポートされています)
リクエスト>ServiceType 料金が必要な特定のキャリアサービスのサービスコード。 キャリアのAPIドキュメントを参照してください。
リクエスト>RateRequestTypes アカウント固有の料金の場合は「NONE」、小売料金の場合は「LIST」
>パッケージをリクエストする

サンプルJSON(暗号化前)
 {{
	"Common_Params":{
		「環境」:「サンドボックス」、
		"emailid": "[email protected]"、
		"キー": "b52ee1f3ab8454589d6a9bd5018d60be"、
		「ホスト」:「www.storepep.com」、
		"os": "Windows NT 6.3ビルド9600(Windows 8.1 Home)i586"、
		"Shipper_PersonName": "JOE CHRIST"、
		"Shipper_CompanyName": "MY COMPANY"、
		"Shipper_PhoneNumber": "0123456789"、
		"Shipper_Address_StreetLines": "SILK BOARD"、
		"Shipper_Address_City": "COLUMBUS"、
		"Shipper_Address_StateOrProvinceCode": "OH"、
		"Shipper_Address_PostalCode": "43218"、
		"Shipper_Address_CountryCode": "US"、
		"Recipient_PersonName": "受信者名"、
		"Recipient_CompanyName": "XYZ"、
		"Recipient_PhoneNumber": "0123456789"、
		"Recipient_Address_StreetLines": "123、XYZ ROAD"、
		"Recipient_Address_City": ""、
		"Recipient_Address_StateOrProvinceCode": "WA"、
		"Recipient_Address_PostalCode": "98503"、
		"Recipient_Address_CountryCode": "US"、
		"Recipient_Address_CountryName": "アメリカ合衆国(US)"、
		"Recipient_Address_Residential": "false"、
		"fedex_key": "UzxdpT3cy7UDF3Vl"、
		"fedex_password": "I1IWFyvBz34QnJOwqZyBn9oll"、
		"fedex_account_number": "110087444"、
		"fedex_meter_number": "128768444"、
		"ups_key": "DCEF2E428E10BBB7"、
		"ups_password": "Q1w2e3r4t5o5"、
		"ups_account_number": "189Y5A"、
		"ups_username": "iahtai21"、
		"usps_username": "806XDDAP3116"、
		"usps_password": "516GD04CJ256"
	}、
	"Request_Array":[
		{{
			"id": "53:1"、
			"会社": [
				「usps」
			]、
			"Weight_Units": "LB"、
			"ServiceType": "優先度"、
			"RateRequestTypes": "NONE"、
			"パッケージ":[
				{{
					「重量」:2、
					「ユニット」:「LBS」、
					「説明」:「マイパッケージ」、
					"no_of_packages":1、
					「SequenceNumber」:1
				}
			]
		}、
		{{
			"id": "53,37:1"、
			"会社": [
				「フェデックス」
			]、
			"Weight_Units": "LB"、
			"ServiceType": "FEDEX_GROUND"、
			"RateRequestTypes": "NONE"、
			"パッケージ":[
				{{
					「重量」:1.5、
					「ユニット」:「LBS」、
					「説明」:「マイパッケージ」、
					"no_of_packages":1、
					「SequenceNumber」:3
				}
			]
		}
	]
}

このようなJSONオブジェクトを生成した後、独自のAPIキーを使用してこのオブジェクトをエンコードする必要があります。 以下にエンコーディングアルゴリズムを提供しているので、簡単に進めることができます。

このJSONリクエストをエンコードするPHP関数

<?php
    関数encode($ key、$ data)
    {{
     $ cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128、''、MCRYPT_MODE_CBC、'');
     $ key256 = $ key;
     $ iv = '1156651 @ Xadapter';
     mcrypt_generic_init($ cipher、$ key256、$ iv);
     $ cipherText256 = mcrypt_generic($ cipher、$ data);
     mcrypt_generic_deinit($ cipher);
     $ cipherHexText256 = bin2hex($ cipherText256);
     $cipherHexText256を返します。
    }
?>

次に、このエンコードされたオブジェクトを別のJSONオブジェクト(「emailid」と「data」の2つの要素を含む)に配置し、サーバーに送信します。

 <?php
  $ req = array();
  $ req ['emailid'] = '[email protected]'; APIに登録されたメールID
  $ apikey ='b52ee1f3ab8454589d6a9bd5018d60be'; API登録済みキー
  $ req ['data'] = $ this-> encode($ apikey、$ JSON_Req);
  $ content = json_encode($ req);
?>

最終的なJSONリクエストは次のようになります。

 {"emailid": "[email protected]"、
    "データ":""
   }

このJSONオブジェクトをサーバーに送信します。

PHPでリクエストを送信する方法を理解するには、以下の例をご覧ください。

 $ curl = curl_init( "http://shippingapi.storepep.com/api/shippings/rates");
                curl_setopt($ curl、CURLOPT_HEADER、false);
                curl_setopt($ curl、CURLOPT_RETURNTRANSFER、true);
                curl_setopt($ curl、CURLOPT_HTTPHEADER、array( "Content-type:application / json"));
                curl_setopt($ curl、CURLOPT_SSL_VERIFYPEER、false);
                curl_setopt($ curl、CURLOPT_SSL_VERIFYHOST、false);
                curl_setopt($ curl、CURLOPT_POST、true);
                curl_setopt($ curl、CURLOPT_POSTFIELDS、 $ content ); //これは上記のコードで作成した$contentです
                $ json_response = curl_exec($ curl);
                $ status = curl_getinfo($ curl、CURLINFO_HTTP_CODE);
                curl_close($ curl);
                $ response = json_decode($ json_response、true);
                print_r($ response);