2011-11-21 161 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