NAV Navbar
HTTP GET HTTP POST SOAP JSON PHP C#

Introduction

This document provides Partners with the information they need to manage their integration with the Infomedia platform. This will allow Partners to connect to any Mobile Carrier facilitated by Infomedia through either the standard Checkout Pages integration or by using the Partner-hosted integration.

Checkout Pages integration consists of:
1. Infomedia Checkout Pages-hosted user acquisition flow to allow the user to purchase a product or subscribe to a service.
2. Infomedia managing the subscription base, and therefore triggering all billing and compliance messaging.

Partner-hosted integration consists of:
1. Partners hosting their own acquisition flow via a mobile/web page or app.
2. Partners interacting directly with the Infomedia APIs to attempt user detection, trigger all billing, perform refunds (depending upon carrier network), and trigger compliance messaging (depending upon carrier network).


Checkout Pages Integration

Checkout Pages integration flow consists of:
1. Infomedia Checkout Pages-hosted user acquisition flow to allow the user to purchase a product or subscribe to a service.
2. Infomedia managing the subscription base, and therefore triggering all billing and compliance messaging.

The integration into the Checkout Pages platform will allow you to perform the following: Checkout Pages Integration

The following sequence diagram shows the basic user acquisition flow through the Checkout Pages platform. Once the user has been successfully subscribed, or successfully purchases a product, they are directed to the Partner's service URL. Checkout Pages Flow sequence diagram

Subscription

Subscriptions are managed by the Infomedia platform, and the user's triggering of a subscription takes place via the Infomedia-hosted Checkout Pages flow. The Infomedia platform triggers the subscription and then the user is passed back to the Partner's platform.

Ensure the user has been passed to the Checkout Pages URL by following the points in this section.

Subscription Cancellation

Cancelling a subscription can be done via the following methods:

  1. Partner-triggered subscription cancellation: You can unsubscribe a user from a service by triggering the SubscriptionUnsubscribe method of the Mobile Payments API.

  2. STOP MO SMS: Users can unsubscribe by sending a STOP MO message which is handled by the carrier. Please get in contact with your Technical Account Manager to setup a keyword and request short code information.

One-time purchase

One-time purchases are triggered by the user on the Infomedia platform via the Infomedia-hosted Checkout Pages flow. The Infomedia platform triggers the bill and then the user is passed back to the Partner's platform.

Ensure the user has been passed to the Checkout Pages URL by following the points in this section.

Pass user to Checkout Page

A user must be passed to an Infomedia-hosted Checkout Pages URL, which will be generated by Infomedia and provided to you for each individual service. Please contact your Technical Account Manager to have the Checkout Page setup and to be provided with the URL.

Once you have your Checkout Pages service URL, you can send users to it along with appending a 'pt' (PassThrough) parameter to the URL, which can contain any value in a URL encoded format. This 'pt' parameter will be returned to you in the response.

Due to the length and appearance of the Checkout Pages URL domain, the Partner should 'CNAME' to the domain of their choice, over the domain of the Infomedia Checkout Pages URL. This will allow your users to view/access a much shorter and visibly appropriate URL to access the Checkout Pages service.

Once the user has accessed the Checkout Pages URL, they will go through a series of acquisition/payment pages, which may all be hosted by Infomedia for some carriers, and in some cases could be hosted by the carrier themselves. In either case, the user will be passed back to the Partner's platform at the end of the flow, either having initiated a subscription/purchase, or having cancelled out of the flow.

If the user has setup a subscription/performed a purchase, then they are passed back to the Partner's platform with the following populated parameters:

Parameter Description
MX Populated with an encrypted MSISDN or encrypted Infomedia Alias.
MCC 3-digit Mobile Country Code
MNC 2-digit Mobile Network Code
Success '1' signifying that an acquisition has taken place successfully.
PT The pass-through value, if 'pt' was passed to the original Infomedia-hosted Checkout Pages URL.

Once the successful user has returned to your platform via the return URL, you will be able to provide them with access to their service. This would be the best time to store the user's details, e.g. MX, MCC, MNC, or possibly have the user create login credentials for your service so you can identify them when they return to your service in the future. For more details please refer to Managing Returning Customers.

Notifications

The Infomedia platform can trigger asynchronous notifications to your platform in the event of certain actions taking place. The following notification types are available to be configured per Partner. Please contact your Technical Account Manager if you would like notifications for any of the following to be configured:

• Successful Subscriptions
• Successful Subscription Cancellations
• Successful bills (one-time purchase and recurring subscription billing)
Refer to section Notifications for more information on how to handle these notifications.

• Delivered SMS messages
Refer to section SMS Notifications for more information on how to handle these notifications.

Page interaction Notifications

Checkout Pages services allow for the capture of real-time notifications upon specific events occuring on the Checkout Page. Each notification reports an Action ID for specific events on the page as listed below:

ActionID Description
1 User has landing on the Landing Page
2 Subscribe Click
3 Confirm subscription/payment Click
4 Licensing acquisition Click
5 User is browsing whilst being on an unsupported carrier network
6 Non detected user
7 Successful aquisition
8 Invalid PIN Entry
9 User has clicked the Exit/Cancel button/link
10 Error aquiring user
11 Already subscribed
12 Aquisition timeout reset

To receive these notifications when a user interacts with the Checkout Pages service, please provide your Technical Account Manager with a URL for your notification handler and the notifications will be configured.

Page interaction notification parameters:

Parameter Description
EngagementID Unique reference for the interaction that has taken place between the user and the service.
MX Populated with an encrypted MSISDN or encrypted Infomedia Alias.
MCC 3-digit Mobile Country Code.
MNC 2-digit Mobile Network Code.
PID The ServiceID or the BPID for the Product that the user is requesting.
SID ServiceID. Infomedia will supply you with a list of these.
PageIdentifier This should be a meaningful reference for the page which would then be used for tracking and identifying notifications.
PT The pass-through value, if 'pt' was passed to the original Infomedia-hosted Checkout Pages URL.
ActionID ID relating to the action occurring on the Checkout Page for which the notification has occurred.
DateTime Date and time.
AFID Unique identifier relating to the specific Checkout Page service.

Google Analytics

Checkout Pages services can be configured to utilise Google Analytics to monitor user flow and interactions. Please provide your Technical Account Manager with your Google Analytics TrackingID to have this configured.

Partner-Hosted Integration

Partner-hosted integration consists of:
1. Partners hosting their own acquisition flow via a mobile/web page or app.
2. Partners interacting directly with the Infomedia APIs to attempt user detection, trigger all billing, perform refunds (depending upon carrier network), and trigger compliance messaging (depending upon carrier network).

The integration via the Infomedia APIs will allow you to perform the following:
Partner Managed

One-time purchase

One-time purchases are initiated by a user on the Partner's platform, via the Partner's interaction with the Mobile Payments API.

The following sequence diagram shows the basic interaction with the Infomedia API to trigger a one-time PIN and the subsequent billing of a user. Once the user successfully purchases their product/service, they are to be provided with access to the Partner's service. OTP purchase flow sequence diagram

  1. A user will first need to be identified by having them provide their mobile number, and then the Partner should trigger the Pin Generate With Network method to initiate the Infomedia platform to send a PIN SMS to the user.
  2. The user will receive a PIN SMS and will need to input this on the Partner's platform. Once the user has provided their PIN, the Partner will need to verify the PIN and subsequently bill the user by calling the Send Bill With PIN method.
  3. Upon PIN validation success, the user will be billed the requested amount. However, in the event of a PIN validation error or billing failure, the Partner will receive the relevant response codes from the API.

Refunds

A customer can be refunded on a per-transaction basis for any bills that have been successfully carried out. Refunding may not be available for all carrier networks, and there may be restrictions on Partners being able to issue their own refunds outside of the CSLite tool. Please get in contact with your Technical Account Manager to find out if you can have access to this functionality.

The following sequence diagram shows the interaction with the Infomedia API to trigger a refund for a previous billing transaction. Refund flow sequence diagram

Please refer to the Refund Transaction method for more details.

Notifications

The Infomedia platform can trigger asynchronous notifications to your platform in the event of certain actions taking place. The following notification types are available to be configured per Partner. Please contact your Technical Account Manager if you would like notifications for any of the following to be configured:

• Successful bills (one-time purchase)
Refer to section Notifications for more information on how to handle these notifications.

• Delivered SMS messages
Refer to section SMS Notifications for more information on how to handle these notifications.

Log Activity

There may be occassions where information which is held on the Partner's platform, is required to be shared with Infomedia for regulatory and compliance purposes, which is outside of the usual data shared during a transaction flow. For situations like these, the Log Activity API method can be utilised, which stores the information in the Infomedia platform.

Refer to the Log Activity method for more information.

Managing Returning Customers

A customer's first access to a Partner's service is usually straight after the acquisition flow. If acquisition is via the Checkout Pages flow, then your platform will be able to recognise the customer based upon the MX, MCC, and MNC returned from the Checkout Pages platform. However, when the customer leaves your service page/app and returns again at another time, you may need to identify them again and authenticate them to provide them with access to the service.

User Detection

User detection is required to authenticate a user before providing them with access to a service. You should first attempt to identify the user by using your own methods, e.g. via user login, or checking a cookie/session on your platform. You would want to do this when a returning user lands on your platform, and you want to detect them to send them through to their service that they may already have purchased/subscribed to. If your own detection methods fail, then you would utilise the Infomedia User Detection methods. If the user is detected but not yet acquired, you would send them back through the acquisition/purchase flow.

Identification Flow sequence diagram: Returning User

1. Header enrichment

