付款请求
以下指南将解释如何在商户网站和应用程序中应用相应的源代码,以形成商户可以在重定向链接中拥有的支付请求参数,并将其发送到 PayMaster 进行二维码支付处理。
- Java
- .Net
- PHP
- Python
- Node.js
第 1 步:图书馆
商户必须在商户应用程序中包含 PayMaster 商户插件 (MPI) Java 库 PayMaster.jar。
第 2 步:导入
对于二维码支付,商户应将以下内容导入到其代码中:
com.PayMaster.Entities.PayMasterEntitycom.PayMaster.PropertiesReader.PropertiesReadercom.PayMaster.MessageRequestBuilder.PaymentRequestMessageBuilder
第 3 步:源代码
import com.PayMaster.Entities.PayMasterEntity;
import com.PayMaster.PropertiesReader.PropertiesReader;
import com.PayMaster.MessageRequestBuilder.PaymentRequestMessageBuilder;
// Declare variable for Payment Master Properties - 1st Parameter = File Path, 2nd Parameter = File Name
PropertiesReader propertiesReader = new PropertiesReader("./PayMasterProperties/", "QRPayment.properties");
// Declare variable for Payment Master Entity
PayMasterEntity paymentRequestEntity = new PayMasterEntity();
// Set parameter values into Payment Master Entity
paymentRequestEntity.set("PaymentID", "Q03");
paymentRequestEntity.set("MerchRefNo", "MYB2023030315435025LL");
paymentRequestEntity.set("CurrCode", "458");
paymentRequestEntity.set("TxnAmt", "1.00");
paymentRequestEntity.set("ExpTxnAmt", "2");
paymentRequestEntity.set("TerminalID", "200039XX");
paymentRequestEntity.set("PayloadInd", "12");
paymentRequestEntity.set("PANInd", "26");
paymentRequestEntity.set("CountryCode", "MY");
paymentRequestEntity.set("TxnFlag", "CP");
paymentRequestEntity.set("SndrIDType", "2");
paymentRequestEntity.set("QRPayload", "00020201021226470014A00...");
// Generate the payment request message
PaymentRequestMessageBuilder messageBuilder = new PaymentRequestMessageBuilder();
String paymentMessage = messageBuilder.buildPaymentRequestMessage(paymentRequestEntity, propertiesReader);
// POST request to Payment Master Gateway for QR Payload
String initialUrl = "https://xxx.finexusgroup.com/upp/faces/qrPushPayment.xhtml?" + paymentMessage;
HttpURLConnection connection = null;
URL url = new URL(initialUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
in.close();
String finalUrl = connection.getURL().toString();
第 4 步:指示 PayMaster 属性文件位置
商家必须使用PropertiesReader指定 PayMaster 属性文件的位置。
第 5 步: 为付款请求实体分配值
为 PayMaster 请求实体分配值。确保包含示例代码中所示的所有字段,因为它们是强制性的。使用setter函数来赋值,该函数接受两个参数:setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 二维码支付参数。
第 6 步: 生成付款消息
分配所有必需值后,调用PaymentRequestMessageBuilder以生成付款消息(paymentMessage)。
第 7 步:将付款消息发送至 PayMaster 网关
将 paymentMessage 发送到 PayMaster 网关以获取 QR 负载。
请参阅 二维码支付响应了解PayMaster商户插件(MPI)支持的安全控制。
第 1 步:图书馆
商户必须在商户应用程序中包含 PayMaster 商户插件 (MPI) .NET 库 PayMaster.dll。
第 2 步:命名空间
对于二维码支付,商户应在商户代码中包含以下命名空间:
using com.PayMaster.Entitiesusing com.PayMaster.Propertiesusing com.PayMaster.MessageRequestBuilder
第 3 步:源代码
using com.PayMaster.Entities;
using com.PayMaster.Properties;
using com.PayMaster.MessageRequestBuilder;
// Declare variable for Payment Master Properties - 1st Parameter = File Path, 2nd Parameter = File Name
PropertiesReader propertiesReader = new PropertiesReader("./PayMasterProperties/", "QRPayment.properties");
// Declare variable for Payment Master Entity
PayMasterEntity qrPaymentRequestEntity = new PayMasterEntity();
// Set parameter values into Payment Master Entity
qrPaymentRequestEntity.setter("PaymentID", "Q03");
qrPaymentRequestEntity.setter("MerchRefNo", "MYB2023030315435025LL");
qrPaymentRequestEntity.setter("CurrCode", "458");
qrPaymentRequestEntity.setter("TxnAmt", "1.00");
qrPaymentRequestEntity.setter("ExpTxnAmt", "2");
qrPaymentRequestEntity.setter("TerminalID", "200039XX");
qrPaymentRequestEntity.setter("PayloadInd", "12");
qrPaymentRequestEntity.setter("PANInd", "26");
qrPaymentRequestEntity.setter("CountryCode", "MY");
qrPaymentRequestEntity.setter("TxnFlag", "CP");
qrPaymentRequestEntity.setter("SndrIDType", "2");
qrPaymentRequestEntity.setter("QRPayload", "00020201021226470014A00...");
// Generate the payment request message
PaymentRequestMessageBuilder qrMessageBuilder = new PaymentRequestMessageBuilder();
string qrPaymentMessage = qrMessageBuilder.buildPaymentRequestMessage(qrPaymentRequestEntity, propertiesReader);
// POST request to Payment Master Gateway for QR Payload
string initialUrl = "https://xxx.finexusgroup.com/upp/faces/qrPushPayment.xhtml?" + qrPaymentMessage;
HttpClient httpClient = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, initialUrl);
HttpResponseMessage response = await httpClient.SendAsync(request);
Uri finalUrl = response.RequestMessage.RequestUri;
第 4 步:指示 PayMaster 属性文件位置
使用PropertiesReader指定 PayMaster 属性文件 的位置。
第 5 步为付款请求实体分配值
为 PayMaster 请求实体分配值。确保包含示例代码所需的所有字段,因为它们是强制性的。使用setter函数来赋值,它接受两个参数:setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 二维码支付参数。
第 6 步: 生成付款消息
分配所有必需值后,调用PaymentRequestMessageBuilder以生成付款消息(paymentMessage)。
第 7 步:将付款消息发送至 PayMaster 网关
将qrPaymentMessage发送到 PayMaster 网关以获取 QR 负载。
请参阅 二维码支付响应了解PayMaster商户插件(MPI)支持的安全控制。
第 1 步:图书馆
商户必须在商户应用程序中包含 PayMaster 商户插件 (MPI) PHP 库 PayMaster.phar。
第 2 步:导入
对于二维码支付,商户应将以下内容导入到其代码中:
PropertiesReader– 读取属性文件。PayMasterEntity– 为 PayMaster QR 支付分配所有可接受的值。PaymentRequestMessageBuilder– 生成PayMaster二维码支付请求消息。
第 3 步:源代码
<?php
use com\PayMaster\Entities\PayMasterEntity;
use com\PayMaster\PropertiesReader\PropertiesReader;
use com\PayMaster\MessageRequestBuilder\PaymentRequestMessageBuilder;
use com\PayMaster\Import\ImportFile;
// Locate the absolute path of PayMaster.phar
$basePath = 'phar://<PayMaster.phar path>/';
include_once $basePath . 'com/PayMaster/Import/ImportFile.php';
$import = new ImportFile();
$import->includeFile($basePath);
// Declare variable for Payment Master Properties - 1st Parameter = File Path, 2nd Parameter = File Name
$propertiesReader = new PropertiesReader();
$propertiesReader->PropertiesReader("./PayMasterProperties/", "QRPayment.ini");
// Declare variable for Payment Master Entity
$paymentRequestEntity = new PayMasterEntity();
// Set parameter values into Payment Master Entity
$paymentRequestEntity->setter("PaymentID", "Q03");
$paymentRequestEntity->setter("MerchRefNo", "MYB2023030315435025LL");
$paymentRequestEntity->setter("CurrCode", "458");
$paymentRequestEntity->setter("TxnAmt", "1.00");
$paymentRequestEntity->setter("ExpTxnAmt", "2");
$paymentRequestEntity->setter("TerminalID", "200039XX");
$paymentRequestEntity->setter("PayloadInd", "12");
$paymentRequestEntity->setter("PANInd", "26");
$paymentRequestEntity->setter("CountryCode", "MY");
$paymentRequestEntity->setter("TxnFlag", "CP");
$paymentRequestEntity->setter("SndrIDType", "2");
$paymentRequestEntity->setter("QRPayload", "00020201021226470014A00...");
// Generate the payment request message
$paymentRequestMessageBuilder = new PaymentRequestMessageBuilder();
$paymentMessage = $paymentRequestMessageBuilder->buildPaymentRequestMessage($paymentRequestEntity, $propertiesReader);
// POST request to Payment Master Gateway for QR Payload
$initialUrl = "https://xxx.finexusgroup.com/upp/faces/qrPushPayment.xhtml?" . $paymentMessage;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $initialUrl);
curl_setopt($ch, CURLOPT_POST, 1);
$response = curl_exec($ch);
curl_close($ch);
$finalUrl = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
exit();
?>
第 4 步:找到PayMaster.phar的绝对路径
在 PHP 代码的basePath变量中指定 PayMaster.phar 的绝对路径。
例子:$basePath='phar://<absolute path of PayMaster.phar>/'
第 5 步:指示 PayMaster 属性文件位置
使用PropertiesReader指定 PayMaster 属性文件的位置。
第 6 步:为付款请求实体分配值
为 PayMaster 请求实体分配值。确保包含示例代码中所述的所有字段,因为它们是强制性的。使用setter函数来赋值,该函数接受两个参数:setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 二维码支付参数。
第 7 步: 生成付款消息
分配所有必需值后,调用PaymentRequestMessageBuilder以生成付款消息(paymentMessage)。
第 8 步:将付款消息发送至 PayMaster 网关
将 paymentMessage 发送到 PayMaster 网关以获取 QR 负载。
请参阅 二维码支付响应了解PayMaster商户插件(MPI)支持的安全控制。
第 1 步:打包
商户必须在商户应用程序中设置并包含 PayMaster 商户插件 (MPI) Python 包。
第 2 步:导入
对于二维码支付,商户应在其代码中包含以下内容:
PropertiesReader– 读取属性文件。PayMasterEntity– 为 PayMaster QR 支付分配所有可接受的值。PaymentRequestMessageBuilder– 生成 PayMaster QR 支付请求消息。
第 3 步:源代码
from com.PayMaster.Entities.PayMasterEntity import PayMasterEntity
from com.PayMaster.PropertiesReader.PropertiesReader import PropertiesReader
from com.PayMaster.MessageRequestBuilder.PaymentRequestMessageBuilder import PaymentRequestMessageBuilder
import requests
# Declare variable for Payment Master Properties - 1st Parameter = File Path, 2nd Parameter = File Name
propertiesReader = PropertiesReader("PayMasterProperties/", "QRPayment.properties")
# Declare variable for Payment Master Entity
qrPaymentRequestEntity = PayMasterEntity()
# Set parameter values into Payment Master Entity
qrPaymentRequestEntity.setter("PaymentID", "Q03")
qrPaymentRequestEntity.setter("MerchRefNo", "MYB2023030315435025LL")
qrPaymentRequestEntity.setter("CurrCode", "458")
qrPaymentRequestEntity.setter("TxnAmt", "1.00")
qrPaymentRequestEntity.setter("ExpTxnAmt", "2")
qrPaymentRequestEntity.setter("TerminalID", "200039XX")
qrPaymentRequestEntity.setter("PayloadInd", "12")
qrPaymentRequestEntity.setter("PANInd", "26")
qrPaymentRequestEntity.setter("CountryCode", "MY")
qrPaymentRequestEntity.setter("TxnFlag", "CP")
qrPaymentRequestEntity.setter("SndrIDType", "2")
qrPaymentRequestEntity.setter("QRPayload", "00020201021226470014A00...")
# Generate the payment request message
qrMessageBuilder = PaymentRequestMessageBuilder()
qrPaymentMessage = qrMessageBuilder.buildPaymentRequestMessage(qrPaymentRequestEntity, propertiesReader)
# POST request to Payment Master Gateway for QR Payload
initial_url = "https://xxx.finexusgroup.com/upp/faces/qrPushPayment.xhtml?" + qrPaymentMessage
response = requests.post(initial_url)
final_url = response.url
第 4 步:指示 PayMaster 属性文件位置
使用PropertiesReader指定 PayMaster 属性文件的位置。
第 5 步为付款请求实体分配值
为 PayMaster 请求实体分配值。确保包含示例代码中所述的所有字段,因为它们是强制性的。使用setter函数来赋值,它接受两个参数:setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 二维码支付参数。
第 6 步: 生成付款消息
分配所有必需值后,调用PaymentRequestMessageBuilder以生成付款消息(paymentMessage)。
第 7 步:将付款消息发送至 PayMaster 网关
将qrPaymentMessage发送到 PayMaster 网关以获取 QR 负载。
请参阅 二维码支付响应了解PayMaster商户插件(MPI)支持的安全控制。
第 1 步:图书馆
商户应设置 PayMaster 商户插件 (MPI) Node.js 库并将其包含到商户应用程序中。
第 2 步源代码
var axios = require('axios');
module.exports = function (app) {
app.post('/QRPayment', (req, res) => {
delete require.cache[
require.resolve("./js/PayMaster.min.js")
];
const paymaster = require("./js/PayMaster.min.js");
// Initialize PropertiesReader and set parameters
paymaster.PropertiesReader('./properties/', 'QRPayment.properties');
paymaster.setter('PaymentID', 'Q03');
paymaster.setter('MerchRefNo', 'MYB2023030315435025LL');
paymaster.setter('CurrCode', '458');
paymaster.setter('TxnAmt', '1.00');
paymaster.setter('ExpTxnAmt', '2');
paymaster.setter('TerminalID', '200039XX');
paymaster.setter('PayloadInd', '12');
paymaster.setter('PANInd', '26');
paymaster.setter('CountryCode', 'MY');
paymaster.setter('TxnFlag', 'CP');
paymaster.setter('SndrIDType', '2');
paymaster.setter('QRPayload', '00020201021226470014A00...');
// Generate payment request message
paymaster.MERCH_QRPaymentRequest(paymaster.PaymentRequestEntity, paymaster.propDetails, (err, response, result) => {
if (err) {
throw err;
}
if (response) {
const initialUrl = "https://xxx.finexusgroup.com/upp/faces/qrPushPayment.xhtml?" + result;
async function sendPostRequest() {
try {
const response = await axios.post(initialUrl);
const finalUrl = response.request.res.responseUrl;
res.json({ finalUrl });
} catch (error) {
res.status(500).send('Error sending request to PayMaster');
}
}
sendPostRequest();
}
});
});
}
第 3 步:指示 PayMaster 属性文件位置
使用PropertiesReader指定 PayMaster 属性文件的位置。
第 4 步为付款请求实体分配值
为 PayMaster 请求实体分配值。确保包含示例代码中所述的所有字段, 因为它们是强制性的。使用setter函数来赋值,它接受两个参数:setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 二维码支付参数。
第 5 步生成请求消息
使用MERCH_QRPaymentRequest()函数生成支付请求消息。
第 6 步:将付款消息发送至 PayMaster
将JavaScript返回的支付消息发送给PayMaster进行处理。
请参阅 二维码支付响应了解PayMaster商户 插件(MPI)支持的安全控制。