ApplePayPlugin.swift 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import Flutter
  2. import UIKit
  3. public class ApplePayPlugin: NSObject, FlutterPlugin {
  4. public static func register(with registrar: FlutterPluginRegistrar) {
  5. let channel = FlutterMethodChannel(name: "apple_pay", binaryMessenger: registrar.messenger())
  6. let instance = ApplePayPlugin()
  7. registrar.addMethodCallDelegate(instance, channel: channel)
  8. }
  9. public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
  10. switch call.method {
  11. case "purchase":
  12. guard let args = call.arguments as? [String: Any],
  13. let appleId = args["appleId"] as? String,
  14. let appAccountToken = args["appAccountToken"] as? String else {
  15. result(["success": false, "error": "Invalid arguments"])
  16. return
  17. }
  18. ApplePayManager.shared.startPay(appleId: appleId, token: appAccountToken) { isSuccess, receipt in
  19. result([
  20. "success": isSuccess,
  21. "receipt": receipt ?? ""
  22. ])
  23. }
  24. case "restore":
  25. ApplePayManager.shared.restoreAction { isSuccess, receipt in
  26. result([
  27. "success": isSuccess,
  28. "receipt": receipt ?? ""
  29. ])
  30. }
  31. case "check":
  32. guard let args = call.arguments as? [String: Any],
  33. let appleId = args["appleId"] as? String else {
  34. result(false)
  35. return
  36. }
  37. if #available(iOS 15.0.0, *) {
  38. Task {
  39. let isEligible = await ApplePayManager.shared.check(appleId: appleId)
  40. DispatchQueue.main.async {
  41. result(isEligible)
  42. }
  43. }
  44. } else {
  45. result(false)
  46. }
  47. case "getPlatformVersion":
  48. result("iOS " + UIDevice.current.systemVersion)
  49. default:
  50. result(FlutterMethodNotImplemented)
  51. }
  52. }
  53. }