futureecom / omnipay-stripe
Stripe Payment Intents driver for the Omnipay payment processing library.
Requires
- php: ^8.3
- ext-json: *
- omnipay/common: ^3.0
- stripe/stripe-php: ^16.0
Requires (Dev)
- laravel/pint: ^1.2
- omnipay/tests: ^4.1
- phpunit/phpunit: ^9.6
- symfony/var-dumper: ^5.0
README
Stripe Payment Intents gateway for the Omnipay payment processing library
This package implements Stripe Payment Intents support for Omnipay, backed by the official stripe/stripe-php SDK instead of the legacy Charges API used by omnipay/stripe.
Installation
Install the gateway using Composer:
composer require futureecom/omnipay-stripe
Configuration
Obtain your Stripe API keys from the Stripe Dashboard.
use Omnipay\Omnipay; $gateway = Omnipay::create('Stripe'); $gateway->setApiKey('sk_test_...'); $gateway->setPublishableKey('pk_test_...'); $gateway->setStripeVersion('2024-06-20'); // optional API version pin
Test mode is determined by the secret key prefix (sk_test_ / sk_live_), not a separate flag.
Supported gateway methods
| Method | Stripe API | Notes |
|---|---|---|
purchase |
Payment Intents (capture_method=automatic) |
Immediate capture |
authorize |
Payment Intents (capture_method=manual) |
Auth-only, capture later |
capture |
PaymentIntent capture or Charge capture | Accepts pi_* or legacy ch_* references |
completePurchase |
Payment Intents | Uses token/source stored as transactionReference |
refund |
Refunds API | Partial or full refund against charge |
void |
PaymentIntent cancel or full refund | Cancels uncaptured auth; refunds captured charge |
createCard |
Customers + Payment Methods | Returns legacy-shaped customer payload for platform compatibility |
Usage
Purchase
$response = $gateway->purchase([ 'amount' => '99.99', 'currency' => 'USD', 'paymentMethod' => 'pm_123', // preferred // or legacy: 'source' => 'tok_...', 'token' => 'tok_...' ])->send(); if ($response->isSuccessful()) { $chargeId = $response->getTransactionReference(); // ch_* }
Authorize and capture
$auth = $gateway->authorize([ 'amount' => '100.00', 'currency' => 'USD', 'paymentMethod' => 'pm_123', ])->send(); $capture = $gateway->capture([ 'transactionReference' => $auth->getTransactionReference(), ])->send();
Refund
$response = $gateway->refund([ 'transactionReference' => 'ch_123', 'amount' => '10.00', 'currency' => 'USD', ])->send();
Payment method inputs
The gateway accepts, in order of precedence:
paymentMethod—pm_*(preferred)source— legacy Card Element token (tok_*) or payment method idtoken— legacy purchase paramcardReference— stored card / payment method reference
Legacy tok_* values are converted server-side via PaymentMethod::create(['card' => ['token' => ...]]).
Transaction references
Successful payment/authorization responses return the charge id (ch_*) as getTransactionReference() so existing refunds, voids, and captures against stored references keep working.
Development
composer install
composer test
composer lint
License
This package is open-sourced software licensed under the MIT license.