cognito / payum_cybersource
Payum Cybersource 可变令牌支付模块
1.0.0
2024-01-10 05:28 UTC
Requires
- cybersource/rest-client-php: ^0.0.40
- payum/core: ^1.5
Requires (Dev)
- payum/core: ^1.5
- php-http/guzzle6-adapter: ^1.0
README
通过 Cybersource 使用可变令牌进行购买的 Payum 扩展。使用 Flex Microform 满足较低的 PCI 合规性要求。
安装和使用
为了安装,最简单的方法是使用 composer
composer require cognito/payum_cybersource
构建配置
<?php use Payum\Core\PayumBuilder; use Payum\Core\GatewayFactoryInterface; $defaultConfig = []; $payum = (new PayumBuilder) ->addGatewayFactory('cybersource', function(array $config, GatewayFactoryInterface $coreGatewayFactory) { return new \Cognito\PayumCybersource\CybersourceGatewayFactory($config, $coreGatewayFactory); }) ->addGateway('cybersource', [ 'factory' => 'cybersource', 'merchant_id' => 'Merchant Id', 'access_key' => 'Merchant API Key', 'secret_key' => 'Merchant Secret Key', 'img_url' => 'https://path/to/logo/image.jpg', ]) ->getPayum() ;
请求卡支付
<?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 ], 'payment_reference' => 'INV-0001', 'billing' => [ 'first_name' => $shopper['first_name'], 'last_name' => $shopper['last_name'], 'email' => $shopper['email'], 'address' => [ 'line1' => $shopper['billing_address']['line1'], 'line2' => $shopper['billing_address']['line2'], 'city' => $shopper['billing_address']['city'], 'state' => $shopper['billing_address']['state'], 'country' => $shopper['billing_address']['country'], 'postal_code' => $shopper['billing_address']['postal_code'], ], ], 'payment_method_options' => [ 'defaultValues' => [ ], // Optionally prefill some fields for some payment types ], ]); $storage->setInternalDetails($payment, $request); $captureToken = $payum->getTokenFactory()->createCaptureToken('cybersource', $payment, 'done.php'); $url = $captureToken->getTargetUrl(); header("Location: " . $url); die();
检查是否成功
<?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. }
许可证
Payum Cybersource 在 MIT 许可证下发布。查看许可证.