futureecom / omnipay-stripe
Stripe Payment Intents driver for the Omnipay payment processing library.
Requires
- php: ^8.3
- ext-json: *
- moneyphp/money: ^3.2
- 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
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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.