yankokox04 / laravel_payu
PayU latam 官方 SDK 的 Laravel 实现。
该包的官方仓库似乎已消失,因此该包已被冻结。
Requires
- php: >=5.5.9
- nesbot/carbon: ~2.0
Requires (Dev)
- composer/composer: ^1.8
- phpunit/phpunit: ~4.0
- vlucas/phpdotenv: ~2.0
This package is auto-updated.
Last update: 2022-12-27 04:36:18 UTC
README
介绍
LaravelPayU 为基于 Laravel 框架的项目提供了一个简单的接口,用于使用 PayU SDK。本项目使用 PayU SDK,但不是 PayU 的官方项目。
安装和配置
使用 composer 安装该包
composer require yankokox04/laravel_payu
然后在 config/app.php 中的 providers 数组中包含 ServiceProvider
Yankokox04\LaravelPayU\LaravelPayUServiceProvider::class,
发布配置以包含 PayU 账户信息
php artisan vendor:publish
在 .env 文件或直接在配置文件 config/payu.php 中包含账户信息和设置
APP_ENV=local PAYU_ON_TESTING=true PAYU_MERCHANT_ID=your-merchant-id PAYU_API_LOGIN=your-api-login PAYU_API_KEY=your-api-key PAYU_ACCOUNT_ID=your-account-id PAYU_COUNTRY=your-country-ref: AR/BR/CO/CL/MX/PA/PE/US PSE_REDIRECT_URL=your-pse-redirect-url
API 使用
此版本仅包含单一支付和查询的接口。如果需要使用令牌化和周期性支付,请直接使用 PayU SDK。
Ping 和 银行
要查询平台可用性,可以在指定的控制器中使用 doPing 方法
<?php namespace App\Http\Controllers; use Yankokox04\LaravelPayU\LaravelPayU; class PaymentsController extends Controller { LaravelPayU::doPing(function($response) { $code = $response->code; // ... revisar el codigo de respuesta }, function($error) { // ... Manejo de errores PayUException });
使用 getPSEBanks 方法进行银行查询,该方法也接收一个响应函数和一个错误函数
<?php namespace App\Http\Controllers; use Yankokox04\LaravelPayU\LaravelPayU; class PaymentsController extends Controller { LaravelPayU::getPSEBanks(function($banks) { //... Usar datos de bancos foreach($banks as $bank) { $bankCode = $bank->pseCode; } }, function($error) { // ... Manejo de errores PayUException, InvalidArgument });
单一支付
允许通过以下方式使用 trait 支付生成的订单
在订单模型中,例如 Order.php,必须包含
<?php namespace App; use Yankokox04\LaravelPayU\Payable; use Illuminate\Database\Eloquent\Model; class Order extends Model { use Payable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'reference', 'payu_order_id', 'transaction_id', 'state', 'value', 'user_id' ]; }
注意:字段 reference、payu_order_id、transaction_id 是执行后续查询所必需的。
配置好模型后,在指定的支付控制器中,我们可以使用 payWith 方法进行查询和支付捕获(相当于 sdk 中的 doAuthorizationAndCapture)
<?php $order = Order::find($id); $data = [ \PayUParameters::DESCRIPTION => 'Payment cc test', \PayUParameters::IP_ADDRESS => '127.0.0.1', \PayUParameters::CURRENCY => 'COP', \PayUParameters::CREDIT_CARD_NUMBER => '378282246310005', \PayUParameters::CREDIT_CARD_EXPIRATION_DATE => '2017/02', \PayUParameters::CREDIT_CARD_SECURITY_CODE => '1234', \PayUParameters::INSTALLMENTS_NUMBER => 1 ... ]; $order->payWith($data, function($response, $order) { if ($response->code == 'SUCCESS') { $order->update([ 'payu_order_id' => $response->transactionResponse->orderId, 'transaction_id' => $response->transactionResponse->transactionId ]); // ... El resto de acciones sobre la orden } else { //... El código de respuesta no fue exitoso } }, function($error) { // ... Manejo de errores PayUException, InvalidArgument });
payWith 方法接收三个参数
- 使用 "" 在 PayUParameters 类前,以便能够使用常量,因为 sdk 不使用命名空间和自动加载。
- 一个接收查询响应的函数(闭包)。
- 一个接收由验证或支付错误引起的异常的函数(闭包)。
您还可以使用 authorizeWith 和 captureWith 方法进行支付授权和订单捕获,但请记住,它们仅适用于 巴西。
请参阅支付 sdk 文档。
查询
为查询,在订单模型中添加 Searchable trait,如下所示
<?php namespace App; use Yankokox04\LaravelPayU\Payable; use Yankokox04\LaravelPayU\Searchable; use Illuminate\Database\Eloquent\Model; class Order extends Model { use Payable, Searchable; }
然后在指定的查询控制器中,我们可以使用 Payu 分配的 id、我们提供的参考或交易 id 进行查询
<?php $order = Order::find($id); $order->searchById(function($response, $order) { // ... Usar la información de respuesta }, function($error) { // ... Manejo de errores PayUException, InvalidArgument }); $order->searchByReference(function($response, $order) { // ... Usar la información de respuesta }, function($error) { // ... Manejo de errores PayUException, InvalidArgument }); $order->searchByTransaction(function($response, $order) { // ... Usar la información de respuesta }, function($error) { // ... Manejo de errores PayUException, InvalidArgument });
searchById、searchByReference 和 searchByTransaction 方法接收两个参数
- 一个接收查询响应的函数(闭包)。
- 一个接收由验证或支付错误引起的异常的函数(闭包)。
请参阅查询 sdk 文档。
测试
安装包的依赖项。在包的根目录下创建一个.env文件,包含针对哥伦比亚的测试配置,因为它是唯一提供三种支付方式的唯一国家。请参考PayU网站上的信息,然后执行测试
phpunit
错误和贡献
对于错误,直接在github issues中描述问题,或者发送邮件。如果您想为项目做出贡献,请按照贡献指南发送调整