Paypal Embedded Flow не использует returnUrl или cancelUrl

Я использую Paypals Adaptive Payments и функцию Embedded flow, чтобы оформить заказ через мини-браузер. Кажется, что все работает правильно в среде песочницы, за исключением того, что когда платеж завершен успешно, пользователь никогда не перенаправляется на мой returnUrl, установленный в запросе API PAY. То же самое касается моего cancelUrl.

После завершения платежа пользователю показывается обзор заказа в мини-браузере и кнопка с надписью "закрыть". Если пользователь нажимает эту кнопку, мини-браузер закрывается.

Если пользователь нажимает кнопку "Отмена" в любое время, мини-браузер закрывается.

Кажется, нет способа информировать мою страницу об изменениях, кроме настройки опроса или чего-то, что не имеет смысла, мои returnUrl и cancelUrl должны где-то использоваться, верно?

это мой код для получения URL перенаправления (с использованием адаптивных платежей):

pay_request = PaypalAdaptive::Request.new
data = {
  'requestEnvelope' => {'errorLanguage' => 'en_US'},
  'currencyCode' => 'USD',
  'receiverList' =>
          { 'receiver' => [
            {'email' => '...', 'amount'=> 10.00}
          ]},
  'actionType' => 'PAY',
  'returnUrl' => 'http://www.example.com/paid',
  'cancelUrl' => 'http://www.example.com/cancelled',
  'ipnNotificationUrl' => 'http://www.example.com/ipn'
}

pay_response = pay_request.pay(data)
redirect_to pay_response.approve_paypal_payment_url "mini"

А вот как я настраиваю PayPal JS:

var dg = new PAYPAL.apps.DGFlowMini({ trigger: "buyit", expType: "mini" });

Кажется, все довольно просто, не уверен, что мне не хватает.

2 ответа

Решение

Что ж, похоже, это ошибка с нашей стороны, просто попробовал сам и подтвердил с нашими командами по интеграции.:-(

К сожалению, другое краткосрочное исправление, о котором я могу подумать, кроме того, что вы упомянули (проверяя наличие всплывающего окна), - это вызов API PaymentDetails со стороны вашего сервера, чтобы проверить состояние Платежа. Я открыл ошибку на нашей стороне, но у меня нет ETA.

Изменить 10/18: Извините, я не прав. Это работает - просто наше руководство для разработчиков не предоставляет всей необходимой информации. В случае потока мини-браузера вам нужно будет предоставить функцию callbackFunction, а также назвать вашу переменную dgFlow как dgFlowMini. (последнее важно - так как apdg.js ожидает определения переменной 'dgFlowMini') Вот код, который работает:

var returnFromPayPal = function(){
   alert("Returned from PayPal");
   // Here you would need to pass on the payKey to your server side handle to call the PaymentDetails API to make sure Payment has been successful or not
  // based on the payment status- redirect to your success or cancel/failed urls
}
var dgFlowMini = new PAYPAL.apps.DGFlowMini({trigger: 'em_authz_button', expType: 'mini', callbackFunction: 'returnFromPayPal'});

У меня есть рабочий образец здесь: https://pp-ap-sample.appspot.com/adaptivesample?action=pay (убедитесь, что вы выбрали mini в качестве Типа опыта)

Мы обновим наши документы, а также очистим apdg.js, чтобы удалить зависимость от имени переменной JS.

Похоже, что опыт PayPal для встроенных потоков стал хуже. Теперь после вызова мини или лайтбокса вы получите сообщение об ошибке "Платеж не может быть завершен. Эта функция в настоящее время недоступна".

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