User detection will be handled via the IABLU platform. The IABLU flow can be used to retrieve the MX (an encrypted Operator Identification), MCC and MNC details for a user. The user must be browsing whilst on their mobile data connection and not Wi-Fi for detection to succeed. This is done via a process known as Header Enrichment.

To decrypt the MX, please call the Decrypt MX method. The MX will contain either the MSISDN or an Infomedia Alias, however the MX should be passed to the API methods instead of passing an MSISDN or Alias.

2. Manual Input/PIN flow

The following PIN flow is an alternative way of carrying out user identification, particularly useful when the user is on a Wi-Fi connection and therefore can't be detected via Header Enrichment. You can create your own one-time PIN and send it to a user's device via the Infomedia SMS API.

a. SMS API: You would need to generate your own PIN and send this to the user through the Infomedia SMS API using the SendMessageWithCampaign method. Please get in contact with your Technical Account Manager to setup a CampaignID to send an SMS. After receiving the PIN, the user will have to enter this on your platform, where you will have to carry out validation of the PIN against the user's MSISDN that triggered it, before providing the user with access to their service.

Subscription Status Check

Make a call to the Subscription Check method to check the status of a user's subscription. If the user has an Active status, they should be given access to their service, otherwise they can be passed through to the Checkout Pages acquisition flow, or to wherever else is appropriate in your flow.

Mobile Payments API

This API is split into three parts: MSISDN Identification, Billing and Subscriptions. Several MSISDN Identification methods are available, depending on carrier. These are explained later in the documentation.

The Billing section can be used for one-time purchases or for processing recurring payments from a Subscription service managed by yourselves.

The Subscription section can be used to Subscribe and Unsubscribe users to/from a subscription service or Check a subscription that is managed by Infomedia. Recurring payments and retry policies.

You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

The Infomedia Mobile Payments API has been developed to provide a simple interface for single or re-occuring billing for publishers/content owners to access the network billing solutions of Worldwide Operators.

Authentication

Developers will not be able to access any API methods without a username, password, and the required product IDs. Developers are also required to provide the IP Addresses that requests to the API will be made from so that they can be whitelisted.

API access credentials are set up and provided to you upon completion of your Account Setup document. For Product ID setup, please get in contact with your Account Manager.

User Identification

An MX, MCC and MNC, are required for many methods in the Mobile Payments API. If this data is not already known, it can be retrieved by using the following identification method via Header Enrichment.

Identify user via redirect method - IABLU

The user must be physically passed to this URL whilst browsing using their mobile data connection and not on Wi-Fi. Once successfully detected, the user's MX, MCC, and MNC will be appended to the QueryString in the ReturnURL provided.

The ReturnURL/s must be provided to Infomedia to be whitelisted for the User Identification request to be accepted. The ReturnURL in the request must be URL Encrypted and can include a QueryString of it's own if necessary.

HTTP Request

TEST http://wbg.Infomediatechnologies.com/iablusb/V/1/6/
LIVE http://wbg.Infomediatechnologies.com/iablu/V/1/6/

Request Parameters

The Query String parameters in the table below will be required for a successful identification flow. The descriptions for each flow will indicate if these are required. These are required to be appended onto the HTTP Request detection URL.

Parameter Description Mandatory
AID Your AccountID. This will be provided by your Account Manager. Yes
PAID A Product Account ID allocated per product which will be provided by the Infomedia Account Manager. (Example: dd59a7c3-d8e2-4348-b809-c9ad8bc71fe6) Yes
PID The ServiceID or the BPID for the Product that the user is requesting. Yes
PT The pass-through value. If provided, it will be returned in the response after identification is attempted. No
M Method. Always provide the value 'redirect'. e.g. 'm=redirect' Yes
RU The Return URL that you want to pass the user back to after attempting identification. Yes

Response Parameters

Parameter Description
MX Encrypted MSISDN/Alias. This can be decrypted using DecryptMX.
MCC The Mobile Country Code.
MNC The Mobile Network Code.
PT The pass-through value. If provided in the request, it will be returned in the response after identification is attempted.

Request Token

This method returns a single-use token to access a Checkout Pages service. The token expires after triggering the purchase/subscription process, or when the 'ExpiresUtc' date/time has been reached.

Sample Request

HTTP GET is not supported for this method.
HTTP POST is not supported for this method.
POST /V/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/RequestToken"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <RequestToken xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <Parameters>
                <DataKeyValuePair>
                    <Key>string</Key>
                    <Value>string</Value>
                </DataKeyValuePair>
                <DataKeyValuePair>
                    <Key>string</Key>
                    <Value>string</Value>
                </DataKeyValuePair>
            </Parameters>
            <TokenTypeId>int</TokenTypeId>
            <U>string</U>
            <P>string</P>
        </RequestToken>
    </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/RequestToken HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{ 
    "Parameters": [
        {"Key": "mx", "Value": "STRING"}, 
        {"Key": "mnc", "Value": INT}, 
        {"Key": "mcc", "Value": INT},
        {"Key": "pt", "Value": "STRING"},
        {"Key": "chargeamount", "Value": DECIMAL},
        {"Key": "itemdescription", "Value": "STRING"},
        {"Key": "bpid", "Value": INT}
    ] ,
    "TokenTypeId": INT, 
    "U": "STRING", 
    "P": "STRING"
}
//Sample request not yet available for this method.

Request Parameters

Parameter Description Mandatory
TokenTypeID This identifies the specific token you are requesting and will require the KeyValuePairs in 'Parameters' to match the required parameters for the token type. See Choose a Token Type ID for details. Yes
Parameters Array of KeyValuePairs matching the required list for the specific token type chosen. See Parameter List for details. Yes
U Username Yes
P Password Yes

Sample Response

HTTP GET is not supported for this method.
HTTP POST is not supported for this method.
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <RequestTokenResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <RequestTokenResult>
                <Token>string</Token>
                <ExpiresUtc>dateTime</ExpiresUtc>
                <ErrorMessage>string</ErrorMessage>
            </RequestTokenResult>
        </RequestTokenResponse>
    </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
    "d": {
        "__type": "MobilePaymentsLibrary.ResponseTokenForRequest",
        "Token": "STRING",
        "ExpiresUtc": "DATETIME",
        "ErrorMessage": "STRING"
    }
}
//Sample response not yet available for this method.

Response Parameters

Parameter Description
Token An issued token or empty value (if error).
ExpiresUtc UTC Date/Time when the token will expire.
ErrorMessage Reason why token was not issued.

Choosing a Token Type ID

TokenTypeID Description
1 For one-time purchases, where the mobile number is not known.
2 For one-time purchases, where the mobile number is known.

Parameter List

TokenTypeID Parameter Description
1 mnc Integer - The Mobile Network Code
mcc Integer - The Mobile Country Code
pt String - Your PassThrough reference for this transaction.
chargeamount Decimal - The amount to charge the customer (e.g. 0.25, 1.00)
itemdescription String - Item description e.g. '200 point credit pack', 'Weapon upgrade'.
bpid Integer - Billing Product ID supplied to you by Infomedia.
2 mx String - Encrypted Alias or MSISDN with country code (e.g. 447777123456).
mnc Integer - The Mobile Network Code
mcc Integer - The Mobile Country Code
pt String - Your PassThrough reference for this transaction.
chargeamount Decimal - The amount to charge the customer (e.g. 0.25, 1.00)
itemdescription String - Item description e.g. '200 point credit pack', 'Weapon upgrade'.
bpid Integer - Billing Product ID supplied to you by Infomedia.

Decrypt MX

This method returns an MSISDN or Alias from the MX supplied.

Sample Request

GET /V/1/6/Default.asmx/DecryptMX?MX=string&U=string&P=string HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
POST /V/1/6/Default.asmx/DecryptMX HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

MX=string&U=string&P=string
POST /V/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/DecryptMX"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <DecryptMX xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <MX>string</MX>
            <U>string</U>
            <P>string</P>
        </DecryptMX>
    </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/DecryptMX HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{
    "MX":"STRING", 
    "U":"STRING",
    "P":"STRING"
}

//Example below uses a GuzzleHTTP client

$mx = "UserMX";     // Encrypted Alias or encrypted MSISDN.
$u = "YourUsername";    // Your Username
$p = "YourPassword";    // Your Password

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/DecryptMX',
[
    'form_params'=>
     [
         "MX"=>$mx,
         "U"=>$u,
         "P"=>$p
     ]
]);
using RestSharp;
using RestSharp.Deserializers;

string baseURL = "https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/";
string methodName = "DecryptMX";
string mx = "GRRUWWBWWWWWWWDFAH";
string u = "YourUsername";
string p = "YourPassword";

var client = new RestClient(baseURL);
IRestRequest restRequest = new RestRequest(methodName, Method.POST);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
restRequest.AddParameter("application/x-www-form-urlencoded", $"mx={mx}&U={u}&P={p}", ParameterType.RequestBody);
IRestResponse response = client.Execute(restRequest);           

Request Parameters

Parameter Description Mandatory
MX Encrypted Alias or encrypted MSISDN. Yes
U Your Username Yes
P Your Password Yes

Sample Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<DecryptedMX xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <MSISDN>string</MSISDN>
</DecryptedMX>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<DecryptedMX xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <MSISDN>string</MSISDN>
</DecryptedMX>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <DecryptMXResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <DecryptMXResult>
                <Status>string</Status>
                <Description>string</Description>
                <MSISDN>string</MSISDN>
            </DecryptMXResult>
        </DecryptMXResponse>
    </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
    "d":{
    "__type":"MobilePaymentsLibrary.DecryptMX",
    "Status":"STRING",
    "Description":"STRING",
    "MSISDN":"STRING"
    }
}
$xml = simplexml_load_string($response->getBody());
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    $status = $xml->Status;
    $description = $xml->Description;
    $msisdn = $xml->MSISDN;

    echo printf('Status value - %s', $status);
    echo printf('Description values - %s', $description);
    echo printf('MSISDN values - %s', $msisdn);
}
string msisdn, status, description;

