Upgrade subscription
Overview
Use the setSubscriptionUpgrade method to upgrade a subscription.
Requirements
You can only upgrade subscriptions with automatic renewal enabled.
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. |
SubscriptionReference |
Required (string) |
Unique, system-generated subscription identifier. |
|
ProductCode |
Required (string) |
|
Unique identifier of the target product for the subscription upgrade process. You control the product code and can set it up in the Control Panel. |
Options |
Optional (string) |
|
Pricing options of the target product for the subscription upgrade process.
String - ';' separated list of 'OptionValue' returned by getProductUpgradeOptions function. If the pricing options groups is "scale" (interval), the Options parameter should be sent like this: [option group unique code] + "=" + value e.g. Users=7 |
CustomPrice |
Optional (string) |
|
The price you want to charge customers for the upgrade. The currency used by default is the same as in the previous payment customers made. |
Response
Parameters | Type/Description |
---|---|
Boolean |
true or false depending on whether or not the operation succeeded. |
Request
<?php
$host = "https://api.avangate.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 = "YOUR_MERCHANT_CODE";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php
$key = "YOUR_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;
}
$subscriptionReference = 'BE14FDCF37';
$ProductCode = 'my_subscription_123';
$Options = 'emailsupport;oneuser1';//case sensitive; include only price options codes (exclude spaces)
$customPrice = 1;
try {
$upgradedSubscriptions = $client->setSubscriptionUpgrade($sessionID, $subscriptionReference, $ProductCode, $Options, $customPrice);
}
catch (SoapFault $e) {
echo "upgradedSubscriptions: " . $e->getMessage();
exit;
}
var_dump("upgradedSubscriptions", $upgradedSubscriptions);
Pay partner invoice (PayPal payment)
Overview
Requirements
Parameters
Response
Request
Errors
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: