Class: ActiveMerchant::Billing::SagePayGateway
- Defined in:
- lib/active_merchant/billing/gateways/sage_pay.rb
Constant Summary collapse
- TEST_URL =
'https://test.sagepay.com/gateway/service'
- LIVE_URL =
'https://live.sagepay.com/gateway/service'
- SIMULATOR_URL =
'https://test.sagepay.com/Simulator'
- APPROVED =
'OK'
- REGISTERED =
'REGISTERED'
- TRANSACTIONS =
{ :purchase => 'PAYMENT', :credit => 'REFUND', :authorization => 'DEFERRED', :capture => 'RELEASE', :void => 'VOID', :abort => 'ABORT', :repeat => 'REPEAT', :authenticate => 'AUTHENTICATE', :authorise => 'AUTHORISE' }
- CREDIT_CARDS =
{ :visa => "VISA", :master => "MC", :delta => "DELTA", :solo => "SOLO", :switch => "MAESTRO", :maestro => "MAESTRO", :american_express => "AMEX", :electron => "UKE", :diners_club => "DC", :jcb => "JCB" }
- ELECTRON =
/^(424519|42496[23]|450875|48440[6-8]|4844[1-5][1-5]|4917[3-5][0-9]|491880)\d{10}(\d{3})?$/
- AVS_CVV_CODE =
{ "NOTPROVIDED" => nil, "NOTCHECKED" => 'X', "MATCHED" => 'Y', "NOTMATCHED" => 'N' }
Constants inherited from Gateway
Instance Attribute Summary
Attributes inherited from Gateway
Instance Method Summary collapse
- #authenticate(money, credit_card, options = {}) ⇒ Object
- #authorize(money, credit_card, options = {}) ⇒ Object
-
#capture(money, identification, options = {}) ⇒ Object
You can only capture a transaction once, even if you didn’t capture the full amount the first time.
-
#credit(money, identification, options = {}) ⇒ Object
Crediting requires a new order_id to passed in, as well as a description.
-
#initialize(options = {}) ⇒ SagePayGateway
constructor
A new instance of SagePayGateway.
- #purchase(money, credit_card, options = {}) ⇒ Object
-
#repeat(money, identification, options = {}) ⇒ Object
Identification is authorization for original payment or authorization.
- #test? ⇒ Boolean
-
#three_d_complete(pa_res, md) ⇒ Object
Completes a 3D Secure transaction.
- #three_d_secure_enabled? ⇒ Boolean
- #void(identification, options = {}) ⇒ Object
Methods inherited from Gateway
#card_brand, card_brand, inherited, supports?
Methods included from Utils
Methods included from CreditCardFormatting
Methods included from RequiresParameters
Methods included from PostsData
Constructor Details
#initialize(options = {}) ⇒ SagePayGateway
Returns a new instance of SagePayGateway.
56 57 58 59 60 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 56 def initialize( = {}) requires!(, :login) @options = super end |
Instance Method Details
#authenticate(money, credit_card, options = {}) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 98 def authenticate(money, credit_card, = {}) requires!(, :order_id) post = {} add_credit_card(post, credit_card) add_address(post, ) add_customer_data(post, ) add_invoice(post, ) add_amount(post, money, ) commit(:authenticate, post) end |
#authorize(money, credit_card, options = {}) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 84 def (money, credit_card, = {}) requires!(, :order_id) post = {} add_amount(post, money, ) add_invoice(post, ) add_credit_card(post, credit_card) add_address(post, ) add_customer_data(post, ) add_three_d_secure_flag(post, ) commit(:authorization, post) end |
#capture(money, identification, options = {}) ⇒ Object
You can only capture a transaction once, even if you didn’t capture the full amount the first time.
131 132 133 134 135 136 137 138 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 131 def capture(money, identification, = {}) post = {} add_reference(post, identification) add_release_amount(post, money, ) commit(:capture, post) end |
#credit(money, identification, options = {}) ⇒ Object
Crediting requires a new order_id to passed in, as well as a description
150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 150 def credit(money, identification, = {}) requires!(, :order_id, :description) post = {} add_credit_reference(post, identification) add_amount(post, money, ) add_invoice(post, ) commit(:credit, post) end |
#purchase(money, credit_card, options = {}) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 70 def purchase(money, credit_card, = {}) requires!(, :order_id) post = {} add_amount(post, money, ) add_invoice(post, ) add_credit_card(post, credit_card) add_address(post, ) add_customer_data(post, ) add_three_d_secure_flag(post, ) commit(:purchase, post) end |
#repeat(money, identification, options = {}) ⇒ Object
Identification is authorization for original payment or authorization. Supply an :order_id option that is a unique id for this repeat payment (don’t just supply the original order id).
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 113 def repeat(money, identification, = {}) requires!(, :order_id) post = {} add_invoice(post, ) (post, identification) add_amount(post, money, ) # If we're making the first payment, we AUTHORISE, otherwise we're REPEATING # a PAYMENT or an existing AUTHORISE if identification.split(';').last == 'authenticate' commit(:authorise, post) else commit(:repeat, post) end end |
#test? ⇒ Boolean
62 63 64 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 62 def test? @options[:test] || super end |
#three_d_complete(pa_res, md) ⇒ Object
Completes a 3D Secure transaction
163 164 165 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 163 def three_d_complete(pa_res, md) commit(:three_d_complete, 'PARes' => pa_res, 'MD' => md) end |
#three_d_secure_enabled? ⇒ Boolean
66 67 68 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 66 def three_d_secure_enabled? @options[:enable_3d_secure] end |
#void(identification, options = {}) ⇒ Object
140 141 142 143 144 145 146 147 |
# File 'lib/active_merchant/billing/gateways/sage_pay.rb', line 140 def void(identification, = {}) post = {} add_reference(post, identification) action = abort_or_void_from(identification) commit(action, post) end |