virtual_merchant 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,14 @@
1
+ module VirtualMerchant
2
+ class Logger
3
+ def initialize(response = {})
4
+ p "!!!!!!!!!!!!!!!!!!!!!!!! Credit Response !!!!!!!!!!!!!!!!!!!!!!!!!!!!"
5
+ if response.result
6
+ p "result " + response.result
7
+ elsif response.error
8
+ p "error " + response.error
9
+ end
10
+ p "result_message " + response.result_message
11
+ p "!!!!!!!!!!!!!!!!!!!!!!!! End Credit Response !!!!!!!!!!!!!!!!!!!!!!!!!!!!"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,44 @@
1
+ module VirtualMerchant
2
+ class XMLGenerator
3
+ def self.generateVoid(transaction_id, creds)
4
+ xml = "xmldata=<txn>
5
+ <ssl_merchant_id>#{creds.account_id}</ssl_merchant_id>
6
+ <ssl_user_id>#{creds.user_id}</ssl_user_id>
7
+ <ssl_pin>#{creds.pin}</ssl_pin>
8
+ <ssl_transaction_type>ccvoid</ssl_transaction_type>
9
+ <ssl_txn_id>#{transaction_id}</ssl_txn_id>
10
+ </txn>"
11
+ return xml
12
+ end
13
+
14
+ def self.generate(card, amount, creds, transaction_type)
15
+ xml = "xmldata=<txn>
16
+ <ssl_merchant_id>" + creds.account_id + "</ssl_merchant_id>
17
+ <ssl_user_id>" + creds.user_id + "</ssl_user_id>
18
+ <ssl_pin>" + creds.pin + "</ssl_pin>
19
+ <ssl_transaction_type>" + transaction_type + "</ssl_transaction_type>
20
+ <ssl_amount>" + amount.total + "</ssl_amount>
21
+ <ssl_salestax>" + amount.tax + "</ssl_salestax>
22
+ <ssl_customer_code>" + card.last_four + "</ssl_customer_code>
23
+ <ssl_card_present>Y</ssl_card_present>
24
+ <ssl_partial_auth_indicator>0</ssl_partial_auth_indicator>"
25
+ if card.track2
26
+ xml += "<ssl_track_data>" + card.track2 + " </ssl_track_data>"
27
+ else
28
+ #Manual Entry
29
+ xml += "<ssl_card_number>" + card.number.to_s + "</ssl_card_number>
30
+ <ssl_exp_date>" + card.expiration + "</ssl_exp_date>"
31
+ end
32
+
33
+ if !card.security_code || card.security_code == ""
34
+ xml += "<ssl_cvv2cvc2_indicator>0</ssl_cvv2cvc2_indicator>"
35
+ else
36
+ xml += "<ssl_cvv2cvc2_indicator>1</ssl_cvv2cvc2_indicator>
37
+ <ssl_cvv2cvc2>" + card.security_code + "</ssl_cvv2cvc2>"
38
+ end
39
+
40
+ xml += "</txn>"
41
+ return xml
42
+ end
43
+ end
44
+ end
@@ -5,72 +5,34 @@ module VirtualMerchant
5
5
  require 'virtual_merchant/credentials'
6
6
  require 'virtual_merchant/credit_card'
7
7
  require 'virtual_merchant/response'
8
+ require 'virtual_merchant/logger'
9
+ require 'virtual_merchant/xml_generator'
8
10
 
9
11
  def self.charge(card, amount, creds)
10
- xml = self.generateXMLforVirtualMerchant(card, amount, creds, "ccsale")
12
+ xml = VirtualMerchant::XMLGenerator.generate(card, amount, creds, "ccsale")
11
13
  vm_response = self.sendXMLtoVirtualMerchant(xml, creds)
12
14
  response = self.generateResponse(vm_response)
13
- self.printResponse(response)
15
+ VirtualMerchant::Logger.new(response)
14
16
  response
15
17
  end
16
18
 
17
19
  def self.refund(card, amount, creds)
18
- xml = self.generateXMLforVirtualMerchant(card, amount, creds, 'cccredit')
20
+ xml = VirtualMerchant::XMLGenerator.generate(card, amount, creds, 'cccredit')
19
21
  vm_response = self.sendXMLtoVirtualMerchant(xml, creds)
20
22
  response = self.generateResponse(vm_response)
21
- self.printResponse(response)
23
+ VirtualMerchant::Logger.new(response)
22
24
  response
23
25
  end
24
26
 
25
27
  def self.void(transaction_id, creds)
26
- xml = self.generateVoidXML(transaction_id, creds)
28
+ xml = VirtualMerchant::XMLGenerator.generateVoid(transaction_id, creds)
27
29
  vm_response = self.sendXMLtoVirtualMerchant(xml, creds)
28
30
  response = self.generateResponse(vm_response)
