Retrieve PayPal redirect URL
Overview
Use the getPayPalExpressCheckoutRedirectURL method to retrieve the RedirectURL by sending an Order object with PAYPAL_EXPRESS payment method.
Parameters
Parameters | Type/Description |
---|---|
sessionID |
Required (string) |
|
Session identifier, the output of the Login method. Include sessionID into all your requests. Avangate throws an exception if the values are incorrect. The sessionID expires in 10 minutes. |
Required (Object) |
|
|
Object designed to collect all data necessary for an order, including billing, product/subscription plan and payment details.
Use PAYPAL_EXPRESS as the payment method. |
Response
Parameters | Type/Description |
---|---|
PayPalExpressCheckoutRedirectURL |
String |
Request
<?php //Use the following 2 scripts: //The place_order_api_json_paypal_express.php // And the place_order_api_json_paypal_express_response that you can find below require ('PATH_TO_AUTH'); $NewOrder = new stdClass(); $NewOrder->Language = 'fr'; //$NewOrder->LocalTime = date('Y-m-d G:i:s'); $NewOrder->CustomerReference = 'APITEST';//uniqid('TESTCUSTOMER:'); $Product = new stdClass(); $Product->Code = 'my_subscription_1'; $Product->Quantity = 1; $NewOrder->Items[] = $Product; $NewOrder->Currency = 'EUR'; $Payment = new stdClass(); $Payment->Type = 'PAYPAL_EXPRESS'; $Payment->Currency = 'EUR'; $Payment->CustomerIP = '91.220.121.21'; $PayPalExpress = new stdClass(); $PayPalExpress->Email='customer@email.com'; $PayPalExpress->ReturnURL = 'http://' . $_SERVER['HTTP_HOST'] . '/api/place_order_api_json_paypal_express_response.php'; $PayPalExpress->CancelURL = 'http://' . $_SERVER['HTTP_HOST'] . '/api/place_order_api_json_paypal_express_response.php' . '?cancel=true'; $Payment->PaymentMethod = $PayPalExpress; $NewOrder->PaymentDetails = $Payment; // Call the method for retrieving Express Checkout redirect URL $jsonRpcRequest = new stdClass(); $jsonRpcRequest->jsonrpc = '2.0'; $jsonRpcRequest->method = 'getPayPalExpressCheckoutRedirectURL'; $jsonRpcRequest->params = array($sessionID, $NewOrder); $jsonRpcRequest->id = $i++; $redirectUrl = callRPC($jsonRpcRequest, $host); header('Location:' . $redirectUrl); die(); // This is the start of the second script place_order_api_json_paypal_express_response.php <?php var_dump($_REQUEST); if (isset($_GET['billingDetails'])) { $billingDetails = base64_decode($_GET['billingDetails']); parse_str($billingDetails, $billingDetailsArray); } if (isset($_GET['deliveryDetails'])) { $deliveryDetails = base64_decode($_GET['deliveryDetails']); parse_str($deliveryDetails, $deliveryDetailsArray); } if (isset($_GET['token'])) { $token = $_GET['token']; } if (!empty($_GET['cancel']) && $_GET['cancel'] == true) { echo 'canceled'; die(); } else { echo 'success!'; } /*************************************************************/ function callRPC($Request, $hostUrl, $Debug = true) { $curl = curl_init($hostUrl); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSLVERSION, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json')); $RequestString = json_encode($Request); curl_setopt($curl, CURLOPT_POSTFIELDS, $RequestString); if ($Debug) { $RequestString; } $ResponseString = curl_exec($curl); if ($Debug) { $ResponseString; } if (!empty($ResponseString)) { $Response = json_decode($ResponseString); if (isset($Response->result)) { return $Response->result; } if (!is_null($Response->error)) { var_dump($Request->method, $Response->error); } } else { return null; } } $host = 'https://api.avangate.com/rpc/3.0/'; $merchantCode = "YOUR_MERCHANT_CODE";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $key = "YOUR_SECRET_KEY";// your account's secret key available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $string = strlen($merchantCode) . $merchantCode . strlen(gmdate('Y-m-d H:i:s')) . gmdate('Y-m-d H:i:s'); $hash = hash_hmac('md5', $string, $key); $i = 1; // counter for api calls // Call the login method for authentication $jsonRpcRequest = new stdClass(); $jsonRpcRequest->jsonrpc = '2.0'; $jsonRpcRequest->method = 'login'; $jsonRpcRequest->params = array($merchantCode, gmdate('Y-m-d H:i:s'), $hash); $jsonRpcRequest->id = $i++; $sessionID = callRPC($jsonRpcRequest, $host); $NewOrder = new stdClass(); $NewOrder->Language = 'fr'; $NewOrder->CustomerReference = 'APITEST';//uniqid('TESTCUSTOMER:'); $Product = new stdClass(); $Product->Code = 'my_subscription_1'; $Product->Quantity = 1; $NewOrder->Items[] = $Product; $Billing = new stdClass(); $Billing->Country = empty($billingDetailsArray['Country']) ? '' : $billingDetailsArray['Country']; $Billing->City = empty($billingDetailsArray['City']) ? '' : $billingDetailsArray['City']; $Billing->State = empty($billingDetailsArray['State']) ? '' : $billingDetailsArray['State']; $Billing->PostalCode = empty($billingDetailsArray['PostalCode']) ? '' : $billingDetailsArray['PostalCode']; $Billing->Email = empty($billingDetailsArray['Email']) ? '' : $billingDetailsArray['Email']; $Billing->FirstName = empty($billingDetailsArray['FirstName']) ? '' : $billingDetailsArray['FirstName']; $Billing->LastName = empty($billingDetailsArray['LastName']) ? '' : $billingDetailsArray['LastName']; $Billing->Address = empty($billingDetailsArray['Address']) ? '' : $billingDetailsArray['Address']; $NewOrder->BillingDetails = $Billing; $Delivery = new stdClass(); $Delivery->Country = empty($deliveryDetailsArray['Country']) ? '' : $deliveryDetailsArray['Country']; $Delivery->City = empty($deliveryDetailsArray['City']) ? '' : $deliveryDetailsArray['City']; $Delivery->State = empty($deliveryDetailsArray['State']) ? '' : $deliveryDetailsArray['State']; $Delivery->FirstName = empty($deliveryDetailsArray['FirstName']) ? '' : $deliveryDetailsArray['FirstName']; $Delivery->LastName = empty($deliveryDetailsArray['LastName']) ? '' : $deliveryDetailsArray['LastName']; $Delivery->Address = empty($deliveryDetailsArray['Address']) ? '' : $deliveryDetailsArray['Address']; $Delivery->PostalCode = empty($deliveryDetailsArray['PostalCode']) ? '' : $deliveryDetailsArray['PostalCode']; $NewOrder->DeliveryDetails = $Delivery; $Payment = new stdClass(); $Payment->Type = 'PAYPAL_EXPRESS'; $Payment->Currency = 'EUR'; // for sku $Payment->CustomerIP = '91.220.121.21'; $PayPal = new stdClass(); $PayPal->Email='customer@email.com'; $PayPal->Token = $token; $PayPal->ReturnURL = 'http://' . $_SERVER['HTTP_HOST'] . '/api/place_order_api_json_paypal_express_response.php1'; $PayPal->CancelURL = 'http://' . $_SERVER['HTTP_HOST'] . '/api/place_order_api_json_paypal_express_response.php1' . '?cancel=true'; $Payment->PaymentMethod = $PayPal; $NewOrder->PaymentDetails = $Payment; $OrderField = new stdClass(); $OrderField->Code = 'ED5310'; $OrderField->Value = 'Value1'; // Call the method for placing the order $jsonRpcRequest = new stdClass(); $jsonRpcRequest->jsonrpc = '2.0'; $jsonRpcRequest->method = 'placeOrder'; $jsonRpcRequest->params = array($sessionID, $NewOrder); $jsonRpcRequest->id = $i++; $APIOrderFullInfo = callRPC($jsonRpcRequest, $host); var_dump($APIOrderFullInfo);