Skip to content

Iframe Integration

your iframe base url will be - https://direct.tranzila.com/terminalname/iframenew.php

Secure Payment Page Integration - Introduction

In accordance with credit card companies' guidelines, which were established in 2012, it is prohibited to capture and transmit credit card details on a payment page of a website that has not been authorized to comply with the PCI DSS security standard.

In order to make it easier for our customers, we have developed the Redirect Page - a payment page hosted on Tranzila servers that has received and passed all the certifications and requirements of the new PCI-DSS security standard.

You can integrate the payment page as an external Direct payment page or as an internal payment page on your website through an Iframe.

Why use iframe?


By using the IFRAME tag, another document can be hosted within an existing document within an inline frame.

Your website can be integrated with TranZila's redirect solution using IFRAME to prevent your customers from leaving your website and paying inside the secure framework.

By using IFRAME, you can display only the payment input fields of the redirect page within your site's Iframe payment page while still adhering to PCI-DSS's strict security standards.

Using a redirect page


With this option, the user is automatically redirected to the external payment page from the website they were browsing. The page is designed with a basic default design that can be customized and changed according to the service's needs. You can define and modify the design to suitable colors, display the service provider's logo, an image, select fields to display, and more.

Using an Iframe Embedding Window on Your Website


With this option, the iframe is actually a derivative of the redirect page. You can define the relevant fields and embed them in the payment page of your website according to your needs. The main advantage of using the payment page as an Iframe is that the user stays on the website and does not go to an external payment page, thus not compromising the user experience and flow during the purchase process, resulting in higher conversion rates. The displayed logos can be removed and the background color can be changed to match the website's color, so the user doesn't even feel the difference, even though their details are being transferred from a different URL.

For both integration options, it is important to ensure that the data is transmitted securely and encrypted according to the PCI-DSS standard.

Getting started

We recommend checking out our examples they are full of useful information to get started quickly!

Choose iframe settings in the dashboard

alt text

Data transfer and retrieval in the payment page

Data transfer to the payment page can be done through either POST or GET. For a redirect payment page, parameters can only be sent through POST, while for an iframe payment page, data can be sent through both POST and GET. We recommend using POST for both types of payment pages.

Data retrieval is done through an array that contains the response from the credit card companies and the variables (parameters) that were entered in the payment page. This array is returned through POST or GET to the success/failure URL that was defined in the payment page settings (Merchant).

If a Notify page was defined, transaction data will also be sent to it in parallel.

your iframe base url will be - https://direct.tranzila.com/terminalname/iframenew.php

iframe parameters table

ParmaterValuesDescription
sumPositive Decimal NumberTransaction sum
cred_type1 - Credit card
6- Credit
8 - installments
Payment type
currency1 - NIS, 2 - US dollar
978 - Euro, 826 - Pound Sterling GBP
Transaction currency type
tranmodeA - Standard,
V - Verification (J5),
K - create token without checking card
N - Verification (J2)
With token add K (AK, NK, VK)
Transaction type
accessibilitypass accessibility=2 to have an accessibility buttonAccessibility Button
success_url_addressThe url the user will be redirected to after a successful purchase, for example: https://my-website.com/successSuccess url
fail_url_addressThe url the user will be redirected to after a failed purchasefail url, for exmaple: https://my-website.com/failure
notify_url_addressThe "Notify" page is intended to receive transaction data as they were actually performed and identify changes that occurred in the transaction data after they were sent, for exmaple: https://my-website.com/notifyNotify url
Z_fieldIf you include the Z_field parameter in your request, its value will replace the corresponding value in zData that is sent to SHVA.

predetermined additional fields

ParmaterDescription
companyCompany name
contactContact name
emailEmail
addressAddress
phonephone number
cityCity
pdescBasic Product description for invoice
remarksRemarks

Installments

must be with cred_type=8

The formula for calculating payments is: sum = fpay + spay*npay

The calculation formula for Installments is as follows:

The sum is equal to the first payment (fpay) plus the second payment (spay) multiplied by the number of payments (npay).

