import { startPayOptions } from '../../interface.uts' /** * 检查是否安装云闪付App * 通过 canOpenURL 检测云闪付 scheme */ export function checkWalletInstalled(): boolean { try { const UIApplication = plus.ios.importClass('UIApplication') const app = UIApplication.sharedApplication() const url = plus.ios.importClass('NSURL')!.URLWithString('uppaywallet://') return app.canOpenURL(url) } catch (e) { console.log('检测云闪付安装状态失败:', e) return true } } /** * 发起支付(云闪付) * 调用 UMS SDK 的 UMSPPPayUnifyPayPlugin 进行支付 */ export function startPay(options: startPayOptions): void { try { const UMSPPPayUnifyPayPlugin = plus.ios.importClass('UMSPPPayUnifyPayPlugin') if (UMSPPPayUnifyPayPlugin == null) { options.callback({ code: -1, msg: 'UMS 支付插件加载失败' }) return } const viewController = UTSiOS.getCurrentViewController() if (viewController == null) { options.callback({ code: -1, msg: '获取当前视图控制器失败' }) return } // payData:后端返回的 appPayRequest 对应的 JSON 字符串 const payData = options.tn const channel = options.channel || 'unionpay' // 统一结果处理 block const resultBlock = (resultCode: string, resultInfo: string) => { console.log('UMS iOS 支付结果:', resultCode, resultInfo) let code = -1 let msg = resultInfo || '支付失败' if (resultCode === '0000' || resultCode === '0') { code = 0 msg = '支付成功' } else if (resultCode === '-2' || resultCode === '2000' || resultCode === '2001') { code = -2 msg = '支付已取消' } else if (resultCode === '1') { code = 1 msg = '支付处理中' } options.callback({ code: code, msg: msg, data: { resultCode: resultCode, resultInfo: resultInfo } }) } // 根据支付渠道调用不同方法 if (channel === 'unionpay') { // 云闪付 UMSPPPayUnifyPayPlugin.cloudPayWithURLSchemes_payData_viewController_callbackBlock( 'uppayfull', payData, viewController, resultBlock ) } else if (channel === 'alipay') { // 支付宝间联支付 UMSPPPayUnifyPayPlugin.aliSafePayWithURLSchemes_payData_callbackBlock( 'uppayfull', payData, resultBlock ) } else if (channel === 'weixin') { // 微信支付(需申请微信SDK后才能使用) // UMSPPPayUnifyPayPlugin.payWithPayChannel_payData_callbackBlock('CHANNEL_WEIXIN', payData, resultBlock) options.callback({ code: -1, msg: '微信支付暂不支持,请先申请微信SDK' }) } else { options.callback({ code: -1, msg: '未知支付渠道: ' + channel }) } } catch (e) { console.error('UMS iOS 支付调用异常:', e) options.callback({ code: -1, msg: '支付调用异常: ' + (e.message || String(e)) }) } } /** * 获取直通银行 App 列表 * 【注】UMS SDK 暂未实现此功能 */ export function getDirectApps(callback: Function): void { callback({ code: 0, msg: 'UMS SDK 暂不支持此功能', data: [] }) }