Class: ShieldPay::Webhook

Inherits:
Object
  • Object
show all
Extended by:
Helpers
Defined in:
lib/shieldpay/webhook.rb

Constant Summary collapse

EVENT_CODES =
{
  initiated: '1', add_fund: '2', accepted: '3', sender_complete: '4',
  receiver_complete: '5', funds_available: '6',
  receiver_decline_before_accept: '7', sender_cancelled_before_funded: '8',
  payment_generated: '9', payment_completed: '10', funding_pending: '11',
  sender_cancelled_after_funded: '12', refund_in_progress: '13',
  customer_status: '14'
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

stringify_keys, stringify_keys!

Constructor Details

#initialize(id, url, events) ⇒ Webhook

Returns a new instance of Webhook.



82
83
84
85
86
# File 'lib/shieldpay/webhook.rb', line 82

def initialize(id, url, events)
  @id = id
  @url = url
  @events = parse_events(events)
end

Instance Attribute Details

#eventsObject

Returns the value of attribute events.



5
6
7
# File 'lib/shieldpay/webhook.rb', line 5

def events
  @events
end

#idObject

Returns the value of attribute id.



5
6
7
# File 'lib/shieldpay/webhook.rb', line 5

def id
  @id
end

#urlObject

Returns the value of attribute url.



5
6
7
# File 'lib/shieldpay/webhook.rb', line 5

def url
  @url
end

Class Method Details

.add(input_params = {}) ⇒ Object

Webhook Params Parameter Optional? Description url no The url that shieldpay will call for webhooks events no The events that this webhook will monitor

(defaults to all events)
Options are:
:initated, :add_fund, :accepted, :sender_complete,
:receiver_complete, :funds_available,
:receiver_decline_before_accept,
:sender_cancelled_before_funded,
:payment_generated, :payment_completed,
:funding_pending,
:sender_cancelled_after_funded,
:refund_in_progress, :customer_status


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/shieldpay/webhook.rb', line 30

def self.add(input_params={})
  stringify_keys!(input_params)
  url = input_params["url"]
  if url.nil? || url.size == 0
    raise Errors::RequiredField.new("url is a required field")
  end
  params = { "Url" => url }
  events = input_params["events"]
  event_codes =  if events.nil? || events.size == 0
    EVENT_CODES.values
  else
    events.collect do |event|
      event_code = EVENT_CODES[event.to_sym]
      if event_code.nil?
        raise Errors::RequiredField.new("#{event} is not a valid event")
      end
      event_code
    end
  end


  params[:webhook_event_binding] = event_codes.collect do |event_code|
    { "EventId" => event_code }
  end

  response = Request.new.post("/Webhook/Add", params)
  response.dig("coreRes", "userMessage") == "Request successful"
end

.allObject

returns all the webhooks registered with ShieldPay



60
61
62
63
64
65
66
67
# File 'lib/shieldpay/webhook.rb', line 60

def self.all
  response = Request.new.post("/Webhook/AllByOrgKey", {})
  response["Data"].collect do |webhook|
    new(webhook["WebhookId"],
        webhook["URL"],
        webhook["WebhookEventBinding"])
  end
end

.delete(id) ⇒ Object

takes in the webhook id to delete a webhook



70
71
72
73
74
75
76
# File 'lib/shieldpay/webhook.rb', line 70

def self.delete(id)
  params = {
    webhook_id: id
  }
  response = Request.new.post("/Webhook/WebhookDelete", params)
  response["Data"] == "Success"
end

.event_name_from_id(event_id) ⇒ Object



78
79
80
# File 'lib/shieldpay/webhook.rb', line 78

def self.event_name_from_id(event_id)
  EVENT_CODES.key(event_id.to_s)
end