var ResponseObj = new XmlDeserializer().Deserialize<DecryptMXResponse>(response);

if (ResponseObj.Status == "Success" && ResponseObj.Description == "00 - Everything was OK")
    {
        msisdn = ResponseObj.MSISDN;
        status = ResponseObj.Status;
        description = ResponseObj.Description;
    }
else
    {
        // Handle status code
    }

public class DecryptMXResponse
{
    public string Status { get; set; }
    public string Description { get; set; }
    public string MSISDN { get; set; }
}

Response Parameters

Parameter Description
Status This node can be Success or Error.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
MSISDN The decrypted MX will return a MSISDN in international format or an Infomedia Alias.

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - Everything was ok This request has been successfully accepted by our platform.
Error 00 - Invalid MX No MX parameter was passed in the request or invalid MX or MSISDN was passed. Please correct this parameter and re-try the submission.
Error 01 - Invalid login The login credentials are incorrect. Please correct and re-try the submission.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

Alias Lookup

This call allows the API user to lookup a carrier's Alias for an MSISDN.

Sample Request

GET /V/1/6/Default.asmx/AliasLookUp?MX=string&MCC=string&MNC=string&U=string&P=string HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
POST /V/1/6/Default.asmx/AliasLookUp HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

MX=string&MCC=string&MNC=string&U=string&P=string
POST /V/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/AliasLookUp"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <AliasLookUp xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <MX>string</MX>
            <MCC>string</MCC>
            <MNC>string</MNC>
            <U>string</U>
            <P>string</P>
        </AliasLookUp>
    </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/AliasLookUp HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{
    "MX":"STRING", 
    "MCC":"STRING", 
    "MNC":"STRING", 
    "U":"STRING",
    "P":"STRING"
}
//Example below uses a GuzzleHTTP client

$mx = "UserMX";     // Encrypted Alias or encrypted MSISDN.
$mnc = "UserMNC";   // The Mobile Country Code
$mcc = "UserMCC";   // The Mobile Network Code
$u = "YourUsername";    // Your Username
$p = "YourPassword";    // Your Password

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/AliasLookUp',
[
    'form_params'=> 
    [
        "MX"=>$mx,
        "U"=>$u,
        "P"=>$p,
        "MNC"=>$mnc,
        "MCC"=>$mcc
    ]
]);
using RestSharp;
using RestSharp.Deserializers;

string baseURL = "https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/";
string methodName = "AliasLookUp";
string mx = "GRRUWWBWWWWWWWDFAH";
string mnc = "02";    
string mcc = "234";
string u = "YourUsername";
string p = "YourPassword";

var client = new RestClient(baseURL);
IRestRequest restRequest = new RestRequest(methodName, Method.POST);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
restRequest.AddParameter("application/x-www-form-urlencoded", $"mx={mx}&mnc={mnc}&mcc={mcc}&U={u}&P={p}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(restRequest);            

Request Parameters

Parameter Description Mandatory
MX Encrypted Alias or encrypted MSISDN. Yes
MCC The Mobile Country Code Yes
MNC The Mobile Network Code Yes
U Your Username Yes
P Your Password Yes

Sample Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<AliasLookup xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <CarrierAlias>string</CarrierAlias>
</AliasLookup>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<AliasLookup xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <CarrierAlias>string</CarrierAlias>
</AliasLookup>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <AliasLookUpResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <AliasLookUpResult>
                <Status>string</Status>
                <Description>string</Description>
                <CarrierAlias>string</CarrierAlias>
            </AliasLookUpResult>
        </AliasLookUpResponse>
    </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
"d":{
    "__type":"MobilePaymentsLibrary.AliasLookUp",
    "Status":"STRING",
    "Description":"STRING",
    "CarrierAlias":"STRING"
    }
}
$xml = simplexml_load_string($response->getBody());
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    $status = $xml->Status;
    $description = $xml->Description;
    $carrierAlias = $xml->CarrierAlias;

    echo printf('Status value - %s', $status);
    echo printf('Description values - %s', $description);
    echo printf('CarrierAlias values - %s', $carrierAlias);
}
string carrierAlias, status, description;

var ResponseObj = new XmlDeserializer().Deserialize<AliasLookUpResponse>(response);

if (ResponseObj.Status == "Success" && ResponseObj.Description == "00 - Everything was OK")
    {
        carrierAlias = ResponseObj.CarrierAlias;
        status = ResponseObj.Status;
        description = ResponseObj.Description;
    }
else
    {
        // Handle status code
    }

public class AliasLookUpResponse
{
    public string Status { get; set; }
    public string Description { get; set; }
    public string CarrierAlias{ get; set; }
}

Response Parameters

Parameter Description
Status This node can be Success or Error.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
CarrierAlias This is an ID that we hold which relates to the Carrier's Alias for this MSISDN.

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - Everything was ok This request has been successfully accepted by our platform.
Error 00 - Invalid MX No MX parameter was passed in the request or invalid MX or MSISDN was passed. Please correct this parameter and re-try the submission.
Error 01 - Invalid Login The login credentials are incorrect. Please correct and re-try the submission.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 31 - No Alias found for this MSISDN No Alias was found for this MSISDN on the Carrier API.
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

Subscription Check

This method allows a Partner to check the status of a user's subscription.

Sample Request

GET /V/1/6/Default.asmx/SubscriptionCheck?SID=string&MX=string&MNC=string&MCC=string&U=string&P=string HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
POST /V/1/6/Default.asmx/SubscriptionCheck HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

SID=string&MX=string&MNC=string&MCC=string&U=string&P=string
POST /V/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/SubscriptionCheck"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <SubscriptionCheck xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <SID>int</SID>
            <MX>string</MX>
            <MNC>int</MNC>
            <MCC>int</MCC>
            <U>string</U>
            <P>string</P>
        </SubscriptionCheck>
    </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/SubscriptionCheck HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{
    "SID":INT,
    "MX":"STRING", 
    "MNC":INT,
    "MCC":INT,
    "U":"STRING",
    "P":"STRING"
}
//Example below uses a GuzzleHTTP client

$sid = 8100000; // ServiceID. Infomedia will supply you with this.
$mx = "GRRUWWBWWWWWWWDFAH";     // Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456).
$mnc = 02;  // The Mobile Country Code
$mcc = 234; // The Mobile Network Code
$u = "YourUsername";    // Your Username
$p = "YourPassword";    // Your Password

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/SubscriptionCheck',
[
    'form_params'=> 
    [
        "MX"=>$mx,
        "U"=>$u,
        "P"=>$p,
        "MNC"=>$mnc,
        "MCC"=>$mcc,
        "SID"=>$sid
    ]
]);
using RestSharp;
using RestSharp.Deserializers;

string baseURL = "https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/";
string methodName = "SubscriptionCheck";
int sid = 8100000;    
string mx = "GRRUWWBWWWWWWWDFAH";
int mnc = 02;    
int mcc = 234;
string u = "YourUsername";
string p = "YourPassword";

var client = new RestClient(baseURL);
IRestRequest restRequest = new RestRequest(methodName, Method.POST);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
restRequest.AddParameter("application/x-www-form-urlencoded", $"sid={sid}&mx={mx}&mnc={mnc}&mcc={mcc}&U={u}&P={p}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(restRequest);            

Request Parameters

Parameter Description Mandatory
SID ServiceID. Infomedia will supply you with a list of these. Yes
MX Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456). Yes
MNC The Mobile Network Code Yes
MCC The Mobile Country Code Yes
U Your Username Yes
P Your Password Yes

Sample Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SubsCheck xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <SID>string</SID>
    <MX>string</MX>
    <MCC>string</MCC>
    <MNC>string</MNC>
</SubsCheck>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SubsCheck xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <SID>string</SID>
    <MX>string</MX>
    <MCC>string</MCC>
    <MNC>string</MNC>
</SubsCheck>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
    <SubscriptionCheckResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
        <SubscriptionCheckResult>
            <Status>string</Status>
            <Description>string</Description>
            <SID>string</SID>
            <MX>string</MX>
            <MCC>string</MCC>
            <MNC>string</MNC>
        </SubscriptionCheckResult>
    </SubscriptionCheckResponse>
</soap:Body>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
"d":{
    "__type":"MobilePaymentsLibrary.SubscriptionCheck",
    "Status":"STRING",
    "Description":"STRING",
    "SID":"STRING",
    "MX":"STRING", 
    "MCC":"STRING",
    "MNC":"STRING",
    }
}
$xml = simplexml_load_string($response->getBody());
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    $status = $xml->Status;
    $description = $xml->Description;
    $responseSID = $xml->SID;
    $responseMX = $xml->MX;
    $responseMCC = $xml->MCC;
    $responseMNC = $xml->MNC;

    echo printf('Status value - %s', $status);
    echo printf('Description values - %s', $description);
    echo printf('SID values - %s', $responseSID);
    echo printf('MX values - %s', $responseMX);
    echo printf('MCC values - %s', $responseMCC);
    echo printf('MNC values - %s', $responseMNC);
}
string status, description, responseSid, responseMx, responseMcc, responseMnc;

var ResponseObj = new XmlDeserializer().Deserialize<SubscriptionCheckResponse>(response);

