phpsc/pagseguro

此包已废弃且不再维护。未建议替代包。

用于与 PagSeguro API 集成的客户端

维护者

详细信息

github.com/PHPSC/pagseguro

源代码

安装数: 20,123

依赖项: 2

建议者: 0

安全性: 0

星标: 171

关注者: 30

分支: 67

1.0.1 2017-05-28 22:04 UTC

This package is auto-updated.

Last update: 2020-02-06 13:22:58 UTC


README

Atenção

本项目已停止开发。您可随意进行分支并按需修改。

PagSeguro API

Gitter

Build Status Scrutinizer Code Quality Code Coverage

Total Downloads Latest Stable Version

用于 PHP 5.6+ 的 PagSeguro 集成 API,应使用兼容 PSR-4 的 Autoloader。

安装

可以使用 Composer 安装此库。

基本示例

在此版本中可以管理

  • 请求(付款和订阅);
  • 通知
  • 按代码搜索(付款和订阅);
  • 取消订阅和收费。

访问凭证

为了能够向 PagSeguro 发送请求,您必须配置访问凭证,可以是生产环境或沙盒环境。

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado

use PHPSC\PagSeguro\Credentials;
use PHPSC\PagSeguro\Environments\Production;
use PHPSC\PagSeguro\Environments\Sandbox;

/* Ambiente de produção: */

$credentials = new Credentials('EMAIL CADASTRADO NO PAGSEGURO', 'TOKEN DE ACESSO À API');

// ou 

$credentials = new Credentials(
    'EMAIL CADASTRADO NO PAGSEGURO', 
    'TOKEN DE ACESSO À API',
    new Production()
);

/* Ambiente de testes: */

$credentials = new Credentials(
    'EMAIL CADASTRADO NO PAGSEGURO', 
    'TOKEN DE ACESSO À API',
    new Sandbox()
);

请求

一组用于请求客户支付或订阅授权的服务。

付款

此服务负责请求付款,其基本流程是

Loja                                  PagSeguro
 |                                        |
 |----- (A) solicitação de compra ------->|
 |                                        | (B) realiza processamento
 |<---- (C) envia resposta ---------------|
 |                                        |
 |----- (D) redireciona o cliente ------->|
  • (A) 店铺创建一个购买请求并发送给服务
  • (B) PagSeguro 处理请求
  • (C) PagSeguro 发送请求响应(如果有错误,则通知错误)
  • (D) 如果 (C) 的处理成功,则返回一个代码,并且店铺应将客户重定向到 PagSeguro 以进行付款

客户从店铺重定向到 PagSeguro (D) 并授权付款后,可能被重定向回店铺,带有创建的交易代码(取决于配置)

以下代码可以作为请求付款的基本示例

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

use PHPSC\PagSeguro\Customer\Customer;
use PHPSC\PagSeguro\Items\Item;
use PHPSC\PagSeguro\Requests\Checkout\CheckoutService;

