| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- diff --git a/node_modules/expo-native-alipay/ios/ExpoNativeAlipayDelegate.swift b/node_modules/expo-native-alipay/ios/ExpoNativeAlipayDelegate.swift
- index d5c3506..331addd 100644
- --- a/node_modules/expo-native-alipay/ios/ExpoNativeAlipayDelegate.swift
- +++ b/node_modules/expo-native-alipay/ios/ExpoNativeAlipayDelegate.swift
- @@ -9,34 +9,17 @@ import ExpoModulesCore
- import AlipaySDK
-
- public class ExpoNativeAlipayDelegate: ExpoAppDelegateSubscriber {
- - // 适配 iOS 9 及以上
- - public func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:], appContext: AppContext?) -> Bool {
- + // 适配标准 UIApplicationDelegate (3 参数签名,匹配 ExpoAppDelegateSubscriberManager 的调用)
- + public func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
- if url.host == "safepay" {
- // 支付跳转支付宝钱包进行支付,处理支付结果
- AlipaySDK.defaultService()?.processOrder(withPaymentResult: url, standbyCallback: { resultDic in
- - self.sendAlipayResult(resultDic, appContext: appContext)
- + self.sendAlipayResult(resultDic)
- })
-
- // 授权跳转支付宝钱包进行支付,处理支付结果
- AlipaySDK.defaultService()?.processAuth_V2Result(url, standbyCallback: { resultDic in
- - self.sendAlipayResult(resultDic, appContext: appContext)
- - })
- - return true
- - }
- - return false
- - }
- -
- - // 兼容 iOS 8 及以下(如需支持)
- - public func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any, appContext: AppContext?) -> Bool {
- - if url.host == "safepay" {
- - // 支付跳转支付宝钱包进行支付,处理支付结果
- - AlipaySDK.defaultService()?.processOrder(withPaymentResult: url, standbyCallback: { resultDic in
- - self.sendAlipayResult(resultDic, appContext: appContext)
- - })
- -
- - // 授权跳转支付宝钱包进行支付,处理支付结果
- - AlipaySDK.defaultService()?.processAuth_V2Result(url, standbyCallback: { resultDic in
- - self.sendAlipayResult(resultDic, appContext: appContext)
- + self.sendAlipayResult(resultDic)
- })
- return true
- }
- @@ -44,36 +27,26 @@ public class ExpoNativeAlipayDelegate: ExpoAppDelegateSubscriber {
- }
-
- // 处理 Universal Link 回调
- - public func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void, appContext: AppContext?) -> Bool {
- + public func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
- if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
- AlipaySDK.defaultService()?.handleOpenUniversalLink(userActivity, standbyCallback: { resultDic in
- - self.sendAlipayResult(resultDic, appContext: appContext)
- + self.sendAlipayResult(resultDic)
- })
- }
- return true
- }
-
- - private func sendAlipayResult(_ resultDic: [AnyHashable: Any]?, appContext: AppContext?) {
- - var module: ExpoNativeAlipayModule? = nil
- -
- - if let appContext = appContext {
- - // 新版优先
- - if let moduleRegistry = appContext.value(forKey: "moduleRegistry") as? NSObject,
- - let m = moduleRegistry.perform(NSSelectorFromString("getModuleImplementingProtocol:"), with: ExpoNativeAlipayModule.self)?.takeUnretainedValue() as? ExpoNativeAlipayModule {
- - module = m
- - } else if let m = appContext.perform(NSSelectorFromString("getModule:"), with: ExpoNativeAlipayModule.self)?.takeUnretainedValue() as? ExpoNativeAlipayModule {
- - // 旧版
- - module = m
- - }
- + private func sendAlipayResult(_ resultDic: [AnyHashable: Any]?) {
- + guard let module = ExpoNativeAlipayModule.shared else {
- + print("[ExpoNativeAlipay] WARNING: Module.shared is nil, cannot resolve pay promise!")
- + return
- }
-
- - if let module = module {
- - // 判断是支付还是授权,根据 resultDic 内容区分
- - if let result = resultDic?["result"] as? String, result.contains("auth_code=") {
- - module.handleAlipayAuthResult(resultDic ?? [:])
- - } else {
- - module.handleAlipayResult(resultDic ?? [:])
- - }
- + // 判断是支付还是授权,根据 resultDic 内容区分
- + if let result = resultDic?["result"] as? String, result.contains("auth_code=") {
- + module.handleAlipayAuthResult(resultDic ?? [:])
- + } else {
- + module.handleAlipayResult(resultDic ?? [:])
- }
- }
- }
- \ No newline at end of file
- diff --git a/node_modules/expo-native-alipay/ios/ExpoNativeAlipayModule.swift b/node_modules/expo-native-alipay/ios/ExpoNativeAlipayModule.swift
- index 2d925ec..a72ae4e 100644
- --- a/node_modules/expo-native-alipay/ios/ExpoNativeAlipayModule.swift
- +++ b/node_modules/expo-native-alipay/ios/ExpoNativeAlipayModule.swift
- @@ -2,6 +2,7 @@ import ExpoModulesCore
- import AlipaySDK
-
- public class ExpoNativeAlipayModule: Module {
- + public static var shared: ExpoNativeAlipayModule?
- private var alipayScheme: String?
- private var payPromise: Promise?
- private var authPromise: Promise?
- @@ -10,6 +11,11 @@ public class ExpoNativeAlipayModule: Module {
-
- public func definition() -> ModuleDefinition {
- Name("ExpoNativeAlipay")
- +
- + OnCreate {
- + ExpoNativeAlipayModule.shared = self
- + }
- +
- /**
- * 注册接口
- *
- @@ -46,6 +52,17 @@ public class ExpoNativeAlipayModule: Module {
- let version = AlipaySDK.defaultService()?.currentVersion() ?? ""
- promise.resolve(version)
- }
- +
- + AsyncFunction("processOrder") { (urlStr: String, promise: Promise) in
- + if let url = URL(string: urlStr) {
- + AlipaySDK.defaultService()?.processOrder(withPaymentResult: url, standbyCallback: { resultDic in
- + self.handleAlipayResult(resultDic ?? [:])
- + promise.resolve(resultDic)
- + })
- + } else {
- + promise.resolve(nil)
- + }
- + }
- }
-
- // 处理支付结果
- diff --git a/node_modules/expo-native-alipay/src/ExpoNativeAlipay.types.ts b/node_modules/expo-native-alipay/src/ExpoNativeAlipay.types.ts
- index 0969717..310aeec 100644
- --- a/node_modules/expo-native-alipay/src/ExpoNativeAlipay.types.ts
- +++ b/node_modules/expo-native-alipay/src/ExpoNativeAlipay.types.ts
- @@ -48,6 +48,11 @@ export interface OrderResultStr {
- sign_type: 'RSA2' | 'RSA';
- }
-
- +/**
- + * 处理外部跳转回来的支付宝 URL (主要是为了给拦截了 URL 的框架手动处理用)
- + */
- +export declare function processOrder(url: string): Promise<OrderResult>;
- +
- /**
- * 支付订单返回结果
- * @returns 成功返回
- diff --git a/node_modules/expo-native-alipay/src/ExpoNativeAlipayModule.ts b/node_modules/expo-native-alipay/src/ExpoNativeAlipayModule.ts
- index 2f22a8f..03dead7 100644
- --- a/node_modules/expo-native-alipay/src/ExpoNativeAlipayModule.ts
- +++ b/node_modules/expo-native-alipay/src/ExpoNativeAlipayModule.ts
- @@ -60,6 +60,14 @@ export function getVersion(): Promise<string> {
- return ExpoNativeAlipay.getVersion()
- }
-
- +/**
- + * 手动处理外部唤起返回的支付 URL
- + * @param url App 唤起的 URL
- + */
- +export function processOrder(url: string): Promise<OrderResult> {
- + return ExpoNativeAlipay.processOrder(url)
- +}
- +
- /**
- * 设置支付宝跳转Scheme,仅 iOS
- * @param scheme
- diff --git a/node_modules/expo-native-alipay/src/index.ts b/node_modules/expo-native-alipay/src/index.ts
- index 1a1b5d0..3e7f3cb 100644
- --- a/node_modules/expo-native-alipay/src/index.ts
- +++ b/node_modules/expo-native-alipay/src/index.ts
- @@ -1,4 +1,5 @@
- // Reexport the native module. On web, it will be resolved to ExpoNativeAlipayModule.web.ts
- // and on native platforms to ExpoNativeAlipayModule.ts
- export * from './ExpoNativeAlipay.types';
- -export { authInfo, default, getVersion, alipay, setAlipaySandbox, setAlipayScheme } from './ExpoNativeAlipayModule';
- +export { alipay, authInfo, default, getVersion, processOrder, setAlipaySandbox, setAlipayScheme } from './ExpoNativeAlipayModule';
- +
|