Class: MidasClient::Subscription

Inherits:
Request
  • Object
show all
Defined in:
lib/midas_client/subscription.rb

Constant Summary

Constants included from EndPoints

EndPoints::DEVELOPMENT, EndPoints::MANAGEMENTS, EndPoints::OPERATIONS, EndPoints::PRODUCTION, EndPoints::QUERIES, EndPoints::SUBSCRIPTIONS

Instance Attribute Summary

Attributes inherited from Request

#environment, #login, #password, #query, #subscription, #transaction

Attributes included from Util

#logger

Instance Method Summary collapse

Methods inherited from Request

#base_result, external_request, #initialize, #request

Methods included from EndPoints

#get_env, #get_environment, #production?, #set_env

Methods included from Util

#error_log, #log, #sanitize_pci

Constructor Details

This class inherits a constructor from MidasClient::Request

Instance Method Details

#cancel_subscription(subscription_token) ⇒ Object

This method cancel a subscription.

This is a is synchronous operation.

Params:

subscriptionToken: string (Subscription unique identification generated by our
                          gateway and received in the subscription's creation response)

Response:

result: {
  success: true/falseb0FIYhr/xCvGFMuR1Wg059X/0cqwLg==
  code: "XXX"
  message: "Some message to you"
}


88
89
90
91
92
93
94
95
96
97
# File 'lib/midas_client/subscription.rb', line 88

def cancel_subscription(subscription_token)
  # define o método de envio da requisição
  method = :put

  # monta a URL de chamada da requisição
  endpoint =  get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:cancel].gsub('{subscriptionToken}', subscription_token)

  # faz a chamada a plataforma de pagamento (MIDAS)
  request(method, endpoint, self., self.password, {})
end

#create_subscription(*params) ⇒ Object

This method creates a subscription.

It is a synchronous operation, using method POST

Params:

externalId: string (Transaction identification on the client application)
externalDate: [optional] datetime from client application - YYYY-MM-DDThh:mm:SS.sssTDZ - ISO8601
frequencyType string Is the frequency about the charge will run. Possible values: DAY/WEEK/MONTH
frequencyInterval integer The interval that will be used.
startDate datetime for the beginning of subscription - yyyy-MM-dd
invoicesCount integer - number of invoices for the subscription
amount: number (Only integer numbers, with the last two digits representing the cents.
                For example: 100 is equivalent to R$ 1,00)
cardToken: string (created by method card_store)
cvv: number (Security Code)
callbackUrl string - URL to receive the result for each invoice charge

Response: {

"result": {
    "success": "true",
    "code": "0",
    "message": "Sucesso"
},
"subscriptionToken": "49ac54257eb1f92f"

}

Response with first payment {

"result": {
    "success": "true",
    "code": "0",
    "message": "Sucesso"
},
"subscriptionToken": "49ac54257eb1f92f",
"firstInvoiceResult": {
    "success": true,
    "code": "000",
    "message": "Sucesso"
}

}

Error response { “result”: {

    "success": "false",
    "code": "114",
    "message": "O token do cartao é obrigatório"
}

}



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/midas_client/subscription.rb', line 57

def create_subscription(*params)
  # Parametros são recebidos como um array de hash, pego o 1o item do array
  params = params.first

  # define o método de envio da requisição
  method = :post

  # monta a URL de chamada da requisição
  endpoint=  get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:create]


  params[:externalDate] = (params[:externalDate].blank? ? Time.now.iso8601(1) : params[:externalDate])
  params[:invoicesCount]= (params[:invoicesCount].blank? ? 12 : params[:invoicesCount])

  # faz a chamada a plataforma de pagamento (MIDAS)
  request(method, endpoint, self., self.password, params)
end

#subscription_by_token(subscription_token) ⇒ Object

This method performs a query by a specific transaction.

This is a is synchronous operation, using method GET

Params:

subscription_token: string (Transaction unique identification generated by our
                          gateway and received in the subscription's create response)#

Response: {

:result=>{
  :success=>true,
  :code=>"000",
  :message=>"Sucesso"
},
:subscription=>{
  :externalId=>"10011",
  :frequencyType=>"MONTH",
  :frequencyInterval=>1,
  :startDate=>"2016-07-28T00:00:00.000-04",
  :invoicesCount=>12,
  :paymentMethod=>"CREDIT_CARD",
  :amount=>5000,
  :creditCard=>{
    :brand=>"VISA",
    :panLastDigits=>"1855",
    :expirationMonth=>12,
    :expirationYear=>2020,
    :holderName=>"TESTE CONSOLE",
    :customer=>{
      :documentType=>"CPF",
      :documentNumber=>"41468031520"
    }
  },
  :token=>"a2bebd13f0a43e5a",
  :status=>"CANCELLED"
}

}



180
181
182
183
184
185
186
187
188
189
# File 'lib/midas_client/subscription.rb', line 180

def subscription_by_token(subscription_token)
  # define o método de envio da requisição
  method = :get

  # monta a URL de chamada da requisição
  endpoint =  get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:by_token].gsub('{subscriptionToken}', subscription_token)

  # faz a chamada a plataforma de pagamento (MIDAS)
  request(method, endpoint, self., self.password, {})
