2

我仍在尝试给同一只猫剥皮:控制 javascript 执行顺序 PayPal 对象

简而言之,我有一个可供购买的数字歌曲数据库。我想要一个不断变化的列表,比如 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 方法而不是触发器来解决此问题,但他们的网站上没有示例,我在互联网上找不到任何工作示例。

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

但我不明白 URL 应该是什么......它是从 PayPal 获得的令牌吗?如果是这样,在调用 PayPal NVP 之前如何获得令牌?

简而言之:-someone- 是否有一个可行的示例,或者知道如何将 startFlow 与动态分配的购买按钮一起使用?我尝试在 X 开发者论坛上发帖,但没有得到任何回复。

4

1 回答 1

2

我在搜索同一件事时偶然发现了您的问题,并找到了对我有用的答案,我希望这会有所帮助....

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(); 

关闭对话框并覆盖。

于 2013-11-14T09:58:44.577 回答