Paypal Digital Goods 使用 startFlow 方法获取动态项目列表?

Posted

技术标签:

【中文标题】Paypal Digital Goods 使用 startFlow 方法获取动态项目列表?【英文标题】:Paypal Digital Goods Using startFlow Method For Dynamic List Of Items? 【发布时间】:2012-12-01 17:48:39 【问题描述】:

我还在尝试给同一只猫剥皮: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 方法而不是触发器来解决此问题,但他们的网站上没有示例,我在互联网上找不到任何工作示例.

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

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

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

【问题讨论】:

【参考方案1】:

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

网址是您要在灯箱内调用的位置。根据您使用的 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(); 

关闭对话框并覆盖。

【讨论】:

以上是关于Paypal Digital Goods 使用 startFlow 方法获取动态项目列表?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Express Checkout for Digital Goods 上线后出错

贝宝:“嗨,尤金。不是你吗?”消息 - nameOnButton.gif 出现错误 - Digital Goods Express Checkout

登录时出现 PayPal 数字商品错误

Paypal订阅结束时如何进行php检查?

Digital Ocean 搭建 windows 系统

HDU 1163 Eddy's digital Roots