2011-11-21 163 views
21

我已經將貝寶與paypal_helper整合到codeigniter中(不記得我在哪裏找到它,但它是PayPals原始代碼的輕微改寫版本,用於快速結帳。 ,PayPal快速結帳缺少金額和訂單總結

CallShortcutExpressCheckout($ paymentAmount,$ currencyCodeType, $ paymentType,$ RETURNURL,$ cancelURL)

發送$ paymentAmount如int,$ currencyCodeType爲 「NOK」 和$ paymentType爲 「出售」 。

無論在沙盒還是現場,貝寶網站上都沒有出現金額...

什麼可能是錯誤的?

編輯,以進一步解釋我的過程。我使用這個,主要是在https://www.paypal-labs.com/integrationwizard/ecpaypal/cart.php中指定的。這應該是可行的沒有形式?該paymentAmount可以發送一個標準的變量,調用函數CallShortcutExpressCheckout?:

$resArray = CallShortcutExpressCheckout ($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL); 
$ack = strtoupper($resArray["ACK"]); 
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING") 
{ 
    RedirectToPayPal ($resArray["TOKEN"]); 
} 
else 
{ 
    //Display a user friendly Error on the page using any of the following error information returned by PayPal 
    $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); 
    $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); 
    $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); 
    $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); 

    echo "SetExpressCheckout API call failed. "; 
    echo "Detailed Error Message: " . $ErrorLongMsg; 
    echo "Short Error Message: " . $ErrorShortMsg; 
    echo "Error Code: " . $ErrorCode; 
    echo "Error Severity Code: " . $ErrorSeverityCode; 
} 

令牌被保存在數據庫中時。用戶被重定向到沒有金額列出的PayPal。

+0

您是否在字段中使用了正確的字段名稱..? –

+0

我沒有使用窗體...當我調用這個函數時,應該在PayPal中設置付款......稍後在我的代碼中,我打電話給這個函數,該函數發送用戶到PayPal: RedirectToPayPal($ paypal [「TOKEN」]); –

+0

https://github.com/hrendoh/PayPal-Express-Checkout-example –

回答

50

如果你還沒有通過所謂的「行項目詳細信息」(產品數據),貝寶不顯示總量。

如果你只是想顯示當前的購買量,如果你想開始發送行項目細節,貝寶重定向買家https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxx&useraction=commit(而不是https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxx

,包括在你的SetExpressCheckout API以下要求:

// Total amount of the purchase, incl shipping, tax, etc 
PAYMENTREQUEST_0_AMT=300.0 
// Total amount of items purchased, excl shipping, tax, etc  
PAYMENTREQUEST_0_ITEMAMT=300.0 
// Authorize the funds first (Authorization), or capture immediately (Sale)?  
PAYMENTREQUEST_0_PAYMENTACTION=Sale 
// First item 
L_PAYMENTREQUEST_0_NAME0=Item1 
L_PAYMENTREQUEST_0_QTY0=1 
L_PAYMENTREQUEST_0_AMT0=100.00 
// Second item 
L_PAYMENTREQUEST_0_NAME1=Item2 
L_PAYMENTREQUEST_0_QTY1=1 
L_PAYMENTREQUEST_0_AMT1=200.00 

如果你想看到這個在自己的歷史,以及,你還需要包括這DoExpressCheckoutPayment

這也張貼在php paypal express checkout problem

+14

&useraction = commit工作。謝謝:) –

+1

注意:這不包括任何貝寶報告中的數據,所以如果這是您的目標,您仍然需要添加訂單項。 – Robert

+0

我想要的是正確的金額被轉移... –

14

上,這是2013年一年的工作很短的ExpressCheckout指南凌亂貝寶網站上的文檔的廣泛閱讀後,我想有貝寶支付頁面和商戶交易記錄網頁上顯示的商品信息。

寶文檔鏈接

您可以撥打以下網址的方法直接在網頁瀏覽器,相應地更新令牌和payerid參數。

這是一個數字商品,因此不收取運費和手續費。單項行。金額和稅費被給出。不需要確認的送貨地址,沒有送貨地址字段,不允許自由文本註釋,付款人不需要PayPal賬戶,也不需要註冊(solutiontype =單獨)。激活paypal網站上的信用卡部分(landingpage = billing)。在貝寶網站上使用自定義品牌標題。使用自定義字段爲追蹤目的賦予自己的價值。商家網站交易記錄必須顯示商品詳情(提供SetExpressCheckout和DoExpressCheckoutPayment方法的商品詳情)。

SetExpressCheckout方法打開一個新的事務