if (ResponseObj.Status == "Success" && ResponseObj.Description == "00 - User is subscribed")
    {
        status = ResponseObj.Status;
        description = ResponseObj.Description;
        responseSid = ResponseObj.SID;
        responseMx = ResponseObj.MX;
        responseMcc = ResponseObj.MCC;
        responseMnc = ResponseObj.MNC;
    }
else
    {
        // Handle status code
    }

public class SubscriptionCheckResponse
{
    public string Status { get; set; }
    public string Description { get; set; }
    public string SID{ get; set; }
    public string MX{ get; set; }
    public string MCC{ get; set; }
    public string MNC{ get; set; }
}

Response Parameters

Parameter Description
Status This node can be Success or Error, see below table for further details of failures.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
SID The Subscription ID that the MSISDN/Alias was subscribed to.
MX An encrypted version of the MSISDN/Alias.
MCC The Mobile Country Code
MNC The Mobile Network Code

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - User is subscribed The customer is subscribed to the service.
Error 00 - Invalid MX No MX parameter was passed in the request or invalid MX or MSISDN was passed. Please correct this parameter and re-try the submission.
Error 01 - Invalid login The login credentials are incorrect. Please correct and re-try the submission.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 15 - Invalid SID The Service ID parameter was incorrect. Please correct the parameter and retry.
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

Subscription Unsubscribe

This method allows a Partner to unsubscribe a user from an active subscription.

Sample Request

GET /V/1/6/Default.asmx/SubscriptionUnsubscribe?SID=string&MX=string&MNC=string&MCC=string&U=string&P=string HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
POST /V/1/6/Default.asmx/SubscriptionUnsubscribe HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

SID=string&MX=string&MNC=string&MCC=string&U=string&P=string
POST /V/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/SubscriptionUnsubscribe"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SubscriptionUnsubscribe xmlns="http://localhost/InAppbillingAPI/InAppBilling">
      <SID>int</SID>
      <MX>string</MX>
      <MNC>int</MNC>
      <MCC>int</MCC>
      <U>string</U>
      <P>string</P>
    </SubscriptionUnsubscribe>
  </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/SubscriptionUnsubscribe HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{
    "SID":INT,
    "MX":"STRING", 
    "MCC":INT,
    "MNC":INT,
    "U":"STRING",
    "P":"STRING"
}
//Example below uses a GuzzleHTTP client

$sid = 8100000;     // ServiceID. Infomedia will supply you with this.
$mx = "GRRUWWBWWWWWWWDFAH";         // Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456).
$mnc = 02;      // The Mobile Country Code
$mcc = 234;     // The Mobile Network Code
$u = "YourUsername";        // Your Username
$p = "YourPassword";        // Your Password

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/SubscriptionUnsubscribe',
[
    'form_params'=> 
    [
        "MX"=>$mx,
        "U"=>$u,
        "P"=>$p,
        "MNC"=>$mnc,
        "MCC"=>$mcc,
        "SID"=>$sid
    ]
]);
using RestSharp;
using RestSharp.Deserializers;

string baseURL = "https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/";
string methodName = "SubscriptionUnsubscribe";
int sid = 8100000;
string mx = "GRRUWWBWWWWWWWDFAH";
int mnc = 02;
int mcc = 234;
string u = "YourUsername";
string p = "YourPassword";

var client = new RestClient(baseURL);
IRestRequest restRequest = new RestRequest(methodName, Method.POST);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
restRequest.AddParameter("application/x-www-form-urlencoded", $"sid={sid}&mx={mx}&mnc={mnc}&mcc={mcc}&U={u}&P={p}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(restRequest);

Request Parameters

Parameter Description Mandatory
SID ServiceID. Infomedia will supply you with a list of these. Yes
MX Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456). Yes
MNC The Mobile Network Code Yes
MCC The Mobile Country Code Yes
U Your Username Yes
P Your Password Yes

Sample Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SubsUnsub xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <SID>string</SID>
    <MX>string</MX>
    <MCC>string</MCC>
    <MNC>string</MNC>
</SubsUnsub>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SubsUnsub xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <SID>string</SID>
    <MX>string</MX>
    <MCC>string</MCC>
    <MNC>string</MNC>
</SubsUnsub>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SubscriptionUnsubscribeResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
      <SubscriptionUnsubscribeResult>
        <Status>string</Status>
        <Description>string</Description>
        <SID>string</SID>
        <MX>string</MX>
        <MCC>string</MCC>
        <MNC>string</MNC>
      </SubscriptionUnsubscribeResult>
    </SubscriptionUnsubscribeResponse>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
    "d":{
    "__type":"MobilePaymentsLibrary.SubscriptionUnsubscribe",
    "Status":"STRING",
    "Description":"STRING",
    "SID":"STRING",
    "MX":"STRING", 
    "MCC":"STRING",
    "MNC":"STRING",
    }
}
$xml = simplexml_load_string($response->getBody());
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    $status = $xml->Status;
    $description = $xml->Description;
    $responseSID = $xml->SID;
    $responseMX = $xml->MX;
    $responseMCC = $xml->MCC;
    $responseMNC = $xml->MNC;

    echo printf('Status value - %s', $status);
    echo printf('Description values - %s', $description);
    echo printf('SID values - %s', $responseSID);
    echo printf('MX values - %s', $responseMX);
    echo printf('MCC values - %s', $responseMCC);
    echo printf('MNC values - %s', $responseMNC);
}
string status, description, responseSid, responseMx, responseMcc, responseMnc;

var ResponseObj = new XmlDeserializer().Deserialize<SubscriptionUnsubscribeResponse>(response);

if (ResponseObj.Status == "Success" && ResponseObj.Description == "00 - User is subscribed")
    {
        status = ResponseObj.Status;
        description = ResponseObj.Description;
        responseSid = ResponseObj.SID;
        responseMx = ResponseObj.MX;
        responseMcc = ResponseObj.MCC;
        responseMnc = ResponseObj.MNC;
    }
else
    {
        // Handle status code
    }

public class SubscriptionUnsubscribeResponse
{
    public string Status { get; set; }
    public string Description { get; set; }
    public string SID{ get; set; }
    public string MX{ get; set; }
    public string MCC{ get; set; }
    public string MNC{ get; set; }
}

Response Parameters

Parameter Description
Status This node can be Success or Error, see below table for further details of failures.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
SID The Subscription ID that the MSISDN/Alias was subscribed to.
MX An encrypted version of the MSISDN/Alias.
MCC The Mobile Country Code
MNC The Mobile Network Code

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - User has been unsubscribed This customer has been unsubscribed from the service
Error 00 - Invalid MX No MX parameter was passed in the request or invalid MX or MSISDN was passed. Please correct this parameter and re-try the submission.
Error 01 - Invalid Login The login credentials are incorrect. Please correct and re-try the submission.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 07 - Invalid MNC No MNC parameter was passed in the request. Please correct this parameter and retry.
Error 08 - Invalid MCC No MCC parameter was passed in the request. Please correct this parameter and retry.
Error 15 - Invalid SID The SubscriptionID parameter was incorrect. Please correct the parameter and retry.
Error 18 - User is not subscribed The user is not subscribed to the service
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

PIN Generate With Network

This method is used to send a one-time PIN to a user's device for a specific network. The Network's MCC (Mobile Country Code) and MNC (Mobile Network Code) must be known. The PIN is used for authentication of the user.

Sample Request

GET /V/1/6/Default.asmx/PINGenerateWithNetwork?MX=string&MCC=string&MNC=string&SID=string&U=string&P=string HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
POST /v/1/6/Default.asmx/PINGenerateWithNetwork HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

MX=string&MCC=string&MNC=string&SID=string&U=string&P=string
POST /v/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/PINGenerateWithNetwork"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <PINGenerateWithNetwork xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <MX>string</MX>
            <MCC>string</MCC>
            <MNC>string</MNC>
            <SID>int</SID>
            <U>string</U>
            <P>string</P>
        </PINGenerateWithNetwork>
    </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/PINGenerateWithNetwork HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{
    "MX":"STRING", 
    "MCC":"STRING",
    "MNC":"STRING",
    "SID":INT,
    "U":"STRING",
    "P":"STRING"
}
//Example below uses a GuzzleHTTP client

$mx = "UserMX";     // Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456).
$mcc = "234";       // The Mobile Network Code
$mnc = "02";        // The Mobile Country Code
$sid = 91000261;    // ServiceID. Infomedia will supply you with this.
$u = "YourUsername";    // Your Username
$p = "YourPassword";    // Your Password

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/PINGenerateWithNetwork',
[
    'form_params'=> 
    [
        "MX"=>$mx,
        "MCC"=>$mcc,
        "MNC"=>$mnc,
        "SID"=>$sid,
        "U"=>$u,
        "P"=>$p
    ]
]);
using RestSharp;
using RestSharp.Deserializers;

string baseURL = "https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/";
string methodName = "PINGenerateWithNetwork";
string mx = "GRRUWWBWWWWWWWDFAH";
string mcc = "234";
string mnc = "02";
int sid = 91000261;
string u = "YourUsername";
string p = "YourPassword";

var client = new RestClient(baseURL);
IRestRequest restRequest = new RestRequest(methodName, Method.POST);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
restRequest.AddParameter("application/x-www-form-urlencoded", $"mx={mx}&mcc={mcc}&mnc={mnc}&sid={sid}&U={u}&P={p}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(restRequest);

Request Parameters

Parameter Description Mandatory
MX Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456). Yes
MCC The Mobile Country Code Yes
MNC The Mobile Network Code Yes
SID ServiceID. Infomedia will supply you with a list of these. Yes
U Your Username Yes
P Your Password Yes

