Use PayPal
Workflow
Request parameters
Parameter
Type / Description
Request sample
<?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": "[email protected]",
"FirstName": "Customer",
"LastName": "2Checkout",
"Zip": "12345"
},
"Items": [\
{\
"Name": "Dynamic product",\
"Description": "Test description",\
"Quantity": 1,\
"IsDynamic": true,\
"Tangible": false,\
"PurchaseType": "PRODUCT",\
"Price": {\
"Amount": 100,\
"Type": "CUSTOM"\
},\
"ProductTaxCategoryUUID": "2ad5ecfe-508d-4852-bd24-d400c297523b",\
"PriceType": "NET",\
"PriceOptions": [\
{\
"Name": "OPT1",\
"Options": [\
{\
"Name": "Name LR",\
"Value": "Value LR",\
"Surcharge": 7\
}\
]\
}\
],\
"RecurringOptions": {\
"CycleLength": 2,\
"CycleUnit": "DAY",\
"CycleAmount": 12.2,\
"ContractLength": 3,\
"ContractUnit": "DAY"\
}\
}\
],
"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);
}Response parameters
Parameter
Description
Last updated
Was this helpful?