virtual_merchant 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: