简体   繁体   中英

PayPal Express Checkout won't work with php

I am trying to make PayPal Express Checkout with PHP.

    <form action='/paypal/expresscheckout.php' METHOD='POST'>
        <input type='image' name='submit' src='https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif' border='0' align='top' alt='Check out with PayPal'/>
    </form>

here is the button before it redirects to paypal screen.

<?php

require_once ("paypalfunctions.php");
// ==================================
// PayPal Express Checkout Module
// ==================================

//'------------------------------------
//' The paymentAmount is the total value of 
//' the shopping cart, that was set 
//' earlier in a session variable 
//' by the shopping cart page
//'------------------------------------
//$paymentAmount = $_SESSION["Payment_Amount"];
$paymentAmount = '1';

//'------------------------------------
//' The currencyCodeType and paymentType 
//' are set to the selections made on the Integration Assistant 
//'------------------------------------
$currencyCodeType = "USD";
$paymentType = "Sale";

//'------------------------------------
//' The returnURL is the location where buyers return to when a
//' payment has been succesfully authorized.
//'
//' This is set to the value entered on the Integration Assistant 
//'------------------------------------
$returnURL = "http://www.mydomain.com/add_funds/order_confirm";

//'------------------------------------
//' The cancelURL is the location buyers are sent to when they hit the
//' cancel button during authorization of payment during the PayPal flow
//'
//' This is set to the value entered on the Integration Assistant 
//'------------------------------------
$cancelURL = "http://www.mydomain.com/add_funds/order_cancel";

//'------------------------------------
//' Calls the SetExpressCheckout API call
//'
//' The CallShortcutExpressCheckout function is defined in the file PayPalFunctions.php,
//' it is included at the top of this file.
//'-------------------------------------------------
$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;
}
?>

this is express expresscheckout.php code

在此处输入图片说明

after I hit the paypal button, I can see this screen without any order information.

I put $1 dollar to pay in the code, but it doesn't say anything on order summary.

Anyways, I put different PayPal account to proceed this transaction.

在此处输入图片说明

I can see my shipping address and personal information.

However, it still doesn't have order summary information.

It should say you will be paid this product, which is $1 dollar.

If I click continue button, it redirects page to "returnURL"

Do you know what is the problem?

Instead of redirecting to https://www.paypal.com/cgi-bin/webcsr?cmd=_express-checkout&token=EC-xxxxxx , redirect to https://www.paypal.com/cgi-bin/webcsr?cmd=_express-checkout&token=EC-xxxxxx&useraction=commit

This will add the dollar value to the 'Order summary' section, and change the 'Continue' button on the final review page to 'Pay now'.
If you don't want the latter, you would instead need to start sending line-item details;
See https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECCustomizing for more information.

Thanks for posting that, it helped me with the same problem, although I changed it slightly, I used this instead:

https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token= $token&useraction=commit

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM