Tek Bir API Üzerinden Birden Fazla Gönderi Taşıyıcısının Fiyatlarına Nasıl Erişilir (Ücretsiz Gönderi API'si ile)

Yayınlanan: 2017-02-27
Multi Carrier

Son güncelleme - 24 Şubat 2020

Bu makalede, bu API'ye nasıl erişeceğinizi ve paketiniz için FedEx, UPS ve USPS gibi farklı nakliye şirketlerinden yurt içi ve yurt dışı fiyatları nasıl alacağınızı öğreneceksiniz. Şifrelenmiş bir JSON verisi olarak gönderici adresini, alıcı adresini, hizmet türünü ve belirli taşıyıcı için yetkilendirme ayrıntılarını belirtmeniz yeterlidir.

Bu API'yi kullanmak için http://shippingapi.storepep.com'a kaydolmanız ve e-postanıza ücretsiz bir API anahtarı almanız yeterlidir, kayıt sırasında e-posta kimliğinizi sağlamanız yeterlidir.

GET : Mevcut Hizmetlerin Listesi

1: Mevcut Tüm FedExServices'i Alın:
Komut : curl http://shippingapi.storepep.com/api/shippings/fedex-services

çıktı :
{
"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: Mevcut Tüm UPS Hizmetlerini Alın:
Komut : kıvrılma http://shippingapi.storepep.com/api/shippings/ups-services
çıktı :

{
'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: Mevcut Tüm USPS Hizmetlerini Alın:
Komut : kıvrılma http://shippingapi.storepep.com/api/shippings/usps-services
çıktı :

{
'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: Fiyatlar API'sı

Rates API'yi kullanmak için önce bu API isteğinin yapısını anlamamız gerekir.

İsim Tanım
Common_Params Tüm nakliye şirketlerinde ortak olan iç unsurları içerir
Common_Params >ortam test modu için: korumalı alan, üretim modu için: canlı
Common_Params >e-posta kimliği Bu API için kayıtlı e-posta kimliği
Common_Params > anahtarı Kayıt sırasında alınan API Anahtarı
Common_Params > ana bilgisayar İsteğe bağlı (ana bilgisayar adınız)
Common_Params > işletim sistemi İsteğe bağlı (işletim sistemi ayrıntılarınız)
Common_Params > Gönderici_KişiAdı gönderenin adı
Common_Params >Shipper_CompanyName gönderenin şirketi
Common_Params > Gönderici_Telefon Numarası gönderenin telefon numarası
Common_Params >Shipper_Address_StreetLines Gönderenin sokak adresi
Common_Params >Shipper_Address_City gönderenin şehri
Common_Params >Shipper_Address_StateOrProvinceCode Gönderenin eyalet/il kodu (*iki harften fazla değil)
Common_Params >Shipper_Address_PostalCode gönderenin posta kodu
Common_Params > Gönderici_Adresi_ÜlkeKodu Gönderenin ülke kodu (*yalnızca iki harfli kod)
Common_Params >Alıcı_KişiAdı Alıcının ismi
Common_Params >Alıcı_ŞirketAdı alıcının şirketi
Common_Params >Alıcı_Telefon Numarası Alıcının telefon numarası
Common_Params >Recipient_Address_StreetLines Alıcının sokak adresi
Common_Params >Recipient_Address_City alıcının şehri
Common_Params >Recipient_Address_StateOrProvinceCode Alıcının eyalet/il kodu ()
Common_Params >Recipient_Address_PostalCode Alıcının posta kodu
Common_Params >Alıcı_Adres_ÜlkeKodu Alıcının ülke kodu
Common_Params >Alıcı_Adresi_ÜlkeAdı Alıcının ülke adı
Common_Params >Recipient_Address_Residential Doğru/Yanlış (alıcının ikamet adresidir)
Common_Params > fedex_key FedEx'ten alınan anahtar
Common_Params > fedex_password FedEx şifresi
Common_Params > fedex_hesap_numarası FedEx hesap numarası
Common_Params > fedex_meter_number FedEx sayaç numarası
Common_Params > ups_key UPS'ten alınan anahtar
Common_Params >ups_password UPS şifresi
Common_Params >ups_account_number UPS hesap numarası
Common_Params >ups_username UPS'ten alınan kullanıcı adı
Common_Params >usps_username USPS kullanıcı adı
request_Array Bu nesne, birden çok şirket ve birden çok paket için istekler içeriyor
Request_Array > İstek Dizisi Bir dizide birden çok istek geçti

İsteğin Yapısı ( Request_Array'de olduğu gibi)

İsim Tanım
Rica etmek Tüm taşıyıcılar (nakliye şirketleri) için ortak olan iç unsurları içerir
istek >kimlik Bu paketi tanımlayan herhangi bir benzersiz kimlik (bu dizi öğesinin kimliği)
Talep > şirket Bu paket için bu şirketlerden ücret almak için nakliye firmasının adı (örneğin: 'fedex', 'ups', 'usps')
Talep >Ağırlık_Birimleri Ağırlık birimi (şu anda yalnızca 'LB' desteklenmektedir)
İstek >Hizmet Türü Ücretin gerekli olduğu belirli taşıyıcı hizmeti için hizmet kodu. Taşıyıcıların API belgelerine bakın.
İstek >OranTalepTürleri Hesaba özel oranlar için 'YOK' ve perakende fiyatlar için 'LİSTE'
İstek >paketler

Örnek JSON (Şifrelemeden Önce) :
 {
	"Common_Params": {
		"ortam": "korumalı alan",
		"emailid": "[email protected]",
		"anahtar": "b52ee1f3ab8454589d6a9bd5018d60be",
		"host": "www.storepep.com",
		"os": "Windows NT 6.3 build 9600 (Windows 8.1 Home) i586",
		"Shipper_PersonName": "JOE CHRIST",
		"Gönderen_ŞirketAdı": "ŞİRKETİM",
		"Shipper_PhoneNumber": "0123456789",
		"Shipper_Address_StreetLines": "İPEK PANO",
		"Shipper_Address_City": "COLUMBUS",
		"Shipper_Address_StateOrProvinceCode": "OH",
		"Shipper_Address_PostalCode": "43218",
		"Gönderen_Adres_ÜlkeKodu": "ABD",
		"Alıcı_KişiAdı": "Alıcı Adı",
		"Alıcı_ŞirketAdı": "XYZ",
		"Alıcı_TelefonNumarası": "0123456789",
		"Recipient_Address_StreetLines": "123 , XYZ YOLU",
		"Alıcı_Adres_Şehir": "",
		"Alıcı_Adres_EyaletVeyaİlKodu": "WA",
		"Alıcı_Adres_PostaKodu": "98503",
		"Alıcı_Adres_ÜlkeKodu": "ABD",
		"Alıcı_Adres_ÜlkeAdı": "Amerika Birleşik Devletleri (ABD)",
		"Alıcı_Adres_Konut": "yanlış",
		"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": [
		{
			"kimlik": "53:1",
			"şirket": [
				"usp"
			],
			"Ağırlık_Birimleri": "LB",
			"Hizmet Türü": "Öncelik",
			"RateRequestTypes": "YOK",
			"paketler": [
				{
					"ağırlık": 2,
					"birim": "LBS",
					"Açıklama": "Paketim",
					"no_of_packages": 1,
					"Sıra Numarası": 1
				}
			]
		},
		{
			"kimlik": "53,37:1",
			"şirket": [
				"Fedex"
			],
			"Ağırlık_Birimleri": "LB",
			"ServiceType": "FEDEX_GROUND",
			"RateRequestTypes": "YOK",
			"paketler": [
				{
					"ağırlık": 1.5,
					"birim": "LBS",
					"Açıklama": "Paketim",
					"no_of_packages": 1,
					"Sıra Numarası": 3
				}
			]
		}
	]
}

Böyle bir JSON nesnesi oluşturduktan sonra, bu nesneyi benzersiz API Anahtarınızı kullanarak kodlamanız gerekir. Devam etmeniz kolay olsun diye aşağıda Kodlama Algoritmasını sunuyoruz.

Bu JSON isteğini kodlamak için PHP işlevi

 <?php
    fonksiyon kodlaması($anahtar,$veri)
    {
     $şifre = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
     $anahtar256 = $anahtar;
     $iv = '1156651@Xadapter';
     mcrypt_generic_init($şifre, $key256, $iv);
     $cipherText256 = mcrypt_generic($şifre,$veri);
     mcrypt_generic_deinit($şifre);
     $cipherHexText256 =bin2hex($cipherText256);
     $cipherHexText256 döndür;
    }
?>

Ardından, bu kodlanmış nesneyi başka bir JSON nesnesine ('emailid' ve 'data' olmak üzere iki öğeyle) koyun ve sunucuya gönderin.

 <?php
  $gerekçe=dizi();
  $req['emailid']='[email protected]'; API Kayıtlı E-posta Kimliğiniz
  $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; API Kayıtlı Anahtarınız
  $req['data']=$this->encode($apikey,$JSON_Req);
  $içerik =json_encode($gerekli);
?>

Son JSON isteği şöyle görünür:

 {"emailid":"[email protected]",
    "veri":""
   }

Bu JSON nesnesini sunucuya gönderin.

PHP'de nasıl istek gönderileceğini anlamak için aşağıdaki örneğe bir göz atın:

 $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("İçerik türü: uygulama/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, $içerik ); // bu, yukarıdaki kodda oluşturduğumuz $içeriğidir
                $json_response = curl_exec($curl);
                $durum = curl_getinfo($curl, CURLINFO_HTTP_CODE);
                curl_close($kıvırma);
                $yanıt = json_decode($json_response, true);
                print_r($cevap);