Skip to main content

Set an external reference

Overview

Use the setExternalRef method in conjunction with setSubscriptionUpgrade.

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.

externalRef

Required (string)

 

External reference you control.

Response

Parameters Type/Description

Boolean

true or false depending on whether or not the operation succeeded.

Request

<?php

require ('PATH_TO_AUTH');

$externalReference = 'YOUR_EXTERNAL_REFERENCE';

$jsonRpcRequest = array (
'method' => 'setExternalRef',
'params' => array($sessionID, $externalReference),
'id' => $i++,
'jsonrpc' => '2.0');

var_dump (callRPC((Object)$jsonRpcRequest, $host, true));

ProductInfo Object Structure

Parameters

Parameter Type/Description
SimpleProduct Object
  Product object with the structure detailed below.
                                                            LongDescription           

String/Optional

 

The product's long description.

                                                            SystemRequirements

String

 

Localized system requirements.

                                                            Platforms

Array of Platform objects/Optional

 

An array of objects detailing the platforms supported by the application. 

                                                            URLImage

String

 

The location of the image in the 2Checkout system.

                                                            TrialURL

String

 

The trial URL for users speaking the language corresponding to the Translation object.

                                                            TrialDescription

String/Optional

 

Descriptive text entered for trials.

                                                            AdditionalInfo

NULL

 

Additional information about the product.

                                                           RenewalProductID

Int

 

The product renewal ID.

                                                           ProductId

String

 

Unique, system-generated product ID.

                                                           ProductCode

String

 

Editable product code that you control.

                                                           ProductName

String

 

Editable product name.

                                                           ProductVersion

String/Optional

 

The product version number.

                                                           ProductStatus

Boolean

 

The status of the product. Enabled if TRUE, disabled if FALSE.

                                                           ProductType

String/Optional

 

REGULAR or BUNDLE

Defaults to REGULAR.

                                                           Currency

String

 

The currency ISO code used for shipping costs - ISO 4217.

                                                           DefaultCurrency

String

 

The ISO code of the default currency for the pricing configuration.

                                                           Price

String

 

The product price.

                                                           GiftOption

Boolean/Optional

 

TRUE or FALSE depending on whether the product can be gifted or not.

                                                           IdGroup

String

 

The ID of the product group.

                                                           GroupName

String/Optional

 

The name of the Product Group to which the product belongs.

                                                           ShortDescription

String/Optional

 

The product's short description.

                                                           ProductImage

NULL

 

Image object. 

                                                           Languages

Array

 

An array of objects detailing the languages supported by the application.

                                                           PriceIntervals

NULL

 

 

                                                           PriceType

String

 

Possible values:  NET/GROSS.

                                                           PriceSchema

String

 

DYNAMIC

                                                           PriceOptions

Array of AssignedPriceOptionGroup objects

 

PriceOptionsGroupItem object with the structure detailed below.

  Id

String

 

Price option identifier.

  Name

String

 

Pricing configuration name.

  Description

String

 

Description of the pricing option.

  Required

Boolean

 

TRUE or FALSE depending on whether the assigned product field is required or not.

  Type

String

 

The type of pricing option.

  Options

Array of strings

 

The pricing options group option code you configured that the 2Checkout system uses to calculate product prices for pricing configurations without a base price.

 

Implement Google Universal Analytics in ConvertPlus and InLine Checkout (without GTM)

Overview 

You can implement Google Universal Analytics without the Google Tag Manager (GTM) to help you track and monitor your ConvertPlus and InLine checkout orders in order to improve the shopping experience and increase conversion rate.

   This documentation refers to Google Universal Analytics, which is a deprecated version that will be sunset starting July 1st 2023 for free Universal Analytics properties and starting July 1st 2024 for 360 Universal Analytics properties. We strongly recommend you to migrate to Google Analytics 4 as soon as possible.

Availability 

Google Universal Analytics can be set for all 2Checkout accounts.

Implement Google Universal Analytics in ConvertPlus and InLine Checkout

Follow these steps to implement Google Universal Analytics in ConvertPlus and InLine Checkout:

1. Navigate to your Google Universal Analytics account.

