付款请求
以下指南解释了如何在商户应用程序中应用相应的源代码来形成付款请求参数并将其发送到 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/", "CCPayment.properties");
// Declare variable for Payment Master Entity
PayMasterEntity paymentRequestEntity = new PayMasterEntity();
// Get all the parameter values from the user side and set them into Payment Master Entity
paymentRequestEntity.setter("PaymentID", "C04");
paymentRequestEntity.setter("MerchRefNo", "MYB2023030315435025LL");
paymentRequestEntity.setter("CurrCode", "458");
paymentRequestEntity.setter("TxnAmt", "1.00");
paymentRequestEntity.setter("ExpTxnAmt", "2");
paymentRequestEntity.setter("ECI", "12");
paymentRequestEntity.setter("CardNo", "8853010000095323");
paymentRequestEntity.setter("TokenFlag", "Y");
paymentRequestEntity.setter("POSEnvFlag", "R");
paymentRequestEntity.setter("MerchUserID", "guest");
paymentRequestEntity.setter("ExpiryYear", "20");
paymentRequestEntity.setter("ExpiryMth", "12");
paymentRequestEntity.setter("TokenShrtName", "testcard");
paymentRequestEntity.setter("EcommMerchInd", "2");
// Call Payment Master Payment Request Message Builder to generate the message
PaymentRequestMessageBuilder messageBuilder = new PaymentRequestMessageBuilder();
String paymentMessage = messageBuilder.buildPaymentRequestMessage(paymentRequestEntity, propertiesReader);
// POST request to Payment Master Gateway for recurring payment
String initialUrl = "https://xxx.finexusgroup.com/upp/faces/ccpayment.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 网关以实现定期付款功能。
请参阅付款响应了解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 PayMaster Properties - 1st Parameter = File Path, 2nd Parameter = File Name
PropertiesReader propertiesReader = new PropertiesReader("./PayMasterProperties/", "CCPayment.properties");
// Declare variable for PayMaster Entity
PayMasterEntity ccPaymentRequestEntity = new PayMasterEntity();
// Get all the parameter values from the user side and set them into PayMaster Entity
ccPaymentRequestEntity.setter("PaymentID", "C04");
ccPaymentRequestEntity.setter("ECI", "12");
ccPaymentRequestEntity.setter("MerchRefNo", "MYB2023030315435025LL");
ccPaymentRequestEntity.setter("CurrCode", "458");
ccPaymentRequestEntity.setter("TxnAmt", "1.00");
ccPaymentRequestEntity.setter("ExpTxnAmt", "2");
ccPaymentRequestEntity.setter("CardNo", "8853010000095323");
ccPaymentRequestEntity.setter("ExpiryYear", "20");
ccPaymentRequestEntity.setter("ExpiryMth", "12");
ccPaymentRequestEntity.setter("TokenFlag", "Y");
ccPaymentRequestEntity.setter("MerchUserID", "guest");
ccPaymentRequestEntity.setter("TokenShrtName", "testcard");
ccPaymentRequestEntity.setter("EcommMerchInd", "2");
ccPaymentRequestEntity.setter("POSEnvFlag", "R");
// Call Payment Master Payment Request Message Builder to generate the message
PaymentRequestMessageBuilder ccMessageBuilder = new PaymentRequestMessageBuilder();
string ccPaymentMessage = ccMessageBuilder.buildPaymentRequestMessage(ccPaymentRequestEntity, propertiesReader);
// POST request to PayMaster Gateway for recurring payment
string initialUrl = "https://xxx.finexusgroup.com/upp/faces/ccpayment.xhtml?" + ccPaymentMessage;
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来生成重复的ccPaymentMessage。
第 7 步:将付款消息发送至 PayMaster 网关
ccPaymentMessage 将用于将付款请求发送到 PayMaster 网关以实现定期付款功能。
请参阅付款响应了解PayMaster商户插件(MPI)支持的安全控制。
第 1 步:图书馆
商户应将 PayMaster 商户插件 (MPI) PHP 库 – PayMaster.phar 包含到商户应用程序中。
第 2 步:导入
对于定期付款,商家应将以下内容导入其代码中:
PropertiesReader– 读取属性文件。PayMasterEntity– 为 PayMaster 定期付款分配所有可接受的值。PaymentRequestMessageBuilder– 生成 PayMaster 循环请求消息。
第 3 步:源代码
<?php
use com\PayMaster\Entities\PayMasterEntity;
use com\PayMaster\PropertiesReader\PropertiesReader;
use com\PayMaster\MessageRequestBuilder\PaymentRequestMessageBuilder;
use com\PayMaster\Import\ImportFile;
// Merchant to locate the absolute path of PayMaster.phar
$basePath = 'phar://<absolute path of PayMaster.phar>/';
include_once $basePath.'com/PayMaster/Import/ImportFile.php';
$import = new ImportFile();
$import->includeFile($basePath);
// Declare variable for PayMaster Properties - 1st Parameter = File Path, 2nd Parameter = File Name
$propertiesReader = new PropertiesReader();
$propertiesReader->PropertiesReader(<absolute path>, "CCPayment.ini");
// Declare variable for PayMaster Entity
$paymentRequestEntity = new PayMasterEntity();
// Get all the parameter values from the user side and set them into PayMaster Entity
$paymentRequestEntity->setter("PaymentID", "C04");
$paymentRequestEntity->setter("MerchRefNo", "MYB2023030315435025LL");
$paymentRequestEntity->setter("CurrCode", "458");
$paymentRequestEntity->setter("TxnAmt", "1.00");
$paymentRequestEntity->setter("ExpTxnAmt", "2");
$paymentRequestEntity->setter("ECI", "12");
$paymentRequestEntity->setter("CardNo", "8853010000095323");
$paymentRequestEntity->setter("TokenFlag", "Y");
$paymentRequestEntity->setter("POSEnvFlag", "R");
$paymentRequestEntity->setter("MerchUserID", "guest");
$paymentRequestEntity->setter("TokenShrtName", "testcard");
$paymentRequestEntity->setter("ExpiryYear", "20");
$paymentRequestEntity->setter("ExpiryMth", "12");
$paymentRequestEntity->setter("EcommMerchInd", "2");
// Call Payment Master Payment Request Message Builder to generate the message
$paymentRequestMessageBuilder = new PaymentRequestMessageBuilder();
$paymentMessage = $paymentRequestMessageBuilder->buildPaymentRequestMessage($paymentRequestEntity, $propertiesReader);
// POST request to PayMaster Gateway for recurring payment
$initialUrl = "https://xxx.finexusgroup.com/upp/faces/ccpayment.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的绝对路径
商户必须在商户源代码中找到 PayMaster.phar 的绝对路径作为basePath(上例中的第 7 行)。
例子:$basePath='phar://<absolute path of PayMaster.phar>/'
第 5 步:指示 PayMaster 属性文件位置
商家必须使用PropertiesReader指定 PayMaster 属性文件的位置。
第 6 步:为付款请求实体分配值
商家必须向 PayMaster 请求实体分配值。商家代码必须包含示例代码中所述的所有字段,因为它们是强制性的。
- setter函数用于赋值,它接受两个参数:
setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 定期付款参数。
第 7 步: 生成付款消息
一旦分配了所有强制值,商 家就会调用PaymentRequestMessageBuilder来生成重复的paymentMessage。
第 8 步:将付款消息发送至 PayMaster 网关
paymentMessage 将被发送到 PayMaster 网关以实现定期付款功能。
请参阅付款响应了解PayMaster商户插件(MPI)支持的安全控制。
第 1 步:打包
商户应设置 PayMaster 商户插件 (MPI) Python 包并将其包含到商户应用程序中。
第 2 步:导入
对于定期付款,商家应在其代码中包含以下内容:
PropertiesReader– 读取属性文件。PayMasterEntity– 为 PayMaster 定期付款分配所有可接受的值。PaymentRequestMessageBuilder– 生成 PayMaster 循环请求消息。
第 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 PayMaster Properties - 1st Parameter = File Name, 2nd Parameter = File Path
propertiesReader = PropertiesReader("CCPayment.properties", "PayMasterProperties/")
# Declare variable for PayMaster Entity
ccPaymentRequestEntity = PayMasterEntity()
# Get all the parameter values from the user side and set them into PayMaster Entity
ccPaymentRequestEntity.setter("PaymentID", "C04")
ccPaymentRequestEntity.setter("ECI", "12")
ccPaymentRequestEntity.setter("MerchRefNo", "MYB2023030315435025LL")
ccPaymentRequestEntity.setter("TxnDtTm", "")
ccPaymentRequestEntity.setter("CurrCode", "458")
ccPaymentRequestEntity.setter("TxnAmt", "1.00")
ccPaymentRequestEntity.setter("ExpTxnAmt", "2")
ccPaymentRequestEntity.setter("CardNo", "8853010000095323")
ccPaymentRequestEntity.setter("ExpiryYear", "20")
ccPaymentRequestEntity.setter("ExpiryMth", "12")
ccPaymentRequestEntity.setter("TokenFlag", "Y")
ccPaymentRequestEntity.setter("MerchUserID", "guest")
ccPaymentRequestEntity.setter("TokenShrtName", "testcard")
ccPaymentRequestEntity.setter("EcommMerchInd", "2")
ccPaymentRequestEntity.setter("POSEnvFlag", "R")
# Call Payment Master Payment Request Message Builder to generate the message
ccMessageBuilder = PaymentRequestMessageBuilder()
ccPaymentMessage = ccMessageBuilder.buildPaymentRequestMessage(ccPaymentRequestEntity, propertiesReader)
# POST request to PayMaster Gateway for recurring payment
initial_url = "https://xxx.finexusgroup.com/upp/faces/ccpayment.xhtml?" + ccPaymentMessage
response = requests.post(initial_url)
final_url = response.url
第 4 步:指示 PayMaster 属性文件位置
商家必须使用PropertiesReader指定 PayMaster 属性文件的位置。
第 5 步为付款请求实体分配值
商家必须向 PayMaster 请求实体分配值。商家代码必须包含示例代码中所述的所有字段,因为它们是强制性的。
- setter函数用于赋值,它接受两个参数:
setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 定期付款参数。
第 6 步: 生成付款消息
一旦分配了所有强制值,商家就会调用PaymentRequestMessageBuilder来 生成重复的ccPaymentMessage。
第 7 步:将付款消息发送至 PayMaster 网关
ccPaymentMessage 将用于将付款请求发送到 PayMaster 网关以实现定期付款功能。
请参阅付款响应了解PayMaster商户插件(MPI)支持的安全控制。
第 1 步:图书馆
商户应设置 PayMaster 商户插件 (MPI) Node.js 库并将其包含到商户应用程序中。
第 2 步源代码
const axios = require('axios');
module.exports = function(app) {
app.post('/CCPayment', async (req, res) => {
delete require.cache[
require.resolve("./js/PayMaster.min.js")
];
const paymaster = require("./js/PayMaster.min.js");
// Indicate the PayMaster Properties File location
paymaster.PropertiesReader('./properties/', 'CCPayment.properties');
// Assign values into the Payment Request Entity
paymaster.setter('PaymentID', 'C04');
paymaster.setter('MerchRefNo', 'MYB2023030315435025LL');
paymaster.setter('CurrCode', '458');
paymaster.setter('TxnAmt', '1.00');
paymaster.setter('ExpTxnAmt', '2');
paymaster.setter('ECI', '12');
paymaster.setter('CardNo', '8853010000095323');
paymaster.setter('TokenFlag', 'Y');
paymaster.setter('POSEnvFlag', 'R');
paymaster.setter('MerchUserID', 'guest');
paymaster.setter('ExpiryYear', '20');
paymaster.setter('ExpiryMth', '12');
paymaster.setter('TokenShrtName', 'testcard');
paymaster.setter('EcommMerchInd', '2');
// Generate the request message
paymaster.MERCH_CardPaymentRequest(paymaster.PaymentRequestEntity, paymaster.propDetails, async (err, response, result) => {
if (err) {
throw err;
}
if (response) {
const initialUrl = "https://xxx.finexusgroup.com/upp/faces/ccpayment.xhtml?" + result;
try {
const response = await axios.post(initialUrl);
const finalUrl = response.request.res.responseUrl;
// Further processing with finalUrl if needed
res.send(finalUrl);
} catch (error) {
console.error('Error sending POST request:', error);
res.status(500).send('Error processing payment');
}
}
});
});
}
第 3 步:指示 PayMaster 属性文件位置
商家必须使用PropertiesReader指定 PayMaster 属性文件的位置。
第 4 步为付款请求实体分配值
商家必须向 PayMaster 请求实体分配值。商家代码必须包含示例代码中所述的所有字段,因为它们是强制性的。
- setter函数用于赋值,它接受两个参数:
setter(参数名,参数值)。
PayMaster商户插件(MPI)支持的字段请参考 定期付款参数。
第 5 步生成请求消息
使用MERCH_CardPaymentRequest()函数生成定期付款请求消息。
第 6 步:将付款消息发送至 PayMaster
付款消息将发送至 PayMaster Gateway 以实现定期付款功能。
请参阅付款响应了解PayMaster商户插件(MPI)支持的安全控制。