# TADA Payments
[toc]
# PayIn
## SPEI
O SPEI® (Sistema Internacional de Pagamentos Eletrônicos) foi desenvolvido pelo Banco do México e permite que os mexicanos façam pagamentos eletrônicos instantâneos.
Este sistema foi desenvolvido para facilitar os pagamentos entre instituições financeiras, além de permitir que elas ofereçam serviços de pagamento de e-commerce seguros e eficientes aos consumidores mexicanos.
Através do SPEI você está oferecendo a qualquer pessoa que tenha um banco no México uma solução 24 horas, 7 dias por semana, para fazer transações com confirmação de pagamento em tempo real.
Como funciona?

O banco emissor precisará de dados de identificação como conta chave(número da conta), o número do cartão ou o número de telefone qualquer um desses dados precisam ser preenchido depois disso eles vão pedir o valor não necessariamente tem que ser um valor fixo, mas no final do dia você tem que colocá-lo e o nome do dono quem é essa conta, embora não seja de tudo obrigatório e pode haver outros dados envolvidos
Depois de inserir esses dados o banco emissor envia uma ordem que o banco do méxico vai receber através do sistema de SPEN para fazer a liquidação com o banco beneficiário. Quando é feita a liquidação, o pagamento já foi aprovado e o valor é creditado para o beneficiário. Todo esse processo pode acontecer quase imediatamente e em média demora até 30 segundos. Entretanto algumas instituições financeiras podem levar até 24 horas nesse tráfego. O tempo vai variar de acordo com a instituição financeira.
O número de telefone de destino ou o número dos cartões são dados que nem todos os bancos e todas as instituições financeiras aceitam. A conta chave, como identificação é aceita em todas instituições financeiras
**Geração de PayIn SPEI**
É feito atraves do endpoint POST /api/boxPayment, gerando uma url para o site da TADA onde o serviço de payIn será feito
````
BODY:
{
"id_merchant":"MXXXXXXXXX",
"api_token":"$2y$10$EOTL/cwUv4IXXXXXXXXXXXXXXXXXXME/gUWkHi1jz52xIfN6xQIJ1W"
"country_code" : "PER",
"currency_code" : "PEN",
"amount" : 250.80,
"concept" : "Concepto de la transaccion",
"url_logo" : "http://control.tadapayments.com/assets/images/logotipo_singrupo.png",
"name_store" : "Store's name",
"id_out_transaction" : "id-0001",
"url_send_data" : "wwww.mysite.com/callback.php"
"name_client" : "Jesus",
"lastname_client" : "Labra",
"phone_client" : "7721402519",
"email_client" : "jlabraibarra@gmail.com",
"spei" : true,
}
````
````
Resposta:
{
"status": "success",
"msg": "Successfully created checkout box.",
"url": "https://control.tadapayments.com/box/payment?ref=1GuxvxQMtE"
}
````

