gnurlan/laravel-gopay-sdk

Laravel框架与GoPay SDK集成

v0.1.5 2017-08-09 14:12 UTC

This package is auto-updated.

Last update: 2024-09-23 20:34:14 UTC


README

Build Status Scrutinizer Latest Stable Version Total Downloads Packagist

文档

安装

步骤 1:安装包

通过执行以下命令将包添加到您的composer.json中。

composer require gnurlan/laravel-gopay-sdk

这将同时更新composer.json并将包安装到vendor/目录中。

接下来,将服务提供者和外观添加到config/app.php

将服务提供者添加到providers

'providers' => [
    ...
    Gnurlan\LaravelGoPaySDK\GopayServiceProvider::class,
    ...
]

并将外观添加到aliases

'aliases' => [
    ...
    'GoPay' => Gnurlan\LaravelGoPaySDK\Facade::class,
    ...
]

步骤 2:配置

首先运行以下命令初始化配置文件

php artisan vendor:publish

使用此命令初始化配置并修改位于config/gopay.php下的创建的文件。

配置

return [
    'goid' => 'YOUR_GOID',
    'clientId' => 'YOUR_CLIENT_ID',
    'clientSecret' => 'YOUR_CLIENT_SECRET',
    'defaultScope' => 'ALL', //GoPay\Definition\TokenScope Constants
    'languages' => [
        'en' => 'ENGLISH',
        'sk' => 'SLOVAK',
        'cs' => 'CZECH'
    ], //Map Laravel languages to GoPay\Definition\Language Constants
    'timeout' => 30
];

功能

语言

包将自动通过App::getLocale()转换设置GoPay语言,并按照您的gopay.php语言配置转换为适当的gopay lang格式。当应用程序返回GoPay中不存在的locale时,包将使用应用程序回退locale转换为GoPay语言格式。您还可以通过调用GoPay Facade上的函数lang($locale)来修改语言。参数可以是GoPay Language常量名称、值或您映射到GoPay lang的Laravel locale。

\GoPay::lang(GoPay\Definition\Languages::SLOVAK)
//or just
\GoPay::lang('sk')
//or
\GoPay::lang('SLOVAK')->createPayment(...);

作用域

包将使用默认Scope作为初始GoPay连接的作用域。当然,您可以通过调用GoPay Facade上的函数scope($new_scope)在运行时更改作用域。参数可以是GoPay TokenScope常量名称或值。

\GoPay::scope(GoPay\Definition\TokenScope::ALL) //Override default scope
//or
\GoPay::scope('ALL')->createPayment(...);

缓存访问令牌

包通过Laravel Cache缓存访问令牌,持续时间为配置的超时分钟数。

记录Http通信

您可以使用log函数记录GoPay向api发出的每个Http请求和响应。日志只有一个参数,带有闭包函数。以下是一些示例

\GoPay::log(function($request, $response){
    \Log::info("{$request->method} {$request->url} -> {$response->statusCode}");
})->lang($user->locale)
    ->scope('ALL')
    ->refundPayment(...);

事件

示例

Event::listen(\Gnurlan\LaravelGoPaySDK\Events\PaymentCreated::class, function ($event) {
    dd($event->payment);
});

官方SDK的所有方法均有效

https://doc.gopay.com/en/?php#establishment-of-payment

只需在GoPay Facade上调用它们。

对于任何pull requestsissue reports,我们将非常高兴😉

示例

创建标准支付

use GoPay;
use GoPay\Definition\Payment\Currency;
use GoPay\Definition\Payment\PaymentInstrument;
use GoPay\Definition\Payment\BankSwiftCode;

//This will log every http request to the GoPay api
GoPay::log(function($request, $response){
    \PC::gp_request($request); //PHP Console package
    \PC::gp_response($response); //PHP Console package
    //Or Laravel Log
    \Log::info("{$request->method} {$request->url} -> {$response->statusCode}");
});

$user = \Auth::user();
$response = GoPay::lang($user->locale)->scope('CREATE_PAYMENT')->createPayment([
    'payer' => [
        'default_payment_instrument' => PaymentInstrument::BANK_ACCOUNT,
        'allowed_payment_instruments' => [PaymentInstrument::BANK_ACCOUNT],
        'default_swift' => BankSwiftCode::FIO_BANKA,
        'allowed_swifts' => [BankSwiftCode::FIO_BANKA, BankSwiftCode::MBANK],
        'contact' => [
            'first_name' => 'Zbynek',
            'last_name' => 'Zak',
            'email' => 'test@test.cz',
            'phone_number' => '+420777456123',
            'city' => 'C.Budejovice',
            'street' => 'Plana 67',
            'postal_code' => '373 01',
            'country_code' => 'CZE',
        ],
    ],
    'amount' => 1000,
    'currency' => Currency::CZECH_CROWNS,
    'order_number' => '001',
    'order_description' => 'pojisteni01',
    'items' => [
        ['name' => 'item01', 'amount' => 50],
        ['name' => 'item02', 'amount' => 100],
    ],
    'additional_params' => [
        array('name' => 'invoicenumber', 'value' => '2015001003')
    ],
    'callback' => [
        'return_url' => 'http://www.your-url.tld/return',
        'notification_url' => 'http://www.your-url.tld/notify'
    ]
]);

if ($response->hasSucceed()) {
    $url = $response->json['gw_url'];
    echo $response;
}

许可证

版权所有(c)2017 Haze s.r.o MIT许可。