Michael/laravelpagseguro

PagSeguro支付网关集成库。

1.0.6 2019-08-30 01:01 UTC

This package is auto-updated.

Last update: 2024-09-13 00:47:11 UTC


README

Build Status Total Downloads Latest Unstable Version License Code Climate Codacy Badge

laravel-pagseguro消耗PagSeguro API,并提供了一种简单的方式来生成支付和通知交易。

创建和配置用户

在您使用Laravel PagSeguro之前,请确保您的PagSeguro用户正确,以下是根据PagSeguro用户配置的URL:[https://pagseguro.uol.com.br/preferencias/integracoes.jhtml](https://pagseguro.uol.com.br/preferencias/integracoes.jhtml)

兼容性

PHP >= 5.4 Laravel 5.x

安装

打开文件 composer.json 并插入以下指令

"require": {
    "michael/laravelpagseguro": "dev-master"
}

注意:对于laravel 5.1或以下版本,请指定版本 0.4.1 而不是使用 dev-master

在require中插入Laravel PagSeguro后,您需要执行以下命令

composer update

或者执行以下命令

composer require michael/laravelpagseguro:dev-master

Service Provider配置

打开文件 config/app.php 并在数组 providers 中添加以下指令

laravel\pagseguro\Platform\Laravel5\ServiceProvider::class

Package别名

在您的 config/app.php 文件中,在数组 aliases 中添加以下指令

'PagSeguro' => laravel\pagseguro\Platform\Laravel5\PagSeguro::class

创建配置器

现在您将执行以下命令

php artisan vendor:publish

如果一切顺利,将显示以下消息

Copied File [/vendor/michael/laravelpagseguro/src/laravel/pagseguro/Config/laravelpagseguro.php] To [/config/laravelpagseguro.php]

调整配置

打开文件 config/laravelpagseguro.php 并更改 tokene-mail,提供您的商店信息

    'credentials' => array(//SETA AS CREDENCIAIS DE SUA LOJA
        'token' => null,
        'email' => null,
    )

代理

如果您需要代理来使用Laravel PagSeguro,请取消注释并配置http适配器的行

'http' => [
    'adapter' => [
        'type' => 'curl',
        'options' => [
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0,
            // CURLOPT_PROXY => 'http://user:pass@host:port', // PROXY OPTION <<--
        ]
    ],
],

发送购买请求示例

发送数组应构建如下结构

$data = [
    'items' => [
        [
            'id' => '18',
            'description' => 'Item Um',
            'quantity' => '1',
            'amount' => '1.15',
            'weight' => '45',
            'shippingCost' => '3.5',
            'width' => '50',
            'height' => '45',
            'length' => '60',
        ],
        [
            'id' => '19',
            'description' => 'Item Dois',
            'quantity' => '1',
            'amount' => '3.15',
            'weight' => '50',
            'shippingCost' => '8.5',
            'width' => '40',
            'height' => '50',
            'length' => '80',
        ],
    ],
    'shipping' => [
        'address' => [
            'postalCode' => '06410030',
            'street' => 'Rua Leonardo Arruda',
            'number' => '12',
            'district' => 'Jardim dos Camargos',
            'city' => 'Barueri',
            'state' => 'SP',
            'country' => 'BRA',
        ],
        'type' => 2,
        'cost' => 30.4,
    ],
    'sender' => [
        'email' => 'sender@gmail.com',
        'name' => 'Isaque de Souza Barbosa',
        'documents' => [
            [
                'number' => '01234567890',
                'type' => 'CPF'
            ]
        ],
        'phone' => [
            'number' => '985445522',
            'areaCode' => '11',
        ],
        'bornDate' => '1988-03-21',
    ]
];

获得数据后,使用 createFromArray 方法创建结账对象

$checkout = PagSeguro::checkout()->createFromArray($data);

要确认发送,请使用以下方式的 send 方法

$checkout = PagSeguro::checkout()->createFromArray($data);
$credentials = PagSeguro::credentials()->get();
$information = $checkout->send($credentials); // Retorna um objeto de laravel\pagseguro\Checkout\Information\Information
if ($information) {
    print_r($information->getCode());
    print_r($information->getDate());
    print_r($information->getLink());
}

提供手机充值元数据

// ....
$data['cellphone_charger'] = '+5511980810000';
$checkout = PagSeguro::checkout()->createFromArray($data);

提供旅行数据元数据

// ....
$data['travel'] = [
  'passengers' => [
      [
          'name' => 'Isaque de Souza',
          'cpf' => '40404040411',
          'passport' => '4564897987'
      ],
      [
          'name' => 'Michael Douglas',
          'cpf' => '80808080822',
      ]
  ],
  'origin' => [
      'city' => 'SAO PAULO - SP',
      'airportCode' => 'CGH', // Congonhas
  ],
  'destination' => [
      'city' => 'RIO DE JANEIRO - RJ',
      'airportCode' => 'SDU', // Santos Dumont
  ]
];
$checkout = PagSeguro::checkout()->createFromArray($data);

提供游戏元数据

// ....
$data['game'] = [
    'gameName' => 'PS LEGEND',
    'playerId' => 'BR561546S4',
    'timeInGameDays' => 360,
];
$checkout = PagSeguro::checkout()->createFromArray($data);

凭证

要检索文件中的默认凭证,您可以使用

$credentials = PagSeguro::credentials()->get();

或者使用备用凭证

$credentials = PagSeguro::credentials()->create($token, $email);

手动查询交易

$credentials = PagSeguro::credentials()->get();
$transaction = PagSeguro::transaction()->get($code, $credentials);
$information = $transaction->getInformation();

接收交易通知

创建名为 "pagseguro.notification" 的POST路由(在config中)

Route::post('/pagseguro/notification', [
    'uses' => '\laravel\pagseguro\Platform\Laravel5\NotificationController@notification',
    'as' => 'pagseguro.notification',
]);

在您的laravelpagseguro.php配置中注册一个回调(callable)

'routes' => [
    'notification' => [
        'callback' => ['MyNotificationClass', 'myMethod'], // Callable
        'credential' => 'default',
        'route-name' => 'pagseguro.notification', // Nome da rota
    ],
],

或者...

'routes' => [
    'notification' => [
        'callback' => function ($information) { // Callable
            \Log::debug(print_r($information, 1));
        },
    ],
],

在类中的回调示例

在配置文件中,您应该这样留下

'notification' => [
  'callback' => ['App\Controllers\PagSeguroController', 'Notification'], // Callable callback to Notification function (notificationInfo) : void {}
  'credential' => 'default', // Callable resolve credential function (notificationCode) : Credentials {}
  'route-name' => 'pagseguro.notification', // Criar uma rota com este nome
],

在控制器中,您需要创建一个方法,例如Notification

public static function Notification($information)
{
    \Log::debug(print_r($information->getStatus()->getCode(), 1));
}

创建周期性付款计划

创建周期性付款计划首先从创建计划开始,为此您需要创建以下数组

如果您想查看请求对象,请参阅:[https://dev.pagseguro.uol.com.br/v1.0/reference#criar-plano](https://dev.pagseguro.uol.com.br/v1.0/reference#criar-plano)

$plan = [
    'body' => [
        'reference' => 'plano laravel pagseguro',
    ],

    'preApproval' => [
        'name' => 'Plano ouro - mensal',
        'charge' => 'AUTO', // outro valor pode ser MANUAL
        'period' => 'MONTHLY', //WEEKLY, BIMONTHLY, TRIMONTHLY, SEMIANNUALLY, YEARLY
        'amountPerPayment' => '125.00', // obrigatório para o charge AUTO - mais que 1.00, menos que 2000.00
        'membershipFee' => '50.00', //opcional - cobrado com primeira parcela
        'trialPeriodDuration' => 30, //opcional
        'details' => 'Decrição do plano', //opcional
        'expiration' => [ // opcional
            'value' => 1, // obrigatório de 1 a 1000000
            'unit' => 'YEARLY', // obrigatório 
        ],
    ]

];

然后您需要调用创建计划的函数

$plan = \PagSeguro::plan()->createFromArray($plan);
$credentials = \PagSeguro::credentials()->get();
$information = $plan->send($credentials); // Retorna um objeto de laravel\pagseguro\Checkout\Information\Information
if ($information) {
  print_r($information->getCode());
  print_r($information->getDate());
  print_r($information->getLink());
}

许可证

Laravel PagSeguro使用MIT许可证,有关更多信息,请参阅[MIT许可证](https://open-source.org.cn/licenses/MIT)