Sample Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<PINGenerateResult xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <PINID>string</PINID>
</PINGenerateResult>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<PINGenerateResult xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <PINID>string</PINID>
</PINGenerateResult>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <PINGenerateWithNetworkResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <PINGenerateWithNetworkResult>
                <Status>string</Status>
                <Description>string</Description>
                <PINID>string</PINID>
            </PINGenerateWithNetworkResult>
        </PINGenerateWithNetworkResponse>
    </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
    "d":{
    "__type":"MobilePaymentsLibrary.PINGenerateWithNetwork",
    "Status":"STRING",
    "Description":"STRING",
    "PINID":"STRING",
    }
}
$xml = simplexml_load_string($response->getBody());
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    $status = $xml->Status;
    $description = $xml->Description;
    $PINID = $xml->PINID;

    echo printf('Status value - %s', $status);
    echo printf('Description value - %s', $description);
    echo printf('PINID value- %s', $PINID);
}
string status, description, PinID;

var ResponseObj = new XmlDeserializer().Deserialize<PINGenerateWithNetworkResponse>(response);

if (ResponseObj.Status == "Success" && ResponseObj.Description == "00 - Everything was OK")
    {
        status = ResponseObj.Status;
        description = ResponseObj.Description;
        PinID = ResponseObj.PINID;
    }
else
    {
        // Handle status code
    }

public class PINGenerateWithNetworkResponse
{
    public string Status { get; set; }
    public string Description { get; set; }
    public string PINID{ get; set; }
}

Response Parameters

Parameter Description
Status This node can be Success or Error, see below table for further details of failures.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
PINID This is the generated PIN value. This value is not encrypted.

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - Everything was OK The PIN has been generated successfully
Error 00 - Invalid MX No MX parameter was passed in the request or invalid MX or MSISDN was passed. Please correct this parameter and re-try the submission.
Error 01 - Invalid Login The login credentials are incorrect. Please correct and re-try the submission.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 07 - Invalid MNC No MNC parameter was passed in the request. Please correct this parameter and retry.
Error 08 - Invalid MCC No MCC parameter was passed in the request. Please correct this parameter and retry.
Error 15 - Invalid SID The ServiceID parameter was incorrect. Please correct the parameter and retry.
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

Send Bill With PIN

This method validates the PIN provided and enables billing through direct billing. Direct billing will depend on the account setup and the network that is being billed.

Sample Request

GET /v/1/6/Default.asmx/SendBillWithPin?BPID=string&PT=string&MX=string&MNC=string&MCC=string&Amount=string&ItemDescription=string&U=string&P=string&PIN=string HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
POST /v/1/6/Default.asmx/SendBillWithPin HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

BPID=string&PT=string&MX=string&MNC=string&MCC=string&Amount=string&ItemDescription=string&U=string&P=string&PIN=string
POST /v/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/SendBillWithPin"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <SendBillWithPin xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <BPID>long</BPID>
            <PT>string</PT>
            <MX>string</MX>
            <MNC>int</MNC>
            <MCC>int</MCC>
            <Amount>decimal</Amount>
            <ItemDescription>string</ItemDescription>
            <U>string</U>
            <P>string</P>
            <PIN>string</PIN>
        </SendBillWithPin>
    </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/SendBillWithPin HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{
    "BPID":LONG, 
    "PT":"STRING", 
    "MX":"STRING", 
    "MNC":INT,
    "MCC":INT,
    "Amount":DECIMAL,
    "ItemDescription":"STRING",
    "U":"STRING",
    "P":"STRING",
    "PIN":"STRING"
}
//Example below uses a GuzzleHTTP client

$bpid = 91000000;           // Billing Product ID. Infomedia will supply you with these.
$pt = "PassThroughValue";       // Your PassThrough reference for this transaction.
$mx = "GRRUWWBWWWWWWWDFAH";         // Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456).
$mnc = 02;              // The Mobile Network Code
$mcc = 234;             // The Mobile Country Code
$amount = 1.00;             // The amount to charge
$itemDescription = "Description";   // Item description 
$u = "YourUsername";            // Your Username
$p = "YourPassword";            // Your Password
$pin = "0000";              // PinID

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/SendBillWithPin',
[
    'form_params'=> 
    [
        "BPID"=>$bpid,
        "PT"=>$pt,
        "MX"=>$mx,
        "MNC"=>$mnc,
        "MCC"=>$mcc,
        "Amount"=>$amount,
        "ItemDescription"=>$itemDescription,
        "U"=>$u,
        "P"=>$p,
        "PIN"=>$pin
    ]
]);
using RestSharp;
using RestSharp.Deserializers;

string baseURL = "https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/";
string methodName = "SendBillWithPin";

long bpid = 91000000;
string pt = "PassThroughValue";
string mx = "GRRUWWBWWWWWWWDFAH";
int mnc = 02;
int mcc = 424;
decimal amount = 1.00m;
string itemDescription = "description";
string u = "YourUsername";
string p = "YourPassword";
string pin = "0000";

var client = new RestClient(baseURL);
IRestRequest restRequest = new RestRequest(methodName, Method.POST);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
restRequest.AddParameter("application/x-www-form-urlencoded", $"BPID={bpid}&PT={pt}&MX={mx}&MNC={mnc}&MCC={mcc}&Amount={amount}&ItemDescription={itemDescription}&U={u}&P={p}&PIN={pin}", ParameterType.RequestBody);
IRestResponse response = client.Execute(restRequest);

Request Parameters

Parameter Description Mandatory
BPID Billing Product ID. Infomedia will supply you with these. (This should be the same value as the SID passed into the PIN Generate With Network method). Yes
PT Your PassThrough reference for this transaction. Yes
MX Encrypted Alias or encrypted MSISDN, or if unavailable, then provide MSISDN with country code (e.g. 447777123456). Yes
MNC The Mobile Network Code Yes
MCC The Mobile Country Code Yes
Amount The amount to charge the customer in decimal format (e.g. 0.25, 1.00) Yes
ItemDescription The details of the product being purchased. E.g. "200 point credit pack", "weapon upgrade". Yes
U Your Username Yes
P Your Password Yes
PIN The PIN that the user has entered as part of the verification process. See PIN Generate With Network Yes

Sample Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<Bill xmlns="http://localhost/InAppbillingAPI/InAppBilling">
  <Status>string</Status>
  <Description>string</Description>
  <BPID>string</BPID>
  <MX>string</MX>
  <TXID>string</TXID>
  <MCC>string</MCC>
  <MNC>string</MNC>
  <Conf>
    <Status>string</Status>
    <Description>string</Description>
    <PortedMCC>string</PortedMCC>
    <PortedMNC>string</PortedMNC>
  </Conf>
</Bill>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<Bill xmlns="http://localhost/InAppbillingAPI/InAppBilling">
  <Status>string</Status>
  <Description>string</Description>
  <BPID>string</BPID>
  <MX>string</MX>
  <TXID>string</TXID>
  <MCC>string</MCC>
  <MNC>string</MNC>
  <Conf>
    <Status>string</Status>
    <Description>string</Description>
    <PortedMCC>string</PortedMCC>
    <PortedMNC>string</PortedMNC>
  </Conf>
</Bill>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SendBillWithPinResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
      <SendBillWithPinResult>
        <Status>string</Status>
        <Description>string</Description>
        <BPID>string</BPID>
        <MX>string</MX>
        <TXID>string</TXID>
        <MCC>string</MCC>
        <MNC>string</MNC>
        <Conf>
          <Status>string</Status>
          <Description>string</Description>
          <PortedMCC>string</PortedMCC>
          <PortedMNC>string</PortedMNC>
        </Conf>
      </SendBillWithPinResult>
    </SendBillWithPinResponse>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
    "d":{
    " type":"MobilePaymentsLibrary.Bill", 
    "Status":"Success",
    "Description":"00 - Everything was ok",
    "BPID":"91000036",
    "MX":"x93ocjVXb9xpTtgUNruFkgHMOJXs8KxeL6Psjbpypi0=",
    "TXID":"230cf082-2244-49a3-8e6c-b78dd812f614",
    "MCC":"234",
    "MNC":"99",
    "Conf":{
        " type":"MobilePaymentsLibrary.Conf",
        "Status":"Success",
        "Description":"00 - Payment has been made", 
        "PortedMCC":null,
        "PortedMNC":null
        }
    }
}
$xml = simplexml_load_string($response->getBody());
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    $status = $xml->Status;
    $description = $xml->Description;
    $responseBPID = $xml->BPID;
    $responseMX = $xml->MX;
    $TXID = $xml->TXID;
    $responseMCC = $xml->MCC;
    $responseMNC = $xml->MNC;
    $confStatus = $xml->Conf[0]->Status;
    $confDescription = $xml->Conf[0]->Description;
    $confPortedMCC = $xml->Conf[0]->PortedMCC;
    $confPortedMNC = $xml->Conf[0]->PortedMNC;

    echo printf('Status value - %s', $status);
    echo printf('Description value - %s', $description);
    echo printf('BPID value- %s', $responseBPID);
    echo printf('MX value- %s', $responseMX);
    echo printf('TXID value- %s', $TXID);
    echo printf('MCC value- %s', $responseMCC);
    echo printf('MNC value- %s', $responseMNC);
    echo printf('Conf node Status value- %s', $confStatus);
    echo printf('Conf node Description value- %s', $confDescription);
    echo printf('Conf node PortedMCC value- %s', $confPortedMCC);
    echo printf('Conf node PortedMNC value- %s', $confPortedMNC);
}
string status, description, responseBPID, responseMX, TXID, responseMCC, responseMNC, confStatus, confDescription, confPortedMCC, confPortedMNC;