2. Copy your Google Universal Analytics Tracking ID and use it in your 2Checkout Merchant Control Panel to set up Google Universal Analytics for your ConvertPlus and InLine carts.

3. To get your Google Universal Analytics Tracking ID, go to Google Universal Analytics → Admin → Tracking Info → Tracking Code. Under Tracking ID you will find the code you need to copy and paste into your Merchant Control Panel.

google analytics without GTM.png

4. In your Google Universal Analytics account, make sure you have Enhanced Ecommerce enabled. To enable it, navigate to Admin → View Settings → Ecommerce settings. Make sure the Enable Ecommerce & Enable Enhanced Ecommerce Reporting settings are both ON.

google analytics without GTM_1.png

5. In your Google Universal Analytics account, make sure you exclude the 2Checkout domains from the referral list. Go to Admin → Admin → Property settings → Tracking info → Referral Exclusion List.

6. Add your website’s domain and the following 2Checkout domains: secure.2checkout.com and tracking.avangate.net.

google analytics without GTM_2.png

Cross-domain tracking settings

For cross-domain tracking between your website and the 2Checkout shopping cart, additional settings are needed. The Google Analytics JavaScript tracking code on your own website must be updated to include a linker to the 2Checkout domains: secure.2checkout.com and tracking.avangate.net. 

Below you have an example of the Google Universal Analytics tracking script for gtag.js. 2Checkout Google Universal Analytics tracking implementation is based on gtag.js.

The part highlighted in yellow represents the cross-domain tracking setting that needs to be added to the Google Universal Analytics script on your website. 

GA_MEASUREMENT_ID from the Google Universal Analytics script below is the Google Universal Analytics Tracking ID, which you can find under Google Universal Analytics → Admin → Tracking Info → Tracking Code section

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gta...MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());  
  gtag('config', 'GA_MEASUREMENT_ID', {
     'linker': {
            'domains': ['secure.2checkout.com', 'tracking.avangate.net']
        }
    });

</script>

Merchant Control Panel Settings

The Analytics section in your Merchant Control Panel allows you to integrate Google Universal Analytics in the ConvertPlus or InLine ordering engines and thus track the behavior of your shoppers on the 2Checkout pages.

Follow these steps to complete your analytics integration:

  1. Log into your Merchant Control Panel.
  2. Navigate to Setup → Ordering options.
  3. Click on the Analytics tab.
  4. Click on the ConvertPlus and InLine Checkout tab.

web analytics in Merchant Control Panel_5.png

5. In the Google Universal Analytics box, click on Set up. 

Google Universal Analytics without GTM - Set up

