我仍然试图给同一只猫皮肤涂抹:Controlling order of javascript execution PayPal Objects
简而言之,我有一个购买数字歌曲的数据库。我希望有一个不断变化的列表,比如购买50首歌曲。
Paypal的文档非常糟糕IMO。并且示例 - 每个人 - 似乎都需要硬编码您想要销售的元素(按钮)的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开发者论坛上发帖并没有回复。
答案 0 :(得分:2)
我在搜索同样的事情时偶然发现了你的问题,并找到了对我有用的答案,我希望这有帮助....
网址是您要在灯箱内调用的位置。它取决于您使用的API(和SDK)。就我而言,我正在使用Merchant 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内部执行操作,该操作应设置为在支付流后运行的returnUrl,此时您运行:
dg.closeFlow();
关闭对话框并重叠。