Newer
Older
<?php
/*
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC. All rights reserved. |
| |
| This work is published under the GNU AGPLv3 license with some |
| permitted exceptions and without any warranty. For full license |
| and copyright information, see https://civicrm.org/licensing |
+--------------------------------------------------------------------+
*/
use CRM_Stripe_ExtensionUtil as E;
/**
* @param array $spec
*/
function _civicrm_api3_stripe_importsubscription_spec(&$spec) {
$spec['subscription']['title'] = E::ts('Stripe Subscription ID');
$spec['subscription']['type'] = CRM_Utils_Type::T_STRING;
$spec['subscription']['api.required'] = TRUE;
$spec['contact_id']['title'] = E::ts('Contact ID');
$spec['contact_id']['description'] = E::ts('If not specified this will be determined from the "customer" on the subscription - a StripeCustomer record must exist in CiviCRM');
$spec['contact_id']['type'] = CRM_Utils_Type::T_INT;
$spec['ppid']['title'] = E::ts('Payment Processor ID');
$spec['ppid']['type'] = CRM_Utils_Type::T_INT;
$spec['ppid']['api.required'] = TRUE;
$spec['recur_id']['title'] = E::ts('Contribution Recur ID');
$spec['recur_id']['type'] = CRM_Utils_Type::T_INT;
$spec['contribution_id']['title'] = E::ts('Contribution ID');
$spec['contribution_id']['type'] = CRM_Utils_Type::T_INT;
$spec['membership_id']['title'] = E::ts('Membership ID');
$spec['membership_id']['type'] = CRM_Utils_Type::T_INT;
$spec['membership_auto']['title'] = E::ts('Link to existing membership automatically');
$spec['membership_auto']['type'] = CRM_Utils_Type::T_BOOLEAN;
$spec['membership_auto']['api.default'] = TRUE;
$spec['financial_type_id'] = [
'title' => E::ts('Financial Type ID'),
'type' => CRM_Utils_Type::T_STRING,
'pseudoconstant' => [
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
],
'api.default' => 1,
];
$spec['payment_instrument_id'] = [
'title' => E::ts('Payment Instrument ID'),
'type' => CRM_Utils_Type::T_STRING,
'api.default' => 1,
];
$spec['contribution_source'] = [
'title' => 'Contribution Source (optional description for contribution)',
'type' => CRM_Utils_Type::T_STRING,
];
$spec['is_email_receipt']['title'] = E::ts('Send Email Receipt (default: no)');
$spec['is_email_receipt']['type'] = CRM_Utils_Type::T_BOOLEAN;
$spec['is_email_receipt']['api.default'] = FALSE;
/**
* API to import a stripe subscription, create a customer, recur, contribution and optionally link to membership
* You run it once for each subscription and it creates/updates a recurring contribution in civicrm (and optionally links it to a membership).
*
* @param array $params
*
* @return array
* @throws \API_Exception
* @throws \CRM_Core_Exception
* @throws \CiviCRM_API3_Exception
* @throws \Stripe\Exception\ApiErrorException
*/
function civicrm_api3_stripe_importsubscription($params) {
$importer = new \Civi\StripeImport\Subscription();
$importer->setPaymentProcessorID($params['ppid']);
$importer->setStripeSubscriptionID($params['subscription']);
if (!empty($params['contact_id'])) {
$importer->setContactID($params['contact_id']);
}
if (!empty($params['recur_id'])) {
$importer->setContributionRecurID($params['recur_id']);
}
$importer->setEmailReceipt($params['is_email_receipt']);
if (!empty($params['membership_id'])) {
$importer->setMembershipID($params['membership_id']);
}
$importer->setMembershipAuto($params['membership_auto']);
$importer->setFinancialTypeID($params['financial_type_id']);
$importer->setPaymentInstrumentID($params['payment_instrument_id']);