当前位置: 首页>>代码示例>>PHP>>正文


PHP CRM_Contribute_Form_Contribution_Confirm::processFormContribution方法代码示例

本文整理汇总了PHP中CRM_Contribute_Form_Contribution_Confirm::processFormContribution方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Contribute_Form_Contribution_Confirm::processFormContribution方法的具体用法?PHP CRM_Contribute_Form_Contribution_Confirm::processFormContribution怎么用?PHP CRM_Contribute_Form_Contribution_Confirm::processFormContribution使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CRM_Contribute_Form_Contribution_Confirm的用法示例。


在下文中一共展示了CRM_Contribute_Form_Contribution_Confirm::processFormContribution方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: processSecondaryFinancialTransaction

 /**
  * Where a second separate financial transaction is supported we will process it here.
  *
  * @param int $contactID
  * @param CRM_Contribute_Form_Contribution_Confirm $form
  * @param array $tempParams
  * @param bool $isTest
  * @param array $lineItems
  * @param $minimumFee
  * @param int $financialTypeID
  *
  * @throws CRM_Core_Exception
  * @throws Exception
  * @return CRM_Contribute_BAO_Contribution
  */
 protected function processSecondaryFinancialTransaction($contactID, &$form, $tempParams, $isTest, $lineItems, $minimumFee, $financialTypeID)
 {
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $financialTypeID;
     $financialType->find(TRUE);
     $tempParams['amount'] = $minimumFee;
     $tempParams['invoiceID'] = md5(uniqid(rand(), TRUE));
     $isRecur = CRM_Utils_Array::value('is_recur', $tempParams);
     //assign receive date when separate membership payment
     //and contribution amount not selected.
     if ($form->_amount == 0) {
         $now = date('YmdHis');
         $form->_params['receive_date'] = $now;
         $receiveDate = CRM_Utils_Date::mysqlToIso($now);
         $form->set('params', $form->_params);
         $form->assign('receive_date', $receiveDate);
     }
     $form->set('membership_amount', $minimumFee);
     $form->assign('membership_amount', $minimumFee);
     // we don't need to create the user twice, so lets disable cms_create_account
     // irrespective of the value, CRM-2888
     $tempParams['cms_create_account'] = 0;
     //set this variable as we are not creating pledge for
     //separate membership payment contribution.
     //so for differentiating membership contribution from
     //main contribution.
     $form->_params['separate_membership_payment'] = 1;
     $contributionParams = array('contact_id' => $contactID, 'line_item' => $lineItems, 'is_test' => $isTest, 'campaign_id' => CRM_Utils_Array::value('campaign_id', $tempParams, CRM_Utils_Array::value('campaign_id', $form->_values)), 'contribution_page_id' => $form->_id, 'source' => CRM_Utils_Array::value('source', $tempParams, CRM_Utils_Array::value('description', $tempParams)));
     $isMonetary = !empty($form->_values['is_monetary']);
     if ($isMonetary) {
         if (empty($paymentParams['is_pay_later'])) {
             $contributionParams['payment_instrument_id'] = $form->_paymentProcessor['payment_instrument_id'];
         }
     }
     $membershipContribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($form, $tempParams, $tempParams, $contributionParams, $financialType, TRUE, $form->_bltID, $isRecur);
     $result = array();
     if ($form->_values['is_monetary'] && !$form->_params['is_pay_later'] && $minimumFee > 0.0) {
         // At the moment our tests are calling this form in a way that leaves 'object' empty. For
         // now we compensate here.
         if (empty($form->_paymentProcessor['object'])) {
             $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor);
         } else {
             $payment = $form->_paymentProcessor['object'];
         }
         $result = $payment->doPayment($tempParams, 'contribute');
         $form->set('membership_trx_id', $result['trxn_id']);
         $form->assign('membership_trx_id', $result['trxn_id']);
     }
     return array($membershipContribution, $result);
 }
开发者ID:hyebahi,项目名称:civicrm-core,代码行数:65,代码来源:Confirm.php

示例2: processCreditCard


