Class: OffsitePayments::Integrations::Moneybookers::Notification
- Inherits:
-
Notification
- Object
- Notification
- OffsitePayments::Integrations::Moneybookers::Notification
- Defined in:
- lib/offsite_payments/integrations/moneybookers.rb
Constant Summary collapse
- FAILED_REASON_CODES =
{ '1' => "Referred by card issuer", '2' => "Invalid Merchant", '3' => "Stolen card", '4' => "Declined by customer's Card Issuer", '5' => "Insufficient funds", '8' => "PIN tries exceed - card blocked", '9' => "Invalid Transaction", '10' => "Transaction frequency limit exceeded", '12' => "Invalid credit card or bank account", '15' => "Duplicate transaction", '19' => "Unknown failure reason. Try again", '24' => "Card expired", '28' => "Lost/Stolen card", '32' => "Card Security Code check failed", '37' => "Card restricted by card issuer", '38' => "Security violation", '42' => "Card blocked by card issuer", '44' => "Customer's issuing bank not available", '51' => "Processing system error", '63' => "Transaction not permitted to cardholder", '70' => "Customer failed to complete 3DS", '71' => "Customer failed SMS verification", '80' => "Fraud engine declined", '98' => "Error in communication with provider", '99' => "Failure reason not specified" }.freeze
Instance Attribute Summary
Attributes inherited from Notification
Instance Method Summary collapse
-
#acknowledge(authcode = nil) ⇒ Object
Acknowledge the transaction to MoneyBooker.
- #complete? ⇒ Boolean
-
#currency ⇒ Object
currency of the payment as posted by the merchant on the entry form.
- #failed_reason_code ⇒ Object
-
#gross ⇒ Object
amount of the payment as posted by the merchant on the entry form (ex. 39.60/39.6/39).
- #item_id ⇒ Object
- #md5sig ⇒ Object
-
#merchant_amount ⇒ Object
total amount of the payment in Merchants currency (ex 25.46/25.4/25).
-
#merchant_currency ⇒ Object
currency of mb_amount, will always be the same as the currency of the beneficiary’s account at Moneybookers.com.
-
#merchant_id ⇒ Object
Unique ID from the merchant’s Moneybookers.com account, needed for calculatinon of md5 sig.
- #message ⇒ Object
- #payer_email ⇒ Object
-
#received_at ⇒ Object
When was this payment received by the client.
- #receiver_email ⇒ Object
- #secret ⇒ Object
-
#status ⇒ Object
‘2’ Processed – This status is sent when the transaction is processed and the funds have been received on your Moneybookers account.
- #status_code ⇒ Object
-
#test? ⇒ Boolean
Was this a test transaction?.
- #transaction_id ⇒ Object
Methods inherited from Notification
#amount, #empty!, #gross_cents, #initialize, #iso_currency, #valid_sender?
Constructor Details
This class inherits a constructor from OffsitePayments::Notification
Instance Method Details
#acknowledge(authcode = nil) ⇒ Object
Acknowledge the transaction to MoneyBooker. This method has to be called after a new apc arrives. It will verify that all the information we received is correct and will return a ok or a fail. The secret (second credential) has to be provided in the parameter :credential2 when instantiating the Notification object.
Example:
def ipn
notify = Moneybookers.notification(request.raw_post, :credential2 => 'secret')
if notify.acknowledge
... process order ... if notify.complete?
else
... log possible hacking attempt ...
end
229 230 231 232 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 229 def acknowledge(authcode = nil) fields = [merchant_id, item_id, Digest::MD5.hexdigest(secret.to_s).upcase, merchant_amount, merchant_currency, status_code].join md5sig == Digest::MD5.hexdigest(fields).upcase end |
#complete? ⇒ Boolean
116 117 118 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 116 def complete? status == 'Completed' end |
#currency ⇒ Object
currency of the payment as posted by the merchant on the entry form
186 187 188 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 186 def currency params['currency'] end |
#failed_reason_code ⇒ Object
151 152 153 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 151 def failed_reason_code params['failed_reason_code'] end |
#gross ⇒ Object
amount of the payment as posted by the merchant on the entry form (ex. 39.60/39.6/39)
191 192 193 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 191 def gross params['amount'] end |
#item_id ⇒ Object
155 156 157 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 155 def item_id params['transaction_id'] end |
#md5sig ⇒ Object
176 177 178 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 176 def md5sig params['md5sig'] end |
#merchant_amount ⇒ Object
total amount of the payment in Merchants currency (ex 25.46/25.4/25)
201 202 203 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 201 def merchant_amount params['mb_amount'] end |
#merchant_currency ⇒ Object
currency of mb_amount, will always be the same as the currency of the beneficiary’s account at Moneybookers.com
196 197 198 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 196 def merchant_currency params['mb_currency'] end |
#merchant_id ⇒ Object
Unique ID from the merchant’s Moneybookers.com account, needed for calculatinon of md5 sig
181 182 183 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 181 def merchant_id params['merchant_id'] end |
#message ⇒ Object
146 147 148 149 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 146 def return unless failed_reason_code FAILED_REASON_CODES[failed_reason_code] end |
#payer_email ⇒ Object
168 169 170 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 168 def payer_email params['pay_from_email'] end |
#received_at ⇒ Object
When was this payment received by the client.
164 165 166 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 164 def received_at nil end |
#receiver_email ⇒ Object
172 173 174 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 172 def receiver_email params['pay_to_email'] end |
#secret ⇒ Object
210 211 212 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 210 def secret @options[:credential2] end |
#status ⇒ Object
‘2’ Processed – This status is sent when the transaction is processed and the funds have been received on your Moneybookers account. ‘0’ Pending – This status is sent when the customers pays via the pending bank transfer option. Such transactions will auto-process IF the bank transfer is received by Moneybookers. We strongly recommend that you do NOT process the order/transaction in your system upon receipt of a pending status from Moneybookers. ‘-1’ Cancelled – Pending transactions can either be cancelled manually by the sender in their online account history or they will auto-cancel after 14 days if still pending. ‘-2’ Failed – This status is sent when the customer tries to pay via Credit Card or Direct Debit but our provider declines the transaction. If you do not accept Credit Card or Direct Debit payments via Moneybookers (see page 17) then you will never receive the failed status. ‘-3’ Chargeback – This status could be received only if your account is configured to receive chargebacks. If this is the case, whenever a chargeback is received by Moneybookers, a -3 status will be posted on the status_url for the reversed transaction.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 125 def status case status_code when '2' 'Completed' when '0' 'Pending' when '-1' 'Cancelled' when '-2' 'Failed' when '-3' 'Reversed' else 'Error' end end |
#status_code ⇒ Object
142 143 144 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 142 def status_code params['status'] end |
#test? ⇒ Boolean
Was this a test transaction?
206 207 208 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 206 def test? false end |
#transaction_id ⇒ Object
159 160 161 |
# File 'lib/offsite_payments/integrations/moneybookers.rb', line 159 def transaction_id params['mb_transaction_id'] end |