raulingg/laravel-payu

使用 PayU 秘鲁官方 SDK 的 Laravel 流畅界面。

v1.0.0 2018-01-10 22:45 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:01:46 UTC


README

Build Status StyleCI

介绍

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 接收三个参数

  • 包含付款数据的数组。
  • 接收查询响应的函数(闭包)。
  • 接收由验证或付款错误引起的异常的函数(闭包)。

您还可以使用 authorizecapture 方法进行付款授权和订单捕获,但请注意,这些方法仅适用于 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
});

方法 searchByIdsearchByReferencesearchByTransaction 接收三个参数

  • 用于搜索的输入字段的值(OrderId、ReferenceCode、transactionId)
  • 接收查询响应的函数(闭包)。
  • 接收由验证或付款错误引起的异常的函数(闭包)。

请参阅 查询 SDK 文档

测试

安装依赖关系然后执行测试

vendor/bin/phpunit

默认使用 Payu 提供的测试值,有关详细信息,请访问 SDK 沙盒

错误和贡献

对于错误,请直接在 github issues 中报告问题或发送电子邮件至 relaxedchild@gmail.com。如果您想为项目做出贡献,请按照贡献指南发送更改。

  • 使用 psr-1psr-2 风格指南

  • 编写有利于 Laravel 使用的代码

  • 在发送 pull request 之前编写测试并检查代码