https://api-3t.sandbox.paypal.com/nvp? 
    USER=<userid> 
    &PWD=<pwd> 
    &SIGNATURE=<mysig> 
    &METHOD=SetExpressCheckout 
    &VERSION=98 
    &PAYMENTREQUEST_0_PAYMENTACTION=SALE 
    &REQCONFIRMSHIPPING=0 
    &NOSHIPPING=1 
    &ALLOWNOTE=0 
    &SOLUTIONTYPE=Sole 
    &LANDINGPAGE=Billing 
    &BRANDNAME=MY+WEBSHOP+TITLE 
    &PAYMENTREQUEST_0_AMT=22.22 
    &PAYMENTREQUEST_0_TAXAMT=4.30 
    &PAYMENTREQUEST_0_ITEMAMT=17.92 
    &PAYMENTREQUEST_0_DESC=mypurdesc 
    &PAYMENTREQUEST_0_CUSTOM=custom1 
    &PAYMENTREQUEST_0_CURRENCYCODE=EUR 
    &L_PAYMENTREQUEST_0_NUMBER0=itemid1 
    &L_PAYMENTREQUEST_0_NAME0=MyItem1 
    &L_PAYMENTREQUEST_0_DESC0=Item1+description 
    &L_PAYMENTREQUEST_0_QTY0=1 
    &L_PAYMENTREQUEST_0_AMT0=17.92 
    &L_PAYMENTREQUEST_0_TAXAMT0=4.30 
    &RETURNURL=https://myserver.com/webapp/paypal.jsp%3Fcmd=successexp 
    &CANCELURL=https://myserver.com/webapp/paypal.jsp%3Fcmd=cancelexp 

回覆必須有ACK =成功或ACK = SuccessWithWarning,讀TOKEN價值

重定向用戶瀏覽器到PayPal網站,給令牌值

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=<token> 

用戶使用PayPal帳戶或信用卡。貝寶重定向用戶返回或取消網址。 重定向目標網址獲取標記PayerID參數值。 交易尚未完成,我們必須調用doExpressCheckoutPayment方法。在屏幕上

顯示確認對話框(與OK,CANCEL按鈕)或簡單的情況下 提交事務,並顯示「謝謝你,購買完成」消息。 用戶已經接受了貝寶網站的付款,並預計交易將完成。

您可以在同一個請求 - 響應處理程序中使用異步後臺任務,也可以使用異步後臺任務。貝寶網站可能暫時不可用,所以不要期望它立即生效。

提交的事務,如果重定向是成功的,使用令牌和payerid

https://api-3t.sandbox.paypal.com/nvp? 
    USER=<userid> 
    &PWD=<pwd> 
    &SIGNATURE=<mysig> 
    &METHOD=DoExpressCheckoutPayment 
    &VERSION=98 
    &PAYMENTREQUEST_0_PAYMENTACTION=SALE 
    &PAYMENTREQUEST_0_AMT=22.22 
    &PAYMENTREQUEST_0_TAXAMT=4.30 
    &PAYMENTREQUEST_0_ITEMAMT=17.92 
    &PAYMENTREQUEST_0_CURRENCYCODE=EUR 
    &L_PAYMENTREQUEST_0_NUMBER0=itemid1 
    &L_PAYMENTREQUEST_0_NAME0=MyItem1 
    &L_PAYMENTREQUEST_0_QTY0=1 
    &L_PAYMENTREQUEST_0_AMT0=17.92 
    &L_PAYMENTREQUEST_0_TAXAMT0=4.30 
    &token=<token> 
    &payerid=<payerid> 

讀ACK =成功和驗證領域

ACK=Success 
PAYMENTINFO_0_PAYMENTSTATUS=Completed 
PAYMENTINFO_0_ACK=Success 
PAYMENTINFO_0_AMT=22.22  total amount must match 
PAYMENTINFO_0_FEEAMT=0.99 (just for fun, read paypal comission fee) 
PAYMENTINFO_0_CURRENCYCODE=EUR currency must match 

(可選)查看交易明細貝寶

您可以在交易工作流程或任何t如果存儲了令牌供以後使用。

https://api-3t.sandbox.paypal.com/nvp 
    ?USER=<userid> 
    &PWD=<pwd> 
    &SIGNATURE=<mysig> 
    &METHOD=GetExpressCheckoutDetails 
    &VERSION=98 
    &token=<token> 

閱讀響應參數。

ACK=Success 
CHECKOUTSTATUS=PaymentActionCompleted 
PAYMENTREQUEST_0_AMT=22.22 
PAYMENTREQUEST_0_TAXAMT=4.30 
PAYMENTREQUEST_0_CURRENCYCODE=EUR 

(可選)讀取並保存事務ID,關聯ID和令牌ID並寫入日誌表。

PAYMENTREQUEST_0_TRANSACTIONID=11E585715B622391E 
CORRELATIONID=4534b683c335f 

如果有任何邏輯錯誤,我願意收到評論。

+1

理想情況下,GetExpressCheckoutDetails應該在DoExpressCheckoutPayment之前進行。它通常用於在調用DoExpressCheckoutPayment完成交易之前提供'查看您的訂單'類型頁面。 – Robert