peyman136 / snapp-pay
分期付款网关,SnappPay
dev-main
2024-08-12 07:27 UTC
Requires
- php: ^8.1
- ext-curl: *
- spatie/laravel-package-tools: ^1.12
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
This package is auto-updated.
Last update: 2024-09-12 07:45:51 UTC
README
支付网关,SnappPay
这是一个为 SnappPay 支付网关设计的 Laravel 扩展包。本扩展包支持 Laravel 10 及以上版本。
安装
您可以通过 composer 安装此包
composer require Peyman136/snapp-pay
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="snapp-pay-config"
这是发布配置文件的内容
return [ /** * Basic information for SnappPay; obtain this information from SnappPay support. */ 'settings' => [ 'user_name' => env('SNAPPPAY_USERNAME', ''), 'password' => env('SNAPPPAY_PASSWORD', ''), 'client_id' => env('SNAPPPAY_CLIENT_ID', ''), 'client_secret' => env('SNAPPPAY_CLIENT_SECRET', ''), 'base_url' => env('SNAPPPAY_BASE_URL', ''), ], /** * Endpoints and methods of SnappPay * These endpoints are defined by SnappPay; edit it if you need. */ 'endpoints' => [ 'bearer_token' => [ 'url' => env('SNAPPPAY_BEARER_TOKEN_URL', 'api/online/v1/oauth/token'), 'method' => env('SNAPPPAY_BEARER_TOKEN_METHODE', 'POST'), ], 'merchant_eligible' => [ 'url' => env('SNAPPPAY_MERCHANT_ELIGIBLE_URL', 'api/online/offer/v1/eligible'), 'method' => env('SNAPPPAY_MERCHANT_ELIGIBLE_METHODE', 'GET'), ], 'payment_token' => [ 'url' => env('SNAPPPAY_PAYMENT_TOKEN_URL', 'api/online/payment/v1/token'), 'method' => env('SNAPPPAY_PAYMENT_TOKEN_METHODE', 'POST'), ], 'payment_verify' => [ 'url' => env('SNAPPPAY_PAYMENT_VERIFY_URL', 'api/online/payment/v1/verify'), 'method' => env('SNAPPPAY_PAYMENT_VERIFY_METHODE', 'POST'), ], 'payment_settle' => [ 'url' => env('SNAPPPAY_PAYMENT_SETTLE_URL', 'api/online/payment/v1/settle'), 'method' => env('SNAPPPAY_PAYMENT_SETTLE_METHODE', 'POST'), ], 'payment_revert' => [ 'url' => env('SNAPPPAY_PAYMENT_REVERT_URL', '/api/online/payment/v1/revert'), 'method' => env('SNAPPPAY_PAYMENT_REVERT_METHODE', 'POST'), ], 'payment_cancel' => [ 'url' => env('SNAPPPAY_PAYMENT_CANCEL_URL', 'api/online/payment/v1/cancel'), 'method' => env('SNAPPPAY_PAYMENT_CANCEL_METHODE', 'POST'), ], 'payment_update' => [ 'url' => env('SNAPPPAY_PAYMENT_UPDATE_URL', 'api/online/payment/v1/update'), 'method' => env('SNAPPPAY_PAYMENT_UPDATE_METHODE', 'POST'), ], 'payment_status' => [ 'url' => env('SNAPPPAY_PAYMENT_STATUS_URL', 'api/online/payment/v1/status'), 'method' => env('SNAPPPAY_PAYMENT_STATUS_METHODE', 'GET'), ], ], ];
使用方法
// You can make manual settings as follows // $snappPaySetting = SnappPaySetting::credentials( // 'user', // 'pass', // 'clientId', // 'secretSecret', // 'baseUrl' // ); // $snappPay = new SnappPay($snappPaySetting); // get setting from env or config file snapp-pay $snappPay = new SnappPay(); $order = new Order(123, 153000, 170000, 10000, 0, Currency::TOMAN, '09121231111'); $category = new ProductCategory('Electronics', 2); $orderProduct1 = new OrderProduct(1, 'Product 1', 10000, 9000, 2, $category); $orderProduct2 = new OrderProduct(2, 'Product 2', 50000, 45000, 3, $category); // You can add the amount of each product to the total price and price of the order as follows // $order->addProduct($orderProduct1, true); // $order->addProduct($orderProduct2, true); $order->addProduct($orderProduct1); $order->addProduct($orderProduct2); // Check isMerchantEligible $merchantEligible = $snappPay->isMerchantEligible($order->getPrice(), Currency::TOMAN); // Check response $merchantEligible // Get paymentToken $paymentToken = $snappPay->getPaymentToken($order, 'https://example.com/payment/succsses/'.$order->getId(), now()); // Check response $paymentToken // Verify order $resultVerify = $snappPay->verifyOrder($this->order->getPaymentToken()); // Check response $resultVerify // Revert order $resultRevert = $snappPay->revertOrder($this->order->getPaymentToken()); // Check response $resultRevert // Settle order $resultSettle = $snappPay->settleOrder($this->order->getPaymentToken()); // Check response $resultSettle // Remove product from order $order->removeProduct(2,true); // Update order $resultUpdate = $snappPay->updateOrder($order); // Check response $resultUpdate // Cancel order $resultCancel = $snappPay->cancelOrder($order->getPaymentToken()); // Check response $resultCancel
有关其工作方式的更多信息,请参考以下示例。
https://github.com/Peyman136/laravel-snapp-pay-example
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查阅 我们的安全策略 了解如何报告安全漏洞。
致谢
许可协议
MIT 许可协议 (MIT)。请参阅 许可文件 了解更多信息。