ParmaterValuesDescription
npayPositive integernumber of installments after the first installment.
npay= number of total installments - 1
fpayPositive integer/decimal number maxium 2 numbers after the dotamount to pay on the first transaction
spayPositive integer/decimal number maxium 2 numbers after the dotamount to pay for every transaction after the first transaction
maxpayPositive integermaximum amount of installments

Display Settings

ParmaterValuesDescription
trBgColorhexadecimalbackground color
trTextColorhexadecimaltext color
trButtonColorhexadecimalpayment button color
buttonLabelstringpayment button text
hidesum1hide payment sum - it is possible to pass this parmater only if the transaction is made through the token system and only if one of the following variables is sent: tranmode=VK or tranmode=K or tranmode=NK.
nologo1remove tranzila logo
hide_cc1hide the option to pay with credit card

Language display options is set with the parameter - lang - using the following Values

ValuesDescription
ilHebrew
arArabic
ruRussian
esSpanish
deGerman
frFrench
jpjapanese

Add Payment Options

ParmaterValuesDescription
ppnewwin2Add the option to pay with paypal
bit_pay1Add the option to pay with Bit
google_pay1Add the option to pay with Google, Note: add the allowpaymentrequest=true to the iframe
3DS V2 Settings
ParmaterValuesDescription
newprocess1activating V2 on the 3DS system if it was not set in the settings
Recurring Payment - Customer Choice
ParmaterValuesDescription
recur_paymentsIntegerThe number of recurring charges that will be made - If this field is not passed, the recurring charge will not be limited and will run every month/quarter/year until manually turned off from the terminal.
recur_start_dateyyyy-mm-dd (recur_start_date=2023-08-28)The start date of the recurring charges
recur_transaction4monthly payment Customer Choice
recur_transaction5quarterly payment Customer Choice
recur_transaction7yearly payment Customer Choice
recur_transaction=4_approved4monthly payment Not Customer Choice
recur_transaction=5_approved5quarterly payment Not Customer Choice
recur_transaction=7_approved7Yearly payment Not Customer Choice

Technical Specifications for Z_field Parameter

When integrating with our system, you will need to define a custom field called Z_field in the User Defined Fields section of your merchant account via the MY.TRANZILA interface. Here are the key details:

  • Parameter Name: Z_field
  • Maximum Length: 8 digits
  • Type: Numeric

Example Usage:

JSON
"Z_field": 12345678

Working Method:

  1. When Z_field is Sent:

    • If you include the Z_field parameter in your request, its value will replace the corresponding value in zData that is sent to SHVA.
  2. When Z_field is Not Sent:

    • If the Z_field parameter is not included in the User Defined Fields and is not sent in the payment request, the transaction index will continue to be sent in zData as usual.

Please ensure that the Z_field parameter is defined in the User Defined Fields via the MY.TRANZILA interface and is correctly included in your requests to customize the data sent to SHVA.

Invoice Product List (Product Details)


If you have purchased Tranzila's invoice module, you can use the detailed product list solution for the invoice to display the purchased items in separate rows on the invoice. Highlights for executing product details:

  • The final transaction price must be equal to the prices and quantities detailed.
  • If the amount is not equal, the invoice will display the product list without detailing the amount for each product.
  • If a default VAT percentage is set, VAT must be extracted and the price per product sent as the price before VAT.
  • To add product details on a Direct Clearance page or Iframe, send the parameter u71=1.

Notes for displaying product details on the invoice:

  • A PDF file is produced in A4 size; if the invoice is larger than A4, the display will be cut off and not fully shown.
  • For an invoice with an upper logo of 21056 mm, a lower logo of 11051 mm, and using a digital signature, up to 6 products can be properly displayed.
  • If you waive the lower logo or digital signature, up to 10 products will be displayed.
  • If you reduce or enlarge the lower or upper logo or both, the number of products that will fit on the invoice will change.
  • The product description must include up to 118 characters.
  • If the product description has more than 118 characters without spaces between them, the product description will appear as one string, but the invoice will be displayed in width.
  • When printing an invoice from the Tranzila system (from the invoice module), the invoice will be printed on several pages, according to the number of products displayed. (A product description that is too wide will have the same effect as in a PDF)
  • You can set the document type to be produced as an HTML file; it is created in the size suitable for the invoice regardless of the quantity or length of the products.

