';
// get down to business
switch ($action)
{
case 'SetExpressCheckout':
$amount = $_POST['price1']*$_POST['qty1']+$_POST['price2']*$_POST['qty2']+$_POST['price3']*$_POST['qty3'];
$cancel_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$return_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?x=GetExpressCheckoutDetails&order_num='.$order_num.'&amount='.$amount;
$data = $paypal.'&TENDER=P&TRXTYPE=S&ACTION=S'; // C - Direct Payment using credit card, P - Express Checkout using PayPal account
$data .= '&AMT='.$amount.'&CANCELURL['.strlen($cancel_url).']='.$cancel_url.'&RETURNURL['.strlen($return_url).']='.$return_url.'&INVNUM='.$order_num.'&ORDERDESC['.strlen($desc).']='.$desc;
$unique_id = $order_num;
// call function to return name-value pair
$nvp = fetch_data($unique_id, $submiturl, $data);
if($nvp['RESPMSG']=='Approved') {
$payPalURL = $PayPalURL.urldecode($nvp["TOKEN"]);
echo '
Click here if you are not redirected to PayPal within 5 seconds.
';
}
else {
error_handle($nvp);
exit;
}
break;
case 'GetExpressCheckoutDetails':
$data = $paypal.'&TENDER=P&TRXTYPE=S&ACTION=G&TOKEN='.$_REQUEST['token'];
$unique_id = date('ymd-H').rand(1000,9999); // prepare unique id for Action=G
// call function to return name-value pair
$nvp = fetch_data($unique_id, $submiturl, $data);
if($nvp['RESPMSG']=='Approved') {
echo '
';
}
else {
error_handle($nvp);
exit;
}
break;
case 'DoExpressCheckout':
$token = urlencode($_REQUEST['token']);
$payer_id = urlencode($_REQUEST['Payerid']);
$serverName = urlencode($_SERVER['SERVER_NAME']);
$data = $paypal.'&TENDER=P&TRXTYPE=S&ACTION=D';
$data .= '&TOKEN='.$token.'&PAYERID='.$payer_id.'&AMT='.$amount.'&CURRENCYCODE='.$currCodeType.'&IPADDRESS='.$serverName.'&INVNUM='.$order_num.'&ORDERDESC='.$desc;
$unique_id = $_REQUEST['unique']; // get it from GetExpressCheckoutDetails form so that no duplication
// call function to return name-value pair
$nvp = fetch_data($unique_id, $submiturl, $data);
if($nvp['RESPMSG']=='Approved') {
if($nvp['DUPLICATE']=='1') {
echo 'Error!
This is a duplicatation of your previous order.
';
echo 'Error Mesaage: Transaction duplicated.
';
}
else {
echo 'Transaction Completed!
Thank you for your order.
';
if($nvp['PENDINGREASON']=='completed') {
echo 'This is a test transaction.
Your credit card will not be charged.
';
}
elseif($nvp['PENDINGREASON']=='echeck') {
echo 'The payment is pending because it was made by an eCheck that has not yet cleared.
';
}
else {
// see Integration guide for more responses
echo 'The payment is pending. Please login to your PayPal account for more details.
';
}
while (list($key, $val) = each($nvp)) {
echo "\n" . $key . ": " . $val . "\n
";
}
}
}
else {
error_handle($nvp);
exit;
}
break;
case 'DoDirectPayment':
// Payment details
$card_num = str_replace(' ','',$_POST['card_num']);
$card = $_POST['card'];
$cvv2 = $_POST['cvv2']; // 123
$expiry = $_POST['mm'].$_POST['yy'];
$amount = number_format($_POST['amount'],2);
$currency = $_POST['currency'];
// Billing Details
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$addr1 = $_POST['address'];
$addr2 = $_POST['city'];
$addr3 = $_POST['state'];
$addr4 = $_POST['zip'];
//$country = $_POST['country']; // 2-digits ISO code
// Other information
$ipaddr = $_SERVER['REMOTE_ADDR'];
$custom = 'Testing Only';
$data = $paypal.'&TENDER=C&TRXTYPE=S'; // C - Direct Payment using credit card, P - Express Checkout using PayPal account
$data .= '&ACCT='.$card_num.'&CVV2='.$cvv2.'&EXPDATE='.$expiry.'&ACCTTYPE='.$card.'&AMT='.$amount.'&CURRENCY='.$currency;
$data .= '&FIRSTNAME='.$fname.'&LASTNAME='.$lname.'&ADDRESS='.$addr1.'&CITY='.$addr2.'&STATE='.$addr3.'&ZIP='.$addr1;//.'&COUNTRY='.$country;
$data .= '&EMAIL='.$email.'&CLIENTIP='.$ipaddr.'&COMMENT1='.$custom.'&INVNUM='.$order_num.'&ORDERDESC='.$desc;
$unique_id = $order_num;
// call function to return name-value pair
$nvp = fetch_data($unique_id, $submiturl, $data);
if($nvp['RESPMSG']=='Approved') {
if($nvp['DUPLICATE']=='1') {
echo 'Error!
This is a duplicatation of your previous order.
';
echo 'Error Mesaage: Transaction duplicated.
';
}
else {
echo 'Transaction Completed!
Thank you for your order.
';
echo 'This is a test transaction.
Your credit card will not be charged.
';
while (list($key, $val) = each($nvp)) {
echo "\n" . $key . ": " . $val . "\n
";
}
}
}
else {
error_handle($nvp);
exit;
}
break;
case 'GetDirectPaymentDetails':
$amount = $_POST['price1']*$_POST['qty1']+$_POST['price2']*$_POST['qty2']+$_POST['price3']*$_POST['qty3'];
// checokout - enter card details and shipping
echo '
';
break;
default:
session_unset();
// shopping list
$order_num = date('ymd-H').rand(1000,9999);
echo '
';
break;
}
// footer
echo '