| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import Flutter
- import UIKit
- public class ApplePayPlugin: NSObject, FlutterPlugin {
- public static func register(with registrar: FlutterPluginRegistrar) {
- let channel = FlutterMethodChannel(name: "apple_pay", binaryMessenger: registrar.messenger())
- let instance = ApplePayPlugin()
- registrar.addMethodCallDelegate(instance, channel: channel)
- }
- public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
- switch call.method {
- case "purchase":
-
- guard let args = call.arguments as? [String: Any],
- let appleId = args["appleId"] as? String,
- let appAccountToken = args["appAccountToken"] as? String else {
- result(["success": false, "error": "Invalid arguments"])
- return
- }
-
- ApplePayManager.shared.startPay(appleId: appleId, token: appAccountToken) { isSuccess, receipt in
- result([
- "success": isSuccess,
- "receipt": receipt ?? ""
- ])
- }
- case "restore":
-
- ApplePayManager.shared.restoreAction { isSuccess, receipt in
- result([
- "success": isSuccess,
- "receipt": receipt ?? ""
- ])
- }
- case "check":
-
- guard let args = call.arguments as? [String: Any],
- let appleId = args["appleId"] as? String else {
- result(false)
- return
- }
-
- if #available(iOS 15.0.0, *) {
- Task {
- let isEligible = await ApplePayManager.shared.check(appleId: appleId)
- DispatchQueue.main.async {
- result(isEligible)
- }
- }
- } else {
- result(false)
- }
- case "getPlatformVersion":
- result("iOS " + UIDevice.current.systemVersion)
- default:
- result(FlutterMethodNotImplemented)
- }
- }
- }
|