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