:::info
- possivel mudar o logo no canto superior esquerdo para um da Transfero
:::
sempre que um pagamento é feito será enviado um callback para uma url de nossa escolha com as seguintes informações:
```
{
"id_out_transaction":"id-0001",
"id_tx":"XXXXXXXXXX00000XXX"
"account":"XXXXXXXXXX00000XXX",
"sign": "31004a4e46bb90496172a63b72d176f1"
}
```
:::info
- ``sign`` é a assinatura para garantir que os dados que estamos recebendo são do sistema TADA
- ``id_out_transaction`` funciona como nosso ``referenceId`` onde passamos esse campo no body do request.
:::
:::warning
Na documentação tem 2 outros tipos de serviços ``payment in cash``
e ``pago en línea`` que podem ser adicionados no body da requisição, mas não está claro o funcionamento deles. Seguem o mesmo fluxo do SPEI
:::
:::danger
Ainda não foi possivel testar esse fluxo, pois a conta de sandbox não tem permissão para usar esse endpoint.
:::
**Possível Fluxo no Caas**
Usando os endpoint atuais da api do caas
{%figma https://www.figma.com/file/JlEvAphJ0pjssHMEn0EBaL/Caas-TADA?node-id=0%3A1 %}
## Credit Card
**Credit Card**
É feito atraves do endpoint POST /api/fe_sb/v1/cardPayment, com as informações do cartão, criando um pagamento de credito ou debito
````
BODY:
{
"id_merchant":"MXXXXXXXXX",
"api_token":"$2y$10$EOTL/cwUv4IXXXXXXXXXXXXXXXXXXME/gUWkHi1jz52xIfN6xQIJ1W",
"Quantity":2,
"description":"App Development",
"unitPrice":125.95,
"amount":251.90,
"Id":0,
"pan":"4027XXXXXXXX8677",
"cardholderName":"Tada Payments",
"cvv2":"101",
"expDate":"2412",
"email":"contact@tadapayments.com",
"sendTicket":true
}
````
````
Resposta:
{
"status": "success",
"step": null,
"affiliation_id": "70XXXX8",
"orderId":"76XXX64",
"authnum":"8XXX80",
"transactionId":"84XXX85",
"Base64Pdf": "(Very long chain)",
"url": null
}
````
:::info
- Possível cancelar ou devolver o pagamento
- Confirmação de pagamento por polling
:::
**Card Link**
É feito através do endpoint POST /api/smartlinks/create, onde será enviado por email, um link para preencher os dados do cartão para a criação de um pagamento
````
BODY:
{
"id_merchant":"MXXXXXXXXX",
"api_token":"$2y$10$EOTL/cwUv4IXXXXXXXXXXXXXXXXXXME/gUWkHi1jz52xIfN6xQIJ1W",
"amount": 99.99,
"email":"email@domain.com"
}
````
````
Resposta:
{
"status": "success",
"msg": "Solicitud de pago creada y enviada con exito",
"reference": "4373a5d7-66e5a183c503",
"url": "http://control.tadapayments.com0/request/payment/4373a5d7-66e5a183c503"
}
````
:::warning
- ``url`` não está especificado o que é nesse contexto
:::


:::info
- Possível cancelar ou devolver o pagamento
- Confirmação de pagamento por polling
:::
# PayOut
**Create PayOut**
É feito atraves do endpoint POST /v1/payments
````
BODY:
{
"cardToken": "561c2cd0639e44cd94d6551f0d939efc",
"merchantId": "749a8c7ebc79428383d9eac99f409c91",
"currency": "MXN",
"fee": 15,
"amount": {
"subtotalIva": 0,
"subtotalIva0": 1500,
"ice": 0,
"iva": 0
},
"payee": {
"alias": "John Doe",
"bankAccountNumber": "019293439102921211",
"email": "some.mail@mail.com"
}
}
````
````
Resposta:
{
"transactionReference": "861ba8f4-0783-43bb-93e7-6a0954832ed6",
"amount": 1500,
"currency": "MXN",
"metadata": null,
"ticketNumber": "199362112211702042",
"type": "charge",
"date": "2021-06-05 15:54:13"
}
````
**OU**
É feito atraves do endpoint POST /v1/payees
````
BODY:
{
"payments": [
{
"amount": 140,
"description": "Description for this paymentQWE",
"payee": {
"id": 1234,
"nickname": "NicknameISRA"
}
}
]
}
````
````
Resposta:
{
"payments": [
{
"id": 506,
"dateCreated": "2020-02-10T15:01:09.880183Z",
"lastUpdated": "2020-02-10T15:01:09.880216Z",
"status": "CREATED",
"statusReason": null,
"payee": {
"id": 325,
"status": "ACCEPTED",
"fullName": "William Ferrell",
"email": "willferrell@differently.net",
"birthDate": "1967-07-16T00:00:00Z",
"mobileNumber": "987786321333",
"phoneNumber": "",
"idNumber": "9875613",
"idType": {
"id": 15,
"name": "RFC"
},
"gender": "MALE",
"maritalStatus": "DIVORCED",
"taxId": "",
"address": "Los Alerces 876",
"city": {
"id": 1746,
"name": "Guadalajara",
"country": {
"id": 2,
"name": "Mexico",
"code": "MEX"
}
}
},
"amount": 1567,
"notes": null,
"description": "Payment for Will",
"transactionStatusChanges": []
},
````
:::info
- atualização das mudança de status feitas por polling
:::
:::warning
- Não está claro na documentação qual o cenario de uso para os 2 endpoints
:::
# Duvidas
## PayIn
**BoxPayment**
como funciona os seguintes parâmetros no boxPayment ``Payment in cash`` e ``Pago en linea (Multiples paises).``
Amount é em dolar igual ao cartão de credito ou o valor na moeda passado no parametro ``currency_code``
Como testar o paymentBox em DEV
## PayOut
Qual a diferença entre os endpoint de criação de payments ``https://{{domain}}/v1/payees/payee``
e ``https://{{domain}}/v1/payments``
É obrigatorio cadastrar ``merchantId`` para fazer payout?
Após chamar a api e tiver sucesso na criação do payment eu posso assumir que foi completado, tenho que consultar em algum lugar ou possuem algum callback?
Quais são os possiveis status de payOut