我已将Express Checkout集成到我的网站,它似乎与我从PayPal网站获得的代码一起正常工作。
然而,尝试修改它以使Paypal可选会导致一个奇怪的问题。
付款金额似乎没有传递到页面。
我已经设置了同一过程的两个版本。
http://coupons.exaget.com/paypal/expresscheckout.php?price=20 和 http://coupons.exaget.com/paypal-sole/expresscheckout.php?price=20
两者之间的唯一区别是paypalfunctions.php中的两行在第一个站点中被注释。如下所示,其中最后两行被注释。
价格(来自网址)在第一种情况下正确传递,但不在第二种情况下传递。
function CallShortcutExpressCheckout( $paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL)
{
//------------------------------------------------------------------------------------------------------------------------------------
// Construct the parameter string that describes the SetExpressCheckout API call in the shortcut implementation
$nvpstr="&PAYMENTREQUEST_0_AMT=". $paymentAmount;
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType;
$nvpstr = $nvpstr . "&RETURNURL=" . $returnURL;
$nvpstr = $nvpstr . "&CANCELURL=" . $cancelURL;
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType;
// $nvpstr = $nvpstr . "&SOLUTIONTYPE=" ."Sole"; //Buyer does not need to create a PayPal account to check out. This is referred to as PayPal Account Optional.
// $nvpstr = $nvpstr . "&LANDINGPAGE=Billing"; //Type of PayPal page to display. It is one of the following values:Billing – Non-PayPal account
答案 0 :(得分:0)
您是否设置SOLUTIONTYPE=Sole
不应该与它有任何关系。
快速结账将在以下一项(或两项)成立时向买方显示购买金额:
PAYMENTREQUEST_0_ITEMAMT
,L_PAYMENTREQUEST_0_NAMEn
,L_PAYMENTREQUEST_0_AMTn
,L_PAYMENTREQUEST_0_QTYn
等。)在这种情况下,您传递的完整订单项详细信息将为向买家展示。useraction=commit
(例如https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=...&useraction=commit)在这种情况下,您传递的金额(PAYMENTREQUEST_0_AMT
)将会显示对买方。如果您通过了订单项详细信息,那么这些信息也将显示给买方。答案 1 :(得分:0)
谢谢,马特。是的,传递订单项详细信息可解决此问题。 并从PayPal支持: 看来,在付款屏幕中显示总计需要行项目(amt,qty)。 Paypal正在引入一个新的流程,它没有强制要求的订单项。 因此,我的一个实现工作的原因是它总是在新流程中登陆,而另一个在PayPal所指的是Legacy Flow。