Class: ActiveMerchant::Billing::BarclaysEpdqGateway::Document
- Inherits:
-
Object
- Object
- ActiveMerchant::Billing::BarclaysEpdqGateway::Document
- Defined in:
- lib/active_merchant/billing/gateways/barclays_epdq.rb
Constant Summary collapse
- PAYMENT_INTERVALS =
{ :days => 'D', :months => 'M' }
- EPDQ_CARD_TYPES =
{ :visa => 1, :master => 2, :switch => 9, :maestro => 10, }
Instance Attribute Summary collapse
-
#type ⇒ Object
readonly
Returns the value of attribute type.
-
#xml ⇒ Object
readonly
Returns the value of attribute xml.
Instance Method Summary collapse
- #add_consumer(options = nil, &block) ⇒ Object
- #add_creditcard(creditcard) ⇒ Object
- #add_order_form(order_id = nil, group_id = nil, &block) ⇒ Object
- #add_transaction(auth_type, amount = nil, options = {}) ⇒ Object
- #build(&block) ⇒ Object
-
#format_expiry_date(creditcard) ⇒ Object
date must be formatted MM/YY.
-
#initialize(gateway, options = {}, document_options = {}, &block) ⇒ Document
constructor
A new instance of Document.
- #to_xml ⇒ Object
Constructor Details
#initialize(gateway, options = {}, document_options = {}, &block) ⇒ Document
Returns a new instance of Document.
183 184 185 186 187 188 189 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 183 def initialize(gateway, = {}, = {}, &block) @gateway = gateway @options = @document_options = @xml = Builder::XmlMarkup.new(:indent => 2) build(&block) end |
Instance Attribute Details
#type ⇒ Object (readonly)
Returns the value of attribute type.
169 170 171 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 169 def type @type end |
#xml ⇒ Object (readonly)
Returns the value of attribute xml.
169 170 171 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 169 def xml @xml end |
Instance Method Details
#add_consumer(options = nil, &block) ⇒ Object
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 227 def add_consumer(=nil, &block) xml.Consumer do if xml.Email([:email]) if [:email] billing_address = [:billing_address] || [:address] if billing_address xml.BillTo do xml.Location do xml.Address do xml.Street1 billing_address[:address1] xml.Street2 billing_address[:address2] xml.City billing_address[:city] xml.StateProv billing_address[:state] xml.PostalCode billing_address[:zip] xml.Country billing_address[:country_code] end end end end end instance_eval(&block) end end |
#add_creditcard(creditcard) ⇒ Object
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 251 def add_creditcard(creditcard) xml.PaymentMech do xml.CreditCard do xml.Type({ :DataType => 'S32' }, EPDQ_CARD_TYPES[creditcard.brand.to_sym]) xml.Number creditcard.number xml.Expires({ :DataType => 'ExpirationDate', :Locale => 826 }, format_expiry_date(creditcard)) if creditcard.verification_value.present? xml.Cvv2Indicator 1 xml.Cvv2Val creditcard.verification_value else xml.Cvv2Indicator 5 end xml.IssueNum(creditcard.issue_number) if creditcard.issue_number.present? end end end |
#add_order_form(order_id = nil, group_id = nil, &block) ⇒ Object
218 219 220 221 222 223 224 225 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 218 def add_order_form(order_id=nil, group_id=nil, &block) xml.OrderFormDoc do xml.Mode 'P' xml.Id(order_id) if order_id xml.GroupId(group_id) if group_id instance_eval(&block) end end |
#add_transaction(auth_type, amount = nil, options = {}) ⇒ Object
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 268 def add_transaction(auth_type, amount = nil, = {}) @auth_type = auth_type xml.Transaction do xml.Type @auth_type.to_s if [:payment_number] && [:payment_number] > 1 xml.CardholderPresentCode({ :DataType => 'S32' }, 8) else xml.CardholderPresentCode({ :DataType => 'S32' }, 7) end if [:payment_number] xml.PaymentNumber({ :DataType => 'S32' }, [:payment_number]) end if [:total_payments] xml.TotalNumberPayments({ :DataType => 'S32' }, [:total_payments]) end if amount xml.CurrentTotals do xml.Totals do xml.Total({ :DataType => 'Money', :Currency => 826 }, amount) end end end end end |
#build(&block) ⇒ Object
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 195 def build(&block) xml.instruct!(:xml, :version => '1.0') xml.EngineDocList do xml.DocVersion "1.0" xml.EngineDoc do xml.ContentType "OrderFormDoc" xml.User do xml.Name(@options[:login]) xml.Password(@options[:password]) xml.ClientId({ :DataType => "S32" }, @options[:client_id]) end xml.Instructions do if @document_options[:no_fraud] xml.Pipeline "PaymentNoFraud" else xml.Pipeline "Payment" end end instance_eval(&block) end end end |
#format_expiry_date(creditcard) ⇒ Object
date must be formatted MM/YY
294 295 296 297 298 299 300 301 302 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 294 def format_expiry_date(creditcard) month_str = "%02d" % creditcard.month if match = creditcard.year.to_s.match(/^\d{2}(\d{2})$/) year_str = "%02d" % match[1].to_i else year_str = "%02d" % creditcard.year end "#{month_str}/#{year_str}" end |
#to_xml ⇒ Object
191 192 193 |
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 191 def to_xml @xml.target! end |