PHP code example of jpmmartin / sylius-subscription-plugin
1. Go to this page and download the library: Download jpmmartin/sylius-subscription-plugin library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jpmmartin / sylius-subscription-plugin example snippets
use JpmMartin\SyliusSubscriptionPlugin\Entity\SubscriptionPlanAwareInterface;
use JpmMartin\SyliusSubscriptionPlugin\Entity\SubscriptionPlanAwareTrait;
use Sylius\Component\Core\Model\OrderItem as BaseOrderItem;
#[ORM\Entity]
#[ORM\Table(name: 'sylius_order_item')]
class OrderItem extends BaseOrderItem implements SubscriptionPlanAwareInterface
{
use SubscriptionPlanAwareTrait;
}
use JpmMartin\SyliusSubscriptionPlugin\Entity\SubscriptionInterface;
use JpmMartin\SyliusSubscriptionPlugin\Payment\CardUpdateProviderInterface;
final class StripeCardUpdateProvider implements CardUpdateProviderInterface
{
public function supports(SubscriptionInterface $subscription): bool
{
return 'STRIPE' === $subscription->getPaymentMethod()?->getCode();
}
public function getUrl(SubscriptionInterface $subscription): string
{
return '/account/stripe/cards'; // a page of your integration
}
}
use JpmMartin\SyliusSubscriptionPlugin\Entity\SubscriptionCycleInterface;
use JpmMartin\SyliusSubscriptionPlugin\Gate\CycleGateInterface;
use JpmMartin\SyliusSubscriptionPlugin\Gate\GateDecision;
use Psr\Clock\ClockInterface;
final class PrescriptionGate implements CycleGateInterface
{
public function __construct(private readonly ClockInterface $clock)
{
}
public function check(SubscriptionCycleInterface $cycle): GateDecision
{
if ($this->isPrescriptionValidFor($cycle)) {
return GateDecision::pass();
}
return GateDecision::wait($this->clock->now()->add(new \DateInterval('P5D')), 'Waiting for the prescriber.');
}
// ...
}
namespace App\Subscription;
use JpmMartin\SyliusSubscriptionPlugin\Entity\SubscriptionInterface;
use JpmMartin\SyliusSubscriptionPlugin\Event\RenewalUpcoming;
use JpmMartin\SyliusSubscriptionPlugin\Repository\SubscriptionRepositoryInterface;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
#[AsMessageHandler(bus: 'sylius.event_bus')]
final class TellTheCustomerAboutTheRenewal
{
/** @param SubscriptionRepositoryInterface<SubscriptionInterface> $subscriptions */
public function __construct(private readonly SubscriptionRepositoryInterface $subscriptions)
{
}
public function __invoke(RenewalUpcoming $event): void
{
$subscription = $this->subscriptions->find($event->subscriptionId);
if (!$subscription instanceof SubscriptionInterface) {
return;
}
// Email $subscription->getCustomer() that it renews on $event->scheduledAt, with your own sender.
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.