Technical Specifications

Create an array of objects in json in the following configuration:

Field NameField Description
product_nameProduct Name
product_quantityProduct Quantity - Number
product_priceProduct Price

For example:

JSON
[ { "product_name":"product", "product_quantity":1, "product_price":1 }, { "product_name":"product2", "product_quantity":1, "product_price":1 }, { "product_name":"product3", "product_quantity":1, "product_price":1 }, { "product_name":"product4", "product_quantity":1, "product_price":1 }, { "product_name":"product5", "product_quantity":1, "product_price":1 } ]

The object array must be without spaces or line breaks, for example:

JSON
[{"product_name":"product","product_quantity":1,"product_price":1},{"product_name":"product2","product_quantity":1,"product_price":1},{"product_name":"product3","product_quantity":1,"product_price":1},{"product_name":"product4","product_quantity":1,"product_price":1},{"product_name":"product5","product_quantity":1,"product_price":1}]

*Encode the object array (URL Encoder)

The encoding must be identical to the encoding of the rawurlencode function in PHP and not similar to the urlencode function in PHP.

The URL encoding cannot contain the character + as the urlencode function does; it encodes spaces as + instead of %20, for example:

JSON
%5B%7B%22product_name%22%3A%22product%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product2%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product3%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product4%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product5%22%2C%20%22product_quantity%22%3A1%2C%20%22product_price%22%3A1%7D%5D

Send under the parameter json_purchase_data:

JSON
json_purchase_data=%5B%7B%22product_name%22%3A%22product%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product2%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product3%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product4%22%2C%22product_quantity%22%3A1%2C%22product_price%22%3A1%7D%2C%7B%22product_name%22%3A%22product5%22%2C%20%22product_quantity%22%3A1%2C%20%22product_price%22%3A1%7D%5D

Send the data in POST since the browser can decode the encoding and change it.

Examples

Table Of Content

Basic Example

Bit Example

Installments Example

Recurring Payments Example

Apple Pay Example

Google Pay Example

Basic POST Example

For the purpose of this tutorial we are gonna use our test url - https://direct.tranzila.com/terminal_name/iframenew.php - fill free to switch terminal_name with your terminal name.

we would like to charge an amount of 5 NIS, we will send the parmater sum=5 and currency=1(nis) using fromData.

HTML
<main class="min-h750">
    <div class="container">
        <section id="main-content">
            <div class="row text-center mt-5">
                <div class="col">
                    <h1 class="display-3 text-primary">Pay Amount</h1>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <p class="text-center">Choose Amount:</p>
                    <form action="https://direct.tranzila.com/terminal_name/iframenew.php" target="tranzila" method="POST" novalidate="novalidate" autocomplete="off">
                        <div class="form-group">
                            <label for="amount">Amount:</label> <br>
                            <input name="sum" value="5" type="number" id="sum" class="form-control" />
                            <span class="text-danger"></span>
                        </div>
                        <input type="hidden" name="buttonLabel" value="Pay" />

                        <input type="hidden" name="success_url_address" value="https://yoursite.com/success_url_address" />
                        <input type="hidden" name="fail_url_address" value="https://yoursite.com/fail_url_address" />
                        <input type="hidden" name="currency" value="1" />

                        <button type="submit" name="submit" class="btn btn-primary mt-3" value="pay">pay</button>
                    </form>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <div class="" style="width: 800px; height: 800px;">
                        <iframe id="tranzila-frame" allowpaymentrequest='true' name="tranzila" src="" style="width: 100%; height: 100%;"></iframe>
                    </div>
                </div>
            </div>
        </section>
    </div>
</main>

Bit Example

In order to add bit we will need to pass bit_pay=1

