Что еще я должен отправить для Paypal прикованных платежей?

Я работаю над приложением, в котором пользователь А может купить до 10 товаров от разных продавцов, поэтому мне нужно отправлять деньги разным пользователям одновременно, и я пытаюсь использовать Paypal Chained Payments.

Сейчас я просто играю с Classic API (адаптивные платежи), но мне просто интересно, почему я всегда получаю эту ошибку:

 "The fee payer PRIMARYRECEIVER can only be used if a primary receiver is specified"

Я уже указал основной получатель, и я все еще получаю эту ошибку.

Я нашел эти примеры: https://paypal-sdk-samples.herokuapp.com/adaptive_payments/pay и я попытался сделать цепочечный платеж:

Это мой запрос на оплату:

require 'paypal-sdk-adaptivepayments'
@api = PayPal::SDK::AdaptivePayments::API.new

# Build request object
@pay = @api.build_pay({
  :actionType => "PAY",
  :cancelUrl => "https://paypal-sdk-samples.herokuapp.com/adaptive_payments/pay",
  :currencyCode => "USD",
  :feesPayer => "PRIMARYRECEIVER",
  :ipnNotificationUrl => "https://paypal-sdk-samples.herokuapp.com/adaptive_payments/ipn_notify",
  :receiverList => {
    :receiver => [{
      :amount => 1.0,
      :email => "platfo_1255612361_per@gmail.com",
      :primary => true }] },
  :returnUrl => "https://paypal-sdk-samples.herokuapp.com/adaptive_payments/pay",
  :sender => {
    :useCredentials => true } })

# Make API call & get response
@pay_response = @api.pay(@pay)

И это ответ

{
  :responseEnvelope => {
    :timestamp => "2013-11-20T05:16:31-08:00",
    :ack => "Failure",
    :correlationId => "b002d0e27fd33",
    :build => "7935900" },
  :error => [{
    :errorId => 580023,
    :domain => "PLATFORM",
    :subdomain => "Application",
    :severity => "Error",
    :category => "Application",
    :message => "The fee payer PRIMARYRECEIVER can only be used if a primary receiver is specified",
    :parameter => [{
      :value => "feesPayer" },{
      :value => "PRIMARYRECEIVER" }] }] }

Заранее спасибо!

1 ответ

Решение

Взглянув на ваш звонок, вы действительно указываете основного получателя. однако для цепного платежа вам нужно будет указать дополнительного получателя.

Я только что провел быстрый тест со следующими параметрами:

actionType = PAY  
requestEnvelope.errorLanguage = en_US  
cancelUrl = http://abortURL  
returnUrl = http://returnURL  
ipnNotificationUrl = http://ipnURL  
applicationId = Test  
memo = Test   
currencyCode = USD  
receiverList.receiver(0).email = test@test.com  
receiverList.receiver(0).amount = 5.00  
receiverList.receiver(0).primary = true  
feesPayer = PRIMARYRECEIVER

и получил результат:

responseEnvelope.timestamp=2013-11-20T05:41:56.751-08:00  
responseEnvelope.ack=Failure  
responseEnvelope.correlationId=b61a6b31ea2ab  
responseEnvelope.build=7935900  
error(0).errorId=580023  
error(0).domain=PLATFORM  
error(0).subdomain=Application  
error(0).severity=Error  
error(0).category=Application  
error(0).message=The fee payer PRIMARYRECEIVER can only be used if a primary receiver is specified  
error(0).parameter(0)=feesPayer  
error(0).parameter(1)=PRIMARYRECEIVER

Однако, как только я изменяю FeesPayer на EACHRECEIVER, я получаю сообщение об ошибке, которое приводит к сбою цепного платежа:

responseEnvelope.timestamp=2013-11-20T05:48:09.202-08:00  
responseEnvelope.ack=Failure  
responseEnvelope.correlationId=987210ec4d03a  
responseEnvelope.build=7935900  
error(0).errorId=579008  
error(0).domain=PLATFORM  
error(0).subdomain=Application  
error(0).severity=Error  
error(0).category=Application  
error(0).message=You must specify only one primary receiver and at least one secondary receiver  
error(0).parameter(0)=1

Надеюсь, это поможет.

Пожалуйста, обратитесь к SDK для адаптивных платежей PayPal, доступному по http://paypal.github.io/, чтобы получить дополнительные примеры и вдохновение.

Другие вопросы по тегам