pagarme / pagarme-php

:blue_heart: Pagar.me's PHP API
0 stars 1 forks source link

aspas ao criar transação #352

Open meugittemporario opened 4 years ago

meugittemporario commented 4 years ago

Boa tarde!!!!!!! Peço ajuda pois sou iniciante na coisa. estou tentando criar uma transação em php, sendo que os dados vem de um array ($dados). porém a transação não é criada, pois vejo através da dashboard do pagarme. creio que seja problemas com aspas. Eu também não sei como retornar a resposta desse array, pois a parte (return $transaction->errorMessage;) não me retorna nada. Não sei se deu certo ou não, enfim, como posso saber o retorno e como fazer meu array funcionar?

$transaction = $pagarme->transactions()->create([ 'amount' => $value, 'payment_method' => 'credit_card', 'card_holder_name' => 'Anakin Skywalker', 'card_cvv' => '123', 'card_number' => '4242424242424242', 'card_expiration_date' => '1220', 'async' => false, 'customer' => [ 'external_id' => "$id", 'name' => "$dados[1]", 'type' => 'individual', 'country' => 'br', 'documents' => [ [ 'type' => 'cpf', 'number' => "$dados[2]" ] ], 'address' => [ 'street' => "$dados[10]", 'complementary' => "$dados[13]", 'street_number' => "$dados[11]", 'neighborhood' => "$dados[12]", 'zipcode' => "$dados[8]" ], 'phone_numbers' => [ '+551199999999' ], 'email' => 'email@email.com.br' ] ]);

return $transaction->errorMessage;

murilohns commented 4 years ago

Olá @meugittemporario , tudo bem?

Você pode envolver tudo isso em um try/catch para entender o que está ocorrendo.

Por exemplo:

$transactionPayload = [
'amount' => $value,
'payment_method' => 'credit_card',
'card_holder_name' => 'Anakin Skywalker',
'card_cvv' => '123',
'card_number' => '4242424242424242',
'card_expiration_date' => '1220',
'async' => false,
'customer' => [
'external_id' => "$id",
'name' => "$dados[1]",
'type' => 'individual',
'country' => 'br',
'documents' => [
[
'type' => 'cpf',
'number' => "$dados[2]"
]
],
'address' => [
'street' => "$dados[10]",
'complementary' => "$dados[13]",
'street_number' => "$dados[11]",
'neighborhood' => "$dados[12]",
'zipcode' => "$dados[8]"
],
'phone_numbers' => [ '+551199999999' ],
'email' => 'email@email.com.br'
]
]

try {
  $transaction = $pagarme->transactions()->create($transactionPayload);

  print_r($transaction);
} catch (Exception $e) {
  print_r($e)
}
Akira-ux commented 4 years ago

Boa noite @murilohns, tudo bem? Não consigo criar a transação dessa maneira criando antes e depois passando a variável, estou utilizando a ultima versão da API, poderia me informar se é compatível ?

Estou realizando o mesmo processo

$transactionPayload = [ 'amount' => 1000, 'payment_method' => 'credit_card', 'card_holder_name' => 'Anakin Skywalker', 'card_cvv' => '123', 'card_number' => '4242424242424242', 'card_expiration_date' => '1220', 'customer' => [ 'external_id' => '1', 'name' => 'Nome do cliente', 'type' => 'individual', 'country' => 'br', 'documents' => [ [ 'type' => 'cpf', 'number' => '00000000000' ] ], 'phone_numbers' => [ '+551199999999' ], 'email' => 'cliente@email.com' ], 'billing' => [ 'name' => 'Nome do pagador', 'address' => [ 'country' => 'br', 'street' => 'Avenida Brigadeiro Faria Lima', 'street_number' => '1811', 'state' => 'sp', 'city' => 'Sao Paulo', 'neighborhood' => 'Jardim Paulistano', 'zipcode' => '01451001' ] ], 'shipping' => [ 'name' => 'Nome de quem receberá o produto', 'fee' => 1020, 'delivery_date' => '2018-09-22', 'expedited' => false, 'address' => [ 'country' => 'br', 'street' => 'Avenida Brigadeiro Faria Lima', 'street_number' => '1811', 'state' => 'sp', 'city' => 'Sao Paulo', 'neighborhood' => 'Jardim Paulistano', 'zipcode' => '01451001' ] ], 'items' => [ [ 'id' => '1', 'title' => 'R2D2', 'unit_price' => 300, 'quantity' => 1, 'tangible' => true ], [ 'id' => '2', 'title' => 'C-3PO', 'unit_price' => 700, 'quantity' => 1, 'tangible' => true ] ] ];

