Paypal Digital Goods Использование метода startFlow для динамического списка товаров?

Я все еще пытаюсь сделать скин для той же кошки: Контроль порядка выполнения JavaScript. Объекты PayPal.

Короче, у меня есть база данных цифровых песен для покупки. Я хотел бы иметь постоянно меняющийся список, скажем, 50 песен для покупки.

Документы, которые есть у Paypal, довольно непристойные. И примеры - все, кажется, используют, требуют жесткого кодирования ID элемента (кнопки), который вы хотите продать, потому что вам нужен скрипт в нижнем колонтитуле вашей страницы, чтобы фактически "инициировать" вызов PayPal

<script type="text/javascript">
  var embeddedPPFlow1 = new PAYPAL.apps.DGFlow( {trigger : 'buysong_1'});
</script>

... так что если у вас есть 50 кнопок "Купить", вам нужно будет объявить 50 объектов PAYPAL.apps.DGFlow в нижнем колонтитуле во время загрузки, и они, конечно, должны иметь правильные идентификаторы. Это усложняет извлечение различных элементов из базы данных (не говоря уже о создании очень тяжелых страниц).

Документы PayPal указывают, что можно обойти это, используя один объект, но с помощью URL и метода startFlow вместо триггера, но на их сайте нет примера, и я не могу найти рабочих примеров на веб-сайте.

embeddedPPFlow = new PAYPAL.apps.DGFlow();
// url = (paypal url?)
this.embeddedPPFlow.startFlow(url);

Но я не понимаю, каким должен быть URL-адрес... Это тот токен, который вы получаете от PayPal? Если да, то как получить токен перед вызовом PayPal NVP?

Короче говоря: -someone- есть рабочий пример этого или знаете, как использовать startFlow с динамически назначаемой кнопкой покупки? Я попытался опубликовать на форуме разработчиков X и не получил никаких ответов.

1 ответ

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

URL - это местоположение, которое вы хотите вызвать внутри лайтбокса. Это зависит от того, какой API (и SDK) вы используете. В моем случае я использую Merchant API SDK. https://github.com/paypal/merchant-sdk-php

Внутри SDK находится файл DGsetExpressCheckout.php, внизу файла находится URL:

https://www.sandbox.paypal.com/incontext?token=$token

Я не совсем уверен, что означает часть "incontext", но когда я использовал эту ссылку (вместе с токеном в конце), PayPal разобрался и обратился к:

https://www.sandbox.paypal.com/webapps/checkout/webflow/sparta/expresscheckoutvalidatedataflow?execution=e1s3

Что позволяет для входа в систему и остальной поток платежей.

Мой JavaScript выглядит следующим образом (с jQuery):

//setup the PayPal digital goods flow
var dg = new PAYPAL.apps.DGFlow({
  //don't trigger the flow with a button (we're going to submit manually)
  trigger: null
}),
//post object for payment
post = {
  amount: '1.00',
  currencyId: 'USD'
  //.... whatever else you need to pass to $_POST ....
};
//process checkout
$.post("/url/to/your/sdk/method", post, function(token) {
  //if successful...
  if ( token ) {
    //direct the dialog box for our digital goods pay flow to the correct place
    var flowUrl = 'https://www.sandbox.paypal.com/incontext?token='+token;
    dg.startFlow( flowUrl );
  }
});

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

dg.closeFlow(); 

закрыть диалоговое окно и наложение.

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