HTML
<main class="min-h750">
    <div class="container">
        <section id="main-content">
            <div class="row text-center mt-5">
                <div class="col">
                    <h1 class="display-3 text-primary">Pay Amount</h1>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <p class="text-center">Choose Amount:</p>
                    <form action="https://direct.tranzila.com/terminal_name/iframenew.php" target="tranzila" method="POST" novalidate="novalidate" autocomplete="off">
                        <div class="form-group">
                            <label for="amount">Amount:</label> <br>
                            <input name="sum" value="5" type="number" id="sum" class="form-control" />
                            <span class="text-danger"></span>
                        </div>
                        <input type="hidden" name="buttonLabel" value="Pay" />

                        <input type="hidden" name="bit_pay" value="1" />
                        <input type="hidden" name="success_url_address" value="https://yoursite.com/success_url_address" />
                        <input type="hidden" name="fail_url_address" value="https://yoursite.com/fail_url_address" />
                        <input type="hidden" name="currency" value="1" />

                        <button type="submit" name="submit" class="btn btn-primary mt-3" value="pay">pay</button>
                    </form>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <div class="" style="width: 800px; height: 800px;">
                        <iframe id="tranzila-frame" allowpaymentrequest='true' name="tranzila" src="" style="width: 100%; height: 100%;"></iframe>
                    </div>
                </div>
            </div>
        </section>
    </div>
</main>

Or add through through tranizla settings:

bit settings

Installments Example

Installments are easy to enable with the npay, fpay, spay and the maxpay parmaters npay - number of installments after the first transaction

fpay - amount to pay in the first transaction

spay - amount to pay for every transaction after the first transaction

maxpay -maximum amount of installments

Either pass 'npay', 'fpay', and 'spay' parameters, or just the 'maxpay' parameter, but do not pass them together.

Let's pass npay=4, fpay=20, spay=10 and most importantly cred_type=8

HTML
<main class="min-h750">
    <div class="container">
        <section id="main-content">
            <div class="row text-center mt-5">
                <div class="col">
                    <h1 class="display-3 text-primary">Pay Amount</h1>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <p class="text-center">Choose Amount:</p>
                    <form action="https://direct.tranzila.com/terminal_name/iframenew.php" target="tranzila" method="POST" novalidate="novalidate" autocomplete="off">
                        <div class="form-group">
                            <label for="amount">Amount:</label> <br>
                            <input name="sum" value="60" type="number" id="sum" class="form-control" readonly />
                            <span class="text-danger"></span>
                        </div>
                        <input type="hidden" name="buttonLabel" value="Pay" />

                        <input type="hidden" name="bit_pay" value="1" />
                        <input type="hidden" name="npay" value="4" />
                        <input type="hidden" name="spay" value="10" />
                        <input type="hidden" name="fpay" value="20" />
                        <input type="hidden" name="cred_type" value="8" />
                        <input type="hidden" name="success_url_address" value="https://yoursite.com/success_url_address" />
                        <input type="hidden" name="fail_url_address" value="https://yoursite.com/fail_url_address" />
                        <input type="hidden" name="currency" value="1" />

                        <button type="submit" name="submit" class="btn btn-primary mt-3" value="pay">pay</button>
                    </form>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <div class="" style="width: 800px; height: 800px;">
                        <iframe id="tranzila-frame" allowpaymentrequest='true' name="tranzila" src="" style="width: 100%; height: 100%;"></iframe>
                    </div>
                </div>
            </div>
        </section>
    </div>
</main>

Let's pass maxpay=3 instead of fpay, npay, spay

HTML
<main class="min-h750">
    <div class="container">
        <section id="main-content">
            <div class="row text-center mt-5">
                <div class="col">
                    <h1 class="display-3 text-primary">Pay Amount</h1>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <p class="text-center">Choose Amount:</p>
                    <form action="https://direct.tranzila.com/terminal_name/iframenew.php" target="tranzila" method="POST" novalidate="novalidate" autocomplete="off">
                        <div class="form-group">
                            <label for="amount">Amount:</label> <br>
                            <input name="sum" value="60" type="number" id="sum" class="form-control" readonly />
                            <span class="text-danger"></span>
                        </div>
                        <input type="hidden" name="buttonLabel" value="Pay" />

                        <input type="hidden" name="bit_pay" value="1" />
                        <input type="hidden" name="maxpay" value="3" />
                        <input type="hidden" name="cred_type" value="8" />
                        <input type="hidden" name="success_url_address" value="https://yoursite.com/success_url_address" />
                        <input type="hidden" name="fail_url_address" value="https://yoursite.com/fail_url_address" />
                        <input type="hidden" name="currency" value="1" />

                        <button type="submit" name="submit" class="btn btn-primary mt-3" value="pay">pay</button>
                    </form>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <div class="" style="width: 800px; height: 800px;">
                        <iframe id="tranzila-frame" allowpaymentrequest='true' name="tranzila" src="" style="width: 100%; height: 100%;"></iframe>
                    </div>
                </div>
            </div>
        </section>
    </div>
