2016-10-10 2 views
0

В настоящее время я работаю над новой интеграцией с PayPal с NVP (paypalfunctions.php) для обработки платежей. Такая же интеграция работает и для других проектов, но по текущей она терпит неудачу.Интеграция PayPal NVP - оплата не обработана

Описание: Платежная ссылка создается успешно - перенаправляется в Paypal - Войти и оплатить сумму (1 или 5 EUR) - перенаправить на URL-адрес успеха.

Проблема: ни учетная запись магазина, ни учетная запись отправителей не видят платеж, и я не получаю никакого обратного вызова от PayPal - таким образом, платеж не был обработан/принят и т. Д., Но я не получаю никакой информации от Paypal.

настройки NVP, которые я использую являются минимальными и не нужны адрес доставки:

$nvpstr="&PAYMENTREQUEST_0_AMT=". $paymentAmount; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType; 
$nvpstr = $nvpstr . "&RETURNURL=" . $returnURL; 
$nvpstr = $nvpstr . "&CANCELURL=" . $cancelURL; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType; 
$nvpstr = $nvpstr . "&NOSHIPPING=1"; 
$nvpstr = $nvpstr . "&BRANDNAME=MyName"; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_CUSTOM=" . $paymentId; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_NOTIFYURL=https://my.callback.com"; 

URL-адрес получает созданный успешно и все переменные устанавливаются.

Любая идея, почему это не работает?

Большое спасибо

bert2002

ответ

0

Похоже, вы пропустили окончательный вызов в процессе. Поток должен быть:

  1. SetExpressCheckout
  2. GetExpressCheckoutDetails
  3. DoExpressCheckoutPayment

Никакие деньги не будут перемещены до окончательного вызова DECP не будет успешно завершена.

Примечание: то, что вы делаете, не использует REST API/SDK, поэтому этот тег вводит в заблуждение.

У меня есть PayPal PHP SDK, который сделает эти вызовы API очень быстрыми и легкими для вас, поэтому вам не придется создавать их вручную, как сейчас. Я бы порекомендовал вам взглянуть на него. Думаю, тебе понравится.

+0

Привет, большое спасибо. Я использую CallShortcutExpressCheckout(), которого должно быть достаточно (или они что-то изменили за последние недели/месяц), или я все время ошибался, и это работает из магии. Я следил за [link] (https://devtools-paypal.com/integrationwizard/ecpaypal/code.php), и он не упоминает ваши функции. Я проверю ваш SDK, если я смогу его интегрировать. Хотелось бы знать, почему мой больше не работает. – bert2002

+0

Хорошо, я нашел способ, но это странно. Сначала я делаю CallMarkExpressCheckout() со всеми моими данными, затем пользователи платит и перенаправляется на ReturnURL, который обрабатывает токен и PayerID с помощью DoExpressCheckoutPayment(). Затем платеж будет одобрен. Имеет ли смысл этот рабочий процесс? В другом проекте вся вторая часть хранится с обратным вызовом, а не с ReturnUrl от пользователя. Это ReturnUrl немного странно. – bert2002

+0

Названия API, которые я обозначил, являются фактическими именами. Эти функции создаются для выполнения определенных действий с помощью запроса SetExpressCheckout. Например, один из параметров в SetExpressCheckout может быть установлен на «Billing» или «Mark», и опыт отличается от того, как вы его установили. Независимо от того, эти функции запускают SetExpressCheckout для вас и, вероятно, обрабатывают перенаправление для вас, но да, вам нужно также добавить вызов DoExpressCheckoutPayment после того, как вы вернетесь обратно в свой ReturnURL, поставляемый вместе с SetExpressCheckout. –