Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou me batendo a alguns dias, pois nao estou conseguindo implementar esta solucao, estou precisando enviar as informacoes do usuario para um service de entrega aqui nos EUA chamado UPS, eu quero pegar o valor total que ira custar para enviar uma mercadoria, e para um site de e-commerce, o problema e que meu chefe nao quer utilizar XML, estou utilizando o SOAP, por favor estou tentando passer os dados de requisicao via Ajax assim:
var url = 'https://wwwcie.ups.com/webservices/Rate';
$.ajax({
url : url,
type : 'post',
contentType : 'text/xml',
dataType : 'xml',
data : 'SoapRateClient.php',
success : processSuccess,
error : processError
});
O SoapRateClient. php e assim:
//Configuration
$access = "8C5994D151D8F8A0";
$userid = "";
$passwd = "";
$wsdl = "upsWSDL/RateWS.wsdl";
$operation = "ProcessRate";
$endpointurl = "https://wwwcie.ups.com/webservices/Rate";
$outputFileName = "XOLTResult.xml";
function processRate()
{
//create soap request
$option['RequestOption'] = 'Shop';
$request['Request'] = $option;
$pickuptype['Code'] = '01';
$pickuptype['Description'] = 'Daily Pickup';
$request['PickupType'] = $pickuptype;
$customerclassification['Code'] = '01';
$customerclassification['Description'] = 'Classfication';
$request['CustomerClassification'] = $customerclassification;
$shipper['Name'] = 'Ricardo Scarpim';
$shipper['ShipperNumber'] = '5Y873F';
$address['AddressLine'] = array
(
'454 MAIN ST',
'FORT LEE, NJ',
'SUITE 6'
);
$address['City'] = 'harrison';
$address['StateProvinceCode'] = 'NJ';
$address['PostalCode'] = '07029';
$address['CountryCode'] = 'US';
$shipper['Address'] = $address;
$shipment['Shipper'] = $shipper;
$shipto['Name'] = 'Imani Imaginarium';
$addressTo['AddressLine'] = '21 ARGONAUT SUITE B';
$addressTo['City'] = 'ALISO VIEJO';
$addressTo['StateProvinceCode'] = 'CA';
$addressTo['PostalCode'] = '92656';
$addressTo['CountryCode'] = 'US';
$addressTo['ResidentialAddressIndicator'] = '';
$shipto['Address'] = $addressTo;
$shipment['ShipTo'] = $shipto;
$shipfrom['Name'] = 'Imani Imaginarium';
$addressFrom['AddressLine'] = array
(
'Southam Rd',
'4 Case Court',
'Apt 3B'
);
$addressFrom ['City'] = 'Timonium';
$addressFrom ['StateProvinceCode'] = 'MD';
$addressFrom ['PostalCode'] = '21093';
$addressFrom ['CountryCode'] = 'US';
$shipfrom ['Address'] = $addressFrom;
$shipment ['ShipFrom'] = $shipfrom;
$service ['Code'] = '03';
$service ['Description'] = 'Service Code';
$shipment ['Service'] = $service;
$packaging1 ['Code'] = '02';
$packaging1 ['Description'] = 'Rate';
$package1 ['PackagingType'] = $packaging1;
$dunit1 ['Code'] = 'IN';
$dunit1 ['Description'] = 'inches';
$dimensions1 ['Length'] = '5';
$dimensions1 ['Width'] = '4';
$dimensions1 ['Height'] = '2';
$dimensions1 ['UnitOfMeasurement'] = $dunit1;
$package1 ['Dimensions'] = $dimensions1;
$punit1 ['Code'] = 'LBS';
$punit1 ['Description'] = 'Pounds';
$packageweight1 ['Weight'] = '50';
$packageweight1 ['UnitOfMeasurement'] = $punit1;
$package1 ['PackageWeight'] = $packageweight1;
//$packaging2['Code'] = '02';
//$packaging2['Description'] = 'Rate';
//$package2['PackagingType'] = $packaging2;
//$dunit2['Code'] = 'IN';
//$dunit2['Description'] = 'inches';
//$dimensions2['Length'] = '3';
//$dimensions2['Width'] = '5';
//$dimensions2['Height'] = '8';
//$dimensions2['UnitOfMeasurement'] = $dunit2;
//$package2['Dimensions'] = $dimensions2;
//$punit2['Code'] = 'LBS';
//$punit2['Description'] = 'Pounds';
//$packageweight2['Weight'] = '50';
//$packageweight2['UnitOfMeasurement'] = $punit2;
//$package2['PackageWeight'] = $packageweight2;
$shipment['Package'] = array( $package1 ); //, $package2
$shipment['ShipmentServiceOptions'] = '';
$shipment['LargePackageIndicator'] = '';
$request['Shipment'] = $shipment;
echo "Request.......\n";
//print_r($request);
echo "\n\n";
return $request;
}
try
{
$mode = array
(
'soap_version' => 'SOAP_1_1', // use soap 1.1 client
'trace' => 1
);
// initialize soap client
$client = new SoapClient($wsdl , $mode);
//set endpoint url
$client->__setLocation($endpointurl);
//create soap header
$usernameToken['Username'] = $userid;
$usernameToken['Password'] = $passwd;
$serviceAccessLicense['AccessLicenseNumber'] = $access;
$upss['UsernameToken'] = $usernameToken;
$upss['ServiceAccessToken'] = $serviceAccessLicense;
$header = new SoapHeader('http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0','UPSSecurity',$upss);
$client->__setSoapHeaders($header);
//get response
$resp = $client->__soapCall($operation, array(processRate()));
//get status
echo "Response Status: " . $resp->Response->ResponseStatus->Description ."\n";
/* save in json format the last response from the server. */
$json = json_encode($client->__getLastResponse());
//$json = json_encode(simplexml_load_file('XOLTResult.xml'));
echo $json;
echo 'Entrou no Json';;
//save soap request and response to file
$fw = fopen($outputFileName , 'w');
fwrite($fw , "Request: \n" . $client->__getLastRequest() . "\n");
fwrite($fw , "Response: \n" . $client->__getLastResponse() . "\n");
fclose($fw);
}
catch(Exception $ex)
{
print_r ('Exception Error : '.$ex);
}
?>
Alguem por favor teria uma dica de como eu posso implementar isso via Ajax ?
Agradeco a todos um forte abraco.
Carregando comentários...