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.
- data/lib/virtual_merchant/logger.rb +14 -0
- data/lib/virtual_merchant/xml_generator.rb +44 -0
- data/lib/virtual_merchant.rb +17 -60
- metadata +3 -1
@@ -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
|
data/lib/virtual_merchant.rb
CHANGED
@@ -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 =
|
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
|
-
|
15
|
+
VirtualMerchant::Logger.new(response)
|
14
16
|
response
|
15
17
|
end
|
16
18
|
|
17
19
|
def self.refund(card, amount, creds)
|
18
|
-
xml =
|
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
|
-
|
23
|
+
VirtualMerchant::Logger.new(response)
|
22
24
|
response
|
23
25
|
end
|
24
26
|
|
25
27
|
def self.void(transaction_id, creds)
|
26
|
-
xml =
|
28
|
+
xml = VirtualMerchant::XMLGenerator.generateVoid(transaction_id, creds)
|
27
29
|
vm_response = self.sendXMLtoVirtualMerchant(xml, creds)
|
28
30
|
response = self.generateResponse(vm_response)
|
29
|
-
|
31
|
+
VirtualMerchant::Logger.new(response)
|
30
32
|
response
|
31
33
|
end
|
32
34
|
|
33
|
-
|
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
|
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.
|
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:
|