Commit a47ed634 authored by mattwire's avatar mattwire

Use the parameter on the recurring contribution to decide whether to send out email receipts

parent e99172ec
...@@ -20,6 +20,13 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN { ...@@ -20,6 +20,13 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
// testing, we can properly test a failed recurring contribution. // testing, we can properly test a failed recurring contribution.
protected $verify_event = TRUE; protected $verify_event = TRUE;
/**
* Do we send an email receipt for each contribution?
*
* @var int
*/
protected $is_email_receipt = NULL;
// Properties of the event. // Properties of the event.
protected $event_type = NULL; protected $event_type = NULL;
protected $subscription_id = NULL; protected $subscription_id = NULL;
...@@ -57,6 +64,47 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN { ...@@ -57,6 +64,47 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
parent::__construct(); parent::__construct();
} }
/**
* Set the value of is_email_receipt to use when a new contribution is received for a recurring contribution
* This is used for the API Stripe.Ipn function. If not set, we respect the value set on the ContributionRecur entity.
*
* @param int $sendReceipt The value of is_email_receipt
*/
public function setSendEmailReceipt($sendReceipt) {
switch ($sendReceipt) {
case 0:
$this->is_email_receipt = 0;
break;
case 1:
$this->is_email_receipt = 1;
break;
default:
$this->is_email_receipt = 0;
}
}
/**
* Get the value of is_email_receipt to use when a new contribution is received for a recurring contribution
* This is used for the API Stripe.Ipn function. If not set, we respect the value set on the ContributionRecur entity.
*
* @return int
* @throws \CiviCRM_API3_Exception
*/
public function getSendEmailReceipt() {
if (isset($this->is_email_receipt)) {
return (int) $this->is_email_receipt;
}
if (!empty($this->contribution_recur_id)) {
$this->is_email_receipt = civicrm_api3('ContributionRecur', 'getvalue', [
'return' => ["is_email_receipt"],
'id' => $this->contribution_recur_id,
]);
}
return (int) $this->is_email_receipt;
}
/** /**
* Store input array on the class. * Store input array on the class.
* We override base because our input parameter is an object * We override base because our input parameter is an object
...@@ -236,7 +284,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN { ...@@ -236,7 +284,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
'trxn_id' => $this->charge_id, 'trxn_id' => $this->charge_id,
'total_amount' => $this->amount, 'total_amount' => $this->amount,
'fee_amount' => $this->fee, 'fee_amount' => $this->fee,
'is_email_receipt' => 0, 'is_email_receipt' => $this->getSendEmailReceipt(),
)); ));
} }
...@@ -391,7 +439,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN { ...@@ -391,7 +439,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
'net_amount' => $this->net_amount, 'net_amount' => $this->net_amount,
'fee_amount' => $this->fee, 'fee_amount' => $this->fee,
'payment_processor_id' => $this->_paymentProcessor['id'], 'payment_processor_id' => $this->_paymentProcessor['id'],
'is_email_receipt' => 0, 'is_email_receipt' => $this->getSendEmailReceipt(),
)); ));
} }
......
...@@ -23,6 +23,8 @@ function _civicrm_api3_stripe_Ipn_spec(&$spec) { ...@@ -23,6 +23,8 @@ function _civicrm_api3_stripe_Ipn_spec(&$spec) {
$spec['id']['title'] = ts("CiviCRM System Log id to replay from system log."); $spec['id']['title'] = ts("CiviCRM System Log id to replay from system log.");
$spec['evtid']['title'] = ts("An event id as generated by Stripe."); $spec['evtid']['title'] = ts("An event id as generated by Stripe.");
$spec['ppid']['title'] = ts("The payment processor to use (required if using evtid)"); $spec['ppid']['title'] = ts("The payment processor to use (required if using evtid)");
$spec['noreceipt']['title'] = ts("Set to 1 to override contribution page settings and do not send a receipt (default is off or 0). )");
$spec['noreceipt']['api.default'] = 0;
} }
/** /**
...@@ -77,6 +79,9 @@ function civicrm_api3_stripe_Ipn($params) { ...@@ -77,6 +79,9 @@ function civicrm_api3_stripe_Ipn($params) {
$_GET['processor_id'] = $ppid; $_GET['processor_id'] = $ppid;
$ipnClass = new CRM_Core_Payment_StripeIPN($object); $ipnClass = new CRM_Core_Payment_StripeIPN($object);
$ipnClass->main(); $ipnClass->main();
if ($params['noreceipt'] == 1) {
$ipnClass->setSendEmailReceipt(0);
}
} }
else { else {
trigger_error("The api depends on CRM_Core_Payment_StripeIPN"); trigger_error("The api depends on CRM_Core_Payment_StripeIPN");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment