Example #1
0
 /**
  * Function to process the form
  *
  * @access public
  * @return None
  */
 function postProcess()
 {
     // get the submitted form values.
     $params = $this->controller->exportValues($this->_name);
     $params['currencyID'] = 'USD';
     $params['payment_action'] = 'Sale';
     $this->set('amount', $params['amount']);
     require_once 'CRM/Utils/Payment/PayPal.php';
     $paypal =& CRM_Utils_Payment_PayPal::singleton();
     //get the button name
     $buttonName = $this->controller->getButtonName();
     if ($buttonName == $this->_expressButtonName) {
         $this->set('donationMode', 'express');
         $donateURL = CRM_Utils_System::url('civicrm/contribute', '_qf_Contribute_display=1');
         $params['cancelURL'] = CRM_Utils_System::url('civicrm/contribute/donate', '_qf_Contribute_display=1', true, null, false);
         $params['returnURL'] = CRM_Utils_System::url('civicrm/contribute/donate', '_qf_Confirm_display=1&rfp=1', true, null, false);
         $token = $paypal->setExpressCheckout($params);
         $this->set('token', $token);
         $paypalURL = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token={$token}";
         CRM_Utils_System::redirect($paypalURL);
     } else {
         $this->set('contributeMode', 'direct');
         $params['country'] = 'US';
         $params['year'] = $params['credit_card_exp_date']['Y'];
         $params['month'] = $params['credit_card_exp_date']['M'];
         $params['ip_address'] = $_SERVER['REMOTE_ADDR'];
         $paypal->doDirectPayment($params);
         exit;
     }
 }
Example #2
0
 /**
  * This function collects all the information from a web/api form and invokes
  * the relevant payment processor specific functions to perform the transaction
  *
  * @param  array $params assoc array of input parameters for this transaction
  *
  * @return array the result in an nice formatted array (or an error object)
  * @public
  */
 function doDirectPayment(&$params)
 {
     if (!$this->_caller) {
         return CRM_Utils_Payment_PayPal::error();
     }
     $orderTotal =& Services_PayPal::getType('BasicAmountType');
     if (Services_PayPal::isError($orderTotal)) {
         return CRM_Utils_Payment_PayPal::error($orderTotal);
     }
     $orderTotal->setattr('currencyID', $params['currencyID']);
     $orderTotal->setval($params['amount'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $payerName =& Services_PayPal::getType('PersonNameType');
     if (Services_PayPal::isError($payerName)) {
         return CRM_Utils_Payment_PayPal::error($payerName);
     }
     $payerName->setLastName($params['last_name'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $payerName->setMiddleName($params['middle_name'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $payerName->setFirstName($params['first_name'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $address =& Services_PayPal::getType('AddressType');
     if (Services_PayPal::isError($address)) {
         return CRM_Utils_Payment_PayPal::error($address);
     }
     $address->setStreet1($params['street_address'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $address->setCityName($params['city'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $address->setStateOrProvince($params['state_province'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $address->setPostalCode($params['postal_code'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $address->setCountry($params['country'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $cardOwner =& Services_PayPal::getType('PayerInfoType');
     if (Services_PayPal::isError($cardOwner)) {
         return CRM_Utils_Payment_PayPal::error($cardOwner);
     }
     $cardOwner->setPayer($params['email']);
     $cardOwner->setAddress($address);
     $cardOwner->setPayerCountry($params['country'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $cardOwner->setPayerName($payerName);
     $creditCard =& Services_PayPal::getType('CreditCardDetailsType');
     if (Services_PayPal::isError($creditCard)) {
         return CRM_Utils_Payment_PayPal::error($creditCard);
     }
     $creditCard->setCardOwner($cardOwner);
     $creditCard->setCVV2($params['cvv2'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $creditCard->setExpYear($params['year'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $creditCard->setExpMonth($params['month'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $creditCard->setCreditCardNumber($params['credit_card_number'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $creditCard->setCreditCardType($params['credit_card_type'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $doDirectPaymentRequestDetails =& Services_PayPal::getType('DoDirectPaymentRequestDetailsType');
     $paymentDetails =& Services_PayPal::getType('PaymentDetailsType');
     if (Services_PayPal::isError($paymentDetails)) {
         return CRM_Utils_Payment_PayPal::error($paymentDetails);
     }
     $paymentDetails->setOrderTotal($orderTotal);
     $paymentDetails->setInvoiceID($params['invoiceID'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $shipToAddress = $address;
     $shipToAddress->setName($params['first_name'] . ' ' . $params['last_name']);
     $paymentDetails->setShipToAddress($shipToAddress);
     if (Services_PayPal::isError($doDirectPaymentRequestDetails)) {
         return CRM_Utils_Payment_PayPal::error($doDirectPaymentRequestDetails);
     }
     $doDirectPaymentRequestDetails->setCreditCard($creditCard);
     $doDirectPaymentRequestDetails->setPaymentDetails($paymentDetails);
     $doDirectPaymentRequestDetails->setIPAddress($params['ip_address'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $doDirectPaymentRequestDetails->setPaymentAction($params['payment_action'], CRM_UTILS_PAYMENT_PAYPAL_CHARSET);
     $doDirectPayment =& Services_PayPal::getType('DoDirectPaymentRequestType');
     if (Services_PayPal::isError($doDirectPayment)) {
         return CRM_Utils_Payment_PayPal::error($doDirectPayment);
     }
     $doDirectPayment->setDoDirectPaymentRequestDetails($doDirectPaymentRequestDetails);
     $result = $this->_caller->DoDirectPayment($doDirectPayment);
     if (Services_PayPal::isError($result)) {
         return CRM_Utils_Payment_PayPal::error($result);
     }
     /* Check for application errors */
     $result =& CRM_Utils_Payment_PayPal::checkResult($result);
     if (is_a($result, 'CRM_Core_Error')) {
         return $result;
     }
     /* Success */
     $params['trxn_id'] = $result->TransactionID;
     $params['gross_amount'] = CRM_Utils_Payment_PayPal::getAmount($result->Amount);
     return $params;
 }