eaglesistemas / pagseguro
与PagSeguro API集成的客户端
1.0.2
2019-02-05 13:27 UTC
Requires
- php: >=5.6
- doctrine/collections: ~1.3
- guzzlehttp/guzzle: ~6.2
- jms/serializer: ~1.1
Requires (Dev)
- pdepend/pdepend: ~2.2
- phpmd/phpmd: ~2.4
- phpunit/phpunit: ~5.5
- sebastian/phpcpd: ~3.0
- squizlabs/php_codesniffer: ~3.0
This package is not auto-updated.
Last update: 2024-09-13 19:28:52 UTC
README
针对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 }
通过代码搜索
此服务负责通过代码查找交易或订阅,它应用于查找交易/aassinatura的完整数据。其基本流程是
Loja PagSeguro
| |
|----- (A) solicita dados -------------->|
| |
|<---- (B) envia resposta ---------------|
- (A) 商店从交易/aassinatura代码中查找交易(在支付请求中接收到的)
- (B) PagSeguro发送请求的响应,包含交易/aassinatura的详情
用于搜索交易
<?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 }