Skip to main content
Version: 2.0

Payments - Overview

Parthenon comes with a Payment system that currently supports Stripe.

Setup

Add the Parthenon to the symfony routing.

parthenon_payments_controllers:
prefix: /
resource: ../../vendor/parthenon/parthenon/src/Payments/Controller/
type: annotation

Setup the Parthenon configuration for payments.

NameTypeDescription
enabledBooleanTo define if the payment module is enabled.
providerstringWhat payment provider is to use.
stripe.private_api_keyStringThe private Stripe API key.
stripe.public_api_keyStringThe publishable Stripe API key.
stripe.success_urlstringThe URL that the user should be sent to by Stripe when they've paid.
stripe.cancel_urlstringThe URL that the user should be sent to when they cancel
success_redirect_routestringThe name of the symony route the user should be redirected to upon success
pricesarrayThe prices

Prices

Prices for plans are defined using an array that has the name of the plan and the payment schedule

parthenon:
payments:
enabled: true
provider: stripe
subscriber_type: team
stripe:
private_api_key: '%env(resolve:STRIPE_PRIVATE_API_KEY)%'
public_api_key: '%env(resolve:STRIPE_PUBLIC_API_KEY)%'
success_url: "%env(resolve:APPLICATION_URL)%/api/payments/success/{CHECKOUT_SESSION_ID}"
cancel_url: "%env(resolve:APPLICATION_URL)%/api/payments/cancel"
prices:
basic: # plan name
monthly: stripe_price_id # payment schedule
yearly: stripe_price_id
standard:
monthly: stripe_price_id
yearly: stripe_price_id

Controllers

There are controller endpoints that will allow you to use stripe

GET /payments/plans/checkout/{planName}/{paymentSchedule}

Returns the checkout id that is to be used with the Stripe JS library to forward to a Stripe hosted checkout.

{
'id': 'id-given-by-stripe'
}

GET /payments/success/{checkoutId}

The endpoint to be hit when the user has successfully paid. This will mark the subscriber as paid.

POST /payments/plans/change/{planName}/{paymentSchedule}

{
'success': true,
'plan': {
'plan_name' 'plan name',
'payment_schedule': 'monthly',
'status': 'active'
}
}

GET /payments/cancel

The controller that the user will be redirected to when they cancel from the checkout.