使用5.15的SDK测试paypal支付
- 发布:19 分钟前
- 更新:18 分钟前
- 阅读:9
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: MacBook Pro (Retina, 15-inch, Mid 2014)
HBuilderX类型: 正式
HBuilderX版本号: 5.15
手机系统: Android
手机系统版本号: Android 15
手机厂商: 华为
手机机型: 荣耀
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: HBuilderX
操作步骤:
预期结果:
可以在应用内正常打开支付页面
可以在应用内正常打开支付页面
实际结果:
当前打不开字符页面
当前打不开字符页面
bug描述:
┌──────────────────────────────────────────┬──────────────────────────────────┐
│ 文件 │ MD5 │
├──────────────────────────────────────────┼──────────────────────────────────┤
│ 5.15 SDK/libs/payment-paypal-release.aar │ 9e655dadbe557a3c6d29e41b481d6779 │
├──────────────────────────────────────────┼──────────────────────────────────┤
│ 5.15 工程 app/libs 里正在用的 │ 同上 │
├──────────────────────────────────────────┼──────────────────────────────────┤
│ 5.24 SDK/libs/payment-paypal-release.aar │ 同上 │
├──────────────────────────────────────────┼──────────────────────────────────┤
│ 5.07 那份 │ 也是同一份 │
└──────────────────────────────────────────┴──────────────────────────────────┘
换 5.24 的 aar,二进制完全一样,PaypalPay.java:131 还是会调那个已经不存在的构造函数。
能不能升级 android-sdk:0.6.2
不能靠升级修好。 升到 0.6.3、0.8.x、1.3.2 只会更偏。
当前崩溃要的是这个 8 参数构造:
CheckoutConfig(
Application,
clientId, // String
Environment,
CurrencyCode, // 第 4 个
UserAction,
PaymentButtonIntent,
SettingsConfig,
returnUrl // 最后 1 个 String
)
而 0.6.2 实际提供的是:
CheckoutConfig(
Application,
clientId,
Environment,
returnUrl, // 第 4 个已经是 String
CurrencyCode,
UserAction,
PaymentButtonIntent,
SettingsConfig
[, UIConfig]
)
第 4 个参数类型就不一样:DCloud aar 要 CurrencyCode,0.6.2 要 String returnUrl。所以是 NoSuchMethodError,不是漏依赖。
我核对了 Maven 上 0.3.0 到 0.6.2,公开 SDK 从很早开始就是 returnUrl 在第 4 位。继续升版本不会变回 DCloud aar 编译时用的那个签名。
所以现在怎么办
┌─────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────┐
│ 方案 │ 结果 │
├─────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────┤
│ 换 5.24 的 payment-paypal-release.aar │ 无效,文件相同 │
├─────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────┤
│ 升级 android-sdk 到 0.6.3 / 1.x │ 无效,构造函数更对不上 │
├─────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────┤
│ 降到 0.4.x / 0.5.x │ 大概率也无效,returnUrl 仍在第 4 位 │
├─────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────┤
│ 等更新的 DCloud payment-paypal-release.aar(比 5.24 还新,且按 0.6.2 新签名重编过) │ 这才是对齐原生 SDK 的正路 │
├─────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────┤
│ 继续用现在的 approveUrl 浏览器兜底 │ 目前唯一已经验证能打开结账页的路径 │
└─────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────┘
前端 orderInfo、渠道接口、getProvider 都没问题。要原生收银台,必须换一份和 android-sdk:0.6.2 构造函数匹配的 DCloud PayPal 模块;手头 5.07 / 5.15 / 5.24 的 aar 都不行。
1 个回复
Ask小助手 - Ask社区AI助手
感谢您提交详尽的 Bug 反馈。您提供的问题描述、版本对比、参数差异分析以及排查过程非常专业,这对于我们定位和解决问题非常有帮助。针对您反馈的安卓端 PayPal 支付无法在应用内打开的问题,我们进行了评审与分析,具体如下:
1. Bug 反馈内容完整性评审
payment-paypal-release.aar期望的CheckoutConfig构造函数与 Maven 仓库中android-sdk:0.6.2实际提供的构造函数差异(第 4 个参数类型不符导致NoSuchMethodError)。这种深度的分析官方人员完全能够看懂,并可以直接作为排查依据。NoSuchMethodError),不属于误报。2. Bug 是否成立及分析
根据您提供的信息以及我们核对官方文档记录,该 Bug 现象成立。
在 DCloud 的Android离线SDK配置文档中,PayPal 模块确实依赖了
com.paypal.checkout:android-sdk:0.6.2版本。同时,在历史更新记录中可以看到,DCloud 在 3.6.7 alpha 版本时曾将 PayPal SDK 升级到了 0.6.2 版本。正如您所分析的,当前 5.15(乃至 5.24)的
payment-paypal-release.aar在编译时可能引用了某个特定的内部或早期签名,而 Maven 上的 0.6.2 公开版本构造函数参数顺序已经发生了变化(returnUrl的位置变动)。这导致了在运行期调用原生收银台时,由于方法签名不匹配,直接抛出异常,从而无法拉起应用内支付。3. 后续处理与建议
您在分析中提出的结论是正确的:单纯依靠升级或降级 Maven 上的 PayPal android-sdk 版本无法解决此问题。因为公开 SDK 的签名已经改变,只要 DCloud 的
payment-paypal-release.aar没有针对新的签名重新进行编译适配,就必然存在方法找不到的崩溃。针对此问题,官方需要重新对
payment-paypal-release.aar模块进行更新,使其与当前 PayPal 原生 SDK 的实际签名对齐。我们将把此问题转交至相关的原生模块研发团队进行评估和修复,请关注后续 SDK 的更新日志。在官方修复发布之前,建议您暂时使用您提到的
approveUrl浏览器兜底方案(通过 web-view 或系统浏览器跳转支付),这是目前避开原生崩溃且能保证支付流程跑通的可行过渡方案。要回复问题请先登录或注册
公告
更多>相关问题