cognito/payum_stripe_elements
最新稳定版本:1.3.0
Composer 安装命令:
composer require cognito/payum_stripe_elements
包简介
The Payum Stripe Elements payment module
关键字:
README 文档
README
The Payum extension to purchase through Stripe using Elements
Install and Use
To install, it's easiest to use composer:
composer require cognito/payum_stripe_elements
Build the config
<?php use Payum\Core\PayumBuilder; use Payum\Core\GatewayFactoryInterface; $defaultConfig = []; $payum = (new PayumBuilder) ->addGatewayFactory('stripe_elements', function(array $config, GatewayFactoryInterface $coreGatewayFactory) { return new \Cognito\PayumStripeElements\StripeElementsGatewayFactory($config, $coreGatewayFactory); }) ->addGateway('stripe_elements', [ 'factory' => 'stripe_elements', 'publishable_key' => 'Your Public Key', 'secret_key' => 'Your Private Key', 'img_url' => 'https://path/to/logo/image.jpg', 'img_2_url' => 'https://path/to/logo/pay_by_image.jpg', ]) ->getPayum() ;
Request card 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' => [ 'email' => $email, // Used for the customer to be able to save payment details ], 'limit_payment_type' => 'card', // Optionally limit to card transactions only, to disable Afterpay / Klarna / Zip etc. 'payment_method_options' => [ 'layout' => 'tabs', 'paymentMethodOrder' => [ 'apple_pay', 'google_pay', 'card', ], // Optionally re-order the wallets to be before card if they apply to the transaction 'defaultValues' => [ 'billingDetails' => [ 'name' => $customer_name, 'email' => $customer_email, ], // Optionally prefill some fields for some payment types ], ], ]); $storage->setInternalDetails($payment, $request); $captureToken = $payum->getTokenFactory()->createCaptureToken('stripe_elements', $payment, 'done.php'); $url = $captureToken->getTargetUrl(); header("Location: " . $url); die();
Request Afterpay, Klarna, Affirm, Zip etc payment
BNPL requires more information about the customer to process the 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' => [ 'email' => $email, // Used for the customer to be able to save payment details ], 'limit_payment_type' => 'afterpay_clearpay,klarna,affirm,zip', // List of payment types at https://stripe.com/docs/api/payment_methods/object#payment_method_object-type 'shipping' => [ 'name' => 'Firstname Lastname', 'address' => [ 'line1' => 'Address Line 1', 'city' => 'Address City', 'state' => 'Address State', 'country' => 'Address Country', 'postal_code' => 'Address Postal Code', ], ], 'billing' => [ 'name' => trim($shopper['first_name'] . ' ' . $shopper['last_name']), 'email' => $shopper['email'], 'address' => [ 'line1' => 'Address Line 1', 'city' => 'Address City', 'state' => 'Address State', 'country' => 'Address Country', 'postal_code' => 'Address Postal Code', ], ], ]); $storage->setInternalDetails($payment, $request); $captureToken = $payum->getTokenFactory()->createCaptureToken('stripe_elements', $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 Stripe Elements is released under the MIT License.
统计信息
- 总下载量: 1.85k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-03-21