SmartTV SDK
This SDK allows merchants to accept payments on Smart TVs using PW Smart TV Payments product.
INSTALLING THE SDK INTO YOUR APP
Add the following line into your application HTML file:
<script type="text/javascript" src="https://payments.terminal3.com/js/pwsmart/ver/pwsmart.1.4.js"></script>
CONFIGURATION
Make sure that Evaluation Mode is ON in your project’s settings:
Initialization constructor takes a JSON object as parameter:
PWSmartGateway.init(details);
Parameter | Description |
---|---|
details required JSON object |
JSON object for configuring the SDK |
Detailed JSON object parameters:
Parameter | Description |
---|---|
key required string |
Your Project Key (for live payments) or Brick Test Keys (for tests and development) |
countryCode string |
ISO 3166-1 alpha-2 code of the country (e.g. “KR” or “JP”) |
containerId string |
ID of the DOM element to append Smart TV form to specific place in the app (e.g. id of the div element) |
lang string |
ISO 639-1, 2 Letter code of the language to localize the payment form. (e.g. “KO” or “JA”) |
gaWebPropertyId string |
Web property ID listed in the management interface within Google Analytics (only if you use it) |
brand string |
You can use this parameter to specify a special landing page for payments depending on customer’s TV set brand. (eg, lgtv, samsung, toshiba, philips, panasonic.) |
Example:
PWSmartGateway.init({
key: 'YOUR_PROJECT_KEY',
countryCode: 'US',
containerId: 'my-div',
lang: 'en',
gaWebPropertyId: 'UA-XXXX-Y',
brand: 'lgtv'
});
If the library is loaded asynchronously use the callback method below to know when SDK has been fully loaded.
Example:
// Asynchronous initialization
window.PWSmartGatewayOnLoadedCallback = function() {
PWSmartGateway.init({
key: 'YOUR_PROJECT_KEY',
countryCode: 'US',
containerId: 'my-div',
lang: 'en',
gaWebPropertyId: 'UA-XXXX-Y',
brand: 'lgtv'
});
};
Display the payment widget
After initializing the SDK, use the method showPaymentForm() below to show the payment widget. If you did not specify a containerId in the step above, the widget will show itself inside the body HTML tag automatically.
PWSmartGateway.showPaymentForm(value, function() { ... }, function() { ... });
Parameter | Description |
---|---|
value required JSON object |
JSON object with transaction details (see details below) |
function() { } function body |
Transaction successful callback function. Deliver goods for customer in this function |
function() { } JSON object |
Transaction failed callback function. Show error message. |
Values of JSON object parameters:
Parameter | Description |
---|---|
productId required string |
Up to 256 characters long. Alphanumeric ID of the product in your system |
productName string |
alphanumeric, up to 256 characters long. Product name |
currency string |
ISO 4217, Currency of the purchase, e.g. USD, EUR |
amount float |
numeric, with “.” as decimal delimiter. Amount of the purchase, e.g. 10.00 |
period required if subscription string |
“day” / “week” / “month” / “year”. Type of product period. |
duration required if subscription string |
Length of product period, e.g. 3. |
userID string |
Alphanumeric, up to 64 characters long. ID of the end-user in your system who is viewing the widget. Examples: numeric ID, username or email. (By default SDK uses device ID) |
onExit function |
Optional callback on user exiting the payment window, e.g. after a successful payment |
showBackButton boolean |
Show ‘Back’ button on payment form. |
enablePaymentRecoverFlow boolean |
Enable ‘Recover My Payment’ flow. |
titles JSON object |
Custom headings: {‘buyHeading’: ‘Subscribe to #product’, ‘buyHeadingRecurring’: ‘#price per #period’} |
Example:
// 2 months subscription
PWSmartGateway.showPaymentForm(
{
productId: 'Order_2044',
productName: '2 month subscription',
currency: 'USD',
amount: '9.99',
period: 'month',
duration: 2,
userId: 'test_user_2',
onExit: function() {},
showBackButton: true,
enablePaymentRecoverFlow: true,
titles: {'buyHeading': 'Subscribe to #product', 'buyHeadingRecurring': '#price per #period'}
},
function() {
alert('Payment Success'); // callback on success
},
function (error) {
alert('Payment Failure'); // callback on failure
}
);
// fixed product (no subscription)
PWSmartGateway.showPaymentForm(
{
productId: 'Order_2045',
productName: '5000 Gold Coins',
currency: 'USD',
amount: '9.99',
userId: 'test_user_2',
onExit: function() {},
showBackButton: true,
enablePaymentRecoverFlow: true,
titles: {'buyHeading': 'Subscribe to #product', 'buyHeadingRecurring': '#price per #period'}
},
function() {
alert('Payment Success'); // callback on success
},
function (error) {
alert('Payment Failure'); // callback on failure
}
);
Hide alternative payment methods in the widget
If you want to hide alternative payment methods in the widget you need to pass that parameter: hidePaymentMethods:true
It is also possible to use widget API and make a simplified SDK call.
Example:
PWSmartGateway.showPaymentForm(
{
productId: 'test sku', // SKU ID of the product inside your project's products
},
function() {
alert('Payment Success'); // callback on success
},
function (error) {
alert('Payment Failure'); // callback on failure
}
);
Response
Once you make the showPaymentForm() call successfully, the expected result is to see the payment form in screen:
Check payment status
If you would like to first check if the product has already been purchased, you can use checkPaymentStatus() method:
PWSmartGateway.checkPaymentStatus(value, function() { ... }, function() { ... });
Parameter | Description |
---|---|
value required JSON object |
JSON object with transaction details (see details below) |
function() function |
Success callback function |
function() function |
Error callback function |
JSON object parameters:
Parameter | Description |
---|---|
productId required string |
alphanumeric, up to 256 characters long. Alphanumeric ID of the product |
userID required string |
alphanumeric, up to 64 characters long. ID of the end-user in your system who is viewing the widget. Examples: numeric ID, username or email |
If a payment is found using the provided parameters, the success callback receives an array containing JSON objects for each payment found. Please refer here for more details about the response JSON objects. If no payment is found, error callback is triggered.
PWSmartGateway.checkPaymentStatus(
{
productId: 'Order_2044', // Product SKU ID
userId: 'test_user_2' // ID of the user. By default SDK uses device ID
},
function (response) {
// callback on success
// refer to https://www.paymentwall.com/en/documentation/Payment-Status-API/3019 for response format
},
function (response) { // No payment found, show payment form so customer can purchase
PWSmartGateway.showPaymentForm(
{
productId: 'Order_2044', // Required. Merchant's product SKU ID
productName: 'Test Key', // Optional. By default pulled by SKU ID from Products section of merchant dashboard
currency: 'USD', // Optional. By default pulled by SKU ID from Products section of merchant dashboard
amount: '9.99', // Optional. By default pulled by SKU ID from Products section of merchant dashboard
userId: 'test_user_2' // Optional. ID of the user. By default SDK uses device ID
},
function() {
alert('success'); // callback on success
},
function (error) {
alert('failure'); // callback on failure
}
);
}
);
Subscription management
To cancel a user’s subscription, you can show the cancellation form to the end-user using the following method:
PWSmartGateway.showCancelSubscriptionForm(value, function() { ... }, function() { ... });
Parameter | Description |
---|---|
value required JSON object |
JSON object with subscription’s details (see details below) |
function() function |
Success callback function |
function() function |
Error callback function |
JSON object parameters:
Parameter | Description | |
---|---|---|
productId required string |
alphanumeric, up to 256 characters long | Alphanumeric ID of the product |
userID required string |
alphanumeric, up to 64 characters long | ID of the end-user in your system who is viewing the widget. Examples: numeric ID, username or email |
Example:
PWSmartGateway.showCancelSubscriptionForm(
{
productId: 'product_sku_id',
userId: 'test_user_2'
},
function (response) {
// callback on success
},
function (response) {
// callback on failure
}
);
Error handling
Third parameter of PWSmartGateway.showPaymentForm
is failure callback. It accepts error object of the following format:
{
"type":"error",
"code":1001,
"message":"Product is not found"
}
Possible error codes:
- 1000 - User cancelled the payment process.
- 1001 - Product is not found. Check the product SKU ID, or provide product name, amount and currency
Pingback Processing
Pingbacks are server-to-server messages that Terminal3 Payments triggers whenever a payment is approved or declined. Implementing pingbacks is required in order to have your project approved. Please refer to Digital Goods API pingbacks to learn about implementation.
Going live
After you finish the integration, you should submit your project for review in your merchant area.
See project go live.