forksoft / laravel-primepayments
为Laravel提供的PrimePayments支付解决方案
dev-master
2023-04-07 10:59 UTC
Requires
- php: >=7.4
- guzzlehttp/guzzle: 7.*
- laravel/framework: 8.*
Requires (Dev)
- orchestra/testbench: 6.*
- phpunit/phpunit: ^9.3
This package is not auto-updated.
Last update: 2024-09-20 17:52:58 UTC
README
使用此Laravel框架包(primepayments.ru)通过PrimePayments接受支付。
- 只需添加两个回调即可接收支付
Laravel >= 8.*, PHP >= 7.3
安装
使用composer安装此包。
composer require forksoft/laravel-primepayments
如果您不使用自动发现,请将ServiceProvider添加到config/app.php中的providers数组
Forksoft\PrimePayments\PrimePaymentsServiceProvider::class,
将PrimePayments外观添加到您的facades数组中
'PrimePayments' => Forksoft\PrimePayments\Facades\PrimePayments::class,
使用发布命令将包配置复制到您的本地配置中
php artisan vendor:publish --provider="Forksoft\PrimePayments\PrimePaymentsServiceProvider"
配置
一旦发布配置文件,请编辑config/primepayments.php中的配置文件。
- 在primepayments.ru上创建一个账户
- 添加您的项目,复制project_id、secret_key和secret_key_second参数,并将其粘贴到config/primepayments.php中
- 配置发布后,编辑config/primepayments.php
- 为searchOrder和paidOrder设置回调静态函数
- 创建到您控制器的路由,并调用PrimePayments::handle方法
使用
- 生成支付URL或获取重定向
$sum = 100; // Payment`s sum $url = PrimePayments::getPayUrl($sum, $order_id, $email, $comment); $redirect = PrimePayments::redirectToPayUrl($sum, $order_id, $email, $comment);
您可以为支付添加自定义字段
$url = PrimePayments::getPayUrl($sum, $order_id, $email, $comment); $redirect = PrimePayments::redirectToPayUrl($sum, $order_id, $email, $comment);
$email和$phone可以为null。
- 处理来自PrimePayments的请求
PrimePayments::handle(Request $request)
重要
您必须在config/primepayments.php中定义回调以搜索订单并保存已支付的订单。
'searchOrder' => null // PrimePaymentsController@searchOrder(Request $request)
'paidOrder' => null // PrimePaymentsController@paidOrder(Request $request, $order)
示例
处理方案
- 请求来自primepayments.ru的GET/POST http://yourproject.com/primepayments/result(带有参数)。
- 函数PrimePaymentsController@handlePayment运行验证过程(自动验证请求参数)。
- 将调用searchOrder方法(请参阅config/primepayments.php中的searchOrder)以通过唯一ID搜索订单。
- 如果当前订单状态不是您的数据库中的order_payed,将调用paidOrder方法(请参阅config/primepayments.php中的paidOrder)。
将路由添加到routes/web.php
Route::get('/primepayments/result', 'PrimePaymentsController@handlePayment');
注意:不要忘记在primepayments.ru上保存您的完整路由URL(例如,http://example.com/primepayments/result)。
创建以下控制器:/app/Http/Controllers/PrimePaymentsController.php
class PrimePaymentsController extends Controller { /** * Search the order in your database and return that order * to paidOrder, if status of your order is 'order_payed' * * @param Request $request * @param $order_id * @return bool|mixed */ public function searchOrder(Request $request, $order_id) { $order = Order::where('id', $order_id)->first(); if($order) { $order['_orderSum'] = $order->sum; // If your field can be `order_payed` you can set them like string $order['_orderStatus'] = $order['status']; // Else your field doesn` has value like 'order_payed', you can change this value $order['_orderStatus'] = ('1' == $order['status']) ? 'order_payed' : false; return $order; } return false; } /** * When paymnet is check, you can paid your order * * @param Request $request * @param $order * @return bool */ public function paidOrder(Request $request, $order) { $order->status = 'order_payed'; $order->save(); // return true; } /** * Start handle process from route * * @param Request $request * @return mixed */ public function handlePayment(Request $request) { return PrimePayments::handle($request); } }
更新日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送给我mail@gmail.com,而不是使用问题跟踪器。
致谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。