//.........这里部分代码省略.........
     } else {
         $this->_params['invoiceID'] = $this->_params['invoice_id'];
     }
     // At this point we've created a contact and stored its address etc
     // all the payment processors expect the name and address to be in the
     // so we copy stuff over to first_name etc.
     $paymentParams = $this->_params;
     $paymentParams['contactID'] = $contactID;
     CRM_Core_Payment_Form::mapParams($this->_bltID, $this->_params, $paymentParams, TRUE);
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $params['financial_type_id'];
     $financialType->find(TRUE);
     // Add some financial type details to the params list
     // if folks need to use it.
     $paymentParams['contributionType_name'] = $this->_params['contributionType_name'] = $financialType->name;
     $paymentParams['contributionPageID'] = NULL;
     if (!empty($this->_params['is_email_receipt'])) {
         $paymentParams['email'] = $this->userEmail;
         $paymentParams['is_email_receipt'] = 1;
     } else {
         $paymentParams['is_email_receipt'] = 0;
         $this->_params['is_email_receipt'] = 0;
     }
     if (!empty($this->_params['receive_date'])) {
         $paymentParams['receive_date'] = $this->_params['receive_date'];
     }
     $this->_params['receive_date'] = $now;
     if (!empty($this->_params['is_email_receipt'])) {
         $this->_params['receipt_date'] = $now;
     } else {
         $this->_params['receipt_date'] = CRM_Utils_Date::processDate($this->_params['receipt_date'], $params['receipt_date_time'], TRUE);
     }
     $this->set('params', $this->_params);
     $this->assign('receive_date', $this->_params['receive_date']);
     // Result has all the stuff we need
     // lets archive it to a financial transaction
     if ($financialType->is_deductible) {
         $this->assign('is_deductible', TRUE);
         $this->set('is_deductible', TRUE);
     }
     $contributionParams = array('contact_id' => $contactID, 'line_item' => $lineItem, 'is_test' => $isTest, 'campaign_id' => CRM_Utils_Array::value('campaign_id', $this->_params), 'contribution_page_id' => CRM_Utils_Array::value('contribution_page_id', $this->_params), 'source' => CRM_Utils_Array::value('source', $paymentParams, CRM_Utils_Array::value('description', $paymentParams)), 'thankyou_date' => CRM_Utils_Array::value('thankyou_date', $this->_params));
     if (empty($paymentParams['is_pay_later'])) {
         // @todo look up payment_instrument_id on payment processor table.
         $contributionParams['payment_instrument_id'] = 1;
     }
     $contribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($this, $this->_params, NULL, $contributionParams, $financialType, FALSE, $this->_bltID, CRM_Utils_Array::value('is_recur', $this->_params));
     $paymentParams['contributionID'] = $contribution->id;
     $paymentParams['contributionTypeID'] = $contribution->financial_type_id;
     $paymentParams['contributionPageID'] = $contribution->contribution_page_id;
     $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
     if ($paymentParams['amount'] > 0.0) {
         // force a re-get of the payment processor in case the form changed it, CRM-7179
         // NOTE - I expect this is obsolete.
         $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor);
         try {
             $statuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id');
             $result = $payment->doPayment($paymentParams, 'contribute');
             $this->assign('trxn_id', $result['trxn_id']);
             $contribution->trxn_id = $result['trxn_id'];
             /* Our scenarios here are
              *  1) the payment failed & an Exception should have been thrown
              *  2) the payment succeeded but the payment is not immediate (for example a recurring payment
              *     with a delayed start)
              *  3) the payment succeeded with an immediate payment.
              *
              * The doPayment function ensures that payment_status_id is always set
              * as historically we have had to guess from the context - ie doDirectPayment
              * = error or success, unless it is a recurring contribution in which case it is pending.
              */
             if ($result['payment_status_id'] == array_search('Completed', $statuses)) {
                 try {
                     civicrm_api3('contribution', 'completetransaction', array('id' => $contribution->id, 'trxn_id' => $result['trxn_id'], 'payment_processor_id' => $this->_paymentProcessor['id'], 'is_transactional' => FALSE, 'fee_amount' => CRM_Utils_Array::value('fee_amount', $result)));
                     // This has now been set to 1 in the DB - declare it here also
                     $contribution->contribution_status_id = 1;
                 } catch (CiviCRM_API3_Exception $e) {
                     if ($e->getErrorCode() != 'contribution_completed') {
                         throw new CRM_Core_Exception('Failed to update contribution in database');
                     }
                 }
             } else {
                 // Save the trxn_id.
                 $contribution->save();
             }
         } catch (PaymentProcessorException $e) {
             CRM_Contribute_BAO_Contribution::failPayment($contribution->id, $paymentParams['contactID'], $e->getMessage());
             throw new PaymentProcessorException($e->getMessage());
         }
     }
     // Send receipt mail.
     array_unshift($this->statusMessage, ts('The contribution record has been saved.'));
     if ($contribution->id && !empty($this->_params['is_email_receipt'])) {
         $this->_params['trxn_id'] = CRM_Utils_Array::value('trxn_id', $result);
         $this->_params['contact_id'] = $contactID;
         $this->_params['contribution_id'] = $contribution->id;
         if (CRM_Contribute_Form_AdditionalInfo::emailReceipt($this, $this->_params, TRUE)) {
             $this->statusMessage[] = ts('A receipt has been emailed to the contributor.');
         }
     }
     return $contribution;
 }
开发者ID:hyebahi,项目名称:civicrm-core,代码行数:101,代码来源:Contribution.php

示例3: submit


