Skip to content

Instantly share code, notes, and snippets.

@grillermo
Last active August 29, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grillermo/3010252536e262452495 to your computer and use it in GitHub Desktop.
Save grillermo/3010252536e262452495 to your computer and use it in GitHub Desktop.
def self.create_from_webhook_notification(params)
data = params['data']
object = data['object']
payment_data = object['payment_method']
order_receipt = object['reference_id']
# Parse
payment_method = payment_data['object']
fee = object['fee'].to_f
created_at = Time.at(object['created_at'].to_f)
amount = object['amount'].to_f
# Log the message
conekta_payment = ConektaPayment.create!(
order_receipt: order_receipt,
remote_id: params['id'],
livemode: object['livemode'],
status: object['status'],
currency: object['currency'],
description: object['description'],
amount: amount,
fee: fee,
created_at: created_at,
webhook_type: params['type'],
payment_method: payment_method,
raw: params.to_json,
)
# Cash payment (OXXO) data
if payment_data.has_key? 'expiry_date'
conekta_payment.expiry_date = Time.at payment_data['expiry_date'].to_i
end
if payment_data.has_key? 'barcode'
conekta_payment.barcode = payment_data['barcode']
end
if payment_data.has_key? 'barcode_url'
conekta_payment.barcode_url = payment_data['barcode_url']
end
# Bank transfer specific data
if payment_data.has_key? 'service_name'
conekta_payment.service_name = payment_data['service_name']
end
if payment_data.has_key? 'service_number'
conekta_payment.service_number = payment_data['service_number']
end
if payment_data.has_key? 'type'
conekta_payment.bank_name = payment_data['type']
end
if payment_data.has_key? 'reference'
conekta_payment.reference = payment_data['reference']
end
# Card specific data
if payment_data.has_key? 'last4'
conekta_payment.last4 = payment_data['last4']
end
if payment_data.has_key? 'brand'
conekta_payment.brand = payment_data['brand']
end
if object.has_key? 'paid_at' && object['paid_at']
conekta_payment.paid_at = Time.at object['paid_at'].to_i
end
conekta_payment.save!
return conekta_payment
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment