'; } public function buildDGStep1FormAddons($submitBtnId) { $st = ""; // $st = "successUrl}\" />\n"; // $st .= "cancelUrl}\" />\n"; $st .= "\n"; return $st; } public function addPaymentItem(ECItem $item) { $this->items[] = $item; } public function getPaymentItems() { return $this->items; } public function requestPaymentToken() { /* The servername and serverport tells PayPal where the buyer should be directed back to after authorizing payment. In this case, its the local webserver that is running this script Using the servername and serverport, the return URL is the first portion of the URL that buyers will return to after authorizing payment */ $serverName = $_SERVER['SERVER_NAME']; $serverPort = $_SERVER['SERVER_PORT']; $url = dirname('http://' . $serverName . ':' . $serverPort . $_SERVER['REQUEST_URI']); $currencyCodeType = $_REQUEST['currencyCodeType']; $paymentType = $_REQUEST['paymentType']; /* $personName = $_REQUEST['PERSONNAME']; $SHIPTOSTREET = $_REQUEST['SHIPTOSTREET']; $SHIPTOCITY = $_REQUEST['SHIPTOCITY']; $SHIPTOSTATE = $_REQUEST['SHIPTOSTATE']; $SHIPTOCOUNTRYCODE = $_REQUEST['SHIPTOCOUNTRYCODE']; $SHIPTOZIP = $_REQUEST['SHIPTOZIP']; $L_NAME0 = $_REQUEST['L_NAME0']; $L_AMT0 = $_REQUEST['L_AMT0']; $L_QTY0 = $_REQUEST['L_QTY0']; $L_NAME1 = $_REQUEST['L_NAME1']; $L_AMT1 = $_REQUEST['L_AMT1']; $L_QTY1 = $_REQUEST['L_QTY1']; */ $personName = 'Tester'; $L_NAME0 = '1 Year Access'; $L_AMT0 = '9.00'; $L_QTY0 = '1.00'; /* The returnURL is the location where buyers return when a payment has been succesfully authorized. The cancelURL is the location buyers are sent to when they hit the cancel button during authorization of payment during the PayPal flow */ // $returnURL =urlencode($url.'/ReviewOrder.php?currencyCodeType='.$currencyCodeType.'&paymentType='.$paymentType); // $cancelURL =urlencode("$url/SetExpressCheckout.php?paymentType=$paymentType" ); $returnURL = urlencode($this->successUrl); $cancelURL = urlencode($this->cancelUrl); $orderamt = 0.00; $orders = ''; $i = 0; foreach($this->items as $item) { $itemamt = $item->amount * $item->quantity; $orderamt += $itemamt; $orders .= '&L_PAYMENTREQUEST_0_ITEMCATEGORY' . $i . '=Digital'; $orders .= '&L_PAYMENTREQUEST_0_NAME' . $i . '=' . $item->name; $orders .= '&L_PAYMENTREQUEST_0_AMT' . $i . '=' . number_format($item->amount, 2, '.', ''); $orders .= '&L_PAYMENTREQUEST_0_QTY' . $i . '=' . number_format($item->quantity, 2, '.', ''); $i++; } /* * Setting up the Shipping address details */ // $shiptoAddress = "&SHIPTONAME=$personName&SHIPTOSTREET=$SHIPTOSTREET&SHIPTOCITY=$SHIPTOCITY&SHIPTOSTATE=$SHIPTOSTATE&SHIPTOCOUNTRYCODE=$SHIPTOCOUNTRYCODE&SHIPTOZIP=$SHIPTOZIP"; // $nvpstr="&ADDRESSOVERRIDE=1$shiptoAddress&L_NAME0=".$L_NAME0."&L_NAME1=".$L_NAME1."&L_AMT0=".$L_AMT0."&L_AMT1=".$L_AMT1."&L_QTY0=".$L_QTY0."&L_QTY1=".$L_QTY1."&MAXAMT=".(string)$maxamt."&AMT=".(string)$amt."&ITEMAMT=".(string)$itemamt."&CALLBACKTIMEOUT=4&L_SHIPPINGOPTIONAMOUNT1=8.00&L_SHIPPINGOPTIONlABEL1=UPS Next Day Air&L_SHIPPINGOPTIONNAME1=UPS Air&L_SHIPPINGOPTIONISDEFAULT1=true&L_SHIPPINGOPTIONAMOUNT0=3.00&L_SHIPPINGOPTIONLABEL0=UPS Ground 7 Days&L_SHIPPINGOPTIONNAME0=Ground&L_SHIPPINGOPTIONISDEFAULT0=false&INSURANCEAMT=1.00&INSURANCEOPTIONOFFERED=true&CALLBACK=https://www.ppcallback.com/callback.pl&SHIPPINGAMT=8.00&SHIPDISCAMT=-3.00&TAXAMT=2.00&L_NUMBER0=1000&L_DESC0=Size: 8.8-oz&L_NUMBER1=10001&L_DESC1=Size: Two 24-piece boxes&L_ITEMWEIGHTVALUE1=0.5&L_ITEMWEIGHTUNIT1=lbs&ReturnUrl=".$returnURL."&CANCELURL=".$cancelURL ."&CURRENCYCODE=".$currencyCodeType."&PAYMENTACTION=".$paymentType; // $nvpstr="&REQCONFIRMSHIPPING=0&NOSHIPPING=1&PAYMENTREQUEST_0_CURRENCYCODE=".$this->currency."&PAYMENTREQUEST_0_AMT=".$orderamt."&PAYMENTREQUEST_0_ITEMAMT=".$orderamt."&PAYMENTREQUEST_0_PAYMENTACTION=Sale&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital&L_PAYMENTREQUEST_0_NAME0=Kitty&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_AMT0=150&RETURNURL=".$returnURL."&CANCELURL=".$cancelURL; $nvpstr = "&REQCONFIRMSHIPPING=0&NOSHIPPING=1&PAYMENTREQUEST_0_CURRENCYCODE=" . $this->currency . "&PAYMENTREQUEST_0_AMT=" . $orderamt . "&PAYMENTREQUEST_0_ITEMAMT=" . $orderamt . "&PAYMENTREQUEST_0_PAYMENTACTION=Sale" . $orders . "&RETURNURL=" . $returnURL . "&CANCELURL=" . $cancelURL; $nvpstr = $nvpHeader . $nvpstr; /* Make the call to PayPal to set the Express Checkout token 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); $_SESSION['reshash'] = $resArray; $ack = strtoupper($resArray["ACK"]); if($ack == "SUCCESS") { // Redirect to paypal.com here $token = urldecode($resArray["TOKEN"]); $payPalURL = $this->paypal_url . $token; header("Location: " . $payPalURL); return true; } else { return false; } } }