pagarme / pagarme-php

:blue_heart: Pagar.me's PHP API
352 stars 148 forks source link

validation_error | billing | "value" is required #408

Open lfviegas opened 1 year ago

lfviegas commented 1 year ago

Olá! Estou recebendo um erro ao tentar registrar um pedido via API diretamente (sem o uso do SDK).

A documentação que estou seguindo é a https://docs.pagar.me/reference/criar-pedido-2 e não encontrei nenhuma menção ao objeto "billing" para a requisição.

Endpoint https://api.pagar.me/core/v5/orders/

O erro recebido é o:

["gateway_response"]=> array(2) { ["code"]=> string(3) "400" ["errors"]=> array(1) { [0]=> array(1) { ["message"]=> string(48) "validation_error | billing | "value" is required" } } }

Body da requisição

{ "code": "4c7bbb2a72fa6a0bdcc8519f63766fff", "items": [ { "amount": 14099, "description": "7h às 11h (Manhã)", "quantity": 1, "code": "1" } ], "customer": { "name": "Cliente Teste", "type": "individual", "code": "1", "document": "28875371059", "document_type": "CPF", "address": { "country": "BR", "state": "MG", "city": "Belo Horizonte", "zip_code": "30140091", "line_1": "1881, R. Goncalves Dias, Savassi", "line_2": "14 andar" }, "phones": { "mobile_phone": { "country_code": "55", "area_code": "31", "number": "999999999" } } }, "shipping": { "amount": 0, "description": "Endereco do servico", "recipient_name": "Cliente teste", "recipient_phone": "(31) 99999-9999", "address": { "country": "BR", "state": "MG", "city": "Belo Horizonte", "zip_code": "30140091", "line_1": "1181, R. Goncalves Dias, Savassi", "line_2": "14 andar" } }, "payments": [ { "payment_method": "credit_card", "credit_card": { "operation_type": "auth_and_capture", "installments": 1, "statement_descriptor": "Pedido Teste", "card_token": "token_eZVaBWpTkTvxlKGA" }, "split": [ { "amount": 11200, "recipient_id": "rp_O205Aqhz7S1p5qe3", "type": "flat", "options": { "liable": true } }, { "amount": 2899, "recipient_id": "rp_9PnL9w7safXBDNGy", "type": "flat", "options": { "charge_processing_fee": true, "charge_remainder_fee": true, "liable": true } } ] } ], "closed": true }

wilkersouza commented 1 year ago

@lfviegas Eu também estava com o mesmo erro, resolvi colocando a propriedade billing_address dentro de payments.credit_card.card. Mesmo usando o card_token, foi necessário criar a propriedade card, veja como ficou:


"payments": [
  {
      "credit_card": {
          "operation_type": "",
          "installments": "",
          "statement_descriptor": "",
          "card_token": "",
          "card": {
              "billing_address": {
                  "country": "",
                  "state": "",
                  "city": "",
                  "zip_code": "",
                  "line_1": "",
                  "line_2": ""
              }
          }
      },
      "payment_method": "credit_card"
  }
],
peuweb commented 1 year ago

Fato. Antes algumas transações até passavam, mas a maioria não. Quando adicionamos os dados de billing_address todas as transações voltaram a passar de forma fluida.

Obrigado pela dica.

iamvinny commented 2 months ago

Esse error pode ocorrer tambem caso nao esteja espeficiando o content-type na request.

headers: {
    'Content-Type': 'application/json'
}
pietrozanan commented 2 weeks ago

Contribuindo, precisa ter endereço no customer e no card.

Mas podem ser vinculados previamente e depois só passar os ids pra order.