Retrieve account balance
Overview
Use getPendingPayout to retrieve a detailed estimation of the amount that 2Checkout owes you, based on the sales from your current payout period.
The amounts returned by this API method are approximations, and may not represent the final amount that 2Checkout will pay you at the end of the billing period.
Parameters
Parameters | Type/Description | |
---|---|---|
inputParameters |
Object (Optional) Details below |
|
Currency | String (Optional) | |
Use this parameter to show the balance only for a single order currency. Example: 'USD'. If not sent, or sent as NULL, 2Checkout sends the balance for all order currencies. |
||
TotalCurrency | String (Optional) | |
Use this parameter to show the total account balance in the preferred currency. Example: 'EUR'. If not sent, or sent as NULL, 2Checkout sends the total balance in the default account currency. |
Request
<?php
require('PATH_TO_AUTH');
$inputParameters = new StdClass();
$inputParameters->Currency = 'USD';
$inputParameters->TotalCurrency = 'EUR';
$jsonRpcRequest = array(
'jsonrpc' => '2.0',
'method' => 'getPendingPayout',
'params' => array($sessionID, $inputParameters),
'id' => $i++
);
echo "<pre>";
var_dump("getPendingPayout", callRPC((Object)$jsonRpcRequest, $host));
Response
Pending Payout Object
Parameters | Type/Description | ||
---|---|---|---|
Currencies |
Array of objects Details below |
||
CurrencyObject |
Object Details below |
||
Currency |
String |
||
Order currency. | |||
OrdersTotal |
Object Total order amounts, divided per order source. |
||
estore | Float | ||
eStore order amounts from the current payout cycle. | |||
affiliates | Float | ||
Amounts from your affiliates orders, during the current payout cycle. | |||
partner | Float | ||
Amounts from your partner sales, during the current payout cycle. | |||
total | Float | ||
Total sales amount made in the order currency from this object, during the current payout cycle. | |||
RetainedToDisputesBalance | Float | ||
Amounts retained to your dispute balance reports, in the object order currency. | |||
ReleasedFromDisputesBalance | Float | ||
Amounts released from your dispute balance reports, in the object order currency. | |||
RetainedToRollingReserveBalance | Float | ||
Amounts retained to your rolling reserve, in the object order currency. | |||
ReleasedFromRollingReserveBalance | Float | ||
Amounts retained to your rolling reserve, in the object order currency | |||
ChargebackFees | Float | ||
Chargeback fees retained in the object order currency. | |||
ProcessingFees | Float | ||
Processing fees retained by 2Checkout in the object order currency. | |||
AffiliatesCommission | Float | ||
Affiliate commissions paid by 2Checkout in the object order currency. | |||
TaxCollected | Float | ||
Tax collected by 2Checkout in the object order currency. | |||
EstimatedTotalRevenue | Float | ||
The estimated total revenue for the object order currency. | |||
Total |
Object Total account balance amount |
||
Currency |
String |
||
Currency used for expressing the account balance.. If not sent in the API call, 2Checkout uses the account default currency. | |||
OrdersTotal |
|
Object Total order amounts, divided per order source. |
|
estore | Float | ||
Amounts from total eStore orders during the currency payout cycle. | |||
affiliates | Float | ||
Amounts from total affiliates orders during the currency payout cycle. | |||
partner | Float | ||
Amounts from total partner orders during the currency payout cycle. | |||
total | Float | ||
Total sales amount during the currency payout cycle. | |||
RetainedToDisputesBalance | Float | ||
Total amounts retained to your dispute balance during the current payout cycle. | |||
RetainedFromDisputesBalance | Float | ||
Total amounts released from your dispute balance during the current payout cycle. | |||
RetainedToRollingReserveBalance | Float | ||
Total amounts retained to your rolling reserve during the current payout cycle. | |||
RetainedFromRollingReserveBalance | Float | ||
Total amounts released from your rolling reserve during the current payout cycle. | |||
ChargebackFees | Float | ||
Total chargeback fees retained from your account during the currency payout cycle. | |||
ProcessingFees | Float | ||
Total processing fees retained by 2Checkout during the current payout cycle. | |||
AffiliatesCommission | Float | ||
Total affiliates commissions paid by 2Checkout during the current payout cycle. | |||
TaxCollected | Float | ||
Total tax amount collected by 2Checkout during the current payout cycle. | |||
EstimatedTotalRevenue | Float | ||
Total estimated revenue for the current payout cycle. |
Use test orders
Overview
Place a test order using catalog products defined in your Control Panel.
Requirements
Set the Payment details type to TEST in order to create an order in a test environment.
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) |
|
|
An object designed to collect all data necessary for an order, including billing, product/subscription plan, and payment details.
|
Response
Parameters | Type/Description |
---|---|
Object |
Request
<?php
require ('PATH_TO_AUTH');
$Order = new stdClass();
$Order->RefNo = NULL;
$Order->Currency = 'usd';
$Order->Country = 'US';
$Order->Language = 'en';
$Order->CustomerIP = '91.220.121.21';
$Order->ExternalReference = NULL;
$Order->Source = NULL;
$Order->AffiliateId = NULL;
$Order->CustomerReference = NULL;
$Order->Items = array();
$Order->Items[0] = new stdClass();
$Order->Items[0]->Code = 'my_subscription_1';
$Order->Items[0]->Quantity = 1;
$Order->Items[0]->PriceOptions = NULL;
$Order->Items[0]->SKU = NULL;
$Order->Items[0]->Price = NULL;
$Order->Items[0]->CrossSell = NULL;
$Order->Items[0]->Trial = false;
$Order->Items[0]->AdditionalFields = NULL;
$Order->Items[0]->SubscriptionStartDate = NULL; //If empty or null, subscriptions become active when purchase is made.
$Order->BillingDetails = new stdClass();
$Order->BillingDetails->FirstName = 'John';
$Order->BillingDetails->LastName = 'Doe';
$Order->BillingDetails->CountryCode = 'us';
$Order->BillingDetails->State = 'California';
$Order->BillingDetails->City = 'LA';
$Order->BillingDetails->Address1 = 'Address example';
$Order->BillingDetails->Address2 = NULL;
$Order->BillingDetails->Zip = '90210';
$Order->BillingDetails->Email = 'cosmin.deftu@2checkout.com';
$Order->BillingDetails->Phone = NULL;
$Order->BillingDetails->Company = NULL;
$Order->DeliveryDetails = NULL;
$Order->PaymentDetails = new stdClass ();
$Order->PaymentDetails->Type = 'TEST';
$Order->PaymentDetails->Currency = 'usd';
$Order->PaymentDetails->PaymentMethod = new stdClass ();
$Order->PaymentDetails->CustomerIP = '10.10.10.10';
$Order->PaymentDetails->PaymentMethod->RecurringEnabled = true;
$Order->PaymentDetails->PaymentMethod->CardNumber = "4111111111111111";
$Order->PaymentDetails->PaymentMethod->CardType = 'visa';
$Order->PaymentDetails->PaymentMethod->ExpirationYear = '2019';
$Order->PaymentDetails->PaymentMethod->ExpirationMonth = '12';
$Order->PaymentDetails->PaymentMethod->HolderName = 'John';
$Order->PaymentDetails->PaymentMethod->CCID = '123';
$Order->PaymentDetails->PaymentMethod->Vendor3DSReturnURL = "http://yoursuccessurl.com"; // used for 3DS ordering
$Order->PaymentDetails->PaymentMethod->Vendor3DSCancelURL = "http://yourcancelurl.com"; // used for 3DS ordering
$Order->AdditionalFields = NULL;
$Order->LocalTime = NULL;
$Order->GiftDetails = NULL;
try {
$newOrder = $client->placeOrder($sessionID, $Order);
}
catch (SoapFault $e) {
echo "newOrder: " . $e->getMessage();
exit;
}
var_dump("newOrder", $newOrder);
Assign order/product additional fields
Overview
Use the assignAdditionalField method to update additional fields for your account.
Parameters
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. |
FieldCode |
Required (string) |
|
Field identifier. Alpha-numeric chars, underscores and dashes. |
Required |
Boolean |
|
True or False depending on whether you want make the field mandatory or not. |
ProductCode |
Required (string) |
|
The unique product code that you control not the system-generated product identifier. |
Response
bool(true)
Request
<?php
$host = "https://api.2checkout.com";
$client = new SoapClient($host . "/soap/4.0/?wsdl", array(
'location' => $host . "/soap/4.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 = "YOURCODE123"; //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.2checkout.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;
}
$ProductCode = 'AAA4643116';
$FieldCode = 'NewsletterPolicy123457106';
$Required = true;
try {
$AssignedAdditionalField = $client->assignAdditionalField($sessionID, $FieldCode, $Required, $ProductCode);
}
catch (SoapFault $e) {
echo "AssignedAdditionalField: " . $e->getMessage();
exit;
}
var_dump("AssignedAdditionalField", $AssignedAdditionalField);
?>
Unassign additional fields
Overview
Use the unassignAdditionalField method to update additional fields for your account.
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. |
FieldCode |
Required (string) |
|
Field identifier. Alpha-numeric chars, underscores, and dashes. |
ProductCode |
Required (string) |
|
The unique product code that you control not the system-generated product identifier. |
Response
bool(true)
Request
<?php
require ('PATH_TO_AUTH');
$ProductCode = 'YOUR_PRODUCT_CODE';
$FieldCode = 'YOUR_FIELD_CODE';
try {
$UnassignedAdditionalField = $client->unassignAdditionalField($sessionID, $FieldCode, $ProductCode);
}
catch (SoapFault $e) {
echo "UnassignedAdditionalField: " . $e->getMessage();
exit;
}
var_dump("UnassignedAdditionalField", $UnassignedAdditionalField);
Assign price option group
Overview
Use the assignPricingConfigurationOptionGroup method to assign a PricingOption Group to a PricingConfiguration.
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. |
PricingConfigurationCode |
Required (string) |
|
Unique, system-generated pricing configuration identifier. |
PriceOptionsGroupAssigned |
Required (Object) |
|
Details below. |
Parameters | Type/Description |
---|---|
PriceOptionsGroupAssigned |
Object |
Code |
Required (string) |
|
PricingOption Group identifier. |
Required |
Required (Object) |
|
True or false depending on whether the pricing options group is required during the purchase process or not. |
Response
bool(true)
Request
<?php
require ('PATH_TO_AUTH');
$PricingConfigurationCode = 'YOUR_CODE';
$PriceOptionsGroupAssigned = new stdClass();
$PriceOptionsGroupAssigned->Code = 'USERSUSERS';
$PriceOptionsGroupAssigned->Required = TRUE;
$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'assignPricingConfigurationOptionGroup',
'params' => array($sessionID, $PricingConfigurationCode, $PriceOptionsGroupAssigned)
);
var_dump (callRPC((Object)$jsonRpcRequest, $host));
?>
Retrieve price option groups
Overview
Use the searchPriceOptionGroups to extract information on the price option groups you configured.
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. |
PriceOptionGroupSearch |
Optional (object) |
|
Details below. |
PriceOptionGroupSearch |
Object |
Name |
Optional (string) |
|
The name of the pricing options groups configured in the 2Checkout system. Can be NULL. |
Types |
Optional (array) |
|
Possible values: · RADIO · CHECKBOX · INTERVAL · COMBO Can be NULL. |
Limit |
Optional (int) |
|
Number of results displayed per page. Default maximum value is 10. Can be NULL. |
Page |
Optional (int) |
|
A specific page of search results. Default value is 1. Can be NULL. |
Response
Parameters | Type/Description |
---|---|
Array of objects |
Request
<?php
require ('PATH_TO_AUTH');
$groupCode = 'USERS';
$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'getPriceOptionGroup',
'params' => array($sessionID, $groupCode)
);
var_dump (callRPC((Object)$jsonRpcRequest, $host));
?>
Update a subscription plan/product
Overview
Use the updateProduct method to update the configuration of a subscription plan/product you already configured for your account.
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) |
|
|
Use this object to configure your subscription plans/products.
You can update/edit all parameters, except the following:
|
Exceptions
When updating a subscription plan/product, you also update its PricingConfigurations. However, you cannot modify:
- The pricing configuration CODE.
- The PricingSchema from DYNAMIC to FLAT or vice versa.
- The intervals of an existing pricing configuration (MinQuantity and MaxQuantity).
Response
bool(true)
Request
<?php
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)) {
// var_dump($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 = "YOURCODE12345";//your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.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
$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);
$ProductCode = 'NewProdCodeAPI12345';
$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'getProductByCode',
'params' => array($sessionID, $ProductCode)
);
$myProduct = callRPC($jsonRpcRequest, $host);
$myProduct->ProductName = 'Edited_From_API_Again';
var_dump ($myProduct);
$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'updateProduct',
'params' => array($sessionID, $myProduct)
);
$updatedProduct = callRPC($jsonRpcRequest, $host);
var_dump ($updatedProduct);
?>
Example response
bool(true)
Update order/product additional fields
Overview
Parameters
Response
bool(true)
Request
<?php
$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 = "YOURCODE123"; //your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.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;
}
$AdditionalField = new stdClass();
$AdditionalField->Label = 'Do you agree with the new newsletter policy 2015?';
$AdditionalField->Type = 'LISTBOX';
$AdditionalField->Code = 'NewsletterPolicy1234576';
$AdditionalField->ApplyTo = 'ORDER';
$AdditionalField->Values = array();
$AdditionalField->Values[0] = 'YES';
$AdditionalField->Values[1] = 'NO';
$AdditionalField->ValidationRule = null;
$AdditionalField->Translations = array();
$AdditionalField->Translations[0] = new stdClass();
$AdditionalField->Translations[0]->Label = "Êtes-vous d'accord avec la politique de la newsletter?";
$AdditionalField->Translations[0]->Values = array();
$AdditionalField->Translations[0]->Values[0] = 'Oui';
$AdditionalField->Translations[0]->Values[1] = 'Non';
$AdditionalField->Translations[0]->Language = 'fr';
$AdditionalField->Translations[1] = new stdClass();
$AdditionalField->Translations[1]->Label = 'Haben Sie mit dem Newsletter Politik zu?';
$AdditionalField->Translations[1]->Values = array();
$AdditionalField->Translations[1]->Values[0] = 'Ja';
$AdditionalField->Translations[1]->Values[1] = 'Nein';
$AdditionalField->Translations[1]->Language = 'de';
$FieldCode = 'NewsletterPolicy1234576';
try {
$UpdateAdditionalField = $client->updateAdditionalField($sessionID, $FieldCode, $AdditionalField);
}
catch (SoapFault $e) {
echo "UpdateAdditionalField: " . $e->getMessage();
exit;
}
var_dump("UpdateAdditionalField", $UpdateAdditionalField);
?>
Retrieve SKU code by details
Overview
Use the getSKUCodeByDetails method to retrieve an SKU based on its included details.
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. |
|
skuDetailsObject |
Object |
|
|
Details below |
|
|
PricingConfigurationCode |
Required (string) |
|
|
Unique identifier of the pricing configuration. |
|
Currency |
Optional (string) |
|
|
ISO currency code. |
|
PurchaseType |
Optional (string) |
|
|
Purchase type identifier. Possible values:
|
|
PriceOptions |
Optional (stringArray) |
|
|
Array of price options names. |
|
Quantity |
Optional (int) |
|
|
Numeric identifier of product quantity. |
Response
{SKUCode} // eg: SKU-EUR-1-10-N-A
Request
<?php
require ('PATH_TO_AUTH');
$skuDetailsObject = new stdClass();
$skuDetailsObject->PricingConfigurationCode = 'YOUR_CODE';
$skuDetailsObject->Currency = 'USD';
$skuDetailsObject->PurchaseType = 'NEW_PRODUCT';
$skuDetailsObject->PriceOptions = ['A'];
$skuDetailsObject->Quantity = 1;
try {
$getSkuDetails = $client->getSkuDetails($sessionID, $skuDetailsObject);
} catch (SoapFault $e) {
echo $e->getMessage();
}
var_dump($getSkuDetails);