Use PayPal Express
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
Parameters | Type/Description |
---|---|
PayPalExpressCheckoutRedirectURL |
String |
Retrieve PayPal redirect URL
<? require ('PATH_TO_AUTH'); $Order = new stdClass(); $Order->Language = 'fr'; //$Order->LocalTime = date('Y-m-d G:i:s'); $Order->CustomerReference = 'APITEST';//uniqid('TESTCUSTOMER:'); $Product = new stdClass(); $Product->Code = 'my_subscription_1'; $Product->Quantity = 1; $Order->Items[] = $Product; $Order->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; $Order->PaymentDetails = $Payment; // Call the method for retrieving Express Checkout redirect URL $redirectUrl = $client->getPayPalExpressCheckoutRedirectURL($sessionID,$Order); header('Location:' . $redirectUrl);
Place order with PayPal Express
<?php declare(strict_types=1); class Configuration { public const MERCHANT_CODE = ''; public const MERCHANT_KEY = ''; public const URL = 'http://api.2checkout.com/soap/6.0'; public const ACTION = 'placeOrder'; public const ADDITIONAL_OPTIONS = null; //array or JSON public const PAYLOAD = <<<JSON { "Country": "us", "Currency": "USD", "CustomerIP": "91.220.121.21", "ExternalReference": "SOAP_API_AVANGTE", "Language": "en", "Source": "testAPI.com", "BillingDetails": { "Address1": "Test Address", "City": "LA", "State": "California", "CountryCode": "US", "Email": "testcustomer@2Checkout.com", "FirstName": "Customer", "LastName": "2Checkout", "Zip": "12345" }, "Items": [ { "Code": "A90B3D8FDE", "Quantity": 1 } ], "PaymentDetails": { "Currency": "USD", "CustomerIP": "91.220.121.21", "PaymentMethod": { "RecurringEnabled": false, "ReturnURL": "http://secure.avangate.local/test/index.php", "CancelURL": "http://secure.avangate.local/test/create_order.php" }, "Type": "PAYPAL" } } JSON; } class Client { public function call( string $url = Configuration::URL, $payload = Configuration::PAYLOAD, string $action = Configuration::ACTION ): ?object { if (is_array($payload)) { $payload = json_encode($payload); } if (!empty($payload)) { // SoapClient works with objects(StdClass) $payload = json_decode($payload); } $soapClient = $this->getClient($url); $sessionId = $this->getSession($soapClient); $args = array_filter([$sessionId, $payload]); return $soapClient->$action(...$args); } public function getClient(string $url): SoapClient { return new SoapClient( $url.'?wsdl', [ 'location' => $url, 'cache_wsdl' => WSDL_CACHE_NONE, ] ); } public function getSession(SoapClient $client) { $date = gmdate('Y-m-d H:i:s'); $merchantCode = Configuration::MERCHANT_CODE; $key = Configuration::MERCHANT_KEY; $string = strlen($merchantCode).$merchantCode.strlen($date).$date; $hash = hash_hmac('md5', $string, $key); $client->__setCookie('XDEBUG_SESSION', 'PHPSTORM'); return $client->login($merchantCode, $date, $hash); } } try { $client = new Client(); var_dump($client->call()); } catch (Exception $ex) { var_dump($ex); }
Workflow
- Authentication via login API method.
- Retrieve PayPal redirect URL. When you retrieve the PayPal redirect URL, apart from the token you will also receive 2 parameters that are encoded: billingDetails and deliveryDetails. These have to be base64_decoded and the information should be used in the placeOrder API call (email, billing address etc.).
- Place the order with PayPal Express using the token sent by PayPal.