Last active
July 31, 2019 13:49
-
-
Save Brotzka/b243cda6be3cd12d846ea74bbac0480c to your computer and use it in GitHub Desktop.
FAAREN Stripe Fees
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Payment\Provider\Stripe\Subscriptions; | |
use App\DBEntities\Entities\SubsidiaryStripeUser; | |
use App\Helpers\Stripe\StripeHelper; | |
use Carbon\Carbon; | |
use Illuminate\Support\Collection; | |
use Payment\Abstracts\AbstractPSPSubscriptionCreator; | |
use Payment\Interfaces\Models\PSPSubscriptionModelInterface; | |
use Payment\Interfaces\PSPSubscriptionCreatorInterface; | |
use Payment\Interfaces\Worker\PSPSubscriptionWorkerInterface; | |
use Payment\Provider\Stripe\Models\StripeSubscription; | |
use Payment\Provider\Stripe\Traits\WorksWithStripeUsersTrait; | |
use Payment\Traits\BasicSubscriptionTrait; | |
use Stripe\Plan; | |
use Subscription\Database\Entities\Subscription; | |
class StripeSubscriptions implements PSPSubscriptionWorkerInterface | |
{ | |
use BasicSubscriptionTrait; | |
use WorksWithStripeUsersTrait; | |
public function create(Subscription $subscription, Carbon $startDate): PSPSubscriptionModelInterface | |
{ | |
// The platforms secret is set in another class | |
$plan = Plan::create([ | |
'amount' => $subscription->price * 100, | |
'interval' => 'month', | |
'product' => $subscription->vehicle->stripe_id, // | |
'currency' => 'eur', | |
'billing_scheme' => 'per_unit', | |
'nickname' => StripeHelper::getPlanName($subscription->vehicle, $subscription->bookedMileage) | |
],["stripe_account" => $subscription->subsidiary->stripe_id]); | |
$subscription->stripe_plan = $plan->id; | |
$subsidiaryStripeUser = $this->getStripeUser($subscription); | |
$stripeSubscription = \Stripe\Subscription::create([ | |
'customer' => $subsidiaryStripeUser->stripe_customer_id, | |
'application_fee_percent' => config('pricing.faaren_surcharge'), // = 12.5 | |
'billing' => 'charge_automatically', | |
'tax_percent' => 0, | |
'backdate_start_date' => $startDate->timestamp, | |
'billing_cycle_anchor' => $startDate->addMonth()->timestamp, | |
'items' => [ | |
['plan' => $plan->id] | |
], | |
'metadata' => [ | |
'Abo-ID' => $subscription->id, | |
'Fzg-ID' => $subscription->vehicle->id, | |
'Kunden-ID' => $subscription->consumer->id | |
] | |
], ["stripe_account" => $subscription->subsidiary->stripe_id]); | |
$subscription->stripe_id = $stripeSubscription->id; | |
$subscription->save(); | |
return new StripeSubscription(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment