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. 2Checkout 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
PayPalExpressCheckoutRedirectURL |
String |
Request
<?php //Use the following 2 scripts: //The place_order_api_soap_paypal_express.php // And the place_order_api_soap_paypal_express_response that you can find below $host = "https://api.avangate.com"; $client = new SoapClient($host . "/soap/3.0/?wsdl", array( 'location' => $host . "/soap/3.0/", "stream_context" => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false ) )) )); function hmac($key, $data) { $b = 64; // byte length for md5 if (strlen($key) > $b) { $key = pack("H*", md5($key)); } $key = str_pad($key, $b, chr(0x00)); $ipad = str_pad('', $b, chr(0x36)); $opad = str_pad('', $b, chr(0x5c)); $k_ipad = $key ^ $ipad; $k_opad = $key ^ $opad; return md5($k_opad . pack("H*", md5($k_ipad . $data))); } $merchantCode = "MERCHANT_CODE";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.2checkout.com/cpanel/account_settings.php $key = "SECRET_KEY";// your account's secret key available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $now = gmdate('Y-m-d H:i:s'); //date_default_timezone_set('UTC') $string = strlen($merchantCode) . $merchantCode . strlen($now) . $now; $hash = hmac($key, $string); try { $sessionID = $client->login($merchantCode, $now, $hash); } catch (SoapFault $e) { echo "Authentication: " . $e->getMessage(); exit; } $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_soap_paypal_express_response.php'; $PayPalExpress->CancelURL = 'http://' . $_SERVER['HTTP_HOST'] . '/api/place_order_api_soap_paypal_express_response.php' . '?cancel=true'; $Payment->PaymentMethod = $PayPalExpress; $NewOrder->PaymentDetails = $Payment; // Call the method for retrieving Express Checkout redirect URL $redirectUrl = $client->getPayPalExpressCheckoutRedirectURL($sessionID,$NewOrder); header('Location:' . $redirectUrl); die(); // This is the start of the second script place_order_api_soap_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!'; } /*************************************************************/ $host = "https://api.avangate.com"; $client = new SoapClient($host . "/soap/3.0/?wsdl", array( 'location' => $host . "/soap/3.0/", "stream_context" => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false ) )) )); function hmac($key, $data) { $b = 64; // byte length for md5 if (strlen($key) > $b) { $key = pack("H*", md5($key)); } $key = str_pad($key, $b, chr(0x00)); $ipad = str_pad('', $b, chr(0x36)); $opad = str_pad('', $b, chr(0x5c)); $k_ipad = $key ^ $ipad; $k_opad = $key ^ $opad; return md5($k_opad . pack("H*", md5($k_ipad . $data))); } $merchantCode = "AVLRNG";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $key = "1sGC*[c_T0)J9(k+]6Kw";// your account's secret key available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $now = date('Y-m-d H:i:s'); //date_default_timezone_set('UTC') $string = strlen($merchantCode) . $merchantCode . strlen($now) . $now; $hash = hmac($key, $string); try { $sessionID = $client->login($merchantCode, $now, $hash); } catch (SoapFault $e) { echo "Authentication: " . $e->getMessage(); exit; } $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_soap_paypal_express_response.php1'; $PayPal->CancelURL = 'http://' . $_SERVER['HTTP_HOST'] . '/api/place_order_api_soap_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 $APIOrderFullInfo = $client->placeOrder($sessionID, $NewOrder); var_dump($APIOrderFullInfo);