29
- self.printResponse(response)
31
+ VirtualMerchant::Logger.new(response)
30
32
  response
31
33
  end
32
34
 
33
- def self.generateVoidXML(transaction_id, creds)
34
- xml = "xmldata=<txn>
35
- <ssl_merchant_id>#{creds.account_id}</ssl_merchant_id>
36
- <ssl_user_id>#{creds.user_id}</ssl_user_id>
37
- <ssl_pin>#{creds.pin}</ssl_pin>
38
- <ssl_transaction_type>ccvoid</ssl_transaction_type>
39
- <ssl_txn_id>#{transaction_id}</ssl_txn_id>
40
- </txn>"
41
- return xml
42
- end
43
-
44
- def self.generateXMLforVirtualMerchant(card, amount, creds, transaction_type)
45
- xml = "xmldata=<txn>
46
- <ssl_merchant_id>" + creds.account_id + "</ssl_merchant_id>
47
- <ssl_user_id>" + creds.user_id + "</ssl_user_id>
48
- <ssl_pin>" + creds.pin + "</ssl_pin>
49
- <ssl_transaction_type>" + transaction_type + "</ssl_transaction_type>
50
- <ssl_amount>" + amount.total + "</ssl_amount>
51
- <ssl_salestax>" + amount.tax + "</ssl_salestax>
52
- <ssl_customer_code>" + card.last_four + "</ssl_customer_code>
53
- <ssl_card_present>Y</ssl_card_present>
54
- <ssl_partial_auth_indicator>0</ssl_partial_auth_indicator>"
55
- if card.track2
56
- xml += "<ssl_track_data>" + card.track2 + " </ssl_track_data>"
57
- else
58
- #Manual Entry
59
- xml += "<ssl_card_number>" + card.number.to_s + "</ssl_card_number>
60
- <ssl_exp_date>" + card.expiration + "</ssl_exp_date>"
61
- end
62
-
63
- if !card.security_code || card.security_code == ""
64
- xml += "<ssl_cvv2cvc2_indicator>0</ssl_cvv2cvc2_indicator>"
65
- else
66
- xml += "<ssl_cvv2cvc2_indicator>1</ssl_cvv2cvc2_indicator>
67
- <ssl_cvv2cvc2>" + card.security_code + "</ssl_cvv2cvc2>"
68
- end
69
-
70
- xml += "</txn>"
71
- return xml
72
- end
73
-
35
+ private
74
36
  def self.sendXMLtoVirtualMerchant(xml, creds)
75
37
  if creds.referer
76
38
  headers = {
@@ -95,11 +57,17 @@ module VirtualMerchant
95
57
  response = {}
96
58
  doc = REXML::Document.new(vm_response)
97
59
  REXML::XPath.each(doc, "txn") do |xml|
98
- if xml.elements["errorCode"]
99
- #Something was wrong with the transaction so an errorCode and errorMessage were sent back
60
+ if xml.elements["errorCode"]
61
+ #Something was wrong with the transaction so an
62
+ #errorCode and errorMessage were sent back
100
63
  response = VirtualMerchant::Response.new(
101
64
  error: xml.elements["errorCode"].text,
102
65
  result_message: xml.elements["errorMessage"].text)
66
+ elsif (xml.elements["ssl_result"] && xml.elements["ssl_result"].text != "0")
67
+ #something closer to an approval, but still declined
68
+ response = VirtualMerchant::Response.new(
69
+ error: xml.elements["ssl_result_message"].text,
70
+ result_message: xml.elements["ssl_result"].text)
103
71
  else
104
72
  #a clean transaction has taken place
105
73
  response = VirtualMerchant::Response.new(
@@ -115,15 +83,4 @@ module VirtualMerchant
115
83
  end
116
84
  response
117
85
  end
118
-
119
- def self.printResponse(response)
120
- p "!!!!!!!!!!!!!!!!!!!!!!!! Credit Response !!!!!!!!!!!!!!!!!!!!!!!!!!!!"
121
- if response.result
122
- p "result " + response.result
123
- elsif response.error
124
- p "error " + response.error
125
- end
126
- p "result_message " + response.result_message
127
- p "!!!!!!!!!!!!!!!!!!!!!!!! End Credit Response !!!!!!!!!!!!!!!!!!!!!!!!!!!!"
128
- end
129
86
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virtual_merchant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -21,7 +21,9 @@ files:
21
21
  - lib/virtual_merchant/amount.rb
22
22
  - lib/virtual_merchant/credentials.rb
23
23
  - lib/virtual_merchant/credit_card.rb
24
+ - lib/virtual_merchant/logger.rb
24
25
  - lib/virtual_merchant/response.rb
26
+ - lib/virtual_merchant/xml_generator.rb
25
27
  homepage: https://github.com/leequarella/VirtualMerchant-Ruby
26
28
  licenses: []
27
29
  post_install_message: