Credit_name parameter can be used to dynamically override virtual currency name. Product_name parameter is intended to override product name to be displayed for Single Item type services.
If HTTP response code 200 is not received, up to 20 resend attempts are made with increasing time intervals.
Language can be preselected by using integration parameter language_code.
If Fortumo's Web SDK is embedded in an external container e.g. iframe, then closing payment with [X] button will not be possible. For custom integrations, it is possible to configure specific services to hide the [X] button; please contact us at cspub@boku.com and provide service ID’s to get this option enabled.
For advanced integration parameters that are marked to require signature to take effect, you must add the ‘sig’parameter to the payment initialization URL. Details about signature calculation can be found under Security.
You may use CUID parameter to pass custom unique identifier. In case both user and product identifiers need to be passed over, both values should be included in CUID.
CUID is a recommended integration parameter. When you receive a payment notification from Fortumo server, you need to provide the purchased product to user; CUID parameter value, which you set on payment initialization and then receive back with payment notification, has to contain unique user identifier, so that you know who should receive the product.
Setting callback URL is not compulsory. However, if you are generating a unique payment CUID on billing page load, it is recommended to set callback URL, so that it is not possible for a user to return to the billing page without reload and initialize another payment with the same CUID parameter value.
Make sure signature is calculated correctly from all payment initialization parameters, taking the following rules into account:
Note: Also try the Integration tool to see signature calculation string composition examples for various initialization parameter sets.
For preselecting a price point, use tc_id payment initialization parameter. If used together with signature, a user will not have an option available to change the price point. If used without signature, a user will have a possibility to select a price point with different virtual currency amount and price in the payment flow. If you also want to change the amount of virtual currency for the preselected price point, use tc_id, tc_amount and sig parameter combination. Alternatively, in order to preselect a price point and hide the amount of virtual currency, use tc_id and product_name parameters. Product name value will replace virtual currency amount and credit name, so that e.g. “245 crystals” will be replaced with “Small pack of crystals”. Virtual currency amount in the back end notification request will be automatically set to 1. This feature can be used if you wish to sell single products, but, instead of multiple separate Single Item services, to set up just one Virtual Currency service with multiple price points available, and to preselect the required price point for each purchase with advanced integration parameters.
You can set custom landing pages for success and failed transactions by including “STATUS” string (case sensitive) in callback URL. On user redirect after a transaction, this string will be replaced with the transaction status; e.g. for URL set to https://page.com/resultpage-STATUS.php
, a user will reach https://page.com/resultpage-completed.php
in case of successful payment, and https://page.com/resultpage-failed.php
for failed billing. Important: note that this feature is intended for displaying custom landing pages only, and should not be used for providing purchased product based on the status string included in URL.
In cases where users are providing their phone number to the merchant upon registration msisdn integration parameter can be used in order to prefill it in the payment flow to avoid asking it again and simplify payment experience for the end-user.
Integration parameter | Example value | Purpose |
---|---|---|
msisdn | 37256565656 | If you already know the users phone number then you can use msisdn parameter to prefill it. |
msisdn=37256565656856ae5a2383fec4f074125f6bf076b64
(Alphabetically ordered integration parameters+service secret)md5(msisdn=37256565656856ae5a2383fec4f074125f6bf076b64)=e215618c1c4f7e9421ff0abfe13730bb
(MD5 hash from signature string)You may use combination of price, currency and amount parameters to set new base virtual currency exchange rate, different from the default exchange rate set for the service.
Integration parameter | Example value | Purpose |
---|---|---|
price | 1.00 | Defines the virtual credit price. |
currency | EUR | Defines the virtual credit currency. |
amount | 100 | Defines the amount of virtual credits that are being sold. |
amount=100currency=EURprice=1.00856ae5a2383fec4f074125f6bf076b64
(Alphabetically ordered integration parameters+service secret)md5(amount=100currency=EURprice=1.00856ae5a2383fec4f074125f6bf076b64)=dad6030c6450297d32687cf4463aef24
(MD5 hash from signature string)In order to provide service to the right user merchants have to idenfify them. For this cuid integration paramater can be used. If merchant wants to identify individual transactions then operation_reference integration parameter can be used.
Integration parameter | Example value | Purpose |
---|---|---|
cuid | testuser1 | For tracing individual consumers. This parameter is also included in our payment notification. |
operation_reference | transaction001 | For tracking individual transactions. This parameter is also included in our payment notification. |
cuid=testuser1operation_reference=transaction001856ae5a2383fec4f074125f6bf076b64
(Alphabetically ordered integration parameters+service secret)md5(cuid=testuser1operation_reference=transaction001856ae5a2383fec4f074125f6bf076b64)=3df79c8a06989eade50a95eb9cf006c9
(MD5 hash from signature string)Yes, users can be redirected to a different page using callback_url integration parameter. In addition, CUID and STATUS values can be included in the redirection URL after the user clicks “Back to merchant” button. In order to use them, include the “CUID” or "STATUS" string (case-sensitive) in the redirection URL value and the string will be replaced by the value.
Integration parameter | Example value | Purpose |
---|---|---|
cuid | testuser1 | For tracing individual consumers. This parameter is also included in our payment notification. |
callback_url | http://payment.fortumo.com/callback.php?customerid=CUID | To overwrite the redirect url configured in your dashboard. |
callback_url=http://payment.fortumo.com/callback.php?customerid=CUIDcuid=testuser1856ae5a2383fec4f074125f6bf076b64
(Alphabetically ordered integration parameters+service secret)md5(callback_url=http://payment.fortumo.com/callback.php?customerid=CUIDcuid=testuser1856ae5a2383fec4f074125f6bf076b64)=1ef503a35132d0cc236351cbdb92031e
(MD5 hash from signature string)When merchant already knows where their users are located they might want to preselect country for them. This can be done using country_code integration parameter.
Integration parameter | Example value | Purpose |
---|---|---|
country_code | RU | For overriding user country. |
country_code=RU856ae5a2383fec4f074125f6bf076b64
(Alphabetically ordered integration parameters+service secret)md5(country_code=RU856ae5a2383fec4f074125f6bf076b64)=dad6030c6450297d32687cf4463aef24
(MD5 hash from signature string)Carrier name can be preselected by using mcc and mnc parameters that would respectively have values of mobile country code and mobile network code. You can find these codes from public websites such as . For example if you would like to preselect BeeLine in Russia.
MCC | MNC | Country | Network |
---|---|---|---|
250 | 28 | Russian Federation | BeeLine/VimpelCom |
Integration parameter | Example value | Purpose |
---|---|---|
mcc | 250 | For overriding user mobile country code. |
mnc | 28 | For overriding user carrier. |
mcc=250mnc=28856ae5a2383fec4f074125f6bf076b64
(Alphabetically ordered integration parameters+service secret)md5(mcc=250mnc=28856ae5a2383fec4f074125f6bf076b64)=f61c95581704b683221935dc1f9dda26
(MD5 hash from signature string)In addition to opening the payment flow in a lightbox popup, you can also simply direct your consumers to a full payment page or display them the payment flow in an iframe.
Here are some examples how else you can open a payment:
1 2 | <!--Opening payment flow in an iframe --> <iframe name="fortumo_payment" src="https://pay.fortumo.com/mobile_payments/41d4c8f504db2f558ef0bb8492a111cf" style="height:550px;width:400px"></iframe> |
1 2 | <!--Opening payment flow in a new window --> <a href="http://pay.fortumo.com/mobile_payments/41d4c8f504db2f558ef0bb8492a111cf" target="_blank"><img src="https://assets.fortumo.com/fmp/fortumopay_150x50_red.png" width="150" height="50" alt="Mobile Payments by Fortumo" border="0" /></a> |
1 2 | <!--Opening payment flow in current window --> <a href="http://pay.fortumo.com/mobile_payments/41d4c8f504db2f558ef0bb8492a111cf"><img src="https://assets.fortumo.com/fmp/fortumopay_150x50_red.png" width="150" height="50" alt="Mobile Payments by Fortumo" border="0" /></a> |
1 2 3 4 5 6 7 | <!--Referencing Fortumo JavaScript library in page header--> <script src="https://assets.fortumo.com/fmp/fortumopay.js" type="text/javascript"></script> <!--Opening payment flow in a popup--> <a id="fmp-button" href="#" rel="41d4c8f504db2f558ef0bb8492a111cf"> <img src="https://assets.fortumo.com/fmp/fortumopay_150x50_red.png" width="150" height="50" alt="Mobile Payments by Fortumo" border="0" /> </a> |
Since Lollipop (API 21), WebView blocks all mixed content by default. Since HE flow loads HTTP content to the page mixed content error can occur.
You can prevent this by modifying Android WebView settings:
1 | webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); |
In this mode, the WebView will attempt to be compatible with the approach of a modern web browser with regard to mixed content. Some insecure content may be allowed to be loaded by a secure origin and other types of content will be blocked. The types of content are allowed or blocked may change release to release and are not explicitly defined.
In practice this should allow loading of images, videos, music etc. - all content that has low probability of being major security threat, when tampered/replaced by malicious third-party.