raulingg / laravel-payu
使用 PayU 秘鲁官方 SDK 的 Laravel 流畅界面。
Requires
- php: >=5.5.0
- illuminate/http: ^5.2
Requires (Dev)
- fzaninotto/faker: ^1.7
- mockery/mockery: ^0.9.4
- nesbot/carbon: ~1.0
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-29 05:01:46 UTC
README
介绍
LaravelPayU 为基于 Laravel 框架的项目提供了一个简单的接口,用于使用 PayU SDK。本项目使用了 Payu SDK,但不是 PayU 的官方项目。
要求
安装和配置
使用 composer 安装此包
composer require raulingg/laravel-payu
然后在 config/app.php 中的 providers 数组中包含 ServiceProvider
Raulingg\LaravelPayU\Providers\PayuClientServiceProvider::class,
发布配置以包含 PayU 账户信息
php artisan vendor:publish
在 .env 文件或直接在配置文件 config/payu.php 中包含账户信息和设置
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
API 使用
本版本仅包含单一付款和查询的接口。如果您需要使用令牌化、现金支付和周期性支付,请直接使用 PayU SDK。
Ping
要查询平台可用性,可以在指定的控制器中使用 doPing 方法。
<?php namespace App\Http\Controllers; use Raulingg\LaravelPayU\Contracts\PayuClientInterface; class PaymentsController extends Controller { public function doPing(PayuClientInterface $payuClient) { $payuClient->doPing(function($response) { $code = $response->code; // ... revisar el codigo de respuesta }, function($error) { // ... Manejo de errores PayUException }); }
单一付款
允许以下方式生成的订单付款:
<?php namespace App\Http\Controllers; use Raulingg\LaravelPayU\Contracts\PayuClientInterface; use PayUParameters; class PaymentsController extends Controller { public function pay(PayuClientInterface $payuClient) { // Estos datos son de prueba, estos deben ser asignados según tus requerimientos $data = [ PayUParameters::VALUE => request()->input('amount'), PayUParameters::DESCRIPTION => 'Payment cc test', PayUParameters::REFERENCE_CODE => uniqid(time()), PayUParameters::CURRENCY => 'PEN', PayUParameters::PAYMENT_METHOD => request()->input('card_type'), // VISA, MASTERCARD, ... PayUParameters::CREDIT_CARD_NUMBER => request()->input('card_number') // '4907840000000005', PayUParameters::CREDIT_CARD_EXPIRATION_DATE => request()->input('card_expiration_date'), PayUParameters::CREDIT_CARD_SECURITY_CODE => request()->input('card_security_code'), PayUParameters::INSTALLMENTS_NUMBER => 1, PayUParameters::PAYER_NAME => 'APPROVED', PayUParameters::PAYER_DNI => '458784778', PayUParameters::IP_ADDRESS => '127.0.0.1', ]; $payuClient->pay($data, function($response) { if ($response->code == 'SUCCESS') { // ... El código para el caso de éxito } else { //... El código de respuesta no fue exitoso } }, function($error) { // ... Manejo de errores PayUException, InvalidArgument }); }
方法 pay 接收三个参数
- 包含付款数据的数组。
- 接收查询响应的函数(闭包)。
- 接收由验证或付款错误引起的异常的函数(闭包)。
您还可以使用 authorize 和 capture 方法进行付款授权和订单捕获,但请注意,这些方法仅适用于 Brasíl。
请参阅 支付 SDK 文档。
查询
然后在指定的查询控制器中,我们可以使用 Payu 分配的 id、我们提供的参考或交易 id 进行查询
<?php use Raulingg\LaravelPayU\Contracts\PayuClientInterface as PayuClient; ... $payuClient = app()->make(PayuClient::class); $payuOrderId = 123; $payuClient->searchById($payuOrderId, function($response, $order) { // ... Usar la información de respuesta }, function($error) { // ... Manejo de errores PayUException, InvalidArgument }); $payuReferenceCode = "2014-05-06 06:14:19"; $payuClient->searchByReference($payuReferenceCode, function($response) { // ... Usar la información de respuesta }, function($error) { // ... Manejo de errores PayUException, InvalidArgument }); $payuTransactionId = '960b1a5d-575d-4bd9-927e-0ffbf5dc4296'; $payuClient->searchByTransaction($payuTransactionId, function($response) { // ... Usar la información de respuesta }, function($error) { // ... Manejo de errores PayUException, InvalidArgument });
方法 searchById、searchByReference 和 searchByTransaction 接收三个参数
- 用于搜索的输入字段的值(OrderId、ReferenceCode、transactionId)
- 接收查询响应的函数(闭包)。
- 接收由验证或付款错误引起的异常的函数(闭包)。
请参阅 查询 SDK 文档。
测试
安装依赖关系然后执行测试
vendor/bin/phpunit
默认使用 Payu 提供的测试值,有关详细信息,请访问 SDK 沙盒
错误和贡献
对于错误,请直接在 github issues 中报告问题或发送电子邮件至 relaxedchild@gmail.com。如果您想为项目做出贡献,请按照贡献指南发送更改。