Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Passing correct user reference when creating a subscription #15

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
Changelog
=========
## Unreleased

### Fixed
- Passing user id integer instead of user element when creating a subscription. ([#12](https://github.com/craftcms/commerce-stripe/commit/61090bedfa9efe40f23c57a77c25cb3e50d50438))

### Added
- Subscription Form model which supports coupon, prorate, and metadata [Subscription Arguments](https://stripe.com/docs/api#create_subscription) ([#14](https://github.com/craftcms/commerce-stripe/issues/14))

## 1.0.2

Expand Down
15 changes: 10 additions & 5 deletions src/gateways/Gateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
use craft\commerce\models\payments\BasePaymentForm;
use craft\commerce\models\PaymentSource;
use craft\commerce\models\subscriptions\CancelSubscriptionForm as BaseCancelSubscriptionForm;
use craft\commerce\models\subscriptions\SubscriptionForm;
use craft\commerce\models\subscriptions\SubscriptionForm as BaseSubscriptionForm;
use craft\commerce\stripe\models\forms\SubscriptionForm;
use craft\commerce\models\subscriptions\SubscriptionPayment;
use craft\commerce\models\subscriptions\SwitchPlansForm;
use craft\commerce\models\Transaction;
Expand Down Expand Up @@ -449,7 +450,7 @@ public function getSubscriptionFormHtml(): string
/**
* @inheritdoc
*/
public function getSubscriptionFormModel(): SubscriptionForm
public function getSubscriptionFormModel(): BaseSubscriptionForm
{
return new SubscriptionForm();
}
Expand Down Expand Up @@ -709,10 +710,11 @@ public function refund(Transaction $transaction): RequestResponseInterface
* @inheritdoc
* @throws SubscriptionException if there was a problem subscribing to the plan
*/
public function subscribe(User $user, BasePlan $plan, SubscriptionForm $parameters): SubscriptionResponseInterface
public function subscribe(User $user, BasePlan $plan, BaseSubscriptionForm $parameters): SubscriptionResponseInterface
{
/** @var SubscriptionForm $parameters */
try {
$stripeCustomer = $this->_getStripeCustomer($user);
$stripeCustomer = $this->_getStripeCustomer($user->getId());
} catch (CustomerException $exception) {
Craft::warning($exception->getMessage(), 'stripe');

Expand All @@ -729,7 +731,10 @@ public function subscribe(User $user, BasePlan $plan, SubscriptionForm $paramete
$subscription = StripeSubscription::create([
'customer' => $stripeCustomer->id,
'items' => [['plan' => $plan->reference]],
'trial_period_days' => $parameters->trialDays
'trial_period_days' => $parameters->trialDays,
'coupon' => $parameters->coupon,
'prorate' => $parameters->prorate,
'metadata' => $parameters->metadata
]);
} catch (\Throwable $exception) {
Craft::warning($exception->getMessage(), 'stripe');
Expand Down
53 changes: 53 additions & 0 deletions src/models/forms/SubscriptionForm.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php
/**
* @link https://craftcms.com/
* @copyright Copyright (c) Pixel & Tonic, Inc.
* @license MIT
*/

namespace craft\commerce\stripe\models\forms;

use craft\commerce\models\subscriptions\SubscriptionForm as BaseSubscriptionForm;

/**
* Class SubscriptionForm
*
* @author Pixel & Tonic, Inc. <[email protected]>
* @since 2.0
*/
class SubscriptionForm extends BaseSubscriptionForm
{
/**
* Metadata for the subscription.
*
* @var array
*/
public $metadata = [];

/**
* Coupon to apply to the subscription.
*
* @var string
*/
public $coupon;

/**
* Prorate the subscription.
*
* @var bool
*/
public $prorate = true;

/**
* @inheritdoc
*/
public function rules()
{
return array_merge(
parent::rules(),
[
[['prorate'], 'boolean']
]
);
}
}