Payment Page Integration

This is the traditional integration method which will send the buyer information to the payment gateway hosted payment page. You may want to explore seamless integration, Direct Server API, mobile xdk or supported shopping cart payment modules for better user experience beside this hosted payment page integration on github repositories. Recurring API is also available for card payment and DirectDebit.

Request Parameters

These parameters can be passed using either POST or GET method, or mixed of these methods. Please use UTF-8 encoding for all values.

Variable / ParameterType Format / Max LengthDescription / Example
merchant_idoptional, alphanumericMerchant ID provided and it is on the request URL, otherwise need to pass this as parameter
amountmandatory, integer or up to 2 decimal points numeric valueThe total amount to be paid in one purchase order. Configurable to lock this field (Read-only). E.g. 500, 168.99, comma(,) is not allowed
orderidmandatory, alphanumeric up to 40 charactersInvoice or order number from merchant system. Can be set to Read-only field. E.g BH2018-09rev
bill_namemandatory, alphanumeric, 128 charsBuyer's full name. (Please do not pass in dummy data if you want to use the saved cards feature, as this info will be used to identify the ownership of the card's token. If you need to use dummy data kindly refer to guest_checkout.)
bill_emailmandatory, email, 128 charsBuyer's email address. Must be a valid email. (Please do not pass in dummy data if you want to use the saved cards feature as this info will be used identify the ownership of the card's token. If you need use dummy data kindly refer guest_checkout.)
bill_mobilemandatory, alphanumeric, 32 charsBuyer's mobile number or contact number. Must be a valid mobile number.(Please do not pass in dummy data if you want use saved cards feature as this info will used identify ownership of card's token.If need use dummy data kindly refer guest_checkout.)
guest_checkoutconditional ,0 or 1Used indicate that checkout does not belong registered user.Equal default and merchant does hold customer's bill_name,bill_email,bill_mobile.Saved payment disabled set1.
bill_descMandatory ,alphanumeric ,64KBPurchase itemized list order description.To avoid special characters so payment request blocked web application firewall.For Taiwan channels please refer Guideline Taiwan channels.
b_addr1Optional ,mandatory specific channelBilling address line1
b_addr2optional, mandatory for specific channelBilling address line 2
b_zipcodeoptional, mandatory for specific channelBilling address zipcode or postcode
b_cityoptional, mandatory for specific channelBilling address city
b_stateoptional, mandatory for specific channelBilling address state
countryoptional, 2 chars of ISO-3166 country code (Alpha-2)Buyer’s country E.g. MY for Malaysia.
vcodeconditional if accept open amount or order payment, such as virtual terminal is optional otherwise is mandatory. 32 chars hexadecimal stringThis is the data integrity protection hash string. Refer vcode section for details.
currencymandatory, 3 chars ISO-4217 currency codeDefault payment currency from merchant site. E.g. MYR, USD, EUR, AUD, SGD, CNY, IDR
channeloptional predefined stringRefer to the channel column in the Channel Lists Default payment page will be displayed without channel specified.
languageoptional predefined stringCurrently only en for English & sg for Simplified Chinese Default language i.e., English will be displayed without the language specified.
returnurloptional URLFor selected merchants only Used for multiple return URLs This will slow down your payment request Note: If the domain differs from the company’s website domain it must be registered to ensure proper functionality.(for security & data integrity)
callbackurloptional URLUsed for both multiple callback URL and Notification URL Note: If the domain differs from the company’s website domain it must be registered to ensure proper functionality.(for security & data integrity)
cancelurloptional URLBuyer will redirect to this URL if the buyer clicks the “Cancel” button to abandon payment before proceeding No transaction will be created Note: If the domain differs from the company’s website domain it must be registered to ensure proper functionality.(for security and data integrity)
s_nameoptional mandatory for specific channelReceiver name
s_addr1optional mandatory for specific channelDelivery address line 1
s_addr2optional mandatory for specific channelDelivery address line 2
s_zipcodeoptional mandatory for specific channelDelivery destination zipcode
s_cityOptional Mandatory For Specific ChannelDelivery Destination City
S_StateOptional Mandatory For Specific ChannelDelivery Destination State
S_CountryOptional Mandatory For Specific ChannelDelivery Destination Country
s_merchantIDconditional for partnerPartner's sub-merchant MID
s_merchantURLconditional for partnerPartner's sub-merchant URL
s_merchantMCCconditional for partnerPartner's sub-merchant MCC
is_escrowoptional, for escrow paymentSet the value to 1 to indicate this is an escrow payment. Escrow transactions also can be set after the transaction has been created using escrow API.
non_3DSconditional for partner, 0 or 1Applicable for card processing via specific processor using specific processor for pre-approved partners only. Equal to 0 by default and 1 for non-3DS transaction.
txnTypeoptional, for card type transactionAvailable values are: SALS = Capture Transaction (Default), AUTH = Authorize Transaction (Please inform PG before starting using pre-auth)
token_statusoptionalDefault value will be 0. If the value is 1, the save card checkbox will be checked as default and can uncheck. If the value is 2, the save card checkbox will be checked as default and cannot uncheck.
localoptionalDefault value will be 0. If the value is 1, then the card input form will not list out associated saved card.
installmentMonthoptional, mandatory for installment paymentTotal month of installment. E.g.: 0,3,6,12,24
cash_waittimeoptional integerTo overwrite allowed waiting time cash payment in hour(s), values greater than "Payment Expiry Time" in merchant profile will be capped.
split_infooptional alphanumeric with pipe () as data delimiter and comma (,) as recipient separatorUsed For "Alipay Split Payment". Format as below without "<"and">": <subuser_ID><amount>,<subuser_ID><amount>
AppDeepLinkOptional URLMobile deeplink/universal link that allows e-wallet In-App payment.
waittimeOptional integerA countdown timer displayed on buyer's browser. It defines when payment page will expired in seconds() and redirect to canceled after timeout
PaymentExpirationTime   optional, integer        For non-cash payment only. A timestamp (ISO 8601) that determines when the payment will expire, in UTC. Expired payment will be auto updated to failure. Any approved payment after the timeframe will be auto refunded to the buyer. Example: "2023-12-31T23:59:59Z"
metadata                optional, JSON, 64kb     Merchants are allowed to pass metadata for each transaction in JSON format only. Metadata that were passed via payment request will be returned in extraP parameters without any alteration in all of 3 endpoints so that merchants will be able to do the corresponding transaction mapping on their end.
locMemberId         optional, alphanumeric  Unique ID for Taiwan ESUN channels. Merchant will be able to retrieve it from the extraP parameter in the payment response.

