PayPal Express Checkout中缺少金额和订单摘要

Øyv*_*nd 21 codeigniter paypal

我已经将paypal与paypal_helper集成到codeigniter中(并没有记住我发现它的地方,但它是Paypals原始代码的稍微重写版本,用于快速结账.我尝试调用此函数,

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

将$ paymentAmount作为int发送,$ currencyCodeType作为"NOK"发送,$ paymentType作为"Sale"发送.

在Sandbox和live中,paypal网站上都没有显示金额...

可能有什么不对?

编辑,以进一步解释我的过程.我使用它,主要是在https://www.paypal-labs.com/integrationwizard/ecpaypal/cart.php中指定的.没有表格,这应该是可行的吗?在调用CallShortcutExpressCheckout函数时,paymentAmount可以作为标准变量发送:

$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;
}
Run Code Online (Sandbox Code Playgroud)

令牌保存在数据库中.用户被重定向到Paypal,其中没有列出任何金额.

Rob*_*ert 51

由于您没有传递所谓的"订单项详细信息"(产品数据),因此PayPal不会显示总金额.

如果您只想显示当前购买的金额,请将买家重定向到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)

如果您要开始向PayPal发送订单项详细信息,请在SetExpressCheckoutAPI请求中包含以下内容:

// 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  
Run Code Online (Sandbox Code Playgroud)

如果您想在自己的历史中看到这一点,您还需要将其包含在内DoExpressCheckoutPayment.

这也发布在PHP paypal快速结账问题


Who*_*ome 14

在对凌乱的Paypal文档网站进行了广泛的阅读之后,这是2013年的一个简短的ExpressCheckout指南.我希望在paypal支付页面和商家交易历史页面上显示项目详细信息.

Paypal文档链接

您可以直接在Web浏览器上调用以下url方法,相应地更新令牌和payerid参数.

这是一种数字商品,因此不提供运费和手续费.单项行.提供金额和税费.不要求确认的送货地址,没有送货地址字段,不允许自由文本说明,付款人不需要paypal帐户,也不需要注册(solutiontype = sole).激活paypal网站上的信用卡部分(landingpage = billing).在paypal网站上使用自定义品牌标题.使用自定义字段为跟踪目的提供自己的值.商家网站交易记录必须显示商品详细信息(提供有关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
Run Code Online (Sandbox Code Playgroud)

回复必须有ACK =成功或ACK = SuccessWithWarning,读取TOKEN值

将用户浏览器重定向到Paypal站点,给出令牌值

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=<token>
Run Code Online (Sandbox Code Playgroud)

用户使用paypal帐户或信用卡.Paypal重定向用户返回或取消网址.重定向目标网址获取令牌PayerID参数值.交易尚未完成,我们必须调用doExpressCheckoutPayment方法.

在屏幕上显示确认对话框(使用OK,CANCEL按钮)或简单案例提交交易并显示"谢谢,购买完成"消息.用户已经在paypal网站上接受了付款,并希望最终确定交易.

您可以在同一个请求 - 响应处理程序中或使用异步后台任务提交事务.Paypal网站可能暂时不可用,所以不要指望它立即工作.

如果重定向成功,则使用令牌和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>
Run Code Online (Sandbox Code Playgroud)

读取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
Run Code Online (Sandbox Code Playgroud)

(可选)从Paypal读取交易详情

您可以在事务工作流程期间使用此功能,也可以在存储令牌以供日后使用时随时使

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

读取响应参数.

ACK=Success
CHECKOUTSTATUS=PaymentActionCompleted
PAYMENTREQUEST_0_AMT=22.22
PAYMENTREQUEST_0_TAXAMT=4.30
PAYMENTREQUEST_0_CURRENCYCODE=EUR
Run Code Online (Sandbox Code Playgroud)

(可选)读取并保存事务ID,相关ID和令牌ID并写入logtable.

PAYMENTREQUEST_0_TRANSACTIONID=11E585715B622391E
CORRELATIONID=4534b683c335f
Run Code Online (Sandbox Code Playgroud)

如果有任何逻辑错误,我愿意收到评论.