Merge pull request #9762 from fuzionnz/CRM-19793-payment_processor_exception_redirect
[civicrm-core.git] / api / v3 / Contribution.php
index be9656c681cb7c215f526a3a933697a2e63b16ca..85817f66038c6af1652a2c35a1b4efc53ce163aa 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 4.7                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2016                                |
+ | Copyright CiviCRM LLC (c) 2004-2017                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -382,8 +382,8 @@ function civicrm_api3_contribution_transact($params) {
  * @throws Exception
  */
 function civicrm_api3_contribution_sendconfirmation($params) {
-  $input = $ids = $values = array();
-  $passThroughParams = array(
+  $ids = $values = array();
+  $allowedParams = array(
     'receipt_from_email',
     'receipt_from_name',
     'receipt_update',
@@ -392,11 +392,7 @@ function civicrm_api3_contribution_sendconfirmation($params) {
     'receipt_text',
     'payment_processor_id',
   );
-  foreach ($passThroughParams as $key) {
-    if (isset($params[$key])) {
-      $input[$key] = $params[$key];
-    }
-  }
+  $input = array_intersect_key($params, array_flip($allowedParams));
   CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $params['id'], $values);
 }
 
@@ -532,7 +528,7 @@ function _civicrm_api3_contribution_completetransaction_spec(&$params) {
   $params['trxn_date'] = array(
     'title' => 'Transaction Date',
     'description' => 'Date this transaction occurred',
-    'type' => CRM_Utils_Type::T_DATE,
+    'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
   );
 }
 
@@ -548,8 +544,9 @@ function _civicrm_api3_contribution_completetransaction_spec(&$params) {
  * @param array $params
  *   Input parameters.
  *
- * @throws API_Exception
+ * @return array
  *   Api result array.
+ * @throws API_Exception
  */
 function civicrm_api3_contribution_repeattransaction(&$params) {
   $input = $ids = array();
@@ -568,6 +565,10 @@ function civicrm_api3_contribution_repeattransaction(&$params) {
       'A valid original contribution ID is required', 'invalid_data');
   }
   $original_contribution = clone $contribution;
+  $input['payment_processor_id'] = civicrm_api3('contributionRecur', 'getvalue', array(
+    'return' => 'payment_processor_id',
+    'id' => $contribution->contribution_recur_id,
+  ));
   try {
     if (!$contribution->loadRelatedObjects($input, $ids, TRUE)) {
       throw new API_Exception('failed to load related objects');
@@ -679,7 +680,7 @@ function _civicrm_api3_contribution_repeattransaction_spec(&$params) {
   $params['receive_date'] = array(
     'title' => 'Contribution Receive Date',
     'name' => 'receive_date',
-    'type' => CRM_Utils_Type::T_DATE,
+    'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
     'api.default' => 'now',
   );
   $params['trxn_id'] = array(