Retrieve product information by ID
Overview
Extract information about a product from the Avangate system using its unique ID and the code of the pricing list to which it is assigned to.
Requirements
Parameters
Parameter | Type/Description |
---|---|
sessionID | Required (string) |
Session identifier, which is the output of the Login method. An exception will be thrown if the values are incorrect. | |
productId | Required (int) |
The unique identifier of the product from the Avangate platform. | |
pricingListCode | Required (string) |
The unique identifier of a partner price list. |
Response
Parameter | Type/Description |
---|---|
ProductInfo | Complex object |
Complex object containing arrays of SimpleProduct and PriceOptions objects. |
Request
<?php
require('PATH_TO_AUTH'); // Authentication example: https://knowledgecenter.avangate.com/Integration/Channel_Manager_API/SOAP/02Authentication
require('PATH_TO_setPartner'); // setPartner example: https://knowledgecenter.avangate.com/Integration/Channel_Manager_API/SOAP/06Reference/Partner/00Set_partner
$productId = 'YOUR_PRODUCT_ID';
$pricingListCode = 'YOUR_PRICING_LIST_CODE';
try {
$ProductbyID= $client->getProductById ($sessionID, $productId, $pricingListCode);
} catch (SoapFault $e) {
echo "ProductInfo: " . $e->getMessage();
exit;
}
var_dump ("ProductInfo", $ProductbyID);
Errors
Error | Description |
---|---|
INVALID_PARTNER |
No partner is set. |
INVALID_PRODUCT |
Please provide a valid product ID. |
INVALID_PRICING_LIST_CODE |
Please provide a valid pricing list code. |
PARTNER_PRICING_LISTS_NOT_FOUND |
There are no pricing lists with provided code. |
PRODUCT_NOT_FOUND |
There is no product with this id in the given pricing list. |
Retrieve a pricing configuration by name
Overview
Use the getPricingConfigurationByName method to extract information on a specific pricing configuration you set for a product.
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. |
productCode |
Required (string) |
|
The editable code that you control at product-level, not the unique, system-generated product ID. |
pricingConfigurationName |
Required (string) |
|
The name of the pricing configuration. |
schemaType |
Required (string) |
|
|
priceType |
Optional (string) |
|
Possible values: NET or GROSS |
Response
Parameters | Type/Description |
---|---|
Object |
Request
<?php
require ('PATH_TO_AUTH');
$productCode = 'subscr1';
$pricingConfigurationName = 'EU prices';
$schemaType = 'DYNAMIC';// FLAT or DYNAMIC
$priceType = 'NET'; // or GROSS
$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'getPricingConfigurationByName',
'params' => array($sessionID, $productCode, $pricingConfigurationName, $schemaType, $priceType)
);
var_dump (callRPC((Object)$jsonRpcRequest, $host));
?>
Cross-sell
Overview
Use this section to retrieve information about the cross-sell campaigns configured on your account.
Add order/product additional fields
Overview
Use the addAdditionalField method to create new 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. Avangate throws an exception if the values are incorrect. The sessionID expires in 10 minutes. |
Object |
|
|
Additional field object. |
Request
<?php
require ('PATH_TO_AUTH');
$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';
$jsonRpcRequest = array(
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'addAdditionalField',
'params' => array(
$sessionID,
$AdditionalField
)
);
var_dump(callRPC((Object) $jsonRpcRequest, $host));
?>
Response
bool(true)
Next renewal price
Overview
Use the methods below to set or retrieve information related to the next renewal price to be charged on a customer's subscription.
Assign values for the additional order fields
Overview
Use this method to assign values to the additional fields for orders.
Use case
- Add an HTML link or button on your page like the one below.
- Create a JavaScript click handler to execute the Inline Client desired methods.
- Set your currency using the TwoCoInlineCart.cart.setCurrency('USD') method.
- Use the TwoCoInlineCart.cart.setAdditionalFields(additionalFields) method to set the order additional fields values.
- The additionalFields argument should contain a list of objects with the code of the field and its value.
- Use the TwoCoInlineCart.products.add({code, quantity}) method to prepare your products.
- Use the TwoCoInlineCart.cart.checkout() method to show the cart on your page.
Sample request
HTML
<a href="#" class="btn btn-success" id="buy-button">Buy now!</a>
JavaScript
window.document.getElementById('buy-button').addEventListener('click', function() {
TwoCoInlineCart.cart.setCurrency('USD');
TwoCoInlineCart.cart.setAdditionalFields([
// textbox type example
{
code : 'TextInIPNCustom123',
value : 'Some text value'
},
// listbox type example
{
code : 'SourceOrder',
value : 'The WWW'
},
// hidden type example
{
code : 'cart2cotestorderhidden',
value : 'Some text for the hidden field'
},
// checkbox type example
{
code : 'cart2cotestordercheckbox',
value : true
}
]);
TwoCoInlineCart.products.add({
code: '2CO3MONTHS',
quantity: 1
});
TwoCoInlineCart.cart.checkout();
});
Demo
After defining the additional fields for your orders using the above method, your cart should look like this:
Set next renewal price
Overview
Charge customers custom prices for the renewal of subscriptions, moving away from the recurring pricing configuration at product level. Use the setCustomRenewalPrice method to set custom renewal prices for subscriptions and control the number of recurring billing cycles the price impact subscribers.
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. |
SubscriptionReference |
Required (string) |
Unique, system-generated subscription identifier. |
|
Price |
Required (double) |
|
The custom renewal price you want to charge. |
Currency |
Required (string) |
|
Currency in which prices are expressed. The currency ISO code used for the payment is ISO 4217. The default currency is the same as in the previous payment made by the customer. |
Cycles |
Required (int) |
|
Number of recurring billing cycles for which 2Checkout charges customers the custom price rather, ignoring product–level recurring pricing configurations. (The renewal cycles number must be a positive integer. Default value 1). |
ReasonText |
Optional (string) |
|
Save details at the subscription-level about the custom costs. |
Request
<?php
require ('PATH_TO_AUTH');
$subscriptionReference = 'YOUR_REFERENCE';
$Price = 25;
$Currency = 'gbp';
$Cycles = 7;
$ReasonText = null;
$jsonRpcRequest = array (
'method' => 'setCustomRenewalPrice',
'params' => array($sessionID, $subscriptionReference, $Price, $Currency, $Cycles, $ReasonText),
'id' => $i++,
'jsonrpc' => '2.0');
var_dump (callRPC((Object)$jsonRpcRequest, $host, true));
Response
Parameters | Type/Description |
---|---|
Boolean |
true or false depending on whether or not the operation succeeded. |
Retrieve cross-sell campaign by code
Overview
Use the getCrossSellCampaign method to extract information about the cross-sell campaign identified by the provided campaign code.
Request parameters
Parameters | Type | Required/Optional | Description |
---|---|---|---|
sessionID |
String | Required |
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. |
CampaignCode |
String | Required | The campaign code. |
Request sample
<?php
declare(strict_types=1);
// Start clear CLI
echo chr(27).chr(91).'H'.chr(27).chr(91).'J';
// End clear CLI
$executionStartTime = microtime(true);
$apiVersion = '6.0';
$apiHost = "http://api.avangate.local";
$host = $apiHost."/soap/" . $apiVersion . "/";
$client = new SoapClient(
$host."?wsdl",
[
'location' => $host,
'trace' => 1,
'cache_wsdl' => WSDL_CACHE_NONE
]
);
$client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');
// Please be aware to consider valid data
$merchantCode = 'your_merchant_code';
$key = 'your_merchant_key';
// Generate hash for login
$date = gmdate('Y-m-d H:i:s');
$string = strlen($merchantCode) . $merchantCode . strlen($date) . $date;
$hash = hash_hmac('md5', $string, $key);
try {
$sessionID = $client->login($merchantCode, $date, $hash);
} catch (SoapFault $e) {
echo $e->getMessage();
}
var_dump("Generated sessionID: ". $sessionID);
echo "\n\r";
$crossSellCampaignCode = '2Xrl83J0k+qOr3W1ceTwZnHHr30=';
try {
$result = $client->getCrossSellCampaign($sessionID, $crossSellCampaignCode);
echo "\n\rGET CROSS SELL CAMPAIGNS: \n\r";
print_r(json_encode($result, JSON_PRETTY_PRINT));
} catch (SoapFault $e) {
echo $e->getMessage();
}
$executionEndTime = microtime(true);
// The duration will be displayed in seconds and milliseconds.
$seconds = round($executionEndTime - $executionStartTime, 2);
// Print it out
echo "\n\rThis script took $seconds to execute.\n\r";
Response
Parameters | Type/Description |
---|---|
CrossSellCampaign |
Object |