//.........这里部分代码省略.........
         $formValues['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($formValues);
         $formValues['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($formValues);
         $formValues['ip_address'] = CRM_Utils_System::ipAddress();
         $formValues['amount'] = $params['total_amount'];
         $formValues['currencyID'] = $config->defaultCurrency;
         $formValues['description'] = ts("Contribution submitted by a staff person using member's credit card for signup");
         $formValues['invoiceID'] = md5(uniqid(rand(), TRUE));
         $formValues['financial_type_id'] = $params['financial_type_id'];
         // at this point we've created a contact and stored its address etc
         // all the payment processors expect the name and address to be in the
         // so we copy stuff over to first_name etc.
         $paymentParams = $formValues;
         $paymentParams['contactID'] = $this->_contributorContactID;
         //CRM-10377 if payment is by an alternate contact then we need to set that person
         // as the contact in the payment params
         if ($this->_contributorContactID != $this->_contactID) {
             if (!empty($formValues['soft_credit_type_id'])) {
                 $softParams['contact_id'] = $params['contact_id'];
                 $softParams['soft_credit_type_id'] = $formValues['soft_credit_type_id'];
             }
         }
         if (!empty($formValues['send_receipt'])) {
             $paymentParams['email'] = $this->_contributorEmail;
         }
         CRM_Core_Payment_Form::mapParams($this->_bltID, $formValues, $paymentParams, TRUE);
         // CRM-7137 -for recurring membership,
         // we do need contribution and recurring records.
         $result = NULL;
         if (!empty($paymentParams['is_recur'])) {
             $financialType = new CRM_Financial_DAO_FinancialType();
             $financialType->id = $params['financial_type_id'];
             $financialType->find(TRUE);
             $this->_params = $formValues;
             $contribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($this, $paymentParams, NULL, array('contact_id' => $this->_contributorContactID, 'line_item' => $lineItem, 'is_test' => $isTest, 'campaign_id' => CRM_Utils_Array::value('campaign_id', $paymentParams), 'contribution_page_id' => CRM_Utils_Array::value('contribution_page_id', $formValues), 'source' => CRM_Utils_Array::value('source', $paymentParams, CRM_Utils_Array::value('description', $paymentParams)), 'thankyou_date' => CRM_Utils_Array::value('thankyou_date', $paymentParams), 'payment_instrument_id' => $this->_paymentProcessor['payment_instrument_id']), $financialType, TRUE, FALSE, $this->_bltID);
             //create new soft-credit record, CRM-13981
             if ($softParams) {
                 $softParams['contribution_id'] = $contribution->id;
                 $softParams['currency'] = $contribution->currency;
                 $softParams['amount'] = $contribution->total_amount;
                 CRM_Contribute_BAO_ContributionSoft::add($softParams);
             }
             $paymentParams['contactID'] = $this->_contactID;
             $paymentParams['contributionID'] = $contribution->id;
             $paymentParams['contributionTypeID'] = $contribution->financial_type_id;
             $paymentParams['contributionPageID'] = $contribution->contribution_page_id;
             $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
             $ids['contribution'] = $contribution->id;
             $params['contribution_recur_id'] = $paymentParams['contributionRecurID'];
         }
         if ($params['total_amount'] > 0.0) {
             $payment = $this->_paymentProcessor['object'];
             try {
                 $result = $payment->doPayment($paymentParams);
                 $formValues = array_merge($formValues, $result);
                 // Assign amount to template if payment was successful.
                 $this->assign('amount', $params['total_amount']);
             } catch (PaymentProcessorException $e) {
                 if (!empty($paymentParams['contributionID'])) {
                     CRM_Contribute_BAO_Contribution::failPayment($paymentParams['contributionID'], $this->_contactID, $e->getMessage());
                 }
                 if (!empty($paymentParams['contributionRecurID'])) {
                     CRM_Contribute_BAO_ContributionRecur::deleteRecurContribution($paymentParams['contributionRecurID']);
                 }
                 CRM_Core_Error::displaySessionError($result);
                 CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contact/view/membership', "reset=1&action=add&cid={$this->_contactID}&context=&mode={$this->_mode}"));
             }
开发者ID:utkarshsharma,项目名称:civicrm-core,代码行数:67,代码来源:Membership.php

示例4: processConfirm

 /**
  * Process payment after confirmation.
  *
  * @param CRM_Core_Form $form
  *   Form object.
  * @param array $paymentParams
  *   Array with payment related key.
  *   value pairs
  * @param int $contactID
  *   Contact id.
  * @param int $contributionTypeId
  *   Financial type id.
  * @param int|string $component component id
  * @param $isTest
  *
  * @throws CRM_Core_Exception
  * @throws Exception
  * @return array
  *   associated array
  *
  */
 public static function processConfirm(&$form, &$paymentParams, $contactID, $contributionTypeId, $component = 'contribution', $isTest)
 {
     CRM_Core_Payment_Form::mapParams($form->_bltID, $form->_params, $paymentParams, TRUE);
     $lineItems = $form->_lineItem;
     $isPaymentTransaction = self::isPaymentTransaction($form);
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $contributionTypeId;
     $financialType->find(TRUE);
     if ($financialType->is_deductible) {
         $form->assign('is_deductible', TRUE);
         $form->set('is_deductible', TRUE);
     }
     // add some financial type details to the params list
     // if folks need to use it
     //CRM-15297 - contributionType is obsolete - pass financial type as well so people can deprecate it
     $paymentParams['financialType_name'] = $paymentParams['contributionType_name'] = $form->_params['contributionType_name'] = $financialType->name;
     //CRM-11456
     $paymentParams['financialType_accounting_code'] = $paymentParams['contributionType_accounting_code'] = $form->_params['contributionType_accounting_code'] = CRM_Financial_BAO_FinancialAccount::getAccountingCode($contributionTypeId);
     $paymentParams['contributionPageID'] = $form->_params['contributionPageID'] = $form->_values['id'];
     $paymentParams['contactID'] = $form->_params['contactID'] = $contactID;
     //fix for CRM-16317
     $form->_params['receive_date'] = date('YmdHis');
     $form->assign('receive_date', CRM_Utils_Date::mysqlToIso($form->_params['receive_date']));
     if ($isPaymentTransaction) {
         // Fix for CRM-14354. If the membership is recurring, don't create a
         // civicrm_contribution_recur record for the additional contribution
         // (i.e., the amount NOT associated with the membership). Temporarily
         // cache the is_recur values so we can process the additional gift as a
         // one-off payment.
         if (!empty($form->_values['is_recur'])) {
             if ($form->_membershipBlock['is_separate_payment'] && !empty($form->_params['auto_renew'])) {
                 $cachedFormValue = CRM_Utils_Array::value('is_recur', $form->_values);
                 $cachedParamValue = CRM_Utils_Array::value('is_recur', $paymentParams);
                 unset($form->_values['is_recur']);
                 unset($paymentParams['is_recur']);
             }
         }
         $contributionParams = array('contact_id' => $contactID, 'line_item' => $lineItems, 'is_test' => $isTest, 'campaign_id' => CRM_Utils_Array::value('campaign_id', $paymentParams, CRM_Utils_Array::value('campaign_id', $form->_values)), 'contribution_page_id' => $form->_id, 'source' => CRM_Utils_Array::value('source', $paymentParams, CRM_Utils_Array::value('description', $paymentParams)));
         $isMonetary = !empty($form->_values['is_monetary']);
         if ($isMonetary) {
             if (empty($paymentParams['is_pay_later'])) {
                 // @todo look up payment_instrument_id on payment processor table.
                 $contributionParams['payment_instrument_id'] = 1;
             }
         }
         $contribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($form, $paymentParams, NULL, $contributionParams, $financialType, TRUE, TRUE, $form->_bltID);
         $paymentParams['contributionTypeID'] = $contributionTypeId;
         $paymentParams['item_name'] = $form->_params['description'];
         if ($contribution && $form->_values['is_recur'] && $contribution->contribution_recur_id) {
             $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
         }
         $paymentParams['qfKey'] = $form->controller->_key;
         if ($component == 'membership') {
             return array('contribution' => $contribution);
         }
         // restore cached values (part of fix for CRM-14354)
         if (!empty($cachedFormValue)) {
             $form->_values['is_recur'] = $cachedFormValue;
             $paymentParams['is_recur'] = $cachedParamValue;
         }
         $paymentParams['contributionID'] = $contribution->id;
         //CRM-15297 deprecate contributionTypeID
         $paymentParams['financialTypeID'] = $paymentParams['contributionTypeID'] = $contribution->financial_type_id;
         $paymentParams['contributionPageID'] = $contribution->contribution_page_id;
         if (isset($paymentParams['contribution_source'])) {
             $paymentParams['source'] = $paymentParams['contribution_source'];
         }
         if ($form->_values['is_recur'] && $contribution->contribution_recur_id) {
             $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
         }
         if ($form->_contributeMode && $form->_amount > 0.0) {
             try {
                 $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor);
                 if ($form->_contributeMode == 'notify') {
                     // We want to get rid of this & make it generic - eg. by making payment processing the last thing
                     // and always calling it first.
                     $form->postProcessHook();
                 }
                 $result = $payment->doPayment($paymentParams);
//.........这里部分代码省略.........
开发者ID:utkarshsharma,项目名称:civicrm-core,代码行数:101,代码来源:Utils.php

示例5: processCreditCard


//.........这里部分代码省略.........
     $this->_params['currencyID'] = CRM_Utils_Array::value('currency', $this->_params, CRM_Core_Config::singleton()->defaultCurrency);
     if (!empty($this->_params['receive_date'])) {
         $this->_params['receive_date'] = CRM_Utils_Date::processDate($this->_params['receive_date'], $this->_params['receive_date_time']);
     }
     if (!empty($params['soft_credit_to'])) {
         $this->_params['soft_credit_to'] = $params['soft_credit_to'];
         $this->_params['pcp_made_through_id'] = $params['pcp_made_through_id'];
     }
     $this->_params['pcp_display_in_roll'] = CRM_Utils_Array::value('pcp_display_in_roll', $params);
     $this->_params['pcp_roll_nickname'] = CRM_Utils_Array::value('pcp_roll_nickname', $params);
     $this->_params['pcp_personal_note'] = CRM_Utils_Array::value('pcp_personal_note', $params);
     //Add common data to formatted params
     CRM_Contribute_Form_AdditionalInfo::postProcessCommon($params, $this->_params, $this);
     if (empty($this->_params['invoice_id'])) {
         $this->_params['invoiceID'] = md5(uniqid(rand(), TRUE));
     } else {
         $this->_params['invoiceID'] = $this->_params['invoice_id'];
     }
     // At this point we've created a contact and stored its address etc
     // all the payment processors expect the name and address to be in the
     // so we copy stuff over to first_name etc.
     $paymentParams = $this->_params;
     $paymentParams['contactID'] = $contactID;
     CRM_Core_Payment_Form::mapParams($this->_bltID, $this->_params, $paymentParams, TRUE);
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $params['financial_type_id'];
     // Add some financial type details to the params list
     // if folks need to use it.
     $paymentParams['contributionType_name'] = $this->_params['contributionType_name'] = $financialType->name;
     $paymentParams['contributionPageID'] = NULL;
     if (!empty($this->_params['is_email_receipt'])) {
         $paymentParams['email'] = $this->userEmail;
         $paymentParams['is_email_receipt'] = 1;
     } else {
         $paymentParams['is_email_receipt'] = 0;
         $this->_params['is_email_receipt'] = 0;
     }
     if (!empty($this->_params['receive_date'])) {
         $paymentParams['receive_date'] = $this->_params['receive_date'];
     }
     $this->_params['receive_date'] = $now;
     if (!empty($this->_params['is_email_receipt'])) {
         $this->_params['receipt_date'] = $now;
     } else {
         $this->_params['receipt_date'] = CRM_Utils_Date::processDate($this->_params['receipt_date'], $params['receipt_date_time'], TRUE);
     }
     $this->set('params', $this->_params);
     $this->assign('receive_date', $this->_params['receive_date']);
     // Result has all the stuff we need
     // lets archive it to a financial transaction
     if ($financialType->is_deductible) {
         $this->assign('is_deductible', TRUE);
         $this->set('is_deductible', TRUE);
     }
     $contribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($this, $this->_params, NULL, $contactID, $financialType, TRUE, FALSE, $isTest, $lineItem, $this->_bltID);
     $paymentParams['contributionID'] = $contribution->id;
     $paymentParams['contributionTypeID'] = $contribution->financial_type_id;
     $paymentParams['contributionPageID'] = $contribution->contribution_page_id;
     $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
     if ($paymentParams['amount'] > 0.0) {
         // force a re-get of the payment processor in case the form changed it, CRM-7179
         // NOTE - I expect this is not obsolete.
         $payment = CRM_Core_Payment::singleton($this->_mode, $this->_paymentProcessor, $this, TRUE);
         try {
             $statuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id');
             $result = $payment->doPayment($paymentParams, 'contribute');
             $this->assign('trxn_id', $result['trxn_id']);
             $contribution->trxn_id = $result['trxn_id'];
             /* Our scenarios here are
              *  1) the payment failed & an Exception should have been thrown
              *  2) the payment succeeded but the payment is not immediate (for example a recurring payment
              *     with a delayed start)
              *  3) the payment succeeded with an immediate payment.
              *
              * The doPayment function ensures that contribution_status_id is always set
              * as historically we have had to guess from the context - ie doDirectPayment
              * = error or success, unless it is a recurring contribution in which case it is pending.
              */
             if (!isset($result['contribution_status_id']) || $result['contribution_status_id'] == array_search('Completed', $statuses)) {
                 civicrm_api3('contribution', 'completetransaction', array('id' => $contribution->id, 'trxn_id' => $result['trxn_id']));
             } else {
                 // Save the trxn_id.
                 $contribution->save();
             }
         } catch (PaymentProcessorException $e) {
             CRM_Contribute_BAO_Contribution::failPayment($contribution->id, $paymentParams['contactID'], $e->getMessage());
             throw new PaymentProcessorException($e->getMessage());
         }
     }
     // Send receipt mail.
     if ($contribution->id && !empty($this->_params['is_email_receipt'])) {
         $this->_params['trxn_id'] = CRM_Utils_Array::value('trxn_id', $result);
         $this->_params['contact_id'] = $contactID;
         $this->_params['contribution_id'] = $contribution->id;
         if (CRM_Contribute_Form_AdditionalInfo::emailReceipt($this, $this->_params, TRUE)) {
             $this->statusMessage[] = ts('A receipt has been emailed to the contributor.');
         }
     }
     return $contribution;
 }
开发者ID:vakeesan26,项目名称:civicrm-core,代码行数:101,代码来源:Contribution.php

示例6: processSecondaryFinancialTransaction

 /**
  * Where a second separate financial transaction is supported we will process it here.
  *
  * @param int $contactID
  * @param CRM_Contribute_Form_Contribution_Confirm $form
  * @param array $tempParams
  * @param bool $isTest
  * @param array $lineItems
  * @param $minimumFee
  * @param int $financialTypeID
  *
  * @throws CRM_Core_Exception
  * @throws Exception
  * @return CRM_Contribute_BAO_Contribution
  */
 protected function processSecondaryFinancialTransaction($contactID, &$form, $tempParams, $isTest, $lineItems, $minimumFee, $financialTypeID)
 {
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $financialTypeID;
     $financialType->find(TRUE);
     $tempParams['amount'] = $minimumFee;
     $tempParams['invoiceID'] = md5(uniqid(rand(), TRUE));
     $result = NULL;
     if ($form->_values['is_monetary'] && !$form->_params['is_pay_later'] && $minimumFee > 0.0) {
         // At the moment our tests are calling this form in a way that leaves 'object' empty. For
         // now we compensate here.
         if (empty($form->_paymentProcessor['object'])) {
             $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor);
         } else {
             $payment = $form->_paymentProcessor['object'];
         }
         $result = $payment->doPayment($tempParams, 'contribute');
     }
     //assign receive date when separate membership payment
     //and contribution amount not selected.
     if ($form->_amount == 0) {
         $now = date('YmdHis');
         $form->_params['receive_date'] = $now;
         $receiveDate = CRM_Utils_Date::mysqlToIso($now);
         $form->set('params', $form->_params);
         $form->assign('receive_date', $receiveDate);
     }
     $form->set('membership_trx_id', $result['trxn_id']);
     $form->set('membership_amount', $minimumFee);
     $form->assign('membership_trx_id', $result['trxn_id']);
     $form->assign('membership_amount', $minimumFee);
     // we don't need to create the user twice, so lets disable cms_create_account
     // irrespective of the value, CRM-2888
     $tempParams['cms_create_account'] = 0;
     //CRM-16165, scenarios are
     // 1) If contribution is_pay_later and if contribution amount is > 0.0 we set pending = TRUE, vice-versa FALSE
     // 2) If not pay later but auto-renewal membership is chosen then pending = TRUE as it later triggers
     //   pending recurring contribution, vice-versa FALSE
     $pending = $form->_params['is_pay_later'] ? $minimumFee > 0.0 ? TRUE : FALSE : (!empty($form->_params['auto_renew']) ? TRUE : FALSE);
     //set this variable as we are not creating pledge for
     //separate membership payment contribution.
     //so for differentiating membership contribution from
     //main contribution.
     $form->_params['separate_membership_payment'] = 1;
     $membershipContribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($form, $tempParams, $result, $contactID, $financialType, $pending, TRUE, $isTest, $lineItems, $form->_bltID);
     return $membershipContribution;
 }
开发者ID:rajeshrhino,项目名称:civicrm-core,代码行数:62,代码来源:Confirm.php

示例7: processConfirm

 /**
  * Process payment after confirmation.
  *
  * @param CRM_Core_Form $form
  *   Form object.
  * @param array $paymentParams
  *   Array with payment related key.
  *   value pairs
  * @param int $contactID
  *   Contact id.
  * @param int $contributionTypeId
  *   Financial type id.
  * @param int|string $component component id
  * @param bool $isTest
  * @param bool $isRecur
  *
  * @throws CRM_Core_Exception
  * @throws Exception
  * @return array
  *   associated array
  *
  */
 public static function processConfirm(&$form, &$paymentParams, $contactID, $contributionTypeId, $component = 'contribution', $isTest, $isRecur)
 {
     CRM_Core_Payment_Form::mapParams($form->_bltID, $form->_params, $paymentParams, TRUE);
     $lineItems = $form->_lineItem;
     $isPaymentTransaction = self::isPaymentTransaction($form);
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $contributionTypeId;
     $financialType->find(TRUE);
     if ($financialType->is_deductible) {
         $form->assign('is_deductible', TRUE);
         $form->set('is_deductible', TRUE);
     }
     // add some financial type details to the params list
     // if folks need to use it
     //CRM-15297 - contributionType is obsolete - pass financial type as well so people can deprecate it
     $paymentParams['financialType_name'] = $paymentParams['contributionType_name'] = $form->_params['contributionType_name'] = $financialType->name;
     //CRM-11456
     $paymentParams['financialType_accounting_code'] = $paymentParams['contributionType_accounting_code'] = $form->_params['contributionType_accounting_code'] = CRM_Financial_BAO_FinancialAccount::getAccountingCode($contributionTypeId);
     $paymentParams['contributionPageID'] = $form->_params['contributionPageID'] = $form->_values['id'];
     $paymentParams['contactID'] = $form->_params['contactID'] = $contactID;
     //fix for CRM-16317
     $form->_params['receive_date'] = date('YmdHis');
     $form->assign('receive_date', CRM_Utils_Date::mysqlToIso($form->_params['receive_date']));
     if ($isPaymentTransaction) {
         $contributionParams = array('id' => CRM_Utils_Array::value('contribution_id', $paymentParams), 'contact_id' => $contactID, 'line_item' => $lineItems, 'is_test' => $isTest, 'campaign_id' => CRM_Utils_Array::value('campaign_id', $paymentParams, CRM_Utils_Array::value('campaign_id', $form->_values)), 'contribution_page_id' => $form->_id, 'source' => CRM_Utils_Array::value('source', $paymentParams, CRM_Utils_Array::value('description', $paymentParams)));
         $isMonetary = !empty($form->_values['is_monetary']);
         if ($isMonetary) {
             if (empty($paymentParams['is_pay_later'])) {
                 // @todo look up payment_instrument_id on payment processor table.
                 $contributionParams['payment_instrument_id'] = 1;
             }
         }
         $contribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($form, $paymentParams, NULL, $contributionParams, $financialType, TRUE, $form->_bltID, $isRecur);
         $paymentParams['contributionTypeID'] = $contributionTypeId;
         $paymentParams['item_name'] = $form->_params['description'];
         $paymentParams['qfKey'] = $form->controller->_key;
         if ($component == 'membership') {
             return array('contribution' => $contribution);
         }
         $paymentParams['contributionID'] = $contribution->id;
         //CRM-15297 deprecate contributionTypeID
         $paymentParams['financialTypeID'] = $paymentParams['contributionTypeID'] = $contribution->financial_type_id;
         $paymentParams['contributionPageID'] = $contribution->contribution_page_id;
         if (isset($paymentParams['contribution_source'])) {
             $paymentParams['source'] = $paymentParams['contribution_source'];
         }
         if ($form->_values['is_recur'] && $contribution->contribution_recur_id) {
             $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
         }
         if (isset($paymentParams['contribution_source'])) {
             $form->_params['source'] = $paymentParams['contribution_source'];
         }
         // get the price set values for receipt.
         if ($form->_priceSetId && $form->_lineItem) {
             $form->_values['lineItem'] = $form->_lineItem;
             $form->_values['priceSetID'] = $form->_priceSetId;
         }
         $form->_values['contribution_id'] = $contribution->id;
         $form->_values['contribution_page_id'] = $contribution->contribution_page_id;
         if (!empty($form->_paymentProcessor)) {
             try {
                 $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor);
                 if ($form->_contributeMode == 'notify') {
                     // We want to get rid of this & make it generic - eg. by making payment processing the last thing
                     // and always calling it first.
                     $form->postProcessHook();
                 }
                 $result = $payment->doPayment($paymentParams);
                 $form->_params = array_merge($form->_params, $result);
                 $form->assign('trxn_id', CRM_Utils_Array::value('trxn_id', $result));
                 if (!empty($result['trxn_id'])) {
                     $contribution->trxn_id = $result['trxn_id'];
                 }
                 if (!empty($result['payment_status_id'])) {
                     $contribution->payment_status_id = $result['payment_status_id'];
                 }
                 $result['contribution'] = $contribution;
                 if ($result['payment_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'status_id', 'Pending') && $payment->isSendReceiptForPending()) {
//.........这里部分代码省略.........
开发者ID:kcristiano,项目名称:civicrm-core,代码行数:101,代码来源:Utils.php

示例8: processConfirm

 /**
  * Process payment after confirmation.
  *
  * @param CRM_Core_Form $form
  *   Form object.
  * @param array $paymentParams
  *   Array with payment related key.
  *   value pairs
  * @param array $premiumParams
  *   Array with premium related key.
  *   value pairs
  * @param int $contactID
  *   Contact id.
  * @param int $contributionTypeId
  *   Financial type id.
  * @param int|string $component component id
  * @param array $fieldTypes
  *   Presumably relates to custom field types - used when building data for sendMail.
  * @param $isTest
  * @param $isPayLater
  *
  * @throws CRM_Core_Exception
  * @throws Exception
  * @return array
  *   associated array
  *
  */
 public static function processConfirm(&$form, &$paymentParams, &$premiumParams, $contactID, $contributionTypeId, $component = 'contribution', $fieldTypes = NULL, $isTest, $isPayLater)
 {
     CRM_Core_Payment_Form::mapParams($form->_bltID, $form->_params, $paymentParams, TRUE);
     $lineItems = $form->_lineItem;
     $isPaymentTransaction = self::isPaymentTransaction($form);
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $contributionTypeId;
     $financialType->find(TRUE);
     if ($financialType->is_deductible) {
         $form->assign('is_deductible', TRUE);
         $form->set('is_deductible', TRUE);
     }
     // add some financial type details to the params list
     // if folks need to use it
     //CRM-15297 - contributionType is obsolete - pass financial type as well so people can deprecate it
     $paymentParams['financialType_name'] = $paymentParams['contributionType_name'] = $form->_params['contributionType_name'] = $financialType->name;
     //CRM-11456
     $paymentParams['financialType_accounting_code'] = $paymentParams['contributionType_accounting_code'] = $form->_params['contributionType_accounting_code'] = CRM_Financial_BAO_FinancialAccount::getAccountingCode($contributionTypeId);
     $paymentParams['contributionPageID'] = $form->_params['contributionPageID'] = $form->_values['id'];
     $payment = NULL;
     $paymentObjError = ts('The system did not record payment details for this payment and so could not process the transaction. Please report this error to the site administrator.');
     if ($isPaymentTransaction && !empty($form->_paymentProcessor)) {
         // @todo - remove this line once we are sure we can just use $form->_paymentProcessor['object'] consistently.
         $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor);
     }
     //fix for CRM-16317
     $form->_params['receive_date'] = date('YmdHis');
     $form->assign('receive_date', CRM_Utils_Date::mysqlToIso($form->_params['receive_date']));
     $result = NULL;
     if ($form->_contributeMode == 'notify' || $isPayLater) {
         // this is not going to come back, i.e. we fill in the other details
         // when we get a callback from the payment processor
         // also add the contact ID and contribution ID to the params list
         $paymentParams['contactID'] = $form->_params['contactID'] = $contactID;
         $contribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($form, $paymentParams, NULL, $contactID, $financialType, TRUE, TRUE, $isTest, $lineItems, $form->_bltID);
         if ($contribution) {
             $form->_params['contributionID'] = $contribution->id;
         }
         $form->_params['contributionTypeID'] = $contributionTypeId;
         $form->_params['item_name'] = $form->_params['description'];
         if ($contribution && $form->_values['is_recur'] && $contribution->contribution_recur_id) {
             $form->_params['contributionRecurID'] = $contribution->contribution_recur_id;
         }
         $form->set('params', $form->_params);
         $form->postProcessPremium($premiumParams, $contribution);
         if ($isPaymentTransaction) {
             // add qfKey so we can send to paypal
             $form->_params['qfKey'] = $form->controller->_key;
             if ($component == 'membership') {
                 return array('contribution' => $contribution);
             } else {
                 if (!$isPayLater) {
                     if (is_object($payment)) {
                         // call postProcess hook before leaving
                         $form->postProcessHook();
                         // this does not return
                         $result = $payment->doTransferCheckout($form->_params, 'contribute');
                     } else {
                         CRM_Core_Error::fatal($paymentObjError);
                     }
                 } else {
                     // follow similar flow as IPN
                     // send the receipt mail
                     $form->set('params', $form->_params);
                     if (isset($paymentParams['contribution_source'])) {
                         $form->_params['source'] = $paymentParams['contribution_source'];
                     }
                     // get the price set values for receipt.
                     if ($form->_priceSetId && $form->_lineItem) {
                         $form->_values['lineItem'] = $form->_lineItem;
                         $form->_values['priceSetID'] = $form->_priceSetId;
                     }
                     $form->_values['contribution_id'] = $contribution->id;
//.........这里部分代码省略.........
开发者ID:vakeesan26,项目名称:civicrm-core,代码行数:101,代码来源:Utils.php

示例9: processSecondaryFinancialTransaction

 /**
  * Where a second separate financial transaction is supported we will process it here.
  *
  * @param int $contactID
  * @param CRM_Contribute_Form_Contribution_Confirm $form
  * @param array $tempParams
  * @param bool $isTest
  * @param array $lineItems
  * @param $minimumFee
  * @param int $financialTypeID
  *
  * @throws CRM_Core_Exception
  * @throws Exception
  * @return CRM_Contribute_BAO_Contribution
  */
 public static function processSecondaryFinancialTransaction($contactID, &$form, $tempParams, $isTest, $lineItems, $minimumFee, $financialTypeID)
 {
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $financialTypeID;
     if (!$financialType->find(TRUE)) {
         CRM_Core_Error::fatal(ts("Could not find a system table"));
     }
     $tempParams['amount'] = $minimumFee;
     $tempParams['invoiceID'] = md5(uniqid(rand(), TRUE));
     $result = NULL;
     if ($form->_values['is_monetary'] && !$form->_params['is_pay_later'] && $minimumFee > 0.0) {
         $payment = CRM_Core_Payment::singleton($form->_mode, $form->_paymentProcessor, $form);
         if ($form->_contributeMode == 'express') {
             $result = $payment->doExpressCheckout($tempParams);
             if (is_a($result, 'CRM_Core_Error')) {
                 throw new CRM_Core_Exception(CRM_Core_Error::getMessages($result));
             }
         } else {
             $result = $payment->doPayment($tempParams, 'contribute');
         }
     }
     //assign receive date when separate membership payment
     //and contribution amount not selected.
     if ($form->_amount == 0) {
         $now = date('YmdHis');
         $form->_params['receive_date'] = $now;
         $receiveDate = CRM_Utils_Date::mysqlToIso($now);
         $form->set('params', $form->_params);
         $form->assign('receive_date', $receiveDate);
     }
     $form->set('membership_trx_id', $result['trxn_id']);
     $form->set('membership_amount', $minimumFee);
     $form->assign('membership_trx_id', $result['trxn_id']);
     $form->assign('membership_amount', $minimumFee);
     // we don't need to create the user twice, so lets disable cms_create_account
     // irrespective of the value, CRM-2888
     $tempParams['cms_create_account'] = 0;
     //CRM-16165, scenarios are
     // 1) If contribution is_pay_later and if contribution amount is > 0.0 we set pending = TRUE, vice-versa FALSE
     // 2) If not pay later but auto-renewal membership is chosen then pending = TRUE as it later triggers
     //   pending recurring contribution, vice-versa FALSE
     $pending = $form->_params['is_pay_later'] ? $minimumFee > 0.0 ? TRUE : FALSE : (!empty($form->_params['auto_renew']) ? TRUE : FALSE);
     //set this variable as we are not creating pledge for
     //separate membership payment contribution.
     //so for differentiating membership contribution from
     //main contribution.
     $form->_params['separate_membership_payment'] = 1;
     $membershipContribution = CRM_Contribute_Form_Contribution_Confirm::processFormContribution($form, $tempParams, $result, $contactID, $financialType, $pending, TRUE, $isTest, $lineItems, $form->_bltID);
     return $membershipContribution;
 }
开发者ID:vakeesan26,项目名称:civicrm-core,代码行数:65,代码来源:Membership.php


注:本文中的CRM_Contribute_Form_Contribution_Confirm::processFormContribution方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。