var ResponseObj = new XmlDeserializer().Deserialize<SendBillWithPinResponse>(response);

if (ResponseObj.Status == "Success" && ResponseObj.Description == "00 - Everything was ok")
    {
        status = ResponseObj.Status;
        description = ResponseObj.Description;
        responseBPID = ResponseObj.BPID;
        responseMX = ResponseObj.MX;
        TXID = ResponseObj.TXID;
        responseMCC = ResponseObj.MCC;
        responseMNC = ResponseObj.MNC;
        confStatus = ResponseObj.Conf.Status;
        confDescription = ResponseObj.Conf.Description;
        confPortedMCC = ResponseObj.Conf.PortedMCC;
        confPortedMNC = ResponseObj.Conf.PortedMNC;
    }
else
    {
        // Handle status code
    }

public class SendBillWithPinResponse
{
    public string Status { get; set; }
    public string Description { get; set; }
    public string BPID{ get; set; }
    public string MX{ get; set; }
    public string TXID{ get; set; }
    public string MCC{ get; set; }
    public string MNC{ get; set; }
    public Conf Conf{ get; set; }
}

public class Conf
{
    public string Status{ get; set; }
    public string Description{ get; set; }
    public string PortedMCC{ get; set; }
    public string PortedMNC{ get; set; }
}

Response Parameters

Parameter Description
Status This node can be Success or Error, see below table for further details of failures.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
BPID The BPID that you submitted the request for.
MX An encrypted version of the MSISDN. If a Carrier Alias is used in the request and the transaction was successful then this will contain a new MX of the actual MSISDN.
TXID This is the Transaction ID for the bill.
MCC The Mobile Country Code
MNC The Mobile Network Code
Conf If a billing attempt was made, this additional node will contain the results of the transaction. Please see Conf Node Element for more details.
Conf Status This node can be Success, Pending or Error, see below table for further details of failures. See Conf Node Status and Description Values for details.
Conf Description An English description of the status
Conf PortedMCC If AutoPort is configured for the account, this will contain the MCC that the MX now belongs to, if known. This node will only appear if the Status is "22 - User has ported".
Conf PortedMNC If AutoPort is configured for the account, this will contain the MNC that the MX now belongs to, if known. This node will only appear if the Status is "22 - User has ported".

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - Everything was ok This request has been successfully accepted by our platform.
Error 00 - Invalid MX No MX parameter was passed in the request or invalid MX or MSISDN was passed. Please correct this parameter and re-try the submission.
Error 01 - Invalid Login The login credentials are incorrect. Please correct and re-try the submission.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 03 - Invalid BPID No BPID parameter was passed in the request. Please correct this parameter and retry.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 07 - Invalid MNC No MNC parameter was passed in the request. Please correct this parameter and retry.
Error 08 - Invalid MCC No MCC parameter was passed in the request. Please correct this parameter and retry.
Error 09 - No response from bill Internal Infomedia error. Please do not re-submit for this instance. Please contact your Account Manager.
Error 10 - Error attempting to bill. No bill sent Infomedia systems failed to send the bill. Please retry the submission.
Error 11 - Error inserting bill into DSite log Infomedia systems failed after processing a transaction. If a TransactionID is returned, please use the Confirm call to confirm the status.
Error 35 - The PIN entered does not match the generated PIN The customer entered an invalid PIN and may try again.
Error 36 - This Flow has already been completed This PIN has already been entered and cannot be used again. The customer must request a new PIN.
Error 37 - The MSISDN is Blacklisted This MSISDN is blacklisted and cannot be billed.
Error 49 - PIN has expired This PIN has expired and can no longer be used. The customer must request a new PIN.
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

Conf Node Status and Description Values

The table below lists the Status and Description values that may be found in a Conf node response.

Status Description Action
Success 00 - Payment has been made The payment has cleared. Your application can now unlock the functionality that was requested by the user.
Pending 13.5 - Pending, await Billing Receipt The payment has been requested via an asynchronous method (e.g. PSMS). You will be notified of the result via a Billing Receipt.
Whitelisted 00.1 - Whitelisted user, no charge has been made This MSISDN is whitelisted in our system. The transaction should be considered as successful, however please note that no billing attempt was made for this transaction.
Error 13 - Pending, the user has not paid The bill has not cleared.
Error 13.1 - The user has not paid - Insufficient Credit The bill has not cleared due to insufficient credit.
Error 13.2 - The user has not paid - Operator Bar The bill has not cleared due to an Operator Bar on this MSISDN.
Error 13.3 - The user has not paid - Unknown Subscriber The bill has not cleared due to the MSISDN being an Unknown Subscriber. i.e. not recognised by the network.
Error 13.4 - The user has not paid - Expenditure limit reached The bill has not cleared due to the MSISDN's Expenditure limit being reached.
Error 14 - The billing period has elapsed The attempt to bill this user on this transaction has failed. A new bill will need to be instantiated to try for a successful billing attempt.
Error 22 - User has ported User has moved to another recognised network. The new network details will be provided in the PortedMCC and PortedMNC nodes.

Refund Transaction

This method allows the API user to refund a customer for a particular billing transaction.

Sample Request

GET /v/1/6/Default.asmx/RefundTransaction?TXID=string&ReasonCode=string&U=string&P=string HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
POST /v/1/6/Default.asmx/RefundTransaction HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

TXID=string&ReasonCode=string&U=string&P=string
POST /v/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/RefundTransaction"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <RefundTransaction xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <TXID>string</TXID>
            <ReasonCode>string</ReasonCode>
            <U>string</U>
            <P>string</P>
        </RefundTransaction>
    </soap:Body>
</soap:Envelope>
POST /V/1/6/Default.asmx/RefundTransaction HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: application/json
Accept: application/json
Content-Length: length

{
    "TXID":"STRING", 
    "ReasonCode":"STRING", 
    "U":"STRING",
    "P":"STRING"
}
//Example below uses a GuzzleHTTP client

$txid = "230cf082-2244-49a3-8e6c-b78dd812f614";     // Example billing transaction ID.
$reasonCode = "05";     // Example ID of reason code associated with the refund being issued
$u = "YourUsername";    // Your Username
$p = "YourPassword";    // Your Password

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/RefundTransaction',
[
    'form_params'=> 
    [
        "TXID"=>$txid,
        "ReasonCode"=>$reasonCode,
        "U"=>$u,
        "P"=>$p
    ]
]);
using RestSharp;
using RestSharp.Deserializers;

string baseURL = "https://iab.wbg.infomediatechnologies.com/v/1/6/default.asmx/";
string methodName = "RefundTransaction";
string txid = "230cf082-2244-49a3-8e6c-b78dd812f614";   // Example billing transaction ID.
string reasonCode = "05";   // Example ID of reason code associated with the refund being issued
string u = "YourUsername";
string p = "YourPassword";

var client = new RestClient(baseURL);
IRestRequest restRequest = new RestRequest(methodName, Method.POST);
restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
restRequest.AddParameter("application/x-www-form-urlencoded", $"TXID={txid}&ReasonCode={reasonCode}&U={u}&P={p}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(restRequest);            

Request Parameters

Parameter Description Mandatory
TXID This is the Transaction ID received in the response from actioning a bill. Yes
ReasonCode An ID of the reason associated with the refund being issued. See Refund Reason Codes for a list of current codes. Yes
U Your Username Yes
P Your Password Yes

Sample Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<RefundResult xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <RefundAmount>string</RefundAmount>
    <RefundCurrencyCode>string</RefundCurrencyCode>
</RefundResult>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<RefundResult xmlns="http://localhost/InAppbillingAPI/InAppBilling">
    <Status>string</Status>
    <Description>string</Description>
    <RefundAmount>string</RefundAmount>
    <RefundCurrencyCode>string</RefundCurrencyCode>
</RefundResult>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <RefundTransactionResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <RefundTransactionResult>
                <Status>string</Status>
                <Description>string</Description>
                <RefundAmount>string</RefundAmount>
                <RefundCurrencyCode>string</RefundCurrencyCode>
            </RefundTransactionResult>
        </RefundTransactionResponse>
    </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: length

{
"d":{
    "__type":"MobilePaymentsLibrary.RefundTransaction",
    "Status":"STRING",
    "Description":"STRING",
    "RefundAmount":"STRING",
    "RefundCurrencyCode":"STRING"
    }
}
$xml = simplexml_load_string($response->getBody());
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    $status = $xml->Status;
    $description = $xml->Description;
    $refundAmount = $xml->RefundAmount;
    $refundCurrencyCode = $xml->RefundCurrencyCode;

    echo printf('Status value - %s', $status);
    echo printf('Description values - %s', $description);
    echo printf('RefundAmount values - %s', $refundAmount);
    echo printf('RefundCurrencyCode values - %s', $refundCurrencyCode);
}
string status, description, refundAmount, refundCurrencyCode;

var ResponseObj = new XmlDeserializer().Deserialize<RefundTransactionResponse>(response);

if (ResponseObj.Status == "Success" && ResponseObj.Description == "00 - Transaction Refunded")
    {
        status = ResponseObj.Status;
        description = ResponseObj.Description;
        refundAmount = ResponseObj.RefundAmount;
        refundCurrencyCode = ResponseObj.RefundCurrencyCode;
    }
else
    {
        // Handle status code
    }

public class RefundTransactionResponse
{
    public string Status { get; set; }
    public string Description { get; set; }
    public string RefundAmount{ get; set; }
    public string RefundCurrencyCode{ get; set; }
}

Response Parameters