</main>

Recurring Payments

Recurring payments, also known as subscription payments or auto-pay, involve charging a customer’s credit card on a pre-set, regular schedule. This could be monthly, quarterly, or annually, based on the terms agreed upon with the customer or set by yourself.

Examples: Let's assume we want the user to pay 100 NIS for joining our service and 20 NIS each month afterwards for 12 months:

sum = 100

recur_sum=20

recur_transaction=4

recur_payments=12

HTML
<main class="min-h750">
  <div class="container">
    <section id="main-content">
      <div class="row text-center mt-5">
        <div class="col">
          <h1 class="display-3 text-primary">Pay Amount</h1>
        </div>
      </div>
      <div class="row mt-5">
        <div class="col-md-6">
          <form action="https://direct.tranzila.com/tranzila1/iframenew.php" target="tranzila" method="POST" novalidate="novalidate" autocomplete="off">
            <div class="form-group">
              <input name="sum" type="hidden" value="100" type="number" id="sum" class="form-control" readonly />
              <span class="text-danger"></span>
            </div>
            <input type="hidden" name="buttonLabel" value="Pay" />
            <input type="hidden" name="lang" value="il" />

            <input type="hidden" name="recur_sum" value="20" />
            <input type="hidden" name="recur_transaction" value="4" />
            <input type="hidden" name="recur_payments" value="12" />
            <input type="hidden" name="success_url_address" value="https://yoursite.com/success_url_address" />
            <input type="hidden" name="fail_url_address" value="https://yoursite.com/fail_url_address" />
            <input type="hidden" name="currency" value="1" />

            <button type="submit" name="submit" class="btn btn-primary mt-3" value="pay">pay</button>
          </form>
        </div>
      </div>
      <div class="row mt-5">
        <div class="col-md-6">
          <div class="" style="width: 800px; height: 800px;">
            <iframe id="tranzila-frame" allowpaymentrequest='true' name="tranzila" src="" style="width: 100%; height: 100%;"></iframe>
          </div>
        </div>
      </div>
    </section>
  </div>
</main>

if we don't want to allow the user to pay the whole amount we can pass:

recur_transaction=4_approved

Apple Pay

As part of Tranzila's credit card clearing solutions, we enable integration with Apple Pay. Payment via Apple Pay allows customers to pay with the click of a button through Apple devices. This payment can be integrated as part of an app, E-commerce store, or landing page in various ways.

In this guide, we will describe the ways in which Apple Pay payment can be embedded.

Who can pay with apple pay:

  • The payment method is only supported by APPLE devices with Touch ID or Face ID, or those connected to the same network as an APPLE device with Touch ID or Face ID.

These devices include APPLE devices such as IPHONE, IPAD, and APPLE laptops with a camera and/or fingerprint reader for user identification. You can see a full list of supported devices here. The payment method is only supported by APPLE software on these devices – namely, apps or the Safari browser. In other words, users on the CHROME browser cannot pay with APPLE PAY.

Payment via Apple Pay – General Explanation

In Israel, payment with APPLE PAY is essentially a credit card payment, where APPLE provides the user identity authentication infrastructure for the transaction only. After receiving approval from APPLE to make the payment, the transaction is processed by Shva.

After verifying the transaction with APPLE, APPLE sends to Shva, via Tranzila, a token used for charging. The translation of APPLE's token to the actual card number is performed by the credit card company/issuer.

Since this is the case, the response to an APPLE transaction is the regular response to a credit card transaction and includes the fields returned from a regular credit card transaction.

