3
3
module ActiveMerchant # :nodoc:
4
4
module Billing # :nodoc:
5
5
class TransFirstTransactionExpressGateway < Gateway
6
+ version 'v1'
7
+
6
8
self . display_name = 'TransFirst Transaction Express'
7
9
self . homepage_url = 'http://transactionexpress.com/'
8
10
9
- self . test_url = ' https://ws.cert.transactionexpress.com/portal/merchantframework/MerchantWebServices-v1 ?wsdl'
10
- self . live_url = ' https://ws.transactionexpress.com/portal/merchantframework/MerchantWebServices-v1 ?wsdl'
11
+ self . test_url = " https://ws.cert.transactionexpress.com/portal/merchantframework/MerchantWebServices-#{ fetch_version } ?wsdl"
12
+ self . live_url = " https://ws.transactionexpress.com/portal/merchantframework/MerchantWebServices-#{ fetch_version } ?wsdl"
11
13
12
14
self . supported_countries = [ 'US' ]
13
15
self . default_currency = 'USD'
14
16
self . money_format = :cents
15
17
self . supported_cardtypes = %i[ visa master american_express discover diners_club ]
16
18
17
- V1_NAMESPACE = ' http://postilion/realtime/merchantframework/xsd/v1/'
19
+ V1_NAMESPACE = " http://postilion/realtime/merchantframework/xsd/#{ fetch_version } /"
18
20
SOAPENV_NAMESPACE = 'http://schemas.xmlsoap.org/soap/envelope/'
19
21
AUTHORIZATION_FIELD_SEPARATOR = '|'
20
22
@@ -295,10 +297,10 @@ def store(payment_method, options = {})
295
297
customer_id = r . params [ 'custId' ]
296
298
297
299
store_payment_method_request = build_xml_payment_storage_request do |doc |
298
- doc [ 'v1' ] . cust do
300
+ doc [ fetch_version ] . cust do
299
301
add_customer_id ( doc , customer_id )
300
- doc [ 'v1' ] . pmt do
301
- doc [ 'v1' ] . type 0 # add
302
+ doc [ fetch_version ] . pmt do
303
+ doc [ fetch_version ] . type 0 # add
302
304
add_credit_card ( doc , payment_method )
303
305
end
304
306
end
@@ -459,7 +461,7 @@ def build_xml_request(wrapper, merchant_product_type = nil)
459
461
Nokogiri ::XML ::Builder . new ( encoding : 'UTF-8' ) do |xml |
460
462
xml [ 'soapenv' ] . Envelope ( 'xmlns:soapenv' => SOAPENV_NAMESPACE ) do
461
463
xml [ 'soapenv' ] . Body do
462
- xml [ 'v1' ] . send ( wrapper , ' xmlns:v1' => V1_NAMESPACE ) do
464
+ xml [ fetch_version ] . send ( wrapper , " xmlns:#{ fetch_version } " => V1_NAMESPACE ) do
463
465
add_merchant ( xml )
464
466
yield ( xml )
465
467
end
@@ -473,44 +475,44 @@ def add_transaction_code_to_request(request, action)
473
475
return request if action == :store
474
476
475
477
doc = Nokogiri ::XML ::Document . parse ( request )
476
- merc_nodeset = doc . xpath ( '//v1 :merc' , 'v1' => V1_NAMESPACE )
477
- merc_nodeset . after "<v1 :tranCode>#{ TRANSACTION_CODES [ action ] } </v1 :tranCode>"
478
+ merc_nodeset = doc . xpath ( "// #{ fetch_version } :merc" , fetch_version => V1_NAMESPACE )
479
+ merc_nodeset . after "<#{ fetch_version } :tranCode>#{ TRANSACTION_CODES [ action ] } </#{ fetch_version } :tranCode>"
478
480
doc . root . to_xml
479
481
end
480
482
481
483
def add_merchant ( doc , product_type = nil )
482
- doc [ 'v1' ] . merc do
483
- doc [ 'v1' ] . id @options [ :gateway_id ]
484
- doc [ 'v1' ] . regKey @options [ :reg_key ]
485
- doc [ 'v1' ] . inType '1'
486
- doc [ 'v1' ] . prodType product_type if product_type
484
+ doc [ fetch_version ] . merc do
485
+ doc [ fetch_version ] . id @options [ :gateway_id ]
486
+ doc [ fetch_version ] . regKey @options [ :reg_key ]
487
+ doc [ fetch_version ] . inType '1'
488
+ doc [ fetch_version ] . prodType product_type if product_type
487
489
end
488
490
end
489
491
490
492
def add_amount ( doc , money )
491
- doc [ 'v1' ] . reqAmt amount ( money )
493
+ doc [ fetch_version ] . reqAmt amount ( money )
492
494
end
493
495
494
496
def add_order_number ( doc , options )
495
497
return unless options [ :order_id ]
496
498
497
- doc [ 'v1' ] . authReq {
498
- doc [ 'v1' ] . ordNr options [ :order_id ]
499
+ doc [ fetch_version ] . authReq {
500
+ doc [ fetch_version ] . ordNr options [ :order_id ]
499
501
}
500
502
end
501
503
502
504
def add_credit_card ( doc , payment_method )
503
- doc [ 'v1' ] . card {
504
- doc [ 'v1' ] . pan payment_method . number
505
- doc [ 'v1' ] . sec payment_method . verification_value if payment_method . verification_value?
506
- doc [ 'v1' ] . xprDt expiration_date ( payment_method )
505
+ doc [ fetch_version ] . card {
506
+ doc [ fetch_version ] . pan payment_method . number
507
+ doc [ fetch_version ] . sec payment_method . verification_value if payment_method . verification_value?
508
+ doc [ fetch_version ] . xprDt expiration_date ( payment_method )
507
509
}
508
510
end
509
511
510
512
def add_echeck ( doc , payment_method )
511
- doc [ 'v1' ] . achEcheck {
512
- doc [ 'v1' ] . bankRtNr payment_method . routing_number
513
- doc [ 'v1' ] . acctNr payment_method . account_number
513
+ doc [ fetch_version ] . achEcheck {
514
+ doc [ fetch_version ] . bankRtNr payment_method . routing_number
515
+ doc [ fetch_version ] . acctNr payment_method . account_number
514
516
}
515
517
end
516
518
@@ -521,82 +523,82 @@ def expiration_date(payment_method)
521
523
end
522
524
523
525
def add_pan ( doc , payment_method )
524
- doc [ 'v1' ] . card do
525
- doc [ 'v1' ] . pan payment_method . number
526
+ doc [ fetch_version ] . card do
527
+ doc [ fetch_version ] . pan payment_method . number
526
528
end
527
529
end
528
530
529
531
def add_contact ( doc , fullname , options )
530
- doc [ 'v1' ] . contact do
531
- doc [ 'v1' ] . fullName fullname unless fullname . blank?
532
- doc [ 'v1' ] . coName options [ :company_name ] if options [ :company_name ]
533
- doc [ 'v1' ] . title options [ :title ] if options [ :title ]
532
+ doc [ fetch_version ] . contact do
533
+ doc [ fetch_version ] . fullName fullname unless fullname . blank?
534
+ doc [ fetch_version ] . coName options [ :company_name ] if options [ :company_name ]
535
+ doc [ fetch_version ] . title options [ :title ] if options [ :title ]
534
536
535
537
if ( billing_address = options [ :billing_address ] )
536
538
if billing_address [ :phone ]
537
- doc [ 'v1' ] . phone do
538
- doc [ 'v1' ] . type ( options [ :phone_number_type ] || '4' )
539
- doc [ 'v1' ] . nr billing_address [ :phone ] . gsub ( /\D / , '' )
539
+ doc [ fetch_version ] . phone do
540
+ doc [ fetch_version ] . type ( options [ :phone_number_type ] || '4' )
541
+ doc [ fetch_version ] . nr billing_address [ :phone ] . gsub ( /\D / , '' )
540
542
end
541
543
end
542
- doc [ 'v1' ] . addrLn1 billing_address [ :address1 ] if billing_address [ :address1 ]
543
- doc [ 'v1' ] . addrLn2 billing_address [ :address2 ] unless billing_address [ :address2 ] . blank?
544
- doc [ 'v1' ] . city billing_address [ :city ] if billing_address [ :city ]
545
- doc [ 'v1' ] . state billing_address [ :state ] if billing_address [ :state ]
546
- doc [ 'v1' ] . zipCode billing_address [ :zip ] . delete ( '-' ) if billing_address [ :zip ]
547
- doc [ 'v1' ] . ctry 'US'
544
+ doc [ fetch_version ] . addrLn1 billing_address [ :address1 ] if billing_address [ :address1 ]
545
+ doc [ fetch_version ] . addrLn2 billing_address [ :address2 ] unless billing_address [ :address2 ] . blank?
546
+ doc [ fetch_version ] . city billing_address [ :city ] if billing_address [ :city ]
547
+ doc [ fetch_version ] . state billing_address [ :state ] if billing_address [ :state ]
548
+ doc [ fetch_version ] . zipCode billing_address [ :zip ] . delete ( '-' ) if billing_address [ :zip ]
549
+ doc [ fetch_version ] . ctry 'US'
548
550
end
549
551
550
- doc [ 'v1' ] . email options [ :email ] if options [ :email ]
551
- doc [ 'v1' ] . type options [ :contact_type ] if options [ :contact_type ]
552
- doc [ 'v1' ] . stat options [ :contact_stat ] if options [ :contact_stat ]
552
+ doc [ fetch_version ] . email options [ :email ] if options [ :email ]
553
+ doc [ fetch_version ] . type options [ :contact_type ] if options [ :contact_type ]
554
+ doc [ fetch_version ] . stat options [ :contact_stat ] if options [ :contact_stat ]
553
555
554
556
if ( shipping_address = options [ :shipping_address ] )
555
- doc [ 'v1' ] . ship do
556
- doc [ 'v1' ] . fullName fullname unless fullname . blank?
557
- doc [ 'v1' ] . addrLn1 shipping_address [ :address1 ] if shipping_address [ :address1 ]
558
- doc [ 'v1' ] . addrLn2 shipping_address [ :address2 ] unless shipping_address [ :address2 ] . blank?
559
- doc [ 'v1' ] . city shipping_address [ :city ] if shipping_address [ :city ]
560
- doc [ 'v1' ] . state shipping_address [ :state ] if shipping_address [ :state ]
561
- doc [ 'v1' ] . zipCode shipping_address [ :zip ] . delete ( '-' ) if shipping_address [ :zip ]
562
- doc [ 'v1' ] . phone shipping_address [ :phone ] . gsub ( /\D / , '' ) if shipping_address [ :phone ]
563
- doc [ 'v1' ] . email shipping_address [ :email ] if shipping_address [ :email ]
557
+ doc [ fetch_version ] . ship do
558
+ doc [ fetch_version ] . fullName fullname unless fullname . blank?
559
+ doc [ fetch_version ] . addrLn1 shipping_address [ :address1 ] if shipping_address [ :address1 ]
560
+ doc [ fetch_version ] . addrLn2 shipping_address [ :address2 ] unless shipping_address [ :address2 ] . blank?
561
+ doc [ fetch_version ] . city shipping_address [ :city ] if shipping_address [ :city ]
562
+ doc [ fetch_version ] . state shipping_address [ :state ] if shipping_address [ :state ]
563
+ doc [ fetch_version ] . zipCode shipping_address [ :zip ] . delete ( '-' ) if shipping_address [ :zip ]
564
+ doc [ fetch_version ] . phone shipping_address [ :phone ] . gsub ( /\D / , '' ) if shipping_address [ :phone ]
565
+ doc [ fetch_version ] . email shipping_address [ :email ] if shipping_address [ :email ]
564
566
end
565
567
end
566
568
end
567
569
end
568
570
569
571
def add_name ( doc , payment_method )
570
- doc [ 'v1' ] . contact do
571
- doc [ 'v1' ] . fullName payment_method . name unless payment_method . name . blank?
572
+ doc [ fetch_version ] . contact do
573
+ doc [ fetch_version ] . fullName payment_method . name unless payment_method . name . blank?
572
574
end
573
575
end
574
576
575
577
def add_original_transaction_data ( doc , authorization )
576
- doc [ 'v1' ] . origTranData do
577
- doc [ 'v1' ] . tranNr authorization
578
+ doc [ fetch_version ] . origTranData do
579
+ doc [ fetch_version ] . tranNr authorization
578
580
end
579
581
end
580
582
581
583
def store_customer_details ( doc , fullname , options )
582
584
options [ :contact_type ] = 1 # recurring
583
585
options [ :contact_stat ] = 1 # active
584
586
585
- doc [ 'v1' ] . cust do
586
- doc [ 'v1' ] . type 0 # add
587
+ doc [ fetch_version ] . cust do
588
+ doc [ fetch_version ] . type 0 # add
587
589
add_contact ( doc , fullname , options )
588
590
end
589
591
end
590
592
591
593
def add_customer_id ( doc , customer_id )
592
- doc [ 'v1' ] . contact do
593
- doc [ 'v1' ] . id customer_id
594
+ doc [ fetch_version ] . contact do
595
+ doc [ fetch_version ] . id customer_id
594
596
end
595
597
end
596
598
597
599
def add_wallet_id ( doc , wallet_id )
598
- doc [ 'v1' ] . recurMan do
599
- doc [ 'v1' ] . id wallet_id
600
+ doc [ fetch_version ] . recurMan do
601
+ doc [ fetch_version ] . id wallet_id
600
602
end
601
603
end
602
604
end
0 commit comments