ushakovme / omnipay-sberbank
Sberbank 的 Omnipay 驱动程序
Requires
- php: ^7.1|^8
- omnipay/common: v3.0.3
Requires (Dev)
- omnipay/tests: ^3
- phpunit/phpunit: ^5.7|^6
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-10 20:09:52 UTC
README
简介
这是对 AndrewNovikof/omnipay-sberbank 的分支,增加了对 php8 的支持
这个库实现了通过 Sberbank 收单 API 使用 theleague Omnipay PHP 处理库进行工作的功能。它具有清晰且一致的 API,已经完全单元测试。
此软件包支持 PHP 7.1 及更高版本
下载
Composer
// This assumes that you have composer installed globally
composer require ushakovme/omnipay-sberbank
以最小稳定性解决问题的方法
添加到您的 composer.json 中
{ "minimum-stability":"dev", "prefer-stable": true }
简单示例
use Omnipay\Omnipay; // Setup payment gateway $gateway = Omnipay::create('Sberbank'); // Set params for authorize request $gateway->authorize( [ 'orderNumber' => $localOrderNumber, // local order number 'amount' => $order_amount, // The amount of payment (you can use decimal with 2 precisions for copecs or string equal to decimal) 'returnUrl' => $callback_url // succesfull callback url ] ); // Enable test mode $gateway->setTestMode(true); // You can set parameters via setters, for example: $gateway->setUserName('merchant_login') ->setPassword('merchant_password') ->setOrderNumber($localOrderNumber) ->setLanguage('en'); // Send request $response = $gateway->send(); // Process response if ($response->isSuccessful()) { // Payment was successful print_r($response); // Get gateway orderId $gatewayOrderId = $response->getOrderId(); // Get manualy get redirect url to offsite payment gateway $offsiteGateway = $response->getRedirectUrl(); } else { // Payment failed echo $response->getMessage(); } // Work with redirect if ($response->isRedirect()) { // Redirect to offsite payment gateway $response->redirect(); }
支付方式
无预授权订单注册
带预授权的订单注册
预授权后的订单完成
订单状态
扩展订单状态
取消订单
订单支付的退款
验证 3DS 中地图的参与
支付期间统计数据
将卡片添加到 SSL 卡列表
无预授权订单注册
有关此请求的更多信息,请参阅 Sberbank 官方 文档 -> 项目 1 或我们的源代码
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->authorize( [ 'orderNumber' => $localOrderNumber, // local order number 'amount' => $order_amount, // The amount of payment (you can use decimal with 2 precisions for copecs or string equal to decimal) 'returnUrl' => $callback_url, // succesfull callback url 'description' => 'Order Description' ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Payment was successful print_r($response); // Get gateway orderId $gatewayOrderId = $response->getOrderId(); // Get manualy get redirect url to offsite payment gateway $offsiteGateway = $response->getRedirectUrl(); } else { // Payment failed echo $response->getMessage(); } // Work with redirect if ($response->isRedirect()) { // Redirect to offsite payment gateway $response->redirect(); }
带预授权的订单注册
有关此请求的更多信息,请参阅 Sberbank 官方 文档 -> 项目 1 或我们的源代码
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->authorize( [ 'orderNumber' => $localOrderNumber, // local order number 'amount' => $order_amount, // The amount of payment (you can use decimal with 2 precisions for copecs or string equal to decimal) 'returnUrl' => $callback_url, // succesfull callback url 'description' => 'Order Description' ] )->setTwoStage(true) ->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Payment was successful print_r($response); // Get gateway orderId $gatewayOrderId = $response->getOrderId(); // Get manualy get redirect url to offsite payment gateway $offsiteGateway = $response->getRedirectUrl(); } else { // Payment failed echo $response->getMessage(); } // Work with redirect if ($response->isRedirect()) { // Redirect to offsite payment gateway $response->redirect(); }
预授权后的订单完成
有关此请求的更多信息,请参阅 Sberbank 官方 文档 -> 项目 2 或我们的源代码
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->capture( [ 'orderId' => $localOrderNumber, // gateway order number 'amount' => $order_amount, // The amount of payment (you can use decimal with 2 precisions for copecs or string equal to decimal) ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); } else { // Payment failed echo $response->getMessage(); }
订单状态
有关此请求的更多信息,请参阅 Sberbank 官方 文档 -> 项目 5 或我们的源代码
此方法适用于 Omnipay 的 completeAuthorize()
和 completePurchase()
请求。
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->orderStatus( // It will be similar to calling methods `completeAuthorize()` and `completePurchase()` [ 'orderId' => $localOrderNumber, // gateway order number 'language' => 'en' ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); // Get paid amount $paid_amount = $response->getAmount(); // Get other data $order_status = $response->getOrderStatus(); $order_number = $response->getOrderNumber(); $order_pan = $response->getPan(); $order_expiration = $response->getExpiration(); $order_cardholder_name = $response->getCardHolderName(); $order_currency = $response->getCurrency(); $order_approval_code = $response->getApprovalCode(); $order_ip = $response->getIp(); $order_client_id = $response->getClientId(); $order_binding_id = $response->getBindingId(); } else { // Payment failed echo $response->getMessage(); }
扩展订单状态
有关此请求的更多信息,请参阅 Sberbank 官方 文档 -> 项目 6 或我们的源代码
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->extendedOrderStatus( [ 'orderId' => $localOrderNumber, // gateway order number 'language' => 'en' ] )->setOrderNumber($localORderNumber) // You can set local orderNumber Instead of an orderId of gateway system ->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); // Get paid amount $paid_amount = $response->getAmount(); // Get other data $order_status = $response->getOrderStatus(); $order_number = $response->getOrderNumber(); $order_pan = $response->getPan(); $order_expiration = $response->getExpiration(); $order_cardholder_name = $response->getCardHolderName(); $order_currency = $response->getCurrency(); $order_approval_code = $response->getApprovalCode(); $order_ip = $response->getIp(); $order_client_id = $response->getClientId(); $order_binding_id = $response->getBindingId(); $order_merchant_order_params = $response->getMerchantOrderParams(); $order_eci = $response->getEci(); $order_cavv = $response->getCavv(); $order_xid = $response->getXid(); $order_auth_date_time = $response->getAuthDateTime(); $order_auth_ref_num = $response->getAuthRefNum(); $order_terminal_id = $response->getTerminalId(); $order_approved_amount = $response->getApprovedAmount(); $order_deposited_amount = $response->getDepositedAmount(); $order_refunded_amount = $response->getRefundedAmount(); $order_payment_state = $response->getPaymentState(); $order_bank_name = $response->getBankName(); $order_bank_country_code = $response->getBankCountryCode(); $order_band_country_name = $response->getBankCountryName(); } else { // Payment failed echo $response->getMessage(); }
取消订单
有关此请求的更多信息,请参阅 Sberbank 官方 文档 -> 项目 3 或我们的源代码
要请求取消订单的支付,请使用 reverse.do 请求。取消功能在支付后的一段时间内可用,具体条款应由银行规定。
取消操作只能执行一次。如果操作结束时出错,则重复的取消操作将失败。
此功能可在与银行协商后提供给商店。要执行取消操作,用户必须具有相应的权限。
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->void( [ 'orderId' => $localOrderNumber, // gateway order number 'language' => 'en' ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); } else { // Payment failed echo $response->getMessage(); }
订单支付的退款
有关此请求的更多信息,请参阅 Sberbank 官方 文档 -> 项目 4 或我们的源代码
对于此请求,资金将退还到指定订单的付款人。如果未扣除此订单的资金,则请求将以错误结束。系统允许您多次退还资金,但总额不得超过扣除的原金额。
要执行退款操作,您必须在系统中具有相应的权限。
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->refund( [ 'orderId' => $localOrderNumber, // gateway order number 'language' => 'en', 'amount' => $oder_amount // // The amount of payment (you can use decimal with 2 precisions for copecs or string equal to decimal) ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); } else { // Payment failed echo $response->getMessage(); }
验证 3DS 中地图的参与
关于此请求的更多内容,您可以在Sberbank官方文档中查看 -> 项目7或在我们提供的源代码中找到
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->verifyEnrollment( [ 'pan' => $cardPan ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); $emitter_country_name = $response->getEmitterName(); $emitter_country_code = $response->getEmitterCountryCode(); $enrolled = $response->getEnrolled(); } else { // Payment failed echo $response->getMessage(); }
支付期间统计数据
关于此请求的更多内容,您可以在Sberbank官方文档中查看 -> 项目8或在我们提供的源代码中找到
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->getLastOrdersForMerchants( [ 'size' => $size, 'from' => $from, 'to' => $to, 'transactionStates' => $transactionStates, 'merchants' => $merchants ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); $total_count = $response->getTotalCount(); $page = $response->getPage(); $page_size = $response->getPageSize(); // Available getters $response->getOrderErrorCode($orderIndex); $response->getOrderNumber($orderIndex); $response->getOrderStatus($orderIndex); $response->getActionCode($orderIndex); $response->getActionCodeDescription($orderIndex); $response->getAmount($orderIndex); $response->getCurrency($orderIndex); $response->getDate($orderIndex); $response->getOrderDescription($orderIndex); $response->getIp($orderIndex); $response->getMerchantOrderParamName($orderIndex, $paramIndex); $response->getMerchantOrderParamValue($orderIndex, $paramIndex); $response->getAttributesName($orderIndex, $attributeIndex); $response->getAttributesValue($orderIndex, $attributeIndex); $response->getExpiration($orderIndex); $response->getCardholderName($orderIndex); $response->getApprovalCode($orderIndex); $response->getPan($orderIndex); $response->getClientId($orderIndex); $response->getBindingId($orderIndex); $response->getAuthDateTime($orderIndex); $response->getTerminalId($orderIndex); $response->getAuthRefNum($orderIndex); $response->getPaymentState($orderIndex); $response->getApprovedAmount($orderIndex); $response->getDepositedAmount($orderIndex); $response->getRefundedAmount($orderIndex); $response->getBankName($orderIndex); $response->getBankCountryName($orderIndex); $response->getBankCountryCode($orderIndex); } else { // Payment failed echo $response->getMessage(); }
将卡片添加到 SSL 卡列表
关于此请求的更多内容,您可以在Sberbank官方文档中查看 -> 项目9或在我们提供的源代码中找到
use Omnipay\Omnipay; $gateway = Omnipay::create('Sberbank'); $response = $gateway->verifyEnrollment( [ 'mdorder' => $mdorder ] )->setUserName('merchant_login') ->setPassword('merchant_password') ->send(); // Process response if ($response->isSuccessful()) { // Get response code $code = $response->getCode(); } else { // Payment failed echo $response->getMessage(); }