From 909fe22f76f4277f2b9a6d460f3e7169249acbf2 Mon Sep 17 00:00:00 2001
From: Matthew Wire <mjw@mjwconsult.co.uk>
Date: Mon, 1 Jun 2020 16:29:08 +0100
Subject: [PATCH] Switch to contribution.repeattransaction and payment.create

---
 CRM/Core/Payment/StripeIPN.php         | 8 ++++----
 CRM/Stripe/Api.php                     | 2 +-
 CRM/Stripe/BAO/StripePaymentintent.php | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/CRM/Core/Payment/StripeIPN.php b/CRM/Core/Payment/StripeIPN.php
index a65b549d..01aea5fc 100644
--- a/CRM/Core/Payment/StripeIPN.php
+++ b/CRM/Core/Payment/StripeIPN.php
@@ -187,7 +187,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
         $this->amount = CRM_Stripe_Api::getObjectParam('amount', $this->_inputParameters->data->object);
         if ($this->contribution['contribution_status_id'] == $pendingStatusId) {
           $params = [
-            'id' => $this->contribution['id'],
+            'contribution_id' => $this->contribution['id'],
             'trxn_date' => $this->receive_date,
             'order_reference' => $this->invoice_id,
             'trxn_id' => $this->charge_id,
@@ -202,7 +202,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
           //   create a new contribution in CiviCRM
           $params = [
             'contribution_recur_id' => $this->contribution_recur_id,
-            'contribution_status_id' => 'Completed',
+            'contribution_status_id' => CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'),
             'receive_date' => $this->receive_date,
             'order_reference' => $this->invoice_id,
             'trxn_id' => $this->charge_id,
@@ -234,7 +234,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
         elseif ($this->contribution['trxn_id'] != $this->invoice_id) {
           $params = [
             'contribution_recur_id' => $this->contribution_recur_id,
-            'contribution_status_id' => 'Failed',
+            'contribution_status_id' => CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Failed'),
             'receive_date' => $this->receive_date,
             'order_reference' => $this->invoice_id,
             'trxn_id' => $this->charge_id,
@@ -312,7 +312,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
         $this->amount = CRM_Stripe_Api::getObjectParam('amount', $this->_inputParameters->data->object);
         if ($this->contribution['contribution_status_id'] == $pendingStatusId && empty($this->contribution['contribution_recur_id'])) {
           $params = [
-            'id' => $this->contribution['id'],
+            'contribution_id' => $this->contribution['id'],
             'trxn_date' => $this->receive_date,
             'order_reference' => $this->invoice_id ?? $this->charge_id,
             'trxn_id' => $this->charge_id,
diff --git a/CRM/Stripe/Api.php b/CRM/Stripe/Api.php
index 6f9040cf..21ed01e9 100644
--- a/CRM/Stripe/Api.php
+++ b/CRM/Stripe/Api.php
@@ -24,7 +24,7 @@ class CRM_Stripe_Api {
 
           case 'failure_message':
             return (string) $stripeObject->failure_message;
-            
+
           case 'amount':
             return (float) $stripeObject->amount / 100;
 
diff --git a/CRM/Stripe/BAO/StripePaymentintent.php b/CRM/Stripe/BAO/StripePaymentintent.php
index bd684ae5..10db0f25 100644
--- a/CRM/Stripe/BAO/StripePaymentintent.php
+++ b/CRM/Stripe/BAO/StripePaymentintent.php
@@ -80,7 +80,7 @@ class CRM_Stripe_BAO_StripePaymentintent extends CRM_Stripe_DAO_StripePaymentint
     $instance->flags = serialize($flags);
 
     $hook = empty($instance->id) ? 'create' : 'edit';
-    CRM_Utils_Hook::pre($hook, self::getEntityName(), CRM_Utils_Array::value('id', $params), $params);
+    CRM_Utils_Hook::pre($hook, self::getEntityName(), $params['id'] ?? NULL, $params);
     $instance->copyValues($params);
     $instance->save();
 
-- 
GitLab