Paypal数字商品使用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对象,当然,它们必须具有正确的ID。这使得从数据库中提取不同的项目有点棘手(更不用说制作非常重的页面了)

PayPal的文档表明,人们应该能够通过使用单个对象来绕过这个问题,但使用URL和startFlow方法而不是触发器,但他们的网站上没有示例,我在interweb上也找不到可用的示例。

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

但我不知道URL应该是什么…是从PayPal获得的代币吗?如果是这样,在调用PayPal NVP之前,如何获得代币?

简言之:某人有这样的工作示例吗,或者知道如何将startFlow与动态分配的购买按钮一起使用吗?我试着在X开发者论坛上发帖,但没有得到回应。

我在搜索同一个东西时偶然发现了你的问题,找到了对我有用的答案,我希望这能有所帮助。。。。

url是您要在灯箱内部调用的位置。这取决于您使用的API(和SDK)。就我而言,我使用的是商家API SDK。https://github.com/paypal/merchant-sdk-php

SDK中有一个文件DGsetExpressCheckout.php,文件底部是url:

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

我真的不确定"无正文"部分是什么意思,但当我使用该链接(以及最后的代币)时,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中执行操作,该操作应设置为在payflow之后运行的returnUrl,此时您将运行:

dg.closeFlow(); 

关闭对话框并覆盖。

最新更新