For Tranzila customers working with tokens, Tranzila treats the APPLE token as a regular credit card number, encrypts it on its servers, and returns it in the charging service as a Tranzila token for reuse.

Apple Pay exclusively supports transactions type(tranmode) A/AK and V/VK, Standard transaction and Verification (J5) and does not extend support to alternative transaction types like pre-authorization transactions, token creation only, etc.

The charging path in APPLE PAY differs between charging from a NATIVE app and charging through a web page. This document will detail the different paths to carry out these transactions.

Payment with Apple Pay through Tranzila's payment page - Pay

You can easily register for the Apple Pay service through us - you don't need to do anything on your end!

After your registration with us, we will add the button to our payment pages for you, pay.tranzila.com/terminal .

Merchant Requirement - Active credit card terminal with Tranzila, approved with an internet merchant number. Implementation and Transaction Process:

Tranzila's system will handle the transaction, and you will be able to monitor it through My Tranzila. Please note that the last 4 digits displayed in our interface are the customer's Apple Pay card uniq identifier (which they can find in their Wallet app settings) and not the last 4 digits of their card.

Integration of Apple Pay Payment on the Website - Through Iframe and Hosted Fields

Merchant Requirements:

  • Active credit card terminal with Tranzila, approved with an internet merchant number.
  • The merchant must provide Tranzila with the domain(s) from which the payment will be made.
  • Accordingly, the merchant should install a verification file provided by Tranzila on each of the specified domain/server.
  • Inform us after the verification file has been installed so that we can proceed with the registration of the terminal for Apple Pay service through Tranzila.

Implementation and Transaction Process:

