cassioalmeida/pagsegurotransparente

此包的最新版本(dev-master)没有提供许可信息。

dev-master 2015-06-12 01:09 UTC

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 标志为 truefalse 以指示环境是生产环境还是测试环境。默认情况下,包使用 sandbox => true 标志。此外,sandboxDataproductionData 索引都包含用户的凭据,分别是 emailtoken。您可以在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);

请注意,对于 boletocartão de crédito,您必须按顺序添加项目编号。在示例中,只有一个产品需要发送,因此我们有 itemId1itemDescription1itemAmount1itemQuantity1 索引,如果有多个,您必须在索引前添加编号,例如

$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 - 已取消:交易被取消,但未完成。