try { $transaction = $pagarme->transactions()->create($transactionPayload); print_r($transaction); } catch (Exception $e) { print_r($e) }

porem cai diretamente no Exceptions

( [type:PagarMe\Exceptions\PagarMeException:private] => validation_error [parameterName:PagarMe\Exceptions\PagarMeException:private] => customer [errorMessage:PagarMe\Exceptions\PagarMeException:private] => Invalid CPF [message:protected] => ERROR TYPE: validation_error. PARAMETER: customer. MESSAGE: Invalid CPF [string:Exception:private] => [code:protected] => 0 [file:protected] => C:\Pagarme\vendor\pagarme\pagarme-php\src\ResponseHandler.php [line:protected] => 54 [trace:Exception:private] => Array ( [0] => Array ( [file] => C:\Pagarme\vendor\pagarme\pagarme-php\src\ResponseHandler.php [line] => 30 [function] => parseException [class] => PagarMe\ResponseHandler [type] => :: [args] => Array ( [0] => GuzzleHttp\Exception\ClientException Object ( [request:GuzzleHttp\Exception\RequestException:private] => GuzzleHttp\Psr7\Request Object ( [method:GuzzleHttp\Psr7\Request:private] => POST [requestTarget:GuzzleHttp\Psr7\Request:private] => [uri:GuzzleHttp\Psr7\Request:private] => GuzzleHttp\Psr7\Uri Object ( [scheme:GuzzleHttp\Psr7\Uri:private] => https [userInfo:GuzzleHttp\Psr7\Uri:private] => [host:GuzzleHttp\Psr7\Uri:private] => api.pagar.me [port:GuzzleHttp\Psr7\Uri:private] => [path:GuzzleHttp\Psr7\Uri:private] => /1/transactions [query:GuzzleHttp\Psr7\Uri:private] => api_key=KEY [fragment:GuzzleHttp\Psr7\Uri:private] => )

                                        [headers:GuzzleHttp\Psr7\Request:private] => Array
                                            (
                                                [User-Agent] => Array
                                                    (
                                                        [0] => PHP/7.0.10
                                                    )

                                                [X-PagarMe-User-Agent] => Array
                                                    (
                                                        [0] => PHP/7.0.10
                                                    )

                                                [Content-Type] => Array
                                                    (
                                                        [0] => application/json
                                                    )....
murilohns commented 4 years ago

@meugittemporario, está dando erro de CPF inválido, como você pode notar nesse trecho:

[type:PagarMe\Exceptions\PagarMeException:private] => validation_error
[parameterName:PagarMe\Exceptions\PagarMeException:private] => customer
[errorMessage:PagarMe\Exceptions\PagarMeException:private] => Invalid CPF

Você pode gerar números "válidos" para testes em alguns sites, como https://www.geradordecpf.org/ ou https://www.4devs.com.br/gerador_de_cpf

Akira-ux commented 4 years ago

Realmente não me atentei ao CPF, obrigado @murilohns . Sabe me informar se é possível enviar o customer_id na transação ao invés de enviar todos os dados novamente e não duplicar o usuário ?

ex: que vi em outro post seu $transaction = $pagarme->transactions()->create([ "card_id" => "card_abc123", "customer_id" => "123456", "payment_method" => "credit_card" ...

ele me retorna o erro de "Value" [parameterName:PagarMe\Exceptions\PagarMeException:private] => customer [errorMessage:PagarMe\Exceptions\PagarMeException:private] => "value" is required [message:protected] => ERROR TYPE: validation_error. PARAMETER: customer. MESSAGE: "value" is required

murilohns commented 4 years ago

Olá @Akira-ux, você pode tentar enviando o id dessa forma, por favor?

"customer" => [ "id" => "123" ]
Akira-ux commented 4 years ago

Dessa forma deu certo, obrigado.