Download the required verification file for activating the APPLE PAY JS LIBRARY, which must be embedded on the website where the payment is processed. The file must be placed in the directory (https://www.my-website.com/.well-known/apple-developer-merchantid-domain-association) on your server with the original name as in the file you open:

You can download the file here (extract the compressed file and embed the .dat file inside).

For React/Next/Remix users add the file to the public directory inside .well-known folder (.well-known/apple-developer-merchantid-domain-association). for Angular look in this thread

Embed our JQuery library on the page that displays the iframe:

JavaScript
<script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script>document.write('<script src="https://direct.tranzila.com/js/tranzilanapple_v3.js?v=' + Date.now() + '"><\/script>');</script>
<script>var $n = jQuery.noConflict(true);</script>

If there is a conflict issue with an existing JQuery file, it is recommended to add the noConflict script. You can try with and without the true argument in the function:

JavaScript
<script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.js"></script> 
<script>document.write('<script src="https://direct.tranzila.com/js/tranzilanapple_v3.js?v=' + Date.now() + '"><\/script>');</script>

Please note that this implementation guide assumes you have a certain level of technical knowledge in web development and server management.

Google Pay

A new payment method, Google Pay, has been successfully launched. Here are some key points to note about Google Pay:

  • Currently, the service will only work with the new IFRAME page.
  • Customers using the multiple products page (PAY), the DIRECT page, or old IFRAME pages will not be able to enable this payment method.
  • You can view an example of the new IFRAME page integrated with Google Pay at the following link: Google Pay IFRAME Example
  • As per Google's requirement, the service will be free for our customers and will be available at no cost to terminals.
  • The only condition for using this payment method is to send a parameter to the IFRAMENEW page or to activate the Google Pay option from MY TRANZILA under "Settings" > "Terminal" > "IFRAME Settings".
  • The service is not available for Express customers at the moment, but may be supported by Express terminals in the future.
  • Google Pay will work without issues on standard and regular terminals.
  • If the new IFRAME is embedded on a site without a valid SSL certificate, the button will not load. For example, if the IFRAMENEW page is hosted on an unsecured HTTP page, the Google Pay payment option will not appear within the IFRAME.
  • Google Pay payments are supported on various hardware types and browsers, including computers, Android, and Apple devices. Supported browsers are Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge, and Opera.
  • The button is built according to Google's instructions. Currently, it is available in all supported languages except Hebrew (if a parameter is sent that changes the IFRAME language to Hebrew, the Google button will be displayed in English).
  • Google Pay will support all currencies currently supported on the payment page (ILS, USD, EUR, GBP, etc.).
  • Google Pay exclusively supports transactions type(tranmode)A/AK and V/VK, and does not extend support to alternative transaction types like pre-authorization transactions, token creation only, etc.

Google Pay Payment Process

The payment method can be activated in one of two ways:

  • By sending the parameter google_pay=1 to the new IFRAME page, or alternatively, by activating Google Pay from MY TRANZILA under "Settings" > "Terminal" > "IFRAME Settings" by clicking the switch and saving.

When the end customer reaches the payment page, this is how the payment page will appear:

  • After clicking on the Google Pay button, a Google popup will open asking the customer to log in to their Google account (if they are already logged in to their Google account, it will go straight to choosing the card) and then to select the saved Google card they wish to use (or add a credit card number if necessary).

  • Then, they will be redirected to the success/failure page defined in that terminal.

  • Google Pay transactions create a token that can be used for additional actions such as forcing a transaction or crediting a transaction, without the need for the end customer's card number.

Enabling Secure Payments with allow="payment"

When integrating Google Pay within an iframe, set the allow attribute to "payment" to enable secure access to the Web Payments API.

Example Usage:

To enable secure payments through Google Pay in an iframe, use the following HTML snippet:

HTML
<iframe src="https://direct.tranzila.com/myterminal/iframenew.php" allow="payment"></iframe>

Why Use allow="payment"?

Adding allow="payment" ensures that the iframe can securely access payment APIs, enhancing the security of the payment process.

Browser Support:

Not all browsers support the allow="payment" attribute, so it's recommended to test the integration across different browsers to ensure compatibility. For more information, you can refer to the MDN Web Docs on Permissions Policy for payment.

Notify Url

In order to add a notify url we will add the param notify_url_address:

HTML
<main class="min-h750">
    <div class="container">
        <section id="main-content">
            <div class="row text-center mt-5">
                <div class="col">
                    <h1 class="display-3 text-primary">Pay Amount</h1>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <p class="text-center">Choose Amount:</p>
                    <form action="https://direct.tranzila.com/terminal_name/iframenew.php" target="tranzila" method="POST" novalidate="novalidate" autocomplete="off">
                        <div class="form-group">
                            <label for="amount">Amount:</label> <br>
                            <input name="sum" value="5" type="number" id="sum" class="form-control" />
                            <span class="text-danger"></span>
                        </div>
                        <input type="hidden" name="buttonLabel" value="Pay" />

                        <input type="hidden" name="success_url_address" value="https://yoursite.com/success/process.php" />
                        <input type="hidden" name="fail_url_address" value="https://yoursite.com/failure" />
                                                <input type="hidden" name="notify_url_address" value="https://yoursite.com/notify" />
                        <input type="hidden" name="currency" value="1" />
                        <input type="hidden" name="bit_pay" value="1" />

                        <button type="submit" name="submit" class="btn btn-primary mt-3" value="pay">Pay</button>
                    </form>
                </div>
            </div>
            <div class="row mt-5">
                <div class="col-md-6">
                    <div class="" style="width: 800px; height: 800px;">
                        <iframe id="tranzila-frame" allowpaymentrequest='true' name="tranzila" src="" style="width: 100%; height: 100%;"></iframe>
                    </div>
                </div>
            </div>
        </section>
    </div>
</main>

Or add through through tranizla settings:

notify settings

Preventing Duplicate Transactions

DCdisable

The prevention solution is based on a unique value sent for a transaction under the parameter DCdisable. Below are the conditions for using the parameter:

dc disable image

  • The solution is intended to work with a Direct IFRAME page.

  • You must log into the my.tranzila system and go to the "Additional Fields for Transaction" screen, located under the terminal settings menu, and define only field 20 as the field intended for identifying DCdisable - duplicate charge.

  • If it is detected that the unique value in DCdisable has already been used once, no additional charge will be made.

  • The check in our DB will be performed up to 24 hours back, at the parent terminal level.

  • If a transaction fails the first time, no check will be performed for it on DCdisable. We will display the following message if a duplicate transaction is detected: "This payment has already been made, please contact the business" or "This payment has already been paid. Please contact customer service."

  • The customer must pass the DCdisable parameter with a unique value for that transaction.

  • The customer must send the parameter u71=1 if working with the Direct page/IFRAME.

  • If you have parent and child terminals, you must define the parameter in both the parent and the child.

  • We recommend providing a long and complex unique value (the limit for the value is 254 characters).

Handshake

In the fraud prevention solution through the execution of HandShake, there is a request to Tranzila, before directing the paying customer to the checkout page, where a unique identifier is created for the amount and transaction details.

The unique identifier will be passed to the payment page after its receipt, along with the rest of the transaction data, but only there will the paying customer enter the card details for the charge.

If the transaction amount changes, and the transaction details are not identical to the data we have stored with the unique identifier, no transaction will be made at all and an error will be received with a unique code.

We recommend implementing and using the HandShake solution to prevent fraudulent transactions.

Handshake is available for use in both iframe and hosted fields payment pages.

Using the HandShake solution requires the purchase of a token module.

  1. You must enter the checkout page settings (see "Merchant Checkout Page Setup" section).

  2. Enter "Information Security" and mark the HandShake field as enabled.

  3. A request for a handshake must be sent before transferring the transaction to the checkout page.

  4. When using the Handshake in hosted fields integration, there is no need to make changes in the settings mentioned above.

From the moment the HandShake function is activated, you will not be able to process payments without receiving the HandShake token, meaning, the solution must be fully implemented in order for you to process payments properly.

The URL to perform the handshake is:

https://api.tranzila.com/v1/handshake/create

ParamaterDescription
SupplierTerminal Name
TranzilaPWTerminal Token Password
SumTransaction amount

The Request must be sent in GET

example: https://api.tranzila.com/v1/handshake/create?supplier=yourteminalname&sum=1&TranzilaPW=YourTerminalPassword

The new_process field must be passed to the iframe with a value of 1 so that the checkout page can perform the verification. new_process=1

  • The request returns a thtk parameter with a transaction identification string. This parameter, along with the value received, must be sent to the checkout page along with the regular parameters that control the page display (like amount, currency, etc.).

  • After submitting the form and before executing a transaction, a comparison of the amount will be made between what you sent at the handshake and what was sent from the checkout page. If the amount is not identical, "Illegal Operation 912791" will be printed without conducting any transaction. If the amount is the same, the transaction will proceed with the parameters sent at the handshake, which are also the ones that will return at the end of the transaction execution.

  • Attempting to access the checkout page as a standalone action, without prior handshake validation, will result in an error message.

Please note

Handshake data is retained for 20 minutes to allow for potential direct retries. Successful validations reset the timer.

Dtran

The Dtran duplicate transaction prevention mechanism is based on checking transaction data within a time frame defined in the terminal settings.

If you choose to work with this Dtran, you will only need to define the time range without sending a specific parameter.

During the defined time range, our system checks the details of the executed transaction and identifies if there is a duplication for that specific transaction.

Currently, the time range can be set in the old system - secure5 under setting configuration 1:

INSERT SCREENSHOT

Transaction Details Checked for Duplicate Detection:

All transaction fields will be checked - including additional transaction fields

Highlights:

  1. This mechanism allows the client to pass the transaction a second time as a duplicate, within the defined time range, and to receive the response a second time with the addition of the parameter - duplicate_transaction_detected which indicates the transaction duplication, which would not be possible with the Dcdisable mechanism.
  2. The development works only for transactions sent via API through tranzila71u.cgi or tranzila71pme.cgi
  3. Clients working with our clearing page must pass to the clearing page (along with all parameters), also the parameter u71=1
  4. If a duplicate transaction is detected and there is already a response from the bank - the response from the duplicate transaction + parameter duplicate_transaction_detected=1 will be returned. If there is still no response from the bank about the original transaction, then 'Response=-96&reason=Double transaction detected. Please contact the company' will be returned
  5. The blocked transaction will appear in the terminal as a failure with error 888 - Double transaction blocked.
Was this page helpful?