Ошибка получения Paypal SDK при передаче более одного purchaseUnits для запроса заказа в iOS SDK

#ios #swift #paypal #sdk

Вопрос:

Мой код для paypal sdk выглядит следующим образом

 func makePaypalPayment(amount:String,userEmail:String,eChitthiAmount:String) {
         Checkout.start(
            createOrder: { createOrderAction in
            // This order is for eChitthi
            let amountForeChitthi = PurchaseUnit.Amount(currencyCode: .usd, value: eChitthiAmount)
            let purchaseUnitForeChitthi = PurchaseUnit(amount: amountForeChitthi)
            
            // This order is for user
            let amount = PurchaseUnit.Amount(currencyCode: .usd, value: amount)
            let payeeDetail = PurchaseUnit.Payee(emailAddress:userEmail)
            let purchaseUnit = PurchaseUnit(amount: amount,payee: payeeDetail)
            let order : OrderRequest = OrderRequest(intent: .capture, purchaseUnits: [purchaseUnit,purchaseUnitForeChitthi])
            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.")
        }
    )
}
 

Здесь я хочу совершить две транзакции для одного платежа. Например, пользователь хочет перевести 100 долларов своему другу, тогда 1%-ная плата будет отправлена владельцу приложения.

Итак, я использую свой сценарий, если пользователь хочет перевести 100 долларов на UserB, тогда общая сумма в 101 доллар будет снята с учетной записи paypal пользователя, и 100 долларов поступят на учетную запись пользователя, а 1 доллар — на учетную запись владельца приложения. Для этого я создал два объекта PurchaseUnit и передал оба в OrderRequest. Из-за этого получение операции не может быть завершено. (Ошибка ошибки 202.)

Я использую SDK: PayPalCheckout (0.73.0)

Язык: Swift

Справка (я реализовал код из этого документа) — https://developer.paypal.com/docs/business/native-checkout/ios/programmatically-start-sdk /

Любая помощь будет признательна. Спасибо.

Комментарии:

1. «SwiftUI» — это не язык, а фреймворк пользовательского интерфейса. Похоже, этот вопрос вообще не касается SwiftUI, а только Swift (который является языком).

Ответ №1:

При указании нескольких purchase_units в запросе на создание заказов каждый должен быть уникальным reference_id , поскольку они являются независимыми платежами и могут быть успешными или неудачными по отдельности. Они также приведут к независимым транзакциям PayPal.

Это задокументировано на https://developer.paypal.com/docs/api/orders/v2/#orders-create-request-body

Комментарии:

1. Спасибо @Preston PHX. Это очень полезно для меня. Большое спасибо