try {
    $service = new CheckoutService($credentials); // cria instância do serviço de pagamentos
    
    $checkout = $service->createCheckoutBuilder()
                        ->addItem(new Item(1, 'Televisão LED 500', 8999.99))
                        ->addItem(new Item(2, 'Video-game mega ultra blaster', 799.99))
                        ->getCheckout();
    
    $response = $service->checkout($checkout);
    
    //Se você quer usar uma url de retorno
    $checkout->setRedirectTo( "http://seu_dominio/uri/retorno" );
    
    //Se você quer usar uma url de notificação
    $checkout->setNotificationURL( "http://seu_dominio/admin/transacao/notificacao" );

    header('Location: ' . $response->getRedirectionUrl()); // Redireciona o usuário
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

订阅

此服务负责请求订阅授权(预授权付款),其基本流程是

Loja                                      PagSeguro
 |                                            |
 |----- (A) solicitação de assinatura ------->|
 |                                            | (B) realiza processamento
 |<---- (C) envia resposta -------------------|
 |                                            |
 |----- (D) redireciona o cliente ----------->|
  • (A) 店铺创建一个订阅请求(手动或自动收费)并发送给服务
  • (B) PagSeguro 处理请求
  • (C) PagSeguro 发送请求响应(如果有错误,则通知错误)
  • (D) 如果 (C) 的处理成功,则返回一个代码,并且店铺应将客户重定向到 PagSeguro 以进行付款

客户从店铺重定向到 PagSeguro (D) 并授权订阅后,可能被重定向回店铺,带有创建的订阅代码(取决于配置)

以下代码可以作为手动订阅请求的基本示例,其中店铺负责发送收费

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

use DateTime;
use PHPSC\PagSeguro\Requests\PreApprovals\Period;
use PHPSC\PagSeguro\Requests\PreApprovals\PreApprovalService;

try {
    $service = new PreApprovalService($credentials); // cria instância do serviço de pagamentos
    
    $request = $service->createRequestBuilder()
                   ->setName('Nome da assinatura')
                   ->setPeriod(Period::MONTHLY)
                   ->setFinalDate(new DateTime('2014-12-31 23:59:59'))
                   ->setMaxTotalAmount(50)
                   ->setMaxPaymentsPerPeriod(1)
                   ->setMaxAmountPerPeriod(10)
                   ->getRequest();
    
    $response = $service->approve($request);

    header('Location: ' . $response->getRedirectionUrl()); // Redireciona o usuário
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

以下代码可以作为自动订阅请求的基本示例,其中收费将由 PagSeguro 控制

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

use DateTime;
use PHPSC\PagSeguro\Requests\PreApprovals\Period;
use PHPSC\PagSeguro\Requests\PreApprovals\PreApprovalService;

try {
    $service = new PreApprovalService($credentials); // cria instância do serviço de pagamentos
    
    $request = $service->createRequestBuilder(false)
                   ->setName('Nome da assinatura')
                   ->setPeriod(Period::MONTHLY)
                   ->setFinalDate(new DateTime('2014-12-31 23:59:59'))
                   ->setAmountPerPayment(10)
                   ->setMaxTotalAmount(50)
                   ->getRequest();
    
    $response = $service->approve($request);

    header('Location: ' . $response->getRedirectionUrl()); // Redireciona o usuário
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

通知

此服务负责从通知代码中查找交易或订阅,它应用于跟踪付款或订阅状态的变化。其基本流程是

Loja                                  PagSeguro
 |                                        |
 |<---- (A) notifica alteração -----------|
 |                                        |
 |----- (B) solicita dados -------------->|
 |                                        |
 |<---- (C) envia resposta ---------------|
  • (A) PagSeguro向配置在PagSeguro账户中的页面发送一个请求,通知状态变化
  • (B) 商店根据通知代码查找交易或订阅
  • (C) PagSeguro发送请求的响应,包含交易的详细信息

基本用法是

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

// Caso estiver testando, a linha abaixo deve estar descomentada (assim o pagseguro conseguirá enviar requisições locais via JavaScript)
// header("access-control-allow-origin: https://sandbox.pagseguro.uol.com.br");

use PHPSC\PagSeguro\Purchases\Subscriptions\Locator as SubscriptionLocator;
use PHPSC\PagSeguro\Purchases\Transactions\Locator as TransactionLocator;

try {
    $service = $_POST['notificationType'] == 'preApproval'
               ? new SubscriptionLocator($credentials)
               : new TransactionLocator($credentials); // Cria instância do serviço de acordo com o tipo da notificação
               
    $purchase = $service->getByNotification($_POST['notificationCode']);

    var_dump($purchase); // Exibe na tela a transação ou assinatura atualizada
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

通过代码查找

此服务负责根据代码查找交易或订阅,它应用于查找交易/订阅的完整数据。其基本流程是

Loja                                  PagSeguro
 |                                        |
 |----- (A) solicita dados -------------->|
 |                                        |
 |<---- (B) envia resposta ---------------|
  • (A) 商店根据交易/订阅代码(在支付请求中接收)查找交易
  • (B) PagSeguro发送请求的响应,包含交易/订阅的详细信息

用于查找交易的用法是

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

use PHPSC\PagSeguro\Purchases\Transactions\Locator;

try {
    $service = new Locator($credentials); // Cria instância do serviço de localização de transações
    
    $transaction = $service->getByCode('CÓDIGO');

    var_dump($transaction); // Exibe na tela a transação
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

对于订阅来说非常类似

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

use PHPSC\PagSeguro\Purchases\Subscriptions\Locator;

try {
    $service = new Locator($credentials); // Cria instância do serviço de localização de assinaturas
    
    $subscription = $service->getByCode('CÓDIGO');

    var_dump($subscription); // Exibe na tela a assinatura
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

订阅管理

订阅服务允许根据订阅代码执行两个操作:收费(仅当订阅为手动收费时)和取消。

收费

此方法负责对手动收费的订阅进行新的收费。其基本流程是

Loja                                  PagSeguro
 |                                        |
 |----- (A) solicita dados -------------->|
 |                                        |
 |<---- (B) envia resposta ---------------|
  • (A) 商店发送一个新的收费请求,包含订阅代码和项目详情
  • (B) PagSeguro发送请求的响应,包含收费交易的代码

基本用法是

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

use PHPSC\PagSeguro\Purchases\Subscriptions\SubscriptionService;

try {
    $service = new SubscriptionService($credentials); // Cria instância do serviço de gerenciamento de assinaturas
    
    $charge = $service->createChargeBuilder('CÓDIGO DA ASSINATURA')
                      ->addItem(new Item(1, 'Pagamento assinatura 1/4', 10))
                      ->getCharge();

    var_dump($service->charge($charge)); // Exibe na tela a resposta da cobrança
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

取消

此方法负责由商店执行订阅的取消。其基本流程是

Loja                                  PagSeguro
 |                                        |
 |----- (A) solicita dados -------------->|
 |                                        |
 |<---- (B) envia resposta ---------------|
  • (A) 商店发送取消请求,包含订阅代码
  • (B) PagSeguro发送请求的响应

基本用法是

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado e as credenciais foram configuradas em $credentials

use PHPSC\PagSeguro\Purchases\Subscriptions\SubscriptionService;

try {
    $service = new SubscriptionService($credentials); // Cria instância do serviço de gerenciamento de assinaturas
    
    var_dump($service->cancel('CÓDIGO DA ASSINATURA')); // Exibe na tela a resposta do cancelamento
} catch (Exception $error) { // Caso ocorreu algum erro
    echo $error->getMessage(); // Exibe na tela a mensagem de erro
}

使用许可

此库遵循Creative Commons Attribution-ShareAlike 2.5的使用条款

Bitdeli Badge