Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PHP ActiveX) UPS Rate RequestDemonstrates making a call to the UPS Rating Package web service. Note: This example uses a feature introduced in Chilkat v9.5.0.76.
<?php // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. $http = new COM("Chilkat_9_5_0.Http"); // This is the testing endpoint for the Rate Package JSON REST API: $url = 'https://wwwcie.ups.com/rest/Rate'; // Send an HTTP POST request with the following JSON body: // { // "UPSSecurity": { // "UsernameToken": { // "Username": "UPS_USERNAME", // "Password": "UPS_PASSWORD" // }, // "ServiceAccessToken": { // "AccessLicenseNumber": "UPS_ACCESS_KEY" // } // }, // "RateRequest": { // "Request": { // "RequestOption": "Rate", // "TransactionReference": { // "CustomerContext": "Your Customer Context" // } // }, // "Shipment": { // "Shipper": { // "Name": "Apple Store, Michigan Ave", // "ShipperNumber": "1234", // "Address": { // "AddressLine": [ // "401 North Michigan Avenue" // ], // "City": "Chicago", // "StateProvinceCode": "IL", // "PostalCode": "60611", // "CountryCode": "US" // } // }, // "ShipTo": { // "Name": "Apple HQ", // "Address": { // "AddressLine": [ // "One Infinite Loop" // ], // "City": "Cupertino", // "StateProvinceCode": "CA", // "PostalCode": "95014", // "CountryCode": "US" // } // }, // "ShipFrom": { // "Name": "Apple Store, Michigan Ave", // "Address": { // "AddressLine": [ // "401 North Michigan Avenue" // ], // "City": "Chicago", // "StateProvinceCode": "IL", // "PostalCode": "60611", // "CountryCode": "US" // } // }, // "Service": { // "Code": "03", // "Description": "Service Code Description" // }, // "Package": { // "PackagingType": { // "Code": "02", // "Description": "Rate" // }, // "Dimensions": { // "UnitOfMeasurement": { // "Code": "IN", // "Description": "inches" // }, // "Length": "5", // "Width": "4", // "Height": "3" // }, // "PackageWeight": { // "UnitOfMeasurement": { // "Code": "Lbs", // "Description": "pounds" // }, // "Weight": "1" // } // }, // "ShipmentRatingOptions": { // "NegotiatedRatesIndicator": "" // } // } // } // } // Build the above JSON. // Note: The PathPrefix feature was added in Chilkat v9.5.0.76 $json = new COM("Chilkat_9_5_0.JsonObject"); $json->UpdateString('UPSSecurity.UsernameToken.Username','UPS_USERNAME'); $json->UpdateString('UPSSecurity.UsernameToken.Password','UPS_PASSWORD'); $json->UpdateString('UPSSecurity.ServiceAccessToken.AccessLicenseNumber','UPS_ACCESS_KEY'); $json->UpdateString('RateRequest.Request.RequestOption','Rate'); $json->UpdateString('RateRequest.Request.TransactionReference.CustomerContext','Your Customer Context'); $json->PathPrefix = 'RateRequest.Shipment.Shipper.'; $json->UpdateString('Name','Apple Store, Michigan Ave'); $json->UpdateString('ShipperNumber','1234'); $json->PathPrefix = 'RateRequest.Shipment.Shipper.Address.'; $json->UpdateString('AddressLine[0]','401 North Michigan Avenue'); $json->UpdateString('City','Chicago'); $json->UpdateString('StateProvinceCode','IL'); $json->UpdateString('PostalCode','60611'); $json->UpdateString('CountryCode','US'); $json->PathPrefix = ''; $json->UpdateString('RateRequest.Shipment.ShipTo.Name','Apple HQ'); $json->PathPrefix = 'RateRequest.Shipment.ShipTo.Address.'; $json->UpdateString('AddressLine[0]','One Infinite Loop'); $json->UpdateString('City','Cupertino'); $json->UpdateString('StateProvinceCode','CA'); $json->UpdateString('PostalCode','95014'); $json->UpdateString('CountryCode','US'); $json->PathPrefix = ''; $json->UpdateString('RateRequest.Shipment.ShipFrom.Name','Apple Store, Michigan Ave'); $json->PathPrefix = 'RateRequest.Shipment.ShipFrom.Address.'; $json->UpdateString('AddressLine[0]','401 North Michigan Avenue'); $json->UpdateString('City','Chicago'); $json->UpdateString('StateProvinceCode','IL'); $json->UpdateString('PostalCode','60611'); $json->UpdateString('CountryCode','US'); $json->PathPrefix = ''; $json->UpdateString('RateRequest.Shipment.Service.Code','03'); $json->UpdateString('RateRequest.Shipment.Service.Description','Service Code Description'); $json->PathPrefix = 'RateRequest.Shipment.Package.PackagingType.'; $json->UpdateString('Code','02'); $json->UpdateString('Description','Rate'); $json->PathPrefix = 'RateRequest.Shipment.Package.Dimensions.'; $json->UpdateString('UnitOfMeasurement.Code','IN'); $json->UpdateString('UnitOfMeasurement.Description','inches'); $json->UpdateString('Length','5'); $json->UpdateString('Width','4'); $json->UpdateString('Height','3'); $json->PathPrefix = 'RateRequest.Shipment.Package.PackageWeight.'; $json->UpdateString('UnitOfMeasurement.Code','Lbs'); $json->UpdateString('UnitOfMeasurement.Description','pounds'); $json->UpdateString('Weight','1'); $json->PathPrefix = ''; $json->UpdateString('RateRequest.Shipment.ShipmentRatingOptions.NegotiatedRatesIndicator',''); $json->EmitCompact = 0; print $json->emit() . "\n"; $sb = new COM("Chilkat_9_5_0.StringBuilder"); // resp is a Chilkat_9_5_0.HttpResponse $resp = $http->PostJson3($url,'application/json',$json); if ($http->LastMethodSuccess != 1) { print $http->LastErrorText . "\n"; exit; } print 'status = ' . $resp->StatusCode . "\n"; // A 200 response status indicate success. if ($resp->StatusCode != 200) { print $resp->BodyStr . "\n"; print 'Failed.' . "\n"; exit; } $json->Load($resp->BodyStr); $json->EmitCompact = 0; print $json->emit() . "\n"; // Here is a sample response: // { // "RateResponse": { // "Response": { // "ResponseStatus": { // "Code": "1", // "Description": "Success" // }, // "Alert": [ // { // "Code": "110971", // "Description": "Your invoice may vary from the displayed reference rates" // }, // { // "Code": "119084", // "Description": "Missing / Invalid Shipper Number. Returned rates are Retail Rates." // }, // { // "Code": "120900", // "Description": "User Id and Shipper Number combination is not qualified to receive negotiated rates" // } // ], // "TransactionReference": { // "CustomerContext": "Your Customer Context" // } // }, // "RatedShipment": { // "Service": { // "Code": "03", // "Description": "" // }, // "RatedShipmentAlert": [ // { // "Code": "120900", // "Description": "User Id and Shipper Number combination is not qualified to receive negotiated rates." // }, // { // "Code": "110971", // "Description": "Your invoice may vary from the displayed reference rates" // }, // { // "Code": "119084", // "Description": "Missing / Invalid Shipper Number. Returned rates are Retail Rates." // } // ], // "BillingWeight": { // "UnitOfMeasurement": { // "Code": "LBS", // "Description": "Pounds" // }, // "Weight": "1.0" // }, // "TransportationCharges": { // "CurrencyCode": "USD", // "MonetaryValue": "11.04" // }, // "ServiceOptionsCharges": { // "CurrencyCode": "USD", // "MonetaryValue": "0.00" // }, // "TotalCharges": { // "CurrencyCode": "USD", // "MonetaryValue": "11.04" // }, // "RatedPackage": { // "TransportationCharges": { // "CurrencyCode": "USD", // "MonetaryValue": "11.04" // }, // "ServiceOptionsCharges": { // "CurrencyCode": "USD", // "MonetaryValue": "0.00" // }, // "TotalCharges": { // "CurrencyCode": "USD", // "MonetaryValue": "11.04" // }, // "Weight": "1.0", // "BillingWeight": { // "UnitOfMeasurement": { // "Code": "LBS", // "Description": "Pounds" // }, // "Weight": "1.0" // } // } // } // } // } // // Use the online tool at Generate JSON Parsing Code // to generate JSON parsing code. $statusCode = $json->stringOf('RateResponse.Response.ResponseStatus.Code'); $statusDescription = $json->stringOf('RateResponse.Response.ResponseStatus.Description'); $customerContext = $json->stringOf('RateResponse.Response.TransactionReference.CustomerContext'); $serviceCode = $json->stringOf('RateResponse.RatedShipment.Service.Code'); $serviceDescription = $json->stringOf('RateResponse.RatedShipment.Service.Description'); $billingWeightUnitOfMeasurementCode = $json->stringOf('RateResponse.RatedShipment.BillingWeight.UnitOfMeasurement.Code'); $billingWeightUnitOfMeasurementDescription = $json->stringOf('RateResponse.RatedShipment.BillingWeight.UnitOfMeasurement.Description'); $billingWeightWeight = $json->stringOf('RateResponse.RatedShipment.BillingWeight.Weight'); $transportationChargesCurrencyCode = $json->stringOf('RateResponse.RatedShipment.TransportationCharges.CurrencyCode'); $transportationChargesMonetaryValue = $json->stringOf('RateResponse.RatedShipment.TransportationCharges.MonetaryValue'); $serviceOptionsChargesCurrencyCode = $json->stringOf('RateResponse.RatedShipment.ServiceOptionsCharges.CurrencyCode'); $serviceOptionsChargesMonetaryValue = $json->stringOf('RateResponse.RatedShipment.ServiceOptionsCharges.MonetaryValue'); $totalChargesCurrencyCode = $json->stringOf('RateResponse.RatedShipment.TotalCharges.CurrencyCode'); $totalChargesMonetaryValue = $json->stringOf('RateResponse.RatedShipment.TotalCharges.MonetaryValue'); $ratedPackageTransportationChargesCurrencyCode = $json->stringOf('RateResponse.RatedShipment.RatedPackage.TransportationCharges.CurrencyCode'); $ratedPackageTransportationChargesMonetaryValue = $json->stringOf('RateResponse.RatedShipment.RatedPackage.TransportationCharges.MonetaryValue'); $ratedPackageServiceOptionsChargesCurrencyCode = $json->stringOf('RateResponse.RatedShipment.RatedPackage.ServiceOptionsCharges.CurrencyCode'); $ratedPackageServiceOptionsChargesMonetaryValue = $json->stringOf('RateResponse.RatedShipment.RatedPackage.ServiceOptionsCharges.MonetaryValue'); $ratedPackageTotalChargesCurrencyCode = $json->stringOf('RateResponse.RatedShipment.RatedPackage.TotalCharges.CurrencyCode'); $ratedPackageTotalChargesMonetaryValue = $json->stringOf('RateResponse.RatedShipment.RatedPackage.TotalCharges.MonetaryValue'); $ratedPackageWeight = $json->stringOf('RateResponse.RatedShipment.RatedPackage.Weight'); $ratedPackageBillingWeightUnitOfMeasurementCode = $json->stringOf('RateResponse.RatedShipment.RatedPackage.BillingWeight.UnitOfMeasurement.Code'); $ratedPackageBillingWeightUnitOfMeasurementDescription = $json->stringOf('RateResponse.RatedShipment.RatedPackage.BillingWeight.UnitOfMeasurement.Description'); $ratedPackageBillingWeightWeight = $json->stringOf('RateResponse.RatedShipment.RatedPackage.BillingWeight.Weight'); $i = 0; $count_i = $json->SizeOfArray('RateResponse.Response.Alert'); while ($i < $count_i) { $json->I = $i; $Code = $json->stringOf('RateResponse.Response.Alert[i].Code'); $Description = $json->stringOf('RateResponse.Response.Alert[i].Description'); $i = $i + 1; } $i = 0; $count_i = $json->SizeOfArray('RateResponse.RatedShipment.RatedShipmentAlert'); while ($i < $count_i) { $json->I = $i; $Code = $json->stringOf('RateResponse.RatedShipment.RatedShipmentAlert[i].Code'); $Description = $json->stringOf('RateResponse.RatedShipment.RatedShipmentAlert[i].Description'); $i = $i + 1; } ?> |
© 2000-2023 Chilkat Software, Inc. All Rights Reserved.