2012-12-13 19 views
2

我仍然試圖皮膚相同的貓:Controlling order of javascript execution PayPal ObjectsPaypal數字商品使用startFlow方法動態列表項目?

總之,我有一個數字歌曲的數據庫購買。我希望有一個不斷變化的名單,比如50首歌曲可供購買。

文檔貝寶已經是非常可怕的國際海事組織。而-everyone-似乎用示例都需要硬編碼的元素(按鈕)的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之前?

簡而言之:-someone-有一個這樣的工作示例,或者知道如何將startFlow與動態分配的購買按鈕一起使用?我試着在X開發人員論壇上發帖,但沒有回覆。

回答

2

我碰到你的問題絆倒,而搜索同樣的事情,並發現適合我的答案,我希望這有助於....

URL是要燈箱內部調用位置。這取決於您使用的是什麼API(和SDK)。就我而言,我正在使用Merchant API SDK。 https://github.com/paypal/merchant-sdk-php

的SDK裏面是一個文件DGsetExpressCheckout.php,在該文件的底部是網址:

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也應設置爲獲取payflow後運行RETURNURL的裏面的東西,在這一點上運行:

dg.closeFlow(); 

關閉對話框並覆蓋。

相關問題