단일 API를 통해 여러 운송업체의 요금에 액세스하는 방법(무료 배송 API 사용)

게시 됨: 2017-02-27
Multi Carrier

최종 업데이트 - 2020년 2월 24일

이 기사에서는 이 API에 액세스하고 FedEx, UPS 및 USPS와 같은 다양한 운송업체로부터 패키지에 대한 국내 및 국제 요금을 받는 방법을 이해합니다. 특정 운송업체에 대한 발송인 주소, 수신자 주소, 서비스 유형 및 승인 세부 정보를 암호화된 JSON 데이터로 지정하기만 하면 됩니다.

이 API를 사용하려면 http://shippingapi.storepep.com에 등록하고 이메일에서 무료 API 키를 받아야 합니다. 가입할 때 이메일 ID를 제공하면 됩니다.

GET : 사용 가능한 서비스 목록

1: 사용 가능한 모든 FedEx 서비스 가져오기:
명령 : 컬 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 서비스 받기:
명령어 : 컬 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 서비스 받기:
명령 : 컬 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

Rates API를 사용하려면 먼저 이 API 요청의 구조를 이해해야 합니다.

이름 설명
Common_Params 모든 운송 회사에 공통된 내부 요소 포함
Common_Params >환경 테스트 모드: 샌드박스, 프로덕션 모드: 라이브
Common_Params > 이메일 ID 이 API에 등록된 이메일 ID
Common_Params > 키 등록 중에 받은 API 키
Common_Params > 호스트 선택 사항(호스트 이름)
Common_Params >os 선택 사항(운영 체제 세부 정보)
Common_Params >Shipper_PersonName 보낸 사람의 이름
Common_Params >Shipper_CompanyName 발신인 회사
Common_Params >Shipper_PhoneNumber 보내는 사람의 전화번호
Common_Params >Shipper_Address_StreetLines 발신인의 주소
Common_Params >Shipper_Address_City 발신인의 도시
Common_Params >Shipper_Address_StateOrProvinceCode 발신인의 시/도 코드(*2글자 이내)
Common_Params >Shipper_Address_PostalCode 보낸 사람의 우편 번호
Common_Params >Shipper_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 참/거짓(수취인의 거주지 주소)
Common_Params > fedex_key FedEx에서 받은 키
Common_Params > fedex_password 페덱스 비밀번호
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 에서와 같이)

이름 설명
요구 모든 운송업체(해운사)에 공통된 내부 요소 포함
요청 > 아이디 이 패키지를 식별하기 위한 고유 ID(이 배열 요소의 ID)
요청 > 회사 이 패키지에 대해 이러한 회사로부터 요금을 받을 배송사 이름(예: 'fedex', 'ups', 'usps')
요청 >무게_단위 무게 단위(현재 'LB'만 지원됨)
요청 >서비스 유형 요금이 필요한 특정 이동통신사 서비스에 대한 서비스 코드입니다. 이동통신사의 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": "실크 보드",
		"Shipper_Address_City": "COLUMBUS",
		"Shipper_Address_StateOrProvinceCode": "오",
		"Shipper_Address_PostalCode": "43218",
		"Shipper_Address_CountryCode": "미국",
		"Recipient_PersonName": "받는 사람 이름",
		"Recipient_CompanyName": "XYZ",
		"받는 사람_전화번호": "0123456789",
		"Recipient_Address_StreetLines": "123, XYZ ROAD",
		"받는 사람_주소_도시": "",
		"Recipient_Address_StateOrProvinceCode": "WA",
		"받는 사람_주소_우편번호": "98503",
		"Recipient_Address_CountryCode": "미국",
		"Recipient_Address_CountryName": "미국(미국)",
		"Recipient_Address_Residential": "거짓",
		"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"
	},
	"요청_배열": [
		{
			"아이디": "53:1",
			"회사": [
				"usps"
			],
			"무게_단위": "LB",
			"서비스 유형": "우선 순위",
			"RateRequestTypes": "없음",
			"패키지": [
				{
					"무게": 2,
					"단위": "LBS",
					"설명": "내 패키지",
					"no_of_packages": 1,
					"시퀀스 번호": 1
				}
			]
		},
		{
			"아이디": "53,37:1",
			"회사": [
				"페덱스"
			],
			"무게_단위": "LB",
			"서비스 유형": "FEDEX_GROUND",
			"RateRequestTypes": "없음",
			"패키지": [
				{
					"무게": 1.5,
					"단위": "LBS",
					"설명": "내 패키지",
					"no_of_packages": 1,
					"시퀀스 번호": 3
				}
			]
		}
	]
}

이러한 JSON 객체를 생성한 후 고유한 API 키를 사용하여 이 객체를 인코딩해야 합니다. 쉽게 진행하실 수 있도록 아래와 같이 Encoding Algorithm을 제공하고 있습니다.

이 JSON 요청을 인코딩하는 PHP 함수

 <?php
    함수 인코딩($key,$data)
    {
     $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
     $key256 = $키;
     $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'의 두 가지 요소 포함)에 넣고 서버로 보냅니다.

 <?php
  $req=배열();
  $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, 거짓);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($curl, CURLOPT_HTTPHEADER, array("콘텐츠 유형: 응용 프로그램/json"));
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 거짓);
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 거짓);
                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($응답);