You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS PayPal SDK传多个PurchaseUnit到OrderRequest时报错如何解决

报错原因

OrderActionError 202对应订单结构非法错误,触发原因是客户端直接构造订单的场景下,PayPal Native Checkout SDK不支持单个订单传入多个指向不同收款人的PurchaseUnit,你的多收款方拆分逻辑不符合客户端创建订单的权限约束。

解决方案

你要实现的抽佣场景不需要创建多个PurchaseUnit,使用PayPal原生的平台佣金功能即可,仅构造1个指向收款用户的PurchaseUnit,同时添加平台费规则即可完成资金拆分:总订单金额设置为用户支付的总金额(101美元),其中指定100美元结算给收款用户,剩余1美元作为平台佣金自动结算到应用绑定的PayPal商户账号。

修改后的参考代码如下:

func makePaypalPayment(amount: String, userEmail: String, serviceFeeAmount: String) {
    Checkout.start(
        createOrder: { createOrderAction in
            // 构造收款用户的金额
            let payeeAmount = PurchaseUnit.Amount(currencyCode: .usd, value: amount)
            // 构造平台佣金规则
            let platformFee = PurchaseUnit.PaymentInstruction.PlatformFee(
                amount: PurchaseUnit.Amount(currencyCode: .usd, value: serviceFeeAmount)
            )
            let paymentInstruction = PurchaseUnit.PaymentInstruction(platformFees: [platformFee])
            // 构造收款方信息
            let payeeDetail = PurchaseUnit.Payee(emailAddress: userEmail)
            // 构造单个PurchaseUnit,包含收款方、金额、平台佣金规则
            let purchaseUnit = PurchaseUnit(
                amount: payeeAmount,
                payee: payeeDetail,
                paymentInstruction: paymentInstruction
            )
            // 构造订单,总金额为用户实际支付总金额(收款金额+佣金金额)
            // 注意:实际生产环境请做好金额精度处理,避免浮点运算精度丢失
            let totalValue = String(format: "%.2f", Double(amount)! + Double(serviceFeeAmount)!)
            let order : OrderRequest = OrderRequest(
                intent: .capture,
                purchaseUnits: [purchaseUnit]
            )
            createOrderAction.create(order: order)
        },
        onApprove: { approval in
            approval.actions.capture { (response, error) in
                print("Payment successfully")
            }
        },
        onCancel: {
            print("Order is cancelled.")
        },
        onError: { error in
            print("Order have some error.")
        }
    )
}
注意事项
  • 需要先在PayPal商户后台开通平台佣金相关权限,否则会继续触发订单结构错误
  • 金额计算时请做好精度处理,避免浮点运算导致的金额不匹配问题
  • 如果你需要实现更复杂的多收款方拆分逻辑,需要切换为服务端创建订单的方案:由服务端调用PayPal接口生成订单ID,客户端直接传入订单ID唤起SDK支付即可,无需在客户端构造PurchaseUnit结构。

内容的提问来源于stack exchange,提问作者Sapana Ranipa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:36:04