wordpress with paypal checkout
-
require_once ("paypalfunctions.php"); $PaymentOption = "PayPal"; if ( $PaymentOption == "PayPal") { // ================================== // PayPal Express Checkout Module // ================================== //'------------------------------------ //' The paymentAmount is the total value of //' the purchase. //' //' TODO: Enter the total Payment Amount within the quotes. //' example : $paymentAmount = "15.00"; //'------------------------------------ $paymentAmount = "99"; //'------------------------------------ //' The currencyCodeType //' is 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 = "https://127.0.0.1/digitalgoodsexample/orderconfirm.php"; //'------------------------------------ //' 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 = "https://127.0.0.1/digitalgoodsexample/cancel.php"; //'------------------------------------ //' Calls the SetExpressCheckout API call //' //' The CallSetExpressCheckout function is defined in the file PayPalFunctions.php, //' it is included at the top of this file. //'------------------------------------------------- $items = array(); $items[] = array('name' => 'PayPal Digital Goods Integration Guide', 'amt' => $paymentAmount, 'qty' => 1); //::ITEMS:: // to add anothe item, uncomment the lines below and comment the line above // $items[] = array('name' => 'Item Name1', 'amt' => $itemAmount1, 'qty' => 1); // $items[] = array('name' => 'Item Name2', 'amt' => $itemAmount2, 'qty' => 1); // $paymentAmount = $itemAmount1 + $itemAmount2; // assign corresponding item amounts to "$itemAmount1" and "$itemAmount2" // NOTE : sum of all the item amounts should be equal to payment amount $resArray = SetExpressCheckoutDG( $paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL, $items ); $ack = strtoupper($resArray["ACK"]); if($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { $token = urldecode($resArray["TOKEN"]); RedirectToPayPalDG( $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; } }<code>I am using the above paypal function to send users to paypal for payment. However, I would like to automatically insert the product price on the line:</code>$paymentAmount = "99"<code>instead of numeric value using a meta value that is:</code>echo get_post_meta($post->ID, 'download_info_price', true)
I am have been perfectly able to make the paypal functions work, but only with numeric value by using it as a template page for my checkout page.
I believe that I need something that help me echo meta value outside of the loop and using:`global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, ‘Your-Custom-Field’, true);`did not get me anywhere.
with the above, I tried calling /wp-load.php in the paypal functions, but no result.
The price/amount I want to automate is require by my paypal checkout file
that is called on the header of above codesrequire_once ("paypalfunctions.php")
the paypal checkout is:`/********************************************
PayPal API ModuleDefines all the global variables and the wrapper functions
********************************************/
$PROXY_HOST = ‘127.0.0.1’;
$PROXY_PORT = ‘808’;$SandboxFlag = true;
//’ TODO:
//’————————————
//’ PayPal API Credentials
//’ Replace <API_USERNAME> with your API Username
//’ Replace <API_PASSWORD> with your API Password
//’ Replace <API_SIGNATURE> with your Signature
//’————————————
$API_UserName=//this is hidden;
$API_Password=//this is hidden;
$API_Signature=//this is hidden;// BN Code is only applicable for partners
$sBNCode = “PP-ECWizard”;/*
‘ Define the PayPal Redirect URLs.
‘ This is the URL that the buyer is first sent to do authorize payment with their paypal account
‘ change the URL depending if you are testing on the sandbox or the live PayPal site
‘
‘ For the sandbox, the URL is https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=
‘ For the live site, the URL is https://www.paypal.com/webscr&cmd=_express-checkout&token=
*/if ($SandboxFlag == true)
{
$API_Endpoint = “https://api-3t.sandbox.paypal.com/nvp”;
$PAYPAL_URL = “https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=”;
$PAYPAL_DG_URL = “https://www.sandbox.paypal.com/incontext?token=”;
}
else
{
$API_Endpoint = “https://api-3t.paypal.com/nvp”;
$PAYPAL_URL = “https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=”;
$PAYPAL_DG_URL = “https://www.paypal.com/incontext?token=”;
}$USE_PROXY = false;
$version = “84”;/* An express checkout transaction starts with a token, that
identifies to PayPal your transaction
In this example, when the script sees a token, the script
knows that the buyer has already authorized payment through
paypal. If no token was found, the action is to send the buyer
to PayPal to first authorize payment
*//*
‘——————————————————————————————————————————————-
‘ Purpose: Prepares the parameters for the SetExpressCheckout API Call for a Digital Goods payment.
‘ Inputs:
‘ paymentAmount: Total value of the shopping cart
‘ currencyCodeType: Currency code value the PayPal API
‘ paymentType: paymentType has to be one of the following values: Sale or Order or Authorization
‘ returnURL: the page where buyers return to after they are done with the payment review on PayPal
‘ cancelURL: the page where buyers return to when they cancel the payment review on PayPal
‘——————————————————————————————————————————————–
*/
function SetExpressCheckoutDG( $paymentAmount, $currencyCodeType, $paymentType, $returnURL,
$cancelURL, $items)
{
//————————————————————————————————————————————
// Construct the parameter string that describes the SetExpressCheckout API call in the shortcut implementation$nvpstr = “&PAYMENTREQUEST_0_AMT=”. $paymentAmount;
$nvpstr .= “&PAYMENTREQUEST_0_PAYMENTACTION=” . $paymentType;
$nvpstr .= “&RETURNURL=” . $returnURL;
$nvpstr .= “&CANCELURL=” . $cancelURL;
$nvpstr .= “&PAYMENTREQUEST_0_CURRENCYCODE=” . $currencyCodeType;
$nvpstr .= “&REQCONFIRMSHIPPING=0”;
$nvpstr .= “&NOSHIPPING=1”;foreach($items as $index => $item) {
$nvpstr .= “&L_PAYMENTREQUEST_0_NAME” . $index . “=” . urlencode($item[“name”]);
$nvpstr .= “&L_PAYMENTREQUEST_0_AMT” . $index . “=” . urlencode($item[“amt”]);
$nvpstr .= “&L_PAYMENTREQUEST_0_QTY” . $index . “=” . urlencode($item[“qty”]);
$nvpstr .= “&L_PAYMENTREQUEST_0_ITEMCATEGORY” . $index . “=Digital”;
}//’—————————————————————————————————————
//’ Make the API call to PayPal
//’ If the API call succeded, then redirect the buyer to PayPal to begin to authorize payment.
//’ If an error occured, show the resulting errors
//’—————————————————————————————————————
$resArray = hash_call(“SetExpressCheckout”, $nvpstr);
$ack = strtoupper($resArray[“ACK”]);
if($ack == “SUCCESS” || $ack == “SUCCESSWITHWARNING”)
{
$token = urldecode($resArray[“TOKEN”]);
$_SESSION[‘TOKEN’] = $token;
}return $resArray;
}/*
‘——————————————————————————————-
‘ Purpose: Prepares the parameters for the GetExpressCheckoutDetails API Call.
‘
‘ Inputs:
‘ None
‘ Returns:
‘ The NVP Collection object of the GetExpressCheckoutDetails Call Response.
‘——————————————————————————————-
*/
function GetExpressCheckoutDetails( $token )
{
//’————————————————————–
//’ At this point, the buyer has completed authorizing the payment
//’ at PayPal. The function will call PayPal to obtain the details
//’ of the authorization, incuding any shipping information of the
//’ buyer. Remember, the authorization is not a completed transaction
//’ at this state – the buyer still needs an additional step to finalize
//’ the transaction
//’————————————————————–//’—————————————————————————
//’ Build a second API request to PayPal, using the token as the
//’ ID to get the details on the payment authorization
//’—————————————————————————
$nvpstr=”&TOKEN=” . $token;//’—————————————————————————
//’ Make the API call and store the results in an array.
//’ If the call was a success, show the authorization details, and provide
//’ an action to complete the payment.
//’ If failed, show the error
//’—————————————————————————
$resArray=hash_call(“GetExpressCheckoutDetails”,$nvpstr);
$ack = strtoupper($resArray[“ACK”]);
if($ack == “SUCCESS” || $ack==”SUCCESSWITHWARNING”)
{
return $resArray;
}
else return false;}
/*
‘——————————————————————————————————————————————-
‘ Purpose: Prepares the parameters for the GetExpressCheckoutDetails API Call.
‘
‘ Inputs:
‘ sBNCode: The BN code used by PayPal to track the transactions from a given shopping cart.
‘ Returns:
‘ The NVP Collection object of the GetExpressCheckoutDetails Call Response.
‘——————————————————————————————————————————————–
*/
function ConfirmPayment( $token, $paymentType, $currencyCodeType, $payerID, $FinalPaymentAmt, $items )
{
/* Gather the information to make the final call to
finalize the PayPal payment. The variable nvpstr
holds the name value pairs
*/
$token = urlencode($token);
$paymentType = urlencode($paymentType);
$currencyCodeType = urlencode($currencyCodeType);
$payerID = urlencode($payerID);
$serverName = urlencode($_SERVER[‘SERVER_NAME’]);$nvpstr = ‘&TOKEN=’ . $token . ‘&PAYERID=’ . $payerID . ‘&PAYMENTREQUEST_0_PAYMENTACTION=’ . $paymentType . ‘&PAYMENTREQUEST_0_AMT=’ . $FinalPaymentAmt;
$nvpstr .= ‘&PAYMENTREQUEST_0_CURRENCYCODE=’ . $currencyCodeType . ‘&IPADDRESS=’ . $serverName;foreach($items as $index => $item) {
$nvpstr .= “&L_PAYMENTREQUEST_0_NAME” . $index . “=” . urlencode($item[“name”]);
$nvpstr .= “&L_PAYMENTREQUEST_0_AMT” . $index . “=” . urlencode($item[“amt”]);
$nvpstr .= “&L_PAYMENTREQUEST_0_QTY” . $index . “=” . urlencode($item[“qty”]);
$nvpstr .= “&L_PAYMENTREQUEST_0_ITEMCATEGORY” . $index . “=Digital”;
}
/* Make the call to PayPal to finalize payment
If an error occured, show the resulting errors
*/
$resArray=hash_call(“DoExpressCheckoutPayment”,$nvpstr);/* Display the API response back to the browser.
If the response from PayPal was a success, display the response parameters’
If the response was an error, display the errors received using APIError.php.
*/
$ack = strtoupper($resArray[“ACK”]);return $resArray;
}
/**
‘——————————————————————————————————————————————-
* hash_call: Function to perform the API call to PayPal using API signature
* @methodName is name of API method.
* @nvpStr is nvp string.
* returns an associtive array containing the response from the server.
‘——————————————————————————————————————————————-
*/
function hash_call($methodName,$nvpStr)
{
//declaring of global variables
global $API_Endpoint, $version, $API_UserName, $API_Password, $API_Signature;
global $USE_PROXY, $PROXY_HOST, $PROXY_PORT;
global $gv_ApiErrorURL;
global $sBNCode;//setting the curl parameters.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$API_Endpoint);
curl_setopt($ch, CURLOPT_VERBOSE, 1);//turning off the server and peer verification(TrustManager Concept).
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1);//if USE_PROXY constant set to TRUE in Constants.php, then only proxy will be enabled.
//Set proxy name to PROXY_HOST and port number to PROXY_PORT in constants.php
if($USE_PROXY)
curl_setopt ($ch, CURLOPT_PROXY, $PROXY_HOST. “:” . $PROXY_PORT);//NVPRequest for submitting to server
$nvpreq=”METHOD=” . urlencode($methodName) . “&VERSION=” . urlencode($version) . “&PWD=” . urlencode($API_Password) . “&USER=” . urlencode($API_UserName) . “&SIGNATURE=” . urlencode($API_Signature) . $nvpStr . “&BUTTONSOURCE=” . urlencode($sBNCode);//setting the nvpreq as POST FIELD to curl
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);//getting response from server
$response = curl_exec($ch);//convrting NVPResponse to an Associative Array
$nvpResArray=deformatNVP($response);
$nvpReqArray=deformatNVP($nvpreq);
$_SESSION[‘nvpReqArray’]=$nvpReqArray;if (curl_errno($ch))
{
// moving to display page to display curl errors
$_SESSION[‘curl_error_no’]=curl_errno($ch) ;
$_SESSION[‘curl_error_msg’]=curl_error($ch);//Execute the Error handling module to display errors.
}
else
{
//closing the curl
curl_close($ch);
}return $nvpResArray;
}/*’———————————————————————————-
Purpose: Redirects to PayPal.com site.
Inputs: NVP string.
Returns:
———————————————————————————-
*/
function RedirectToPayPal ( $token )
{
global $PAYPAL_URL;// Redirect to paypal.com here
$payPalURL = $PAYPAL_URL . $token;
header(“Location: “.$payPalURL);
exit;
}
function RedirectToPayPalDG ( $token )
{
global $PAYPAL_DG_URL;// Redirect to paypal.com here
$payPalURL = $PAYPAL_DG_URL . $token;
header(“Location: “.$payPalURL);
exit;
}/*’———————————————————————————-
* This function will take NVPString and convert it to an Associative Array and it will decode the response.
* It is usefull to search for a particular key and displaying arrays.
* @nvpstr is NVPString.
* @nvpArray is Associative Array.
———————————————————————————-
*/
function deformatNVP($nvpstr)
{
$intial=0;
$nvpArray = array();while(strlen($nvpstr))
{
//postion of Key
$keypos= strpos($nvpstr,’=’);
//position of value
$valuepos = strpos($nvpstr,’&’) ? strpos($nvpstr,’&’): strlen($nvpstr);/*getting the Key and Value values and storing in a Associative Array*/
$keyval=substr($nvpstr,$intial,$keypos);
$valval=substr($nvpstr,$keypos+1,$valuepos-$keypos-1);
//decoding the respose
$nvpArray[urldecode($keyval)] =urldecode( $valval);
$nvpstr=substr($nvpstr,$valuepos+1,strlen($nvpstr));
}
return $nvpArray;
}`Thanks for helping. I have been dealing with this for 2 days now and I figure I might get better help here.
- The topic ‘wordpress with paypal checkout’ is closed to new replies.