Michael / laravelpagseguro
PagSeguro支付网关集成库。
Requires
- php: >=5.4.0
- ext-curl: *
- lib-curl: *
- lib-libxml: *
- lib-openssl: *
- illuminate/validation: >=4.2
Requires (Dev)
- phpunit/phpunit: ^4.8.35
README
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
并更改 token
和 e-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)