imobanco / zoop-wrapper

Cliente não oficial Zoop Python, para realizar integração com o gateway de pagamento, voltado para os subvendedores do MarkePlace e extendendo seu suporte
https://zoop-wrapper.readthedocs.io/
GNU General Public License v3.0
2 stars 1 forks source link

Transação de cartão de crédito #27

Closed rodrigondec closed 4 years ago

rodrigondec commented 4 years ago

Resumo

A zoop possui Transação documentação oficial da zoop.

Descrição

A transação utiliza um 'objeto' nesteado chamado Payment Method.

O Payment Method 'boleto' já está funcionando.

Já existe o objeto PaymentMethod nos models.

Precisa testar e criar uma transação com o Payment Method 'credit_card'.

Cartão presente vs cartão não presente

Já temos o 'suporte' à cartão não presente. Que é justamente o fluxo de adicionar um cartão e utilizar o cartão já cadastrado na zoop para a transação.

documentação de cartão não presente/tokenizado

Porém me recordo de algo sobre ser utilizado um cartão 'on the fly' na transação.

documentação de cartão presente/'on the fly'

Source

Exist um objeto Source nesteado em transaction. Deverá ser criado o model para ele com os atributos do exemplo.

O Source herda de ZoopObject, por ele não ter nenhum atributo.

O source terá 'tipo dinâmico'. Ou seja, ele é um source do tipo 'cartão presente' ou então do tipo 'cartão tokenizado'.

Isso irá ditar quais são os atributos required.

Atributos

Tipos de cartão

Cartão não presente

Exemplo de dados

"source": {
    "type": "card",
    "card": {
      "id": "8c795953db6342be9fc14a36d5308bed"
    }
  },

Conjunto do get_all_fields

{'type', 'card'}

Conjunto do get_validation_fields

como não temos outros valores para saber se tem algum outro campo 'não obrigatório' deduzimos que todos os campos são necessários

{'type', 'card'}

Tipo cartão presente

Exemplo de dados

"source":{
"usage":"single_use",
"card":{
"holder_name":"JOAO SILVA",
"expiration_month":"9",
"expiration_year":"2027",
"card_number":"4539003370725497",
"security_code":"123"
},
"currency":"BRL",
"type":"card",
"amount":7
},

Conjunto do get_all_fields

{'type', 'card', 'currency', 'usage', 'amount'}

Conjunto do get_validation_fields

como não temos outros valores para saber se tem algum outro campo 'não obrigatório' deduzimos que todos os campos são necessários

{'type', 'card', 'currency', 'usage', 'amount'}

Transaction

A transação possui tipos dinâmicos.

O tipo dinâmico é identificado a partir do atributo obrigatório payment_type.

conjunto get_required_fields

Esses campos são iguais para os dois tipos dinâmicos

{
   "amount",
   "currency",
   "description",
   "on_behalf_of",
   "payment_type"
} 

Tipo credit

Esse é o tipo do cartão.

https://docs.zoop.co/docs/cobrando-cart%C3%B5es-tokenizados

conjunto do get_all_fields

{
  "source", 
} 
+ conjunto de `get_required_fields` +
+ conjunto de `get_non_required_fields`

conjunto do get_validation_fields

{
  "source", 
} 
+ conjunto de `get_required_fields`

Tipo boleto

Esse é o tipo do boleto.

https://docs.zoop.co/docs/gerando-um-boleto

conjunto do get_all_fields

{
  "payment_method", 
} 
+ conjunto de `get_required_fields` +
+ conjunto de `get_non_required_fields`

conjunto do get_validation_fields

{
  "payment_method", 
} 
+ conjunto de `get_required_fields`

Tarefas

rodrigondec commented 4 years ago

Bloqueado pelo issue #33