Flutter-SDK
Введеня
Ця інструкція допоможе вам налаштувати і реалізувати можливості EasyPay SDK у вашому Flutter-додатку як для Android, так і для iOS. Виконуючи кроки в інструкції, ви зможете:
- Підключити SDK до вашого Flutter-проекту.
- Реалізувати функціонал для здійснення платежів.
- Додати можливість перегляду, додавання або видалення карток користувачів.
Незалежно від того, на якій платформі ви працюєте (Android чи iOS), SDK EasyPay забезпечить вам підтримку на обох платформах, дозволяючи вам створювати додатки з потужними платіжними функціями для ваших користувачів.
iOS частина
2.1 Підключення SDK
Для підключення SDK до iOS проекту необхідно завантажити EasyPaySdkIos.xcframework і вставити його в папку з проектом ../YourProject/iOS/Runner/.

Перевірте, чи з'явився фреймворк в розділі Frameworks, Libraries, and Embedded Content.
Також додайте папку compose-resources, яка знаходиться всередині EasyPaySdkIos.xcframework, до Copy Bundle Resources.


Важливо: при додаванні compose-resources в діалозі додавання у вас були обрані наступні опції
- Destination: Copy items if needed
- Added folders: Create folder references

2.2 Ініціалізація SDK в AppDelegate.swift
У AppDelegate.swift додайте ініціалізацію SDK:
import Flutter
import UIKit
import EasyPaySdkIos
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
EasyPaySdk.shared.doInit(
context: PlatformContext(),
secret: "your secret",
partnerKey: "your partner key",
applePayMerchantId: "merchant.com.example"
)
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
2.3 Створення MethodChannel для методів навігації на оплату та на перегляд/додавання/видалення карток
У файлі AppDelegate.swift додайте код для методів навігації та оплати:
import Flutter
import UIKit
import EasyPaySdkIos
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
EasyPaySdk.shared.doInit(
context: PlatformContext(),
secret: "your secret",
partnerKey: "your partner key",
applePayMerchantId: "merchant.com.example"
)
let controller = window?.rootViewController as! FlutterViewController
let channel = FlutterMethodChannel(name: "com.example.sdk/payment", binaryMessenger: controller.binaryMessenger)
channel.setMethodCallHandler { [weak controller] call, result in
if call.method == "startPayment" {
guard let args = call.arguments as? [String: Any] else {
result(FlutterError(code: "INVALID_ARGS", message: "Args were null", details: nil))
return
}
let vc = createPaymentVC(args: args) { sdkResult in
if let sdkResult = sdkResult {
result(sdkResult.description)
} else {
result("Cancelled")
}
}
controller?.present(vc, animated: true)
} else if call.method == "openCardListScreen" {
let phoneNumber = (call.arguments as? [String: Any])?["phoneNumber"] as? String ?? ""
let vc = SdkCardsViewControllerKt.SdkCardsViewController(
args: SdkCardsContractArgs(phoneNumber: phoneNumber, urlToNotifyMerchant: nil)
) {
result(nil)
}
controller?.present(vc, animated: true)
} else {
result(FlutterMethodNotImplemented)
}
}
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
3. Ініціалізація оплати
SizedBox(
width: double.infinity,
child: FloatingActionButton.extended(
onPressed: () async {
final args = {
'serviceKey': 'SomeServiceKey',
'orderId': 'SomeOrderId',
'amount': '3.0',
'description': 'payment description',
'phoneNumber': '380990000000', // Необов'язково
'showPaymentResult': true,
};
try {
final result = await platform.invokeMethod('startPayment', args);
setState(() {
_paymentResult = result; // Це рядок, який повертається з Android
});
} on PlatformException catch (e) {
setState(() {
_paymentResult = "Не вдалося отримати результат оплати: '${e.message}'.";
});
}
},
label: const Text('Зробити платіж'),
),
)