Examples

Using PHP to generate a GET payment request

<?PHP
echo “<a href=https://pay.fiuu.com/RMS/pay/{merchantID}/?”;
echo “amount=”.$amount.”&”;
echo “orderid=”.urlencode($oid).”&”;
echo “bill_name=”.urlencode($name).”&”;
echo “bill_email=”.urlencode($email).”&”;
echo “bill_mobile=”.urlencode($mobile).”&”;
echo “bill_desc=”.urlencode($description).”&”;
echo “country=”.$country.”&”;
echo “vcode=”.$vcode.”> Pay Now </a>”;
?>

Using PHP to generate a POST form payment request

<?PHP
echo “<form action=’https://pay.fiuu.com/RMS/pay/{merchantID}/’ method=POST >”;
echo “<input type=hidden 	name=amount		value=’$amount’>”;
echo “<input type=hidden 	name=orderid	       value=’$oid’>”;
echo “<input type=hidden 	name=bill_name	value=’$name’>”;
echo “<input type=hidden 	name=bill_email	value=’$email’>”;
echo “<input type=hidden 	name=bill_mobile	value=’$mobile’>;
echo “<input type=hidden 	name=bill_desc	value=’$description’>”;
echo “<input type=hidden 	name=country	       value=’$country’>”;
echo “<input type=hidden 	name=vcode		value=’$vcode’>”;
echo “<input type=submit 	                     value=’ PAY NOW ’>”;
echo “</form>”;
?>

Using ASP to generate a GET payment request

<%
dim amount, orderid, name, email, mobile, desc, country, vcode
amount	= ”18.99”
orderid= ”DG873MH370”
name	= ”Mr Albert Anderson”
email	= ”[email protected]”
mobile = ”016-2341234”
desc	= ”DIGI Reload Coupon RM20 with discount”
country= ”MY”
vcode 	= md5(amount & merchantID & orderid & xxxxxxxxxxxx )
// REPLACE xxxxxxxxxxxx with Verify Key
response.write("<a href=https://pay.fiuu.com/RMS/pay/{merchantID}/?")
response.write("amount=” & amount)
response.write("&orderid=” & orderid)
response.write("&bill_name=” & name)
response.write("&bill_email=” & email)
response.write("&bill_mobile=” & mobile)
response.write("&bill_desc=” & desc)
response.write("&country=” & country)
response.write("&vcode=” & vcode)
response.write("’> Pay Now </a>”)
%>

Using ASP to generate a POST form payment request

<%
dim amount, orderid, name, email, mobile, desc, country, vcode
amount	= ”28.99”
orderid= ”DG873MH37o”
name	= ”Mr Samuel Lim”
email	= ”[email protected]”
mobile	= ”86-232389872”
desc	= ”Facebook Prepaid Reload Coupon RM30 with discount”
country= ”CN”
vcode 	= md5(amount & merchantID & orderid & xxxxxxxxxxxx )
// REPLACE xxxxxxxxxxxx with Verify Key
response.write(“<form action=’https://pay.fiuu.com/RMS/pay/{merchantID}/’ method=POST >)
response.write(“<input type=hidden name=amount value=”&amount&”>)
response.write(“<input type=hidden name=orderid value=”&orderid& ”>)
response.write(“<input type=hidden name=bill_name value=”&name& ”>)
response.write(“<input type=hidden name=bill_email value=”&email&”>)
response.write(“<input type=hidden name=bill_mobile value=”&mobile&”>)
response.write(“<input type=hidden name=bill_desc value=”&desc&”>)
response.write(“<input type=hidden name=country value=”&country&”>)
response.write(“<input type=hidden name=vcode value=”&vcode&”>)
response.write(“<input type=submit value=’ PAY NOW ’ ”>)
response.write(“</form>”)
%>