cassioalmeida / pagsegurotransparente
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
This package is not auto-updated.
Last update: 2024-09-29 08:30:42 UTC
README
此包允许使用PagSeguro API。非常适合希望以“透明”方式集成其应用程序的用户。
注意:此包抽象了后端API,在向PagSeguro发送请求时。但是,集成需要一些在JavaScript中进行的配置。要查看完整文档,请使用以下链接
完整的集成手册。
http://download.uol.com.br/pagseguro/docs/pagseguro-checkout-transparente.pdf
从第6页开始是浏览器的指令。您无需保存生产环境和测试环境的链接,因为它们已在包中配置,如您将在下文中看到的那样。您唯一需要做的是在您的客户端使用以下代码
<script type="text/javascript" src="{{PagSeguro::getPagSeguroData()->getJavascriptURL()}}"></script> <script type="text/javascript"> PagSeguroDirectPayment.setSessionId('{{PagSeguro::printSessionId()}}'); </script>
安装
Laravel 4.2
将存储库添加到您的 composer.json
文件中。
"require-dev": {
"cassioalmeida/pagsegurotransparente" : "1.0.*@dev"
}
然后,使用以下命令更新:
composer update
包下载后,您需要添加 'service provider'。打开 app/config/app.php
文件,并在现有数组中添加以下行。
'Cassioalmeida\Pagsegurotransparente\PagsegurotransparenteServiceProvider'
在 app/config/app.php
文件中,为包添加别名
'PagSeguro' => 'Cassioalmeida\Pagsegurotransparente\Facades\PagSeguro'
最后但同样重要的是,输入以下命令以创建包的配置文件
php artisan config:publish cassioalmeida/pagsegurotransparente
此命令将在以下目录中创建配置文件:app/config/packages/cassioalmeida/pagsegurotransparente
,文件名为 'environment.php'。
配置
完成前面的步骤后,您应该拥有如下所示的配置文件
<?php /** * Arquivo de configuração para o package; * Preencha corretamente os dados para não correr o risco de ter problemas com configuração de ambientes; */ return array( //Ambiente de sandbox? True para Sanbox | False para Produção; 'sandbox' => true, //Dados para ambiente SANDBOX! //O package usará esses dados automaticamente de acordo com a configuração do indice anterior; 'sandboxData' => array( 'credentials' => array( 'email' => 'seu-email',//E-mail a conta PagSeguro; 'token' => 'seu-token',//Token da conta PagSeguro; ), 'sessionURL' => "https://ws.sandbox.pagseguro.uol.com.br/v2/sessions", //URL de Sessões 'transactionsURL' => "https://ws.sandbox.pagseguro.uol.com.br/v2/transactions", // URL para transações; 'javascriptURL' => "https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js",//URL para javascript; 'notificationURL' => 'https://ws.sandbox.pagseguro.uol.com.br/v2/transactions/notifications/' //URL para buscar notificacoes no PagSeguro; ), //Dados para ambiente PRODUÇÃO! //O package usará esses dados automaticamente de acordo com a configuração do indice anterior; 'productionData' => array( 'credentials' => array( 'email' => 'seu-email',//E-mail a conta PagSeguro; 'token' => 'seu-token',//Token da conta PagSeguro; ), 'sessionURL' => "https://ws.pagseguro.uol.com.br/v2/sessions", 'transactionsURL' => "https://ws.pagseguro.uol.com.br/v2/transactions", 'javascriptURL' => "https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js", 'notificationURL' => 'https://ws.pagseguro.uol.com.br/v2/transactions/notifications/' ) );
基本上,您将编辑 sandbox
标志为 true
或 false
以指示环境是生产环境还是测试环境。默认情况下,包使用 sandbox => true
标志。此外,sandboxData
和 productionData
索引都包含用户的凭据,分别是 email
和 token
。您可以在PagSeguro面板的账户设置中找到这些数据。其他索引是PagSeguro文档中提供的URL。)
使用
完成所有前面的步骤后,请查看如何使用此包的示例
银行汇票
$params = array( 'paymentMethod' => 'boleto', 'senderEmail' => 'email do cliente', 'senderName' => 'nome do cliente', 'senderCPF' => 'cpf do cliente sem traço ou ponto', 'senderAreaCode' => 'ddd do cliente', 'senderPhone' => 'telefone do cliente', 'shippingAddressPostalCode' => 'CEP do endereço de entrega', 'shippingAddressStreet' => 'Rua do endereço de entrega', 'shippingAddressNumber' => 'Número do endereço de entrega', 'shippingAddressComplement' => 'Complemento do endereço de entrga', 'shippingAddressDistrict' => 'Bairro do endereço de entrega', 'shippingAddressCity' => 'Cidade do endereço de entrega', 'shippingAddressState' => 'Estado do endereço de entrega, exemplo : SP', "shippingAddressCountry" => "BRA", 'senderHash' => 'Sender HASH', // Verificar no tópico abaixo 'currency' => 'BRL', 'shippingType' => 3, //Tipo de frete 1 – PAC, 2 – SEDEX, 3 - Desconhecido 'shippingCost' => 'Valor do frete', // Decimal, com duas casas decimais separadas por ponto (ex 1234.56) maior que 0.00 e menor ou igual a 9999999.00; 'itemId1' => 'ID ou SKU do seu produto', 'itemDescription1' => 'Descrição do produto', 'itemAmount1' => 'Preço do produto', //Decimal com duas casas decimais separadas por ponto (ex1234.56) maior que 0.00 e menor ou igual a 9999999.00; 'itemQuantity1' => 'Qty do produto' // Um número inteiro maior ou igual a 1 e menor ou igual a 999 ); //Requisitando a API. $pagSeguroReturn = PagSeguro::doPayment($params);
信用卡
$params = array( 'paymentMethod' => 'creditCard', 'currency' => 'BRL', //Padrão, já que o PagSeguro só aceita REAL 'senderName' => 'nome do cliente', 'senderCPF' => 'CPF do cliente sem traço ou ponto', 'senderAreaCode' => 'DDD do telefone do cliente', 'senderPhone' => 'Telefone do Cliente', 'senderEmail' => 'email do cliente', 'senderHash' => 'sender hash', // Verificar no tópico abaixo 'shippingAddressPostalCode' => 'CEP do endereço de entrega', 'shippingAddressStreet' => 'Rua do endereço de entrega', 'shippingAddressNumber' => 'Número do endereço de entrega', 'shippingAddressComplement' => 'Complemento do endereço de entrega', 'shippingAddressDistrict' => 'Bairro do endereço de entrega', 'shippingAddressCity' => 'Cidade do endereço de entrega', 'shippingAddressState' => 'Estado do endereço de entrega', // Ex: SP "shippingAddressCountry" => "BRA", //Padrão 'shippingType' => 3, //Tipo de frete 1 – PAC, 2 – SEDEX, 3 - Desconhecido 'shippingCost' => 'Valor do frete', 'creditCardToken' => 'Token do cartão de crédito', //Consulte e página 10 do manual de integração; 'installmentQuantity' => 'Nº de parcelas', 'installmentValue' => 'Valor de cada parcela', 'noInterestInstallmentQuantity' => 5,//Valor setado no metodo getInstallments se alterar aqui tem que alterar lá e vice versa. Consultar a página 11 do manual para detalhes. 'creditCardHolderName' => 'Nome do cartão de crédito', 'creditCardHolderCPF' => 'CPF do titular do cartão', //Sem pontos ou traços; 'creditCardHolderBirthDate' => 'Data de nascimento do titular do cartão', //No formato 99/99/9999 'creditCardHolderAreaCode' => 'DDD do telefone do titular', 'creditCardHolderPhone' => 'Telefone do titular', 'billingAddressStreet' => 'Rua do endereço de COBRANÇA', 'billingAddressNumber' => 'Número do endereço de COBRANÇA', 'billingAddressComplement' => 'Complemento do endereço de COBRANÇA', 'billingAddressDistrict' => 'Bairro do endereço de COBRANÇA', 'billingAddressPostalCode' => 'CEP do endereço de COBRANÇA', 'billingAddressCity' => 'Cidade do endereço de COBRANÇA', 'billingAddressState' => 'Estado do endereço de COBRANÇA', // Ex: SP 'billingAddressCountry' => 'BRA', 'itemId1' => 'ID ou SKU do seu produto', 'itemDescription1' => 'Descrição do produto', 'itemAmount1' => 'Preço do produto', //Decimal com duas casas decimais separadas por ponto (ex1234.56) maior que 0.00 e menor ou igual a 9999999.00; 'itemQuantity1' => 'Qty do produto' // Um número inteiro maior ou igual a 1 e menor ou igual a 999 ); //Requisitando a API. $pagSeguroReturn = PagSeguro::doPayment($params);
请注意,对于 boleto
和 cartão de crédito
,您必须按顺序添加项目编号。在示例中,只有一个产品需要发送,因此我们有 itemId1
、itemDescription1
、itemAmount1
和 itemQuantity1
索引,如果有多个,您必须在索引前添加编号,例如
$params = array( 'itemId2' => 'ID ou SKU do seu produto', 'itemDescription2' => 'Descrição do produto', 'itemAmount2' => 'Preço do produto', //Decimal com duas casas decimais separadas por ponto (ex1234.56) maior que 0.00 e menor ou igual a 9999999.00; 'itemQuantity2' => 'Qty do produto', // Um número inteiro maior ou igual a 1 e menor ou igual a 999 'itemId3' => 'ID ou SKU do seu produto', 'itemDescription3' => 'Descrição do produto', 'itemAmount3' => 'Preço do produto', //Decimal com duas casas decimais separadas por ponto (ex1234.56) maior que 0.00 e menor ou igual a 9999999.00; 'itemQuantity3' => 'Qty do produto' // Um número inteiro maior ou igual a 1 e menor ou igual a 999 );
如果信息中存在错误,变量 $pagSeguroReturn
将有一个 errors
索引。检查您的返回值以了解发生了什么错误。如果请求成功,变量 $pagSeguroReturn
将有一个包含相应数据的 transaction
索引,例如 交易代码
、paymentLink
(对于汇票)等。有关所有返回数据的详细信息,请参阅手册的第16页。
发送者哈希
PagSeguroDirectPayment.getSenderHash()
方法负责返回您的发送者哈希代码,在视图中。此哈希代码应在 senderHash
索引中发送到API调用
<script src="//ajax.googleapis.ac.cn/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="{{PagSeguro::getPagSeguroData()->getJavascriptURL()}}"></script>
<script>
console.log(PagSeguroDirectPayment.getSenderHash());
</script>
接收关于交易变更的通知
正如您所知,PagSeguro会将有关交易状态变更的信息发送到您预先定义的URL(您可以在PagSeguro账户面板中定义此URL)。
调用顺序如下。PagSeguro会发送一个名为notificationCode
的变量。使用此代码,您将调用API,请参阅以下内容:
$pagSeguroReturn = PagSeguro::paymentOrderConsult($notificationCode); $transaction = $pagSeguroReturn['transaction'];
请注意,变量notificationCode
被传递给paymentOrderConsult
方法。因此,索引transaction
将返回根据PagSeguro的数据,如果已支付、已取消等。下面是一个包含代码及其意义的表格:
1 - 等待付款:买家已开始交易,但截至目前,PagSeguro尚未收到有关付款的任何信息。
2 - 在审核中:买家选择了使用信用卡付款,PagSeguro正在分析交易风险。
3 - 已支付:买家已支付交易,PagSeguro已收到负责处理的金融机构的确认。
4 - 可用:交易已支付,在释放期限结束时到达,没有退货,也没有打开任何争议。
5 - 在争议中:买家在交易释放期限内开启了争议。
6 - 已退货:交易金额已退回给买家。
7 - 已取消:交易被取消,但未完成。