2015-03-18 38 views
1

我正在圍繞PayPals訂閱流程進行包裝。使用Paypal的PHP REST SDK支付協議

我們的流程是:

1)創建結算方案
2)激活結算方案
3)創建結算協議(被激活的計劃,送客戶的貝寶URL)
4.)客戶批准,返回到我們的URL,執行與提供的令牌

我遇到的問題是我似乎無法引用步驟4中返回的任何id到前3個步驟中提供的任何內容。

我必須錯過一些東西,但我完全難住。在前面的步驟中,我找不到任何與執行的協議相關的方法。

回答

2

作爲由PayPal_Orcun提到,問題仍然懸而未決,並在貝寶內部得到解決,但是,在此期間,您可以在此處做些事情。

  • 在第3步,一旦你創建一個協議,你得到的是這樣的一個審批環節:

    https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-8DL20958WD398123E

  • 這裏,複製令牌,並將其存儲在數據庫中。把它想象成一個獨特的Id。

  • 執行付款。當它回來,PayPal將重定向回用這樣的網址:

    http://localhost/paypal/PayPal-PHP-SDK/sample/billing/ExecuteAgreement.php?success=true&token=EC-8DL20958WD398123E

  • 正如你所看到的,你可以做一個$_GET['token']檢索此令牌,並配以創建的。然後,您可以使用ID返回執行成功,並用新的ID字段替換標記字段。

    我同意,這不是你所期望的,但它肯定會允許你在createexecute之後連接協議。

    希望這有助於。

    0

    下面是REST API計費方案和結算協定的工作(包括捲曲的呼叫樣本):

    首先,請確保您的REST應用程序被切換爲訂閱(您可以在https://developer.paypal.com/webapps/developer/applications/myapps檢查您的REST應用程序設置)

    1)創建結算方案

    捲曲-k -v -H 「內容類型:應用程序/ JSON」 -H 「授權:承載ACCESS_TOKEN」 -d「{ 「名」:「測試REST俱樂部計劃「,」描述「:」模板創建「,」類型「:」固定「,」payment_definitions「:[{」名稱「:」定期付款「,」類型「:」常規「,」頻率「月」, 「frequency_interval的」: 「2」, 「量」:{ 「值」: 「100」, 「貨幣」: 「USD」}, 「循環」: 「12」, 「charge_models」:[{ 「類型」 : 「運輸」, 「量」:{ 「值」: 「10」, 「貨幣」: 「USD」}},{ 「類型」: 「TAX」, 「量」:{ 「值」: 「12」, 「貨幣」: 「USD」}}]}], 「merchant_preferences」:{ 「setup_fee」:{ 「值」: 「1」, 「貨幣」: 「USD」}, 「return_url」:「HTTP:// RETURNURL 」, 「cancel_url」: 「HTTP:// cancelurl」, 「auto_bill_amount」: 「YES」, 「initial_fail_amount_action」: 「繼續」, 「max_fail_attempts」: 「0」}}」 https://api.sandbox.paypal.com/v1/payments/billing-plans

    PayPal將返回一個計費開始 「P-」

    2-)計劃ID激活結算方案

    捲曲-k -v -H 「內容類型:應用/ JSON」 -H「授權:承載ACCES S_TOKEN「-d」[{「path」:「/」,「value」:{「state」:「ACTIVE」},「op」:「replace」}]'https://api.sandbox.paypal.com/v1/payments/billing-plans/

    3-)Create Billing Agreement

    curl -k -v -H「Content-Type:application/json」-H「Authorization:Bearer ACCESS_TOKEN」-d'{「name」:「Test REST Club Plan」,「description」:「Template creation 。 「」 起始日期 「:」 2015-03-20T07:49:27-07:00" , 「計劃」:{ 「ID」: 「PLAN_ID_HERE」}, 「付款人」:{ 「PAYMENT_METHOD」: 「貝寶」} ,「shipping_address」:{「line1」:「111 First Street」,「city」:「Saratoga」,「state」:「CA」,「postal_code」:「95070」,「country_code」:「US」 https://api.sandbox.paypal.com/v1/payments/billing-agreements

    貝寶將使用EC令牌返回Express Checkout重定向URL。例如。 https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxxxxxxxxxxxxx

    您需要通過該URL將客戶重定向到PayPal。一旦計費協議被授權,客戶就會返回到您的網站(步驟1中的return_url)。

    4-)執行結算協議

    捲曲-k -v -H 「內容類型:應用/ JSON」 -H 「授權:承載ACCESS_TOKEN」 -d '{}' https://api.sandbox.paypal.com/v1/payments/billing-agreements/EC-TOKEN_HERE/agreement-execute

    +0

    感謝您的回答。但我已經完成了。您能否告訴我如何從步驟3(當他們離開我們的網站時)引用客戶到步驟4(當他們返回我們的網站時)? – Michael 2015-03-19 15:42:24

    +0

    如果您的意思是檢索客戶詳細信息,不幸的是,這是REST API計費協議中的一個已知問題。當您執行結算協議時,回覆應包含付款人詳細信息,但不會返回。這是在https://github.com/paypal/PayPal-PHP-SDK/issues/155上報告的。我們有一個內部票據打開這個錯誤。請通過www.paypal.com/mts打開MTS門票,並提供門票號碼,以便我可以隨時瞭解最新進展情況。 – 2015-03-19 19:11:42

    0

    我用於解決相同問題的解決方案是在帳單協議上設置override_merchant_preferences,其中return_url包含查詢中的用戶標識,如www.domain.com/api/handler.php?uid=42&action=return