forksoft/laravel-primepayments

为Laravel提供的PrimePayments支付解决方案

dev-master 2023-04-07 10:59 UTC

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方法

使用

  1. 生成支付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。

  1. 处理来自PrimePayments的请求
PrimePayments::handle(Request $request)

重要

您必须在config/primepayments.php中定义回调以搜索订单并保存已支付的订单。

'searchOrder' => null  // PrimePaymentsController@searchOrder(Request $request)
'paidOrder' => null  // PrimePaymentsController@paidOrder(Request $request, $order)

示例

处理方案

  1. 请求来自primepayments.ru的GET/POST http://yourproject.com/primepayments/result(带有参数)。
  2. 函数PrimePaymentsController@handlePayment运行验证过程(自动验证请求参数)。
  3. 将调用searchOrder方法(请参阅config/primepayments.php中的searchOrder)以通过唯一ID搜索订单。
  4. 如果当前订单状态不是您的数据库中的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)。请参阅许可文件以获取更多信息。