Parameter Description
Status This node can be Success or Error.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
RefundCurrencyCode The ISO 4217 standard currency code. e.g. GBP.
RefundAmount The amount that has been refunded in decimal format.

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - Transaction Refunded This request has been successfully accepted by our platform and refunded.
Error 01 - Invalid Login The login credentials are incorrect. Please correct and re-try the submission.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 12 - Invalid TXID An invalid TransactionID has been provided.
Error 45 - Invalid ReasonCode An invalid reason code has been provided.
Error 46 - TransactionID already refunded The TXID provided has previously been refunded and cannot be actioned again.
Error 47 - Refund failed A refund was attempted but failed.
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

Refund Reason Codes

A list of the current reason codes for the customer requesting a refund.

Reason Code Description
05 Service not working
10 Dissatisfied with service
11 Unaware of service
40 Gesture of goodwill
41 Insufficient proof of consent to charge
42 Carrier request
43 Regulator request
44 No service usage

Log Activity

This method allows the API user to log any activity that has taken place on their platform using an Infomedia engagement type.

Sample Request

//Sample request not yet available for this method.
//Sample request not yet available for this method.
POST /v/1/6/Default.asmx HTTP/1.1
Host: iab.wbg.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://localhost/InAppbillingAPI/InAppBilling/LogActivity"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <LogActivity xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <ProductID>int</ProductID>
            <MX>string</MX>
            <MCC>int</MCC>
            <MNC>int</MNC>
            <EngagementTypeID>int</EngagementTypeID>
            <Data>
                <DataKeyValuePair>
                    <Key>string</Key>
                    <Value>string</Value>
                </DataKeyValuePair>
                <DataKeyValuePair>
                    <Key>string</Key>
                    <Value>string</Value>
                </DataKeyValuePair>
            </Data>
            <U>string</U>
            <P>string</P>
        </LogActivity>
    </soap:Body>
</soap:Envelope>
//Sample request not yet available for this method.
//Sample request not yet available for this method.
//Sample request not yet available for this method.

Request Parameters

Parameter Description Mandatory
ProductID BPID or ServiceID. Infomedia will supply you with these. Yes
MX Encrypted Alias or MSISDN with country code (e.g. 447777123456). Yes
MNC The Mobile Network Code Yes
MCC The Mobile Country Code Yes
EngagementTypeID Please refer to the Engagement Types table for all of the available Engagement Types. Yes
Data An Array of DataKeyValuePair objects. Please refer to the Data Key Value Pairs table. Yes

Sample Response

//Sample response not yet available for this method.
//Sample response not yet available for this method.
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <LogActivityResponse xmlns="http://localhost/InAppbillingAPI/InAppBilling">
            <LogActivityResult>
                <Status>string</Status>
                <Description>string</Description>
                <EngagementID>long</EngagementID>
            </LogActivityResult>
        </LogActivityResponse>
    </soap:Body>
</soap:Envelope>
//Sample response not yet available for this method.
//Sample response not yet available for this method.
//Sample response not yet available for this method.

Response Parameters

Parameter Description
Status This node can be Success or Error.
Description This should be interpreted to determine the outcome. See Status and Description Values for details.
EngagementID Infomedia's unique reference for this activity.

Status and Description Values

The table below lists Status and Description values that may be found in the response for this API call.

Status Description Action
Success 00 - Everything was OK The Activity was logged successfully.
Error 02 - Unuathorised The account is not authorised to access this API call. Please contact your Account Manager.
Error 06 - Unauthorised IP The IP Address of the client server has not been whitelisted. Please contact your Account Manager.
Error 39 - Invalid Engagement Data Parameters Supplied One of the supplied parameters was incorrect. Details of the error will be appended to this Description.
Error 99 - Internal Error Infomedia internal error. Please re-try API. If this failure persists please contact your Account Manager.

Data Key Value Pairs

Some activity types require additional accompanying data to be passed in. The API uses a custom structure called DataKeyValuePair to capture this information.

Parameter Description
Key One of the Activity Keys for the EngagementTypeID specified. Please refer to the Activity Data Keys appendix.
Value The value of this parameter. Refer to the Activity Data Keys appendix for validation requirements.

Activity Data Keys

A list of all data keys that can be used in conjunction with LogActivity and UpdateActivity.

Key Description Data Type
LandingPageEngagementID The EngagementID returned from the Landing Page JavaScript snippet. Long
SubscriptionMethod How the user subscribed e.g. web portal String
SubscriberID The Infomedia subscriberID. Integer
BannerEngagementID The ID of the Banner the customer clicked. Integer
UserAgent UserAgent string of the device accessing the Application/Site. String
ApplicationOrURL The Application or URL where the banner is located. String
BannerID The ID of the banner the customer clicked. Integer
AdNetworkName The Name of the Advertising Network providing the banner. String
CampaignDescription The Description of the advertising campaign. String
IPAddress The IP Address of the device accessing the Application/Site. String
ProductAccessed The ProductID of the service accessed. Integer
VisitDuration The length of the time the user spent browsing the application in seconds. Integer
UserName The username of the currently logged in user. String
AgentName The name of the CS agent who handled the call. String
CallReason A description of the reason the customer contacted CS. String
CallDuration The time (in seconds) the CS call lasted. Integer
CallOutcome Outcome of the call (escalate, cancel service etc...) String
Amount The value of the Refund Decimal
TransactionID The ID of the Transaction to be refunded String
RefundChannel e.g. Paypal, EE String
UnsubscriptionMethod How the user unsubscribed (text message, web portal etc...) String
LandingPageRef The ID of the Landing Page the customer visited. Integer
URL The full URL of the page the customer hit. String
ReferralUrl The full URL of the parent page the URL. String

Engagement Types

User Engagement activity information, such as when a user subscribes, accesses or unsubscribes from a service, can be created and updated on the Infomedia API using the LogActivity and UpdateActivity API calls.

The table below shows a list of engagement types that can be passed to the LogActivity and UpdateActivity API methods.

EngagementTypeID Description Notes
1 Subscribe -
2 Unsubscribe -
6 Banner Clicked -
7 Landing Page Screen Capture -
8 Service Accessed Most recent date on which the user accessed the service (may be submitted multiple times)
9 Welcome SMS Sent If not using Infomedia's Hermes API for SMS
10 Reminder SMS Sent If not using Infomedia's Hermes API for SMS
11 Exit SMS Sent If not using Infomedia's Hermes API for SMS
12 Welcome SMS Receipted If not using Infomedia's Hermes API for SMS
13 Reminder SMS Receipted If not using Infomedia's Hermes API for SMS
14 Exit SMS Receipted If not using Infomedia's Hermes API for SMS
15 Click to Action screen capture -
18 Customer Service Query If not using Infomedia's CSLite tool for CS
22 MO Received If not using Infomedia's shortcodes for MO's

Data Synchronisation

Notifications

Partners should setup a URL in the below format to receive asynchronous notifications upon certain events taking place.

https://www.example.com/?MX=%%mx%%&MCC=%%mcc%%&MNC=%%mnc%%&ProductID=%%productid%%&Type=%%etid%%

Parameter Description
%%mx%% Encrypted MSISDN/Alias. This can be decrypted using DecryptMX.
%%mnc%% The Mobile Network Code.
%%mcc%% The Mobile Country Code.
%%productid%% The Product ID (PID).
%%etid%% An Integer which indicates the type of interaction that has been performed. See the Interaction Types table below.

Interaction Types

These are the current possible values that may be received via the postback call. Other values are used internally.

ETID Description
1 Subscribe
2 Unsubscribe
5 Successful Bill Transaction

SMS API

This API allows you to send SMS messages to users on certain Mobile Carriers. Messages can be scheduled or sent immediately and can be sent in batches or to single users.

The API is available as a simple web service and a WSDL is provided.

Access is restricted by Username and Password. These will be provided at point of setup.

SendMessageWithCampaign

Sample Request

HTTP GET is not supported for this method.
HTTP POST is not supported for this method.
POST /hermes/hermes.asmx HTTP/1.1
Host: sms.infomediatechnologies.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/SendMessageWithCampaign"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SendMessageWithCampaign xmlns="http://tempuri.org/">
      <Username>string</Username>
      <MD5Hash>string</MD5Hash>
      <SMSMessage>string</SMSMessage>
      <MSISDNList>
        <MSISDNDetails>
          <MSISDN>string</MSISDN>
          <MCC>string</MCC>
          <MNC>string</MNC>
        </MSISDNDetails>
        <MSISDNDetails>
          <MSISDN>string</MSISDN>
          <MCC>string</MCC>
          <MNC>string</MNC>
        </MSISDNDetails>
      </MSISDNList>
      <UserMsgID>string</UserMsgID>
      <UserTag>string</UserTag>
      <ScheduleFor>string</ScheduleFor>
      <CampaignID>string</CampaignID>
    </SendMessageWithCampaign>
  </soap:Body>
</soap:Envelope>
JSON is not supported for this method.
//Sample request not yet available for this method.
// NOTE: Add 'TestAPI.Hermes' service reference to the Hermes API WSDL at:
// https://sms.infomediatechnologies.com/HERMES/hermes.asmx?wsdl

using System;
using NUnit.Framework;
using TestAPI.Hermes;

string username = "UserName";
string md5Hash = "AE-2B-1F-CA-51-59-49-E5-D5-4F-B2-2B-8E-D9-55-75";
string smsMessage = "Test Text Message";
string userMsgId = "<Unique ID>";
string userTag = "Tag";
string scheduleFor = "00000000000000";  //send immediately
string campaignId = "102";
var details = new MSISDNDetails[] { new MSISDNDetails()
    {
        MSISDN = "447123456789",
        MNC = "234",
        MCC = "11"
    }};

