Module: Cardinity
- Defined in:
- lib/cardinity.rb,
lib/cardinity/utils.rb,
lib/cardinity/version.rb
Defined Under Namespace
Classes: Auth
Constant Summary collapse
- DEFAULT_API_BASE =
'https://api.cardinity.com/v1/'
- API_PAYMENTS =
'payments'
- STATUS_PENDING =
'pending'
- STATUS_APPROVED =
'approved'
- STATUS_DECLINED =
'declined'
- TYPE_AUTHORIZATION =
'authorization'
- TYPE_PURCHASE =
'purchase'
- TYPE_ERROR =
'https://developers.cardinity.com/api/v1/'
- CODES_WITH_RESPONSE =
[200, 201, 202, 400, 401, 402, 405, 500, 503]
- VERSION =
"0.1.2"
Class Method Summary collapse
- .api_base ⇒ Object
- .check_payment_data(payment) ⇒ Object
-
.configure!(options) ⇒ Object
Configure Cardinity.
-
.create_payment(payment_hash) ⇒ Hash
Creates a Payment object.
-
.create_refund(payment_id, amount:, description: '') ⇒ Hash
Fully or partially refund a payment.
-
.finalize_payment(payment_id, authorize_hash) ⇒ Hash
Finalizes a Payment.
- .get(base_url, params = {}) ⇒ Object
- .handle_error_response(e) ⇒ Object
- .headers(method, uri, params = {}) ⇒ Object
- .parse(response) ⇒ Object
- .patch(uri, body) ⇒ Object
-
.payment(payment_id) ⇒ Hash
Get the payment information for the given payment ID.
- .payment_uri(payment_id) ⇒ Object
-
.payments(limit: nil) ⇒ Array<Hash>, Hash
Get list of the last payments.
- .payments_uri ⇒ Object
- .post(uri, body) ⇒ Object
-
.refund(payment_id, refund_id) ⇒ Hash
Get the refund for the given payment ID and refund ID.
- .refund_uri(payment_id, refund_id) ⇒ Object
-
.refunds(payment_id) ⇒ Array<Hash>, Hash
Get all the refunds for the given payment ID.
- .refunds_uri(payment_id) ⇒ Object
- .serialize(data) ⇒ Object
Class Method Details
.api_base ⇒ Object
82 83 84 |
# File 'lib/cardinity/utils.rb', line 82 def self.api_base @config[:api_base] end |
.check_payment_data(payment) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/cardinity/utils.rb', line 9 def self.check_payment_data(payment) payment = payment.dup payment_method = payment['payment_method'] || payment[:payment_method] if payment_method.nil? payment['payment_method'] = 'card' end amount = payment['amount'] || payment[:amount] if amount.is_a?(Numeric) payment.delete(:amount) payment['amount'] = format('%.2f', amount) end payment end |
.configure!(options) ⇒ Object
Configure Cardinity. Must be called before other methods.
29 30 31 32 33 34 35 36 |
# File 'lib/cardinity.rb', line 29 def self.configure!() @config = { # key and secret to be supplied from outside api_base: DEFAULT_API_BASE } @config.merge! @auth = Cardinity::Auth.new(@config) end |
.create_payment(payment_hash) ⇒ Hash
Creates a Payment object
59 60 61 62 |
# File 'lib/cardinity.rb', line 59 def self.create_payment(payment_hash) checked_payment_data = check_payment_data(payment_hash) parse post(payments_uri, serialize(checked_payment_data)) end |
.create_refund(payment_id, amount:, description: '') ⇒ Hash
Fully or partially refund a payment
98 99 100 101 102 |
# File 'lib/cardinity.rb', line 98 def self.create_refund(payment_id, amount:, description: '') amount = format('%.2f', amount) if amount.is_a?(Numeric) parse post(refunds_uri(payment_id), serialize(amount: amount, description: description)) end |
.finalize_payment(payment_id, authorize_hash) ⇒ Hash
Finalizes a Payment
This is necessary for 3D secure payments, when the customer has completed the 3D secure redirects and authorization.
72 73 74 |
# File 'lib/cardinity.rb', line 72 def self.finalize_payment(payment_id, ) parse patch(payment_uri(payment_id), serialize()) end |
.get(base_url, params = {}) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/cardinity/utils.rb', line 55 def self.get(base_url, params = {}) uri = URI.parse(base_url) uri.query = URI.encode_www_form(params) RestClient.get uri.to_s, headers(:get, base_url, params) rescue RestClient::ExceptionWithResponse => e handle_error_response e end |
.handle_error_response(e) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/cardinity/utils.rb', line 47 def self.handle_error_response(e) if CODES_WITH_RESPONSE.index e.response.code e.response else raise e end end |
.headers(method, uri, params = {}) ⇒ Object
75 76 77 78 79 80 |
# File 'lib/cardinity/utils.rb', line 75 def self.headers(method, uri, params = {}) { content_type: 'application/json', authorization: @auth.sign_request(method, uri, params) } end |
.parse(response) ⇒ Object
39 40 41 |
# File 'lib/cardinity/utils.rb', line 39 def self.parse(response) JSON.parse response.body end |
.patch(uri, body) ⇒ Object
69 70 71 72 73 |
# File 'lib/cardinity/utils.rb', line 69 def self.patch(uri, body) RestClient.patch uri, body, headers(:patch, uri) rescue RestClient::ExceptionWithResponse => e handle_error_response e end |
.payment(payment_id) ⇒ Hash
Get the payment information for the given payment ID.
89 90 91 |
# File 'lib/cardinity.rb', line 89 def self.payment(payment_id) parse get(payment_uri(payment_id)) end |
.payment_uri(payment_id) ⇒ Object
27 28 29 |
# File 'lib/cardinity/utils.rb', line 27 def self.payment_uri(payment_id) "#{api_base}#{API_PAYMENTS}/#{payment_id}" end |
.payments(limit: nil) ⇒ Array<Hash>, Hash
Get list of the last payments. By default, cardinity returns 10 payments. Pass ‘limit` to override.
80 81 82 83 84 |
# File 'lib/cardinity.rb', line 80 def self.payments(limit: nil) query = {} query[:limit] = limit if limit parse get(payments_uri, query) end |
.payments_uri ⇒ Object
23 24 25 |
# File 'lib/cardinity/utils.rb', line 23 def self.payments_uri "#{api_base}#{API_PAYMENTS}" end |
.post(uri, body) ⇒ Object
63 64 65 66 67 |
# File 'lib/cardinity/utils.rb', line 63 def self.post(uri, body) RestClient.post uri, body, headers(:post, uri) rescue RestClient::ExceptionWithResponse => e handle_error_response e end |
.refund(payment_id, refund_id) ⇒ Hash
Get the refund for the given payment ID and refund ID.
115 116 117 |
# File 'lib/cardinity.rb', line 115 def self.refund(payment_id, refund_id) parse get(refund_uri(payment_id, refund_id)) end |
.refund_uri(payment_id, refund_id) ⇒ Object
35 36 37 |
# File 'lib/cardinity/utils.rb', line 35 def self.refund_uri(payment_id, refund_id) "#{api_base}#{API_PAYMENTS}/#{payment_id}/refunds/#{refund_id}" end |
.refunds(payment_id) ⇒ Array<Hash>, Hash
Get all the refunds for the given payment ID.
107 108 109 |
# File 'lib/cardinity.rb', line 107 def self.refunds(payment_id) parse get(refunds_uri(payment_id)) end |
.refunds_uri(payment_id) ⇒ Object
31 32 33 |
# File 'lib/cardinity/utils.rb', line 31 def self.refunds_uri(payment_id) "#{api_base}#{API_PAYMENTS}/#{payment_id}/refunds" end |
.serialize(data) ⇒ Object
43 44 45 |
# File 'lib/cardinity/utils.rb', line 43 def self.serialize(data) JSON.generate(data) end |