pagarme-php
pagarme-php copied to clipboard
aspas ao criar transação
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 protected]' ] ]);
return $transaction->errorMessage;
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 protected]'
]
]
try {
$transaction = $pagarme->transactions()->create($transactionPayload);
print_r($transaction);
} catch (Exception $e) {
print_r($e)
}
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' => '[email protected]' ], '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
)....
@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
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
Olá @Akira-ux, você pode tentar enviando o id dessa forma, por favor?
"customer" => [ "id" => "123" ]
Dessa forma deu certo, obrigado.