Class: PayuPayments::Plan

Inherits:
Caller
  • Object
show all
Defined in:
lib/payu_payments/plan.rb

Constant Summary

Constants inherited from Caller

Caller::API, Caller::API_SANDBOX

Constants included from Model

Model::API_PATH

Instance Attribute Summary

Attributes inherited from Caller

#access, #base, #errors, #resource

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Caller

#http_call, #set_base_uri

Methods included from Model

included, #load, #method_missing, #new?, #validate_lenght_of, #validate_presence_of

Constructor Details

#initialize(params = {}) ⇒ Plan

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Plan attributes from Payu documentation xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

id 36 String Identificador del plan en la plataforma de PayU. planCode 255 String Código único que el comercio le asigna al plan para su posterior identificación. Este código de plan no se puede volver a repetir aun cuando el plan sea borrado. description 255 String Descripción del plan. accountId Integer Identificador de la cuenta del comercio al cual se asocia el plan. interval 5 String Intervalo que define cada cuanto se realiza el cobro de la suscripción. Los valores posibles son:

DAY, WEEK, MONTH y YEAR.

intervalCount Integer Cantidad del intervalo que define cada cuanto se realiza el cobro de la suscripción. additionalValue.currency 3 String Código ISO 4217 de la moneda del valor asociado al plan. additionalValue.name 255 String Nombre del campo del valor asociado al plan. Los valores posibles son:

PLAN_VALUE: valor total de plan. 
PLAN_TAX_VALUE: valor de los impuestos asociados al valor del plan. 
PLAN_TAX_RETURN_BASE: valor base para el retorno de impuestos asociados al plan.

additionalValue.value Decimal Valor del plan, impuesto o base de retorno de acuerdo a plan.additionalValue.name. trialDays Integer Cantidad de días de prueba de la suscripción. maxPaymentAttempts Máx. 3 Integer Cantidad total de reintentos para cada pago rechazado de la suscripción. maxPaymentsAllowed Integer Cantidad total de pagos de la suscripción. maxPendingPayments Integer Cantidad máxima de pagos pendientes que puede tener una suscripción antes de ser cancelada. paymentAttemptsDelay Integer Cantidad de días de espera entre los reintentos de pago de la suscripción.



27
28
29
30
# File 'lib/payu_payments/plan.rb', line 27

def initialize(params={})
    super
    @resource = "plans"
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Model

Class Method Details

.create_base_month_plan(name, value, custom_options = {}) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/payu_payments/plan.rb', line 44

def self.create_base_month_plan(name, value, custom_options={})
    params = {
        planCode: name,
        description: "#{name} plan",
        accountId: PayuPayments.config[:account],
        intervalCount: 1,
        interval: "MONTH",
        maxPaymentsAllowed: 2000,
        maxPaymentAttempts: 3,
        paymentAttemptsDelay: 5,
        maxPendingPayments: 0,
        trialDays: 0,
        additionalValues: [{
                            name: "PLAN_VALUE",
                            value: value,
                            currency: "COP"
                            }]
    }
    params.merge!(custom_options)
    self.new params
end

Instance Method Details

#destroyObject



67
68
69
70
# File 'lib/payu_payments/plan.rb', line 67

def destroy
    @id = self.attr.planCode
    super
end

#saveObject



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/payu_payments/plan.rb', line 32

def save
    verb = new? ? "post" : "put"
    url = new? ? "#{API_PATH}/#{@resource}" : "#{API_PATH}/#{@resource}/#{base.planCode}"
    not_allowed_for_update = [:maxPaymentsAllowed, :trialDays, :id, :intervalCount, :interval, :accountId]

    params = base.marshal_dump
    not_allowed_for_update.each {|x| params.delete(x) } unless new?
    resp = http_call(verb, url, params)

    base.marshal_load resp
end