end

#subscription_invoices(subscription_token) ⇒ Object

This method performs a query by a specific transaction.

This is a is synchronous operation, using method GET

Params:

subscription_token: string (Transaction unique identification generated by our
                          gateway and received in the subscription's create response)#

Response:

{

:result=>{
  :success=>true,
  :code=>"000",
  :message=>"Sucesso"
},
:invoices=>[{
  :number=>1,
  :amount=>5000,
  :expirationDate=>"2016-07-28",
  :token=>"8bc3bf2ff9b08566fa8496fdce6c6f99",
  :status=>"PAID"
}. {:number=>2,...}, {:number=>3,}]

}



215
216
217
218
219
220
221
222
223
224
# File 'lib/midas_client/subscription.rb', line 215

def subscription_invoices(subscription_token)
  # define o método de envio da requisição
  method = :get

  # monta a URL de chamada da requisição
  endpoint =  get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:invoices].gsub('{subscriptionToken}', subscription_token)

  # faz a chamada a plataforma de pagamento (MIDAS)
  request(method, endpoint, self., self.password, {})
end

#update_invoice(invoice_token, params) ⇒ Object

This method updates a subscription.

This is a is synchronous operation.

Params:

subscriptionToken: querystring (Subscription unique identification generated by our
                          gateway and received in the subscription's creation response)
amount: number (Only integer numbers, with the last two digits representing the cents.
                For example: 100 is equivalent to R$ 1,00)
expirationDate string deadline date for the invoice. FORMAT: YYY-MM-DD

Response:

result: {
  success: true/false
  code: "XXX"
  message: "Some message to you"
}


274
275
276
277
278
279
280
281
282
283
# File 'lib/midas_client/subscription.rb', line 274

def update_invoice(invoice_token, params)
  # define o método de envio da requisição
  method = :put

  # monta a URL de chamada da requisição
  endpoint =  get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:update_invoice].gsub('{invoiceToken}', invoice_token)

  # faz a chamada a plataforma de pagamento (MIDAS)
  request(method, endpoint, self., self.password, params)
end

#update_subscription(subscription_token, params) ⇒ Object

This method updates a subscription callback, amount and updates opened invoices’ amount.

This is a is synchronous operation.

Params:

subscriptionToken: querystring (Subscription unique identification generated by our
                          gateway and received in the subscription's creation response)
params: {
          amount: number (Only integer numbers, with the last two digits representing the cents.
                For example: 100 is equivalent to R$ 1,00)
          callbackUrl: string - URL to receive the result for each invoice charge
        }

Response:

result: {
  success: true/false
  code: "XXX"
  message: "Some message to you"
}


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/midas_client/subscription.rb', line 117

def update_subscription(subscription_token, params)
  # define o método de envio da requisição
  method = :put

  # monta a URL de chamada da requisição
  endpoint =  get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:update].gsub('{subscriptionToken}', subscription_token)

  # faz a chamada a plataforma de pagamento (MIDAS) para atualizar o valor de face e callback da assinatura
  response = request(method, endpoint, self., self.password, params)

  # recupera a lista de invoices da assinatura para chamar o método de atualização de cada invoice.
  response_invoices = subscription_invoices(subscription_token)
  result = response_invoices[:result]
  invoices = response_invoices[:invoices]

  # filtra apenas as invoices em aberto
  opened_invoices = invoices.select{|s| s[:status] == 'OPEN'} unless invoices.blank?

  # percorre cada uma das invoices abertas e chama o método de atualização
  opened_invoices.each do |inv|
    update_invoice(inv[:token], {amount: params[:amount]})
  end
  response
end

#update_subscription_card(subscription_token, new_card_token) ⇒ Object

This method updates the credit card information associated to the subscription.

This is a is synchronous operation, using method PUT

Params:

subscription_token: string (Transaction unique identification generated by our
                          gateway and received in the subscription's create response)#
new_card_token: string that represents the new credit card token (created using card_store) for the subscription

Response: {

"result": {
  "success": true,
  "code": "0",
  "message": "Sucesso"
}

}



243
244
245
246
247
248
249
250
251
252
253
254
255
256
# File 'lib/midas_client/subscription.rb', line 243

def update_subscription_card(subscription_token, new_card_token)
  # define o método de envio da requisição
  method = :put

  # monta a URL de chamada da requisição
  endpoint =  get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:update_card].gsub('{subscriptionToken}', subscription_token)

  params = {
      cardToken: new_card_token
  }

  # faz a chamada a plataforma de pagamento (MIDAS)
  request(method, endpoint, self., self.password, params)
end