Class: MidasClient::Subscription

Inherits:
Request
  • Object
show all
Includes:
EndPoints
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

#login, #password

Attributes included from Util

#logger

Instance Method Summary collapse

Methods included from EndPoints

get_env, get_environment, production?, set_env, set_environment

Methods inherited from Request

#base_result, external_request, #initialize, #request

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/false
  code: "XXX"
  message: "Some message to you"
}


95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/midas_client/subscription.rb', line 95

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 =  EndPoints.get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:cancel].gsub('{subscriptionToken}', subscription_token)

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

  response[:result]
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"
}

}



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/midas_client/subscription.rb', line 58

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=  EndPoints.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)
  response = request(method, endpoint, self., self.password, params)

  result = response[:result]
  subscription_token = response[:subscriptionToken]
  first_invoice_result = response[:firstInvoiceResult]

  return result, subscription_token, first_invoice_result
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"
}

}



186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/midas_client/subscription.rb', line 186

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 =  EndPoints.get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:by_token].gsub('{subscriptionToken}', subscription_token)

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

  return response[:result], response[:subscription]
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,}]

}



223
224
225
226
227
228
229
230
231
232
233
234
# File 'lib/midas_client/subscription.rb', line 223

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 =  EndPoints.get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:invoices].gsub('{subscriptionToken}', subscription_token)

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

  return response[:result], response[:invoices]
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"
}


286
287
288
289
290
291
292
293
294
295
296
297
# File 'lib/midas_client/subscription.rb', line 286

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 =  EndPoints.get_env[:url] + EndPoints::SUBSCRIPTIONS[:context] + EndPoints::SUBSCRIPTIONS[:update_invoice].gsub('{invoiceToken}', invoice_token)

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

  response[:result]
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)
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"
}


124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/midas_client/subscription.rb', line 124

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 =  EndPoints.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.
  result, invoices = subscription_invoices(subscription_token)

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

  # 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[:result]
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"
}

}



253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
# File 'lib/midas_client/subscription.rb', line 253

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 =  EndPoints.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)
  response = request(method, endpoint, self., self.password, params)

  response[:result]
end