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();
закрыть диалоговое окно и наложение.