6. Fill in the Google Universal Analytics Tracking ID (Here is how you obtain itand click Save.

ConvertPlus & Inline Checkout Google Universal Analytics Tracking ID

7. Complete the integration by using the slider to activate Google Universal Analytics.

ConvertPlus & Inline Checkout Activate Google Universal Analytics

1. The 2Checkout data layer for Google Universal Analytics tracking is placed in an iFrame. This data layer contains eCommerce information built on the structure required by Google Universal Analytics reporting for the following events : checkout, purchase and remove from cart.

2. For fully enhanced eCommerce reporting in Google Universal Analytics, it is recommended that you send information to Google Universal Analytics from your website that includes product impression, product detail and add to cart. More information on enhanced eCommerce reporting can be found here: https://developers.google.com/analytics/devguides/collection/gtagjs/enhanced-ecommerce.

Pricing strategies for software, IoT and digital goods

With every industry going digital, it's clear that value has shifted from hardware to software and services. As new digital goods and services emerge - Internet of Things for example - digital marketers are facing an ever-changing set of monetization challenges aimed at building long-term, recurring revenue relationships.

Join featured guest speakers Amy Konary at IDC Research and Omkar Munipalle, Director, Cloud Strategy and Business.

Development at Gemalto (formerly SafeNet) in a 2Checkout thought-leading webinar that will explore:

  • The evolving role of software in a digital business
  • Understand new pricing & licensing models - subscriptions, consumption-based, outcome-based
  • Linking customer experience with software monetization
  • How to overcome constraints that prevent seamless digital commerce
Join Our Webinar

 

Search products

Overview

Use the searchProducts method to extract information about the subscription plan/products you configured for your account.

Pagination

Use pagination to decrease the request loading time, while better handling the returning responses.

Pagination works on all the search methods existing on 2Checkout API 5.0. The default pagination behavior is to display page 1 with 10 results. The maximum number of items displayed on a single page is 200.

To use pagination, include the Pagination object inside the search method call, using the parameters below:

Parameters Type/Description
Pagination Object
  Details below.
  Page Int
    Set the number of pages that should be returned.
  Limit Int
    Set a limit for the number of results that should be returned.

 

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.

SearchOptions

Object

 

Name

Optional (string)

 

Product name. Can be NULL.

 

Codes

Optional (StringArray)

 

Array of product codes.

 

Types

Optional (StringArray)

 

Array of the values representing the type of products. Possible values:

  • REGULAR
  • BUNDLE

Leave empty to have all product types returned to the search.

Can be NULL. If NULL, 2Checkout returns both regular and bundle products.

 

Enabled

Optional (boolean)

 

True or false. Can be NULL.

 

GroupName

Optional (string)

 

The name of the group that the product is associated with.

Can be NULL.

                                                          Pagination Object
 

                                                          Limit

Optional (integer)

 

Number of results (products) displayed per page. Default value is 10.

Can be NULL.

 

                                                          Page

Optional (integer)

 

A specific page of search results. Default value is 1.

Can be NULL.

 

OrderBy

Object

 

Defines the order of the returned results.

 

Field

Optional (string)

 

The name of the field to order the results by. Allowed values: 'ProductStatus', 'ProductName', 'ProductCode', 'UpdateDatetime', '2CheckoutId'. Can be NULL.

 

Direction

Optional (string)

 

Sort results ascending or descending. Allowed values:

  • asc
  • desc (default)

Can be NULL (defaults to desc).

 

Response

Parameter Type/Description

Product

Object

Request

<?php

require ('PATH_TO_AUTH');

$SearchOptions = new stdClass();
$SearchOptions->Name = '2Checkout Subscription'; //Product name
$SearchOptions->Types = array ('REGULAR', 'BUNDLE'); //product type (standalone), regular or bundle
$SearchOptions->Enabled = True;
//$SearchOptions->GroupName = '';
$SearchOptions->Pagination = new stdClass();
$SearchOptions->Pagination->Page = 1;
$SearchOptions->Pagination->Limit = 10;

try {
    $ProdSearch = $client->searchProducts($sessionID, $SearchOptions);
}

catch (SoapFault $e) {
    echo "Query: " . $e->getMessage();
    exit;
}

var_dump("Query", $ProdSearch);

?>

 

PriceOptionsGroupItem Object structure

Parameters

Parameter Type/Description
Description String
  Pricing options groups description.
Name String
  Pricing options groups name.
Type String
  Pricing options groups description type: Pricing options group type: COMBO, CHECKBOX, RADIO, INTERVAL.
Options Array of objects
  PriceOptionsGroupItemOptions object.
Required Boolean
  True or false, depending on whether at least one of the pricing options available is required or not.

 

Unassign order/product 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. Avangate 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.

Request

<?php

require ('PATH_TO_AUTH');

$productCode = 'YOUR_PRODUCT_CODE';
$fieldCode = 'YOUR_FIELD_CODE';

$jsonRpcRequest = array(
    'jsonrpc' => '2.0',
    'id' => $i++,
    'method' => 'unassignAdditionalField',
    'params' => array($sessionID,$fieldCode,$productCode)
);

var_dump(callRPC((Object) $jsonRpcRequest, $host));

?>    

Response

bool(true)

Retrieve shopping cart contents

Overview

Use this method to get information on the products added to the shopping cart during the current cart session.

Requirements

Parameters

Parameter Type/Description
sessionID Required (String)
  Session identifier, which is the output of the Login method. An exception is thrown if the values are incorrect.

Response

Parameter Type/Description
Contents Object
  Cart contents object.

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
require('PATH_TO_addProduct'); // addProduct example: https://knowledgecenter.avangate.com/Integration/Channel_Manager_API/SOAP/06Reference/08Place_an_order/00Add_product_to_cart

try {
    $CartContents= $client->getContents ($sessionID);
} catch (SoapFault $e) {
    echo "Contents: " . $e->getMessage();
    exit;
}
var_dump ("Contents ", $CartContents);

Errors

Error Description

EMPTY_CART

The shopping cart is empty.

 

Retrieve installments

Overview

Use the getInstallments method to retrieve information about the number of installments available for a specific selection of products/services.

Supported payment methods

Credit/Debit cards: local Visa and MasterCard in Brazil and Turkey.​

Parameters

Parameters Type/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.

Order

Object / Required

 

An object designed to collect all data necessary for an order, including billing, product/subscription plan, and payment details.

Response

Parameters Type/Description

InstallmentsOption

Array of objects

 

Details below.

 

Number

Int

 

 

The number of installments.

 

Amount

Double

 

 

Standalone installment value. (Total order value/Number of installments)

 

Currency

String

 

 

Order currency.

Request

class Configuration
{
    public const MERCHANT_CODE = '';
    public const MERCHANT_KEY = '';
    public const URL = 'http://api.avangate.local/rpc/6.0';
    public const ACTION = 'getInstallments';
    public const ADDITIONAL_OPTIONS = null;
    //array or JSON
    public const PAYLOAD = <<<JSON
{
    "Amount" : 500,
    "Country": "BR",
    "Currency": "BRL",
    "FiscalCode" :"345.675.677-7",
    "EesToken": ["c49702ea-b0c5-4d39-9f5b-ba43ccf26785"]
}
JSON;
}

class Client
{
    private const LOGIN_METHOD = 'login';
    private $calls = 1;
    private $sessionId;


    private function generateAuth(): array
    {
        $merchantCode = Configuration::MERCHANT_CODE;
        $key = Configuration::MERCHANT_KEY;
        $date = gmdate('Y-m-d H:i:s');
        $string = strlen($merchantCode) . $merchantCode . strlen($date) . $date;
        $hash = hash_hmac('md5', $string, $key);

        return compact('merchantCode', 'date', 'hash');
    }


    public function login(string $url)
    {
        $payload = $this->generateAuth();
        $response = $this->call($url, array_values($payload), self::LOGIN_METHOD);
        $this->sessionId = $response['result'];
    }


    public function call(
        string $url = Configuration::URL,
        $payload = Configuration::PAYLOAD,
        string $action = Configuration::ACTION
    ): ?array {
        if (empty($this->sessionId) && $action !== self::LOGIN_METHOD) {
            $this->login($url);
        }

        if (is_string($payload)) {
            $payload = json_decode($payload, true);
        }
        if (!empty($this->sessionId)) {
            $payload = [$this->sessionId, $payload, Configuration::ADDITIONAL_OPTIONS];
        }
        $payload = array_filter($payload);

        $request = json_encode([
            'jsonrpc' => '2.0',
            'method' => $action,
            'params' => $payload,
            'id' => $this->calls++,
        ]);
        $curl = curl_init($url);
        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', 'Cookie: XDEBUG_SESSION=PHPSTORM'));
        curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
        $response = curl_exec($curl);
        if(empty($response)) {
            die('Server unavailable');
        }
        echo $response . '</br>';
        return json_decode($response, true);;
    }
}

$client = new Client();
$result = $client->call();
var_dump($result);

Enable recurring billing

Overview

Use the enableRecurringBilling method to switch on the automatic renewal system for a subscription that's manually renewable. 

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.

Response

Boolean

true or false depending on whether the changes were successful or not.

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;
}
$SubscriptionReferenceTest = '48F5AC7011';
try {
    $enabledSubscriptionRecurring = $client->enableRecurringBilling($sessionID, $SubscriptionReferenceTest);
}
catch (SoapFault $e) {
    echo "enabledSubscriptionRecurring: " . $e->getMessage();
    exit;
}
var_dump("enabledSubscriptionRecurring", $enabledSubscriptionRecurring);

Need help?

Do you have a question? If you didn’t find the answer you are looking for in our documentation, you can contact our Support teams for more information. If you have a technical issue or question, please contact us. We are happy to help.

Not yet a Verifone customer?

We’ll help you choose the right payment solution for your business, wherever you want to sell, in-person or online. Our team of experts will happily discuss your needs.

Verifone logo