银联支付插件

This commit is contained in:
zhouyanli
2026-06-04 17:55:18 +08:00
parent a8e3d1f875
commit d26bd4e86b
46 changed files with 1769 additions and 0 deletions

View File

@@ -0,0 +1,96 @@
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: [] })
}