Exemplos_Pagamentos - POPRecarga/Br-PartnerAPI GitHub Wiki

#Pagamento Somente o usuários autenticados podem fazer isso.

Método Recurso Notas
POST /payments Cria um novo pagamento no sistema.
GET /payments/{transactionId} Recupera detalhes da transação de pagamento.
GET /payments/{transactionId}/token/ Reenvia um novo token para a transação especificada.
PUT /payments/{transactionId}/token/{token} Autoriza a transação especificada usando token especificado.
PUT /payments/{transactionId}/execute Executa a transação especificada.
PUT /payments/{transactionId}/cancel Cancela transação não executada. Apenas as transações pendentes, autorizadas e inativas podem ser canceladas.

Requisições

Requisição POST valida no recurso /payments:

POST /payments HTTP/1.1
Host: api.sandbox.inpdv.com.br
Content-Type: application/json; charset=utf-8
Authorization: Bearer oHPBScnPNxJYRe7f9jtvHsSk627_CGzkgGi-f…
Content-Length: 187

{
    "brandId": 1,
    "identifier": "+5511XXXXXXXXX",
    "transaction": {
        "amount": 1.99,
        "currencyCode": "BRL",
        "description": "Product X",
        "referralCode": "a48s4d87g8a9d5v8h4k4az48f4"  
    }
}

Requisição GET valida no recurso /payments/{transaction}:

GET /payments/96af9850-bdbb-42c0-95c3-cb6a5a3178ae HTTP/1.1
Host: api.sandbox.inpdv.com.br
Content-Type: application/json; charset=utf-8
Authorization: Bearer oHPBScnPNxJYRe7f9jtvHsSk627_3ap7ISSw…


Requisição GET no recurso /payments/{transaction}/token:

GET /payments/96af9850-bdbb-42c0-95c3-cb6a5a3178ae/token HTTP/1.1
Host: api.sandbox.inpdv.com.br
Content-Type: application/json; charset=utf-8
Authorization: Bearer oHPBScnPNxJYRe7f9jtvHsSk627_CGzkgGi-fscDRE…


Requisição PUT valida no recurso /payments/{transaction}/token/{token}:

GET /payments/96af9850-bdbb-42c0-95c3-cb6a5a3178ae/token/648741 HTTP/1.1
Host: api.sandbox.inpdv.com.br
Content-Type: application/json; charset=utf-8
Authorization: Bearer oHPBScnPNxJYRe7f9jtvHsSk627_CGzkgGi-fscDRE…


Requisição PUT valida no recurso /payments/{transaction}/execute:

PUT /payments/0972741f-7aa1-47b8-a1aa-8774c7031c1c/execute HTTP/1.1
Host: api.sandbox.inpdv.com.br
Content-Type: application/json; charset=utf-8
Authorization: Bearer oHPBScnPNxJYRe7f9jtvHsSk627_CGzkgGi-fscDRE…


Requisição PUT no recurso /payments/{transaction}/cancel:

PUT /payments/a48bfd6b-c671-4354-9cb9-49bcf196faf9/cancel HTTP/1.1
Host: api.sandbox.inpdv.com.br
Content-Type: application/json; charset=utf-8
Authorization: Bearer oHPBScnPNxJYRe7f9jtvHsSk627_CGzkgGi-fRWRRjH8v…


Respostas

Resposta de sucesso vinda do recurso /payments:

HTTP/1.1 201 Created
Content-Length: 474