var result = ExecuteSendMessageWithCampaign(username, md5Hash, smsMessage, details, userMsgId, userTag, _
 scheduleFor, campaignId);

HermesSoapClient h = new HermesSoapClient();

Sample Response

HTTP GET is not supported for this method.
HTTP POST is not supported for this method.
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SendMessageWithCampaignResponse xmlns="http://tempuri.org/">
      <SendMessageWithCampaignResult>
        <Status>string</Status>
        <IsError>boolean</IsError>
        <DetailsOfError>
          <UserFriendlyMessage>string</UserFriendlyMessage>
          <SystemMessage />
          <StackTrace />
        </DetailsOfError>
      </SendMessageWithCampaignResult>
    </SendMessageWithCampaignResponse>
  </soap:Body>
</soap:Envelope>
JSON is not supported for this method.
//Sample response not yet available for this method.
return h.SendMessageWithCampaign(username, md5Hash, smsMessage, details, userMsgId, userTag, scheduleFor, campaignId);

if (result.Status == "Success")
    {
       Console.WriteLine("Passed");
    }
else
    {
        Console.WriteLine("Failed");
    }

Sends a message to an MSISDN (or list of MSISDNs) with a Campaign ID. Multiple campaigns can be setup to allow SMS campaigns to be split up at the reporting level. Campaigns can be set up when your account is created and then through your account manager when your campaigns are live.

Parameter Description Mandatory
Username You will be provided your username at account setup. You will need this for all API calls. Yes
MD5Hash You will be provided with a password and a "secret" that you will need to hash together and pass in this parameter. This will authenticate you on our system and allow you to send us SMS's (for reference http://en.wikipedia.org/wiki/Md5) Yes
SMSMessage This is the SMS message you wish to send. Remember that some special characters are counted double by some networks. Yes
MSISDNList This is a single MSISDN or multiple MSISDNs that you wish to send the message to. Yes
UserMsgID This is your unique id for the message Yes
UserTag Currently not in use No
ScheduleFor This is the date and time you would like to send the message. The format of the datetime should be yyyymmddhhmmss. If you would like to send the message immediately please set this to all 0's e.g. 00000000000000 Yes
CampaignID These will be provided to you as required by your Account Manager. CampaignIDs are unique to your Product and the type of message you are sending, ie. PIN Message. Yes

Failure reasons and actions

Status Failure Description Action
91 There is no account specified for the username and password Check username and password and try again.
92 The MD5 hash supplied was invalid Check the hash and try again.
93 Duplicate feed Check the MessageID and try again.
94 The ScheduleFor DateTime is invalid Change to format yyyMMddHHmmSS or 00000000000000 (for immediate send).

Data Synchronisation

Successfully Delivered SMS Notifications

SMS asynchronous notifications can be setup for both Infomedia-managed services as well as services managed by Partners using a URL in the below format. Please check the parameter descriptions below to see which parameters apply to your integration type.

Parameter Description
%%mx%% Encrypted MSISDN/Alias. This can be decrypted using DecryptMX.
%%mnc%% The Mobile Network Code.
%%mcc%% The Mobile Country Code.
%%usermsgid%% For messages sent via our Hermes API, this will be the UserMsgID that was provided when the SendMessage call was made. This will be omitted for Infomedia-hosted subscription services.
%%campaignid%% The CampaignID that the message was sent through on. For Hermes API users, this will match what was requested. For Infomedia-hosted subscription services we can provide you a list of CampaignID's for you to match against your services. Please speak to your Account Manager for further details.

Glossary

Term Description
AID Your AccountID. This will be provided by your Account Manager.
Alias An alphanumeric Infomedia-created ID which relates to the user's mobile number.
CNAME A Canonical Name record (abbreviated as CNAME record) is a type of resource record in the Domain Name System (DNS) which maps one domain name (an alias) to another (the Canonical Name).
CSLite The Infomedia Customer Services tool, which was purpose built to handle customer queries, available for Partner use to manage their customer base.
CTC Infomedia's set of JavaScript functions which when triggered capture screenshots and consent of the user's acquisition journey.
DCB Direct Carrier Billing. The method by which customers are billed via their mobile carrier network.
IABLU The Infomedia user identification platform which detects users via Header Enrichment and provides an MX, MCC, and MNC, if the user was able to be identified.
MCC 3-digit Mobile Country Code
MNC 2-digit Mobile Network Code
MO SMS Mobile Originating SMS. These are messages which are triggered from a mobile device, hence 'originating' at the the mobile.
MSISDN A mobile number.
MT SMS Mobile Terminating SMS. These are messages which are sent to a device, hence 'terminating' at the the mobile.
MX An Infomedia parameter populated with an encrypted MSISDN or encrypted Infomedia Alias.
PAID A Product Account ID allocated per product which will be provided by the Infomedia Account Manager. (Example: dd59a7c3-d8e2-4348-b809-c9ad8bc71fe6)
PID The ServiceID or the BPID (Billing Product ID) for the Product that the user is requesting.
PSMS Premium SMS. The method of billing a customer by sending an SMS to their device which charges the customer.
PT The pass-through value, if PT was passed to the original Infomedia-hosted Checkout Pages URL.
SID ServiceID.
TXID The Transaction ID for a bill.

FAQs

FAQs for developers to help when integrating with the Infomedia platform.

If you require assistance which is not covered in the FAQs, please contact your Infomedia Account Manager.

Billing

How many digits is the PIN in SendBillWithPIN?

Typically the PIN is 4 digits, however this can vary depending upon the territory/carrier connection. All UK carriers are 4 digit, but if you are unsure of the PIN requirements then please contact your Infomedia Account Manager.

Is step-charging available for renewal billing?

This can differ depending on territory. Please refer to the territory specific Infomedia Framework for more information.

Some territories may not allow step-charging at all, so it will not be referred to in the framework. If it is available, it can be found under the 'Retry and Step Charging Policies' section.

Notifications

Can the 'pt' parameter be returned in notifications?

Unfortuntately not. However, you can enter a 'pt' parameter into the Checkout Pages URL when sending the user to our platform, and that will allow the 'pt' to return to you after the user has completed their flow.

I received a subscription/purchase notification, but the user was not sent back to our platform. Why did this happen? (O2/Vodafone/Three UK)

This may be the case where part of the acqusition flow is hosted by the carrier and the user has subscribed/purchased but then has been shown a carrier-hosted confirmation page. In some cases, this is a static page and the user may need to click a 'Continue' type button to return through the Infomedia Checkout Pages and onto the Partner's platform.

The ideal is for the Partner to host their own subscription/purchase confirmation page, so if this something you are willing to setup, please get in contact with Infomedia to request the removal of the carrier-hosted confirmation page, and instead have the user be automatically redirected to the Checkout Pages platform and onto the Partner's platform.

SMS

Who sends compliance messages (SMS)?

Compliance messages are automatically triggered by the Infomedia platform. For some carriers, you will be able to provide us with the text you require in the SMS and we can configure this. Please contact your Technical Account Manager to configure this.

Yes, however there are differing requirements depending on the Carrier and/or territory, please refer to Infomedia Frameworks for more information, and contact your Account Manager to discuss your requirements further.

Subscriptions

Is there a Subscription API?

There is no Subscription API for Checkout Pages. Users are subscribed from within the Checkout Pages service and then directed straight to your service content, and therefore all subscriptions are handled by Infomedia.

How is a user's subscription cancelled when they send a STOP type MO SMS?

A user's subscription is cancelled if they send a 'STOP'* type MO SMS to the relevant shortcode for a service.

If they send STOP along with the service's keyword, e.g. 'STOP YOURGAMES' then that specific service will be cancelled, if they were subscribed to it.

However, if they send a different unrelated keyword, or happen to mispell the keyword, e.g. 'STOP SOMEOTHERGAMES' or 'STOP IT', then they will have their most recently subscribed service on that shortcode cancelled, as the 'STOP' request must result in a cancellation.

If a user sends 'STOP ALL', then all of their subscriptions on that particular shortcode will be cancelled.

*Or equivalent in local language

If a user doesn't pay their bill, is their subscription cancelled automatically?

Yes, the user's subscription is automatically cancelled by the Infomedia platform if they have gone over the permitted time period/billing cycles without payment. A notification can be sent to your platform upon subscription cancellation taking place.

Please refer to the 'Retry Policy' section of the carrier/territory specific Infomedia Framework for more information.

Can a subscription have a free trial period?

Yes, this can be configured for your service by your Technical Account Manager. It is recommended to provide at least a 1 day free period for a subscription service.

Tokens

How do I create a token?

Please go to the Request Token section. You may also need to read the following FAQ, titled 'How do I pass a token to my Checkout Page?'.

How do I pass a token to my Checkout Page?

If you've already created your token, pass it to your Checkout Page URL using the following format: http://YourCheckoutPageURL/?pt=ExamplePTValue&token=YourGeneratedToken

Example: http://d8b2ee1a24af595b1efg-bd0569fb1800a0d35731ee4571c0eeaf.def.abc.rackcdn.com/?pt=ExamplePTValue&token=A9IotQFdJBSYjth7h)hGWmFAgzVjxU6xeGGT)AaAbB=

Please read the whole of the Pass user to Checkout Page section to understand how to pass your user to the Checkout Page. The section contains details regarding the URL format, including 'pt' parameter, the 'Token' parameter, and the response format.

Which Token Type ID should I be using?

Please refer to Choosing a Token Type ID. If you are still unsure of which to use, please get in contact with your Technical Account Manager.