myfatoorah_flutter
为了简化您的应用程序与MyFatoorah支付平台的集成,我们开发了
一个尖端插件,该插件可与您的应用程序顺畅运行,并为您提供一种简单的方式来嵌入我们的支付
功能到您的应用程序中。
该插件将为您节省集成我们API的精力和时间,而不是使用普通的API调用,并且它将允许
您以一种快速、现代化和安全的方式准备好设置。
前提条件
为了使插件集成在实时环境中正常工作,请参阅
先决条件
并阅读以获取更多详细信息
集成
安装
1. 将MyFatoorah插件添加到您的pubspec.yaml文件中。
dependencies:
myfatoorah_flutter: ^2.1.0
2. 通过运行以下命令安装插件。
$ flutter pub get
用法
在您的Dart代码中,执行以下操作:
1. 要开始使用MyFatoorah插件,请将其导入到您的Flutter应用程序中。
import 'package:myfatoorah_flutter/myfatoorah_flutter.dart';
2. 在initState()中初始化MyFatoorah插件。
MFSDK.init(<Put API URL here>, <Put your API token key here>);
3. (可选)。
-
如果要设置AppBar的属性,请使用以下行。
MFSDK.setUpAppBar( title: "MyFatoorah Payment", titleColor: Colors.white, // Color(0xFFFFFFFF) backgroundColor: Colors.black, // Color(0xFF000000) isShowAppBar: true); // For Android platform only -
如果要隐藏AppBar,请使用此行。请注意,如果平台是iOS,此行将无效。
MFSDK.setUpAppBar(isShowAppBar: false);
初始化/执行付款
-
初始化付款:此步骤将返回您账户所有可用的付款方式以及实际
客户将在网关上支付的费用。var request = new MFInitiatePaymentRequest(0.100, MFCurrencyISO.KUWAIT_KWD); MFSDK.initiatePayment(request, MFAPILanguage.EN, (MFResult<MFInitiatePaymentResponse> result) => { if(result.isSuccess()) { print(result.response.toJson().toString()) } else { print(result.error.message) } }); -
执行付款:付款初始化后,此步骤将在
MyFatoorah平台创建实际交易,并将返回重定向客户进行付款的URL到您的应用程序。// The value 1 is the paymentMethodId of KNET payment method. // You should call the "initiatePayment" API to can get this id and the ids of all other payment methods String paymentMethod = 1; var request = new MFExecutePaymentRequest(paymentMethod, 0.100); MFSDK.executePayment(context, request, MFAPILanguage.EN, (String invoiceId, MFResult<MFPaymentStatusResponse> result) => { if(result.isSuccess()) { print(result.response.toJson().toString()) } else { print(result.error.message) } }); -
作为一种好的实践,您不必每次需要执行付款时都调用“初始化付款”函数,但
您至少需要调用一次它来保存您需要调用“执行付款”的PaymentMethodId。
直接付款/令牌化
您需要了解以下步骤来理解它是如何工作的:
-
通过调用initiatePayment来获取允许直接付款的付款方式,以获取paymentMethodId。
-
从用户那里收集卡片信息 MFCardInfo(cardNumber: “51234500000000081”, cardExpiryMonth: “05”, cardExpiryYear: “21”, cardSecurityCode: “100”, saveToken: false)
-
如果您想保存您的信用卡信息并获取用于下次付款的令牌,您需要将saveToken设置为true,并且您将在响应中获得令牌,有关令牌化的更多信息请参阅此处。
-
如果您想通过已保存的令牌执行付款,您需要使用
MFCardInfo(cardToken: "put your token here") -
现在您已准备好执行付款,请查看以下示例代码。
// 值2是Visa/Master付款方式的paymentMethodId。
// 您应该调用“initiatePayment” API来获取此id以及所有其他付款方式的id。
String paymentMethod = 2;var request = new MFExecutePaymentRequest(paymentMethod, 0.100);
// var mfCardInfo = new MFCardInfo(cardToken: “Put your token here”);
var mfCardInfo = new MFCardInfo(“2223000000000007”, “05”, “21”, “100”,
bypass3DS: false, saveToken: true);MFSDK.executeDirectPayment(context, request, mfCardInfo, MFAPILanguage.EN,
(String invoiceId, MFResult result) => {if(result.isSuccess()) { print(result.response.toJson().toString()) } else { print(result.error.message) } });
发送付款(离线)
这将允许您生成一个支付链接,该链接可以通过我们支持的任何渠道发送,并在客户支付后进行收款。
已由您的客户支付。
var request = MFSendPaymentRequest(invoiceValue: 0.100, customerName: "Customer name",
notificationOption: MFNotificationOption.LINK);
MFSDK.sendPayment(context, MFAPILanguage.EN, request,
(MFResult<MFSendPaymentResponse> result) => {
if(result.isSuccess()) {
print(result.response.toJson().toString())
}
else {
print(result.error.message)
}
});
付款查询
这将使您的应用程序能够获取特定发票/付款的完整详细信息。
var request = MFPaymentStatusRequest(invoiceId: "12345");
MFSDK.getPaymentStatus(MFAPILanguage.EN, request,
(MFResult<MFPaymentStatusResponse> result) => {
if(result.isSuccess()) {
print(result.response.toJson().toString())
}
else {
print(result.error.message)
}
});
嵌入式付款(新)
简介
如果您希望您的客户在您的结账页面上完成付款,而不被重定向到其他页面(3D Secure页面除外),并且PCI DSS合规性是一个障碍,那么MyFatoorah嵌入式付款功能将是您的最佳解决方案。
用法
步骤1
创建MFPaymentCardView的实例,并将其添加到您的build()函数中,如下所示:
@override
Widget build(BuildContext context) {
return createPaymentCardView();
}
createPaymentCardView() {
mfPaymentCardView = MFPaymentCardView();
return mfPaymentCardView;
}
注意:您可以像下面这样自定义付款卡视图的许多属性:
mfPaymentCardView = MFPaymentCardView(
inputColor: Colors.red,
labelColor: Colors.yellow,
errorColor: Colors.blue,
borderColor: Colors.green,
fontSize: 14,
borderWidth: 1,
borderRadius: 10,
cardHeight: 220,
cardHolderNameHint: "card holder name hint",
cardNumberHint: "card number hint",
expiryDateHint: "expiry date hint",
cvvHint: "cvv hint",
showLabels: true,
cardHolderNameLabel: "card holder name label",
cardNumberLabel: "card number label",
expiryDateLabel: "expiry date label",
cvvLabel: "securtity code label",
);
步骤2
您需要调用initiateSession()函数来创建会话。您需要为每个付款单独执行此操作。Session仅对一次付款有效。在其成功状态下,调用load()函数并传递会话响应,以便在屏幕上加载付款卡视图,如下所示:
void initiateSession() {
MFSDK.initiateSession((MFResult<MFInitiateSessionResponse> result) => {
if(result.isSuccess())
mfPaymentCardView.load(result.response!)
else
print("Response: " + result.error!.toJson().toString().toString());
});
}
注意:initiateSession()函数应在MFSDK.init()函数(如上所述)之后调用。
步骤3
之后,您需要处理您的Pay按钮以调用pay()函数,将以下代码复制到您的支付事件处理程序部分:
var request = MFExecutePaymentRequest.constructor(0.100);
mfPaymentCardView.pay(
request,
MFAPILanguage.EN,
(String invoiceId, MFResult<MFPaymentStatusResponse> result) =>
{
if (result.isSuccess())
{
setState(() {
print("Response: " + result.response!.toJson().toString());
_response = result.response!.toJson().toString();
})
}
else
{
setState(() {
print("Error: " + result.error!.toJson().toString());
_response = result.error!.message!;
})
}
});