{
    "id":"4e319e3d-07f7-4181-9403-0505f01fd2cc",
    "status":"Pending",
    "amount":1.99,
    "links":
    [
        {"href":"https://inpdv-api-sandbox.net/payments/4e319e3d..."},
        {"href":"https://inpdv-api-sandbox.net/payments/4e319e3d.../cancel","rel":"Cancel","method":"Put"},
        {"href":"https://inpdv-api-sandbox.net/payments/4e319e3d.../token/"tokenvalue","rel":"Approval","method":"Put"}
    ]
}

Resposta de valor invalido vinda do recurso /payments:

HTTP/1.1 400 Bad Request
Content-Length: 148

{
    "codeDescription":"UnknownError",
    "extendedProperties":{"mS_LoggedBy":[{}]},
    "message":"The amount must be greater than 0\r\nParameter name: amount"
}

OBS: Qualquer parâmetro inválido virá com o mesmo erro 400, mas com mensagens diferentes


Resposta de sucesso do recurso /payments/{transaction}:

HTTP/1.1 200 OK
Content-Length: 92

{
    "id":"96af9850-bdbb-42c0-95c3-cb6a5a3178ae",
    "status":"Authorized",
    "amount":1.99,
    "links":[]
}

Resposta de sucesso vinda do recurso /payments/{transaction} quando a transação tiver um ou mais estornos:

HTTP/1.1 200 OK
Content-Length: 92

{
    "id":"96af9850-bdbb-42c0-95c3-cb6a5a3178ae",
    "status":"Finalized",
    "amount":20.00,
    "links":[],
    "chargebacks":
    [
        {"href":"http://localhost:58043/payments/9a21d151-e183-11e5-be9a-5cf9ddee0305"},
        {"href":"http://localhost:58043/payments/eccffc91-e183-11e5-be9a-5cf9ddee0305"},
        {"href":"http://localhost:58043/payments/58203abc-e184-11e5-be9a-5cf9ddee0305"}
    ]
}

O valor é o valor da transação original e os estornos são links para as transações de estorno


Resposta do recurso /payments/{transaction} quando a transação especificada não existe:

HTTP/1.1 404 Not Found
Content-Length: 177

{
    "code":1,"codeDescription":"NotFound",
    "extendedProperties":
    {
        "mS_LoggedBy":[{}]
    },
    "message":"The Transaction identified by '96af9850-bdbb-42c0-95c3-cb6a5a31a7ae' was not found."
}

Resposta de sucesso do recurso /payments/{transaction}/token:

HTTP/1.1 200 OK
Content-Length: 4

true

Resposta de sucesso do recurso /payments/{transaction}/token/{token}:

HTTP/1.1 200 OK
Content-Length: 458

{
    "id":"96af9850-bdbb-42c0-95c3-cb6a5a3178ae",
    "status":"Authorized",
    "amount":1.99,
    "links":
    [
        {"href":"https://inpdv-api-hmg.azurewebsites.net/payments/96af9850-bdbb-42c0-95c3-cb6a5a3178ae"},
        {"href":"https://inpdv-api-hmg.azurewebsites.net/payments/96af9850-bdbb-42c0-95c3-cb6a5a3178ae/execute","rel":"Execute","method":"Put"},
        {"href":"https://inpdv-api-hmg.azurewebsites.net/payments/96af9850-bdbb-42c0-95c3-cb6a5a3178ae/cancel","rel":"Cancel","method":"Put"}
    ]
}

Resposta do recurso /payments/{transaction}/token/{token} quando a transação está expirada:

HTTP/1.1 400 Bad Request
Content-Length: 154

{
    "code":7,
    "codeDescription":"ExpiredTransactionToken",
    "extendedProperties":{"mS_LoggedBy":[{}]},
    "message":"The transaction token has expired by timeout."
}

Resposta do recurso /payments/{transaction}/token/{token} quando a transação está cancelada/finalizada:

HTTP/1.1 400 Bad Request
Content-Length: 156

{
    "code":9,
    "codeDescription":"AlreadyExecutedTransaction",
    "extendedProperties":{"mS_LoggedBy":[{}]},
    "message":"The transaction already has its final state."
}

Resposta do recurso /payments/{transaction}/token/{token} quando o token é errado:

HTTP/1.1 400 Bad Request
Content-Length: 170

{
    "code":8,
    "codeDescription":"InvalidTransactionToken",
    "extendedProperties":{"failCount":1,"failLimit":3,"mS_LoggedBy":[{}]},
    "message":"The transaction token is invalid."
}

Se o usuário falhar 3 vezes sua conta será bloqueada e deve desbloqueá-la antes de fazer qualquer outra compra.


Resposta do recurso /payments/{transaction}/token/{token} quando o token já foi usado:

HTTP/1.1 400 Bad Request
Content-Length: 121

{
    "code":18,
    "codeDescription":"TokenAlreadyUsed",
    "extendedProperties":{"mS_LoggedBy":[{}]},
    "message":"token already used"
}

Por razões de segurança, o token é um TOTP. Se o token já foi usado, o usuário deve esperar até que um novo token possa ser gerado.


Resposta de sucesso do recurso /payments/{transaction}/execute:

HTTP/1.1 200 OK
Content-Length: 186

{
    "id":"0972741f-7aa1-47b8-a1aa-8774c7031c1c",
    "status":"Finished",
    "amount":1.99,
    "links":[{"href":"https://inpdv-api-hmg.azurewebsites.net/payments/0972741f-7aa1-47b8-a1aa-8774c7031c1c"}]
}

Resposta do recurso /payments/{transaction}/execute quando a transação ainda não foi autorizada:

HTTP/1.1 400 Bad Request
Content-Length: 145

{
    "code":5,
    "codeDescription":"NotAuthorizedTransaction",
    "extendedProperties":{"mS_LoggedBy":[{}]},"message":"The transaction must be authorized."
}

Resposta de sucesso do recurso /payments/{transaction}/cancel:

HTTP/1.1 200 OK
Content-Length: 187

{
    "id":"a48bfd6b-c671-4354-9cb9-49bcf196faf9",
    "status":"Cancelled",
    "amount":1.99,
    "links":[{"href":"https://inpdv-api-hmg.azurewebsites.net/payments/a48bfd6b-c671-4354-9cb9-49bcf196faf9"}]
}


⚠️ **GitHub.com Fallback** ⚠️