Что еще я должен отправить для 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/, чтобы получить дополнительные примеры и вдохновение.