cognito / payum_laybuy
The Payum Laybuy payment module
1.0.2
2021-08-29 04:25 UTC
Requires
- payum/core: ^1.5
Requires (Dev)
- payum/core: ^1.5
- php-http/guzzle6-adapter: ^1.0
README
The Payum extension to purchase through Laybuy
Install and Use
To install, it's easiest to use composer:
composer require cognito/payum_laybuy
Build the config
<?php use Payum\Core\PayumBuilder; use Payum\Core\GatewayFactoryInterface; $defaultConfig = []; $payum = (new PayumBuilder) ->addGatewayFactory('laybuy', function(array $config, GatewayFactoryInterface $coreGatewayFactory) { return new \Cognito\PayumLaybuy\LaybuyGatewayFactory($config, $coreGatewayFactory); }) ->addGateway('laybuy', [ 'factory' => 'laybuy', 'merchantId' => 'Your merchant Id', 'authenticationKey' => 'Your Authentication Key', 'sandbox' => true, ]) ->getPayum() ;
Request payment
<?php use Payum\Core\Request\Capture; $storage = $payum->getStorage(\Payum\Core\Model\Payment::class); $request = [ 'invoice_id' => 100, ]; $payment = $storage->create(); $payment->setNumber(uniqid()); $payment->setCurrencyCode($currency); $payment->setTotalAmount(100); // Total cents $payment->setDescription(substr($description, 0, 45)); $payment->setDetails([ 'local' => [ ], 'merchant_reference' => 'MYREF', 'shopper' => [ 'first_name' => '', 'last_name'] => '', 'email' => '', 'phone' => '', 'billing_address' => [ 'line1' => '', 'line2' => '', 'city' => '', 'postal_code' => '', 'country' => '', ], ], 'order' => [ 'shipping' => [ 'address' => [ 'line1' => '', 'line2' => '', 'city' => '', 'postal_code' => '', 'country' => '', ], 'items' => [ [ 'name' => 'Product 1', 'amount' => 49.95, 'quantity' => 2, ], [ 'name' => 'Shipping', 'amount' => 9.95, 'quantity' => 1, ], ], ], ]); $storage->setInternalDetails($payment, $request); $captureToken = $payum->getTokenFactory()->createCaptureToken('laybuy', $payment, 'done.php'); $url = $captureToken->getTargetUrl(); header("Location: " . $url); die();
Check it worked
<?php /** @var \Payum\Core\Model\Token $token */ $token = $payum->getHttpRequestVerifier()->verify($request); $gateway = $payum->getGateway($token->getGatewayName()); /** @var \Payum\Core\Storage\IdentityInterface $identity **/ $identity = $token->getDetails(); $model = $payum->getStorage($identity->getClass())->find($identity); $gateway->execute($status = new GetHumanStatus($model)); /** @var \Payum\Core\Request\GetHumanStatus $status */ // using shortcut if ($status->isNew() || $status->isCaptured() || $status->isAuthorized()) { // success } elseif ($status->isPending()) { // most likely success, but you have to wait for a push notification. } elseif ($status->isFailed() || $status->isCanceled()) { // the payment has failed or user canceled it. }
License
Payum Laybuy is released under the MIT License.