complete_payment_systems 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/complete_payment_systems/request_processing.rb +32 -22
- data/lib/complete_payment_systems/version.rb +1 -1
- data/lib/complete_payment_systems.rb +16 -75
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 738542eb38bfe6e47086aa443e72b70347cb5b58
|
4
|
+
data.tar.gz: 52f5ece0150d44e532d4b269b0f88afcb804a261
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff81955a43005a5b32e36749fc0f67e1bb438b40565d466c1605d2f252698bf10cad3b9d0da0b970dc8f964afc9dd8c16f75d6b7b3e83b79f7821bb09ff711f3
|
7
|
+
data.tar.gz: 315fd49aed1422530d24be365cbfeb0cde2ed104e901a9f3d639b873f4fc4340fd479595f853be780666e8acfa278eb3b8e20ec8702242c955aafe85078b805b
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ CPS.configure do |config|
|
|
38
38
|
config.default_country = "US"
|
39
39
|
|
40
40
|
# Used in client data, like street and zip, if you choose not to ask for these
|
41
|
-
config.placeholder_value = "
|
41
|
+
config.placeholder_value = "Not@Used.com"
|
42
42
|
|
43
43
|
config.cps_url = "https://3ds.cps.lv/GatorServo/request" # This will probably never change
|
44
44
|
config.cps_method = "sendForAuth" # This will also probably remain the same
|
@@ -50,7 +50,7 @@ end
|
|
50
50
|
```
|
51
51
|
|
52
52
|
### Build a payment request
|
53
|
-
Instantiate a CPS::Request object,
|
53
|
+
Instantiate a CPS::Request object, pass it a hash with parameters:
|
54
54
|
```ruby
|
55
55
|
hash = {
|
56
56
|
order: (Time.now.to_i), # Pass the unique purchase ID here
|
@@ -22,7 +22,7 @@ module CompletePaymentSystems
|
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
25
|
-
def
|
25
|
+
def sign(type: CPS.config.cps_method, user: CPS.config.default_user, order_id: "", value: "", currency: "", card_number: "", product: CPS.config.default_product_name)
|
26
26
|
sign_string = [type, user, order_id, value, currency, card_number, product].join()
|
27
27
|
rsa = OpenSSL::PKey::RSA.new(File.read(CPS.config.rsa_cert_path), CPS.config.cert_pass )
|
28
28
|
signed_hash = rsa.sign(OpenSSL::Digest::SHA1.new, sign_string)
|
@@ -30,30 +30,40 @@ module CompletePaymentSystems
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def build_request_xml
|
33
|
-
|
33
|
+
puts "before param init:"
|
34
|
+
puts params
|
35
|
+
puts "After param init:"
|
36
|
+
params = self.params
|
37
|
+
puts params
|
38
|
+
|
39
|
+
puts params["value"]
|
40
|
+
puts params[:value]
|
41
|
+
|
34
42
|
values = {
|
35
|
-
user: (params[
|
36
|
-
callback_url: (params[
|
37
|
-
redirect_url: (params[
|
38
|
-
order: (params[
|
39
|
-
value: (params[
|
40
|
-
currency: (params[
|
41
|
-
holder_name: params[
|
42
|
-
holder_surname: params[
|
43
|
-
holder_street: (params[
|
44
|
-
holder_zip: (params[
|
45
|
-
holder_city: (params[
|
46
|
-
holder_country: (params[
|
47
|
-
holder_email: (params[
|
48
|
-
holder_ip: ( params[
|
49
|
-
card_number: params[
|
50
|
-
card_exp: params[
|
51
|
-
card_cvv: params[
|
52
|
-
product_name: (params[
|
53
|
-
product_url: (params[
|
43
|
+
user: (params[:user] || CPS.config.default_user), # "test_pasta_sign" for direct, "pasta_test_3d" for direct with 3D
|
44
|
+
callback_url: (params[:callback_url] || CPS.config.default_callback_url),
|
45
|
+
redirect_url: (params[:redirect_url] || CPS.config.default_redirect_url),
|
46
|
+
order: (params[:order] || Time.now.to_i), # TO-DO remove fallback
|
47
|
+
value: (params[:value]),
|
48
|
+
currency: (params[:currency]),
|
49
|
+
holder_name: params[:holder_name],
|
50
|
+
holder_surname: params[:holder_surname],
|
51
|
+
holder_street: (params[:holder_street] || CPS.config.placeholder_value),
|
52
|
+
holder_zip: (params[:holder_zip] || CPS.config.placeholder_value),
|
53
|
+
holder_city: (params[:holder_city] || CPS.config.placeholder_value),
|
54
|
+
holder_country: (params[:holder_country] || CPS.config.default_country),
|
55
|
+
holder_email: (params[:holder_email] || CPS.config.placeholder_value),
|
56
|
+
holder_ip: ( params[:holder_ip] ),
|
57
|
+
card_number: params[:card_number], # 4012001037167778 for direct, For 3D-Secure number is 4314229999999913
|
58
|
+
card_exp: params[:card_exp], # 06/18 for direct, 3D-sec is "01/18"
|
59
|
+
card_cvv: params[:card_cvv], # 999 for direct, 3D-sec is "123"
|
60
|
+
product_name: (params[:product_name] || CPS.config.default_product_name),
|
61
|
+
product_url: (params[:product_url] || CPS.config.default_product_url)
|
54
62
|
}
|
55
63
|
|
56
|
-
|
64
|
+
puts values # TESTING
|
65
|
+
|
66
|
+
values[:signature] = sign(order_id: values[:order], value: values[:value], currency: values[:currency], card_number: values[:card_number]).gsub(/\n/, '')
|
57
67
|
|
58
68
|
values[:signature_line] = '<digiSignature>' + values[:signature] + '</digiSignature>'
|
59
69
|
|
@@ -38,7 +38,8 @@ module CompletePaymentSystems
|
|
38
38
|
@default_product_name = "Product"
|
39
39
|
@default_product_url = "www.test.com"
|
40
40
|
@default_country = "US"
|
41
|
-
@placeholder_value = "
|
41
|
+
@placeholder_value = "Not@Used.com"
|
42
|
+
|
42
43
|
|
43
44
|
@cps_url = "https://3ds.cps.lv/GatorServo/request"
|
44
45
|
@cps_method = "sendForAuth"
|
@@ -51,79 +52,19 @@ module CompletePaymentSystems
|
|
51
52
|
|
52
53
|
CPS.configure {}
|
53
54
|
|
54
|
-
# TO-DO Delete this after production checks
|
55
|
-
def self.make_xml
|
56
|
-
values = {
|
57
|
-
user: "pasta_test_3d", # "test_pasta_sign" for direct, "pasta_test_3d" for direct with 3D
|
58
|
-
callback_url: "http://www.google.lv",
|
59
|
-
redirect_url: "http://www.google.lv",
|
60
|
-
order: (Time.now.to_i),
|
61
|
-
holder_name: "Test",
|
62
|
-
holder_surname: "User",
|
63
|
-
holder_street: "NOT USED",
|
64
|
-
holder_zip: "NOT USED",
|
65
|
-
holder_city: "NOT USED",
|
66
|
-
holder_country: "LV",
|
67
|
-
holder_email: "hi@creo.mobi",
|
68
|
-
holder_ip: "123.124.125.226",
|
69
|
-
card_number: "4314229999999913", # 4012001037167778 for direct, For 3D-Secure number is 4314229999999913
|
70
|
-
card_exp: "01/18", # 06/18 for direct, 3D-sec is "01/18"
|
71
|
-
card_cvv: "123", # 999 for direct, 3D-sec is "123"
|
72
|
-
product_name: "Product",
|
73
|
-
product_url: "www.test.com"
|
74
|
-
}
|
75
|
-
|
76
|
-
values[:signature] = CPS.sign(user: values[:user], card_number: values[:card_number])
|
77
|
-
|
78
|
-
values[:signature_line] = '<digiSignature>' + values[:signature] + '</digiSignature>'
|
79
|
-
|
80
|
-
xml_path = "#{CPS.root}/cps.xml"
|
81
|
-
a = File.open(xml_path,'w') do |file|
|
82
|
-
file.write(%Q|<?xml version="1.0" encoding="UTF-8" ?>\n|)
|
83
|
-
file.write(%Q|<cpsxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n|)
|
84
|
-
file.write(%Q| xsi:schemaLocation="http://www.cps.lv/xml/ns/cpsxml https://3ds.cps.lv/GatorServo/Gator_SendForAuth.xsd"\n|)
|
85
|
-
file.write(%Q| xmlns="http://www.cps.lv/xml/ns/cpsxml">\n|)
|
86
|
-
file.write(%Q| <header xmlns="">\n|)
|
87
|
-
file.write(%Q| <responsetype>direct</responsetype>\n|)
|
88
|
-
file.write(%Q| <user>#{values[:user]}</user>\n|)
|
89
|
-
file.write(%Q| <type>sendForAuth</type>\n|)
|
90
|
-
file.write(%Q| <transType>DB</transType>\n|)
|
91
|
-
file.write(%Q| | + values[:signature_line] + "\n")
|
92
|
-
file.write(%Q| <callbackUrl>#{values[:callback_url]}</callbackUrl>\n|)
|
93
|
-
file.write(%Q| <redirectUrl>#{values[:redirect_url]}</redirectUrl>\n|)
|
94
|
-
file.write(%Q| </header>\n|)
|
95
|
-
file.write(%Q| <request xmlns="">\n|)
|
96
|
-
file.write(%Q| <orderNumber>#{values[:order]}</orderNumber>\n|)
|
97
|
-
file.write(%Q| <cardholder>\n|)
|
98
|
-
file.write(%Q| <firstName>#{values[:holder_name]}</firstName>\n|)
|
99
|
-
file.write(%Q| <lastName>#{values[:holder_surname]}</lastName>\n|)
|
100
|
-
file.write(%Q| <street>#{values[:holder_street]}</street>\n|)
|
101
|
-
file.write(%Q| <zip>#{values[:holder_zip]}</zip>\n|)
|
102
|
-
file.write(%Q| <city>#{values[:holder_city]}</city>\n|)
|
103
|
-
file.write(%Q| <country>#{values[:holder_country]}</country>\n|)
|
104
|
-
file.write(%Q| <email>#{values[:holder_email]}</email>\n|)
|
105
|
-
file.write(%Q| <ip>#{values[:holder_ip]}</ip>\n|)
|
106
|
-
file.write(%Q| </cardholder>\n|)
|
107
|
-
file.write(%Q| <card>\n|)
|
108
|
-
file.write(%Q| <cardNumber>#{values[:card_number]}</cardNumber>\n|)
|
109
|
-
file.write(%Q| <expires>#{values[:card_exp]}</expires>\n|)
|
110
|
-
file.write(%Q| <cvv>#{values[:card_cvv]}</cvv>\n|)
|
111
|
-
file.write(%Q| </card>\n|)
|
112
|
-
file.write(%Q| <amount>\n|)
|
113
|
-
file.write(%Q| <value>100</value>\n|)
|
114
|
-
file.write(%Q| <currency>USD</currency>\n|)
|
115
|
-
file.write(%Q| </amount>\n|)
|
116
|
-
file.write(%Q| <product>\n|)
|
117
|
-
file.write(%Q| <productName>#{values[:product_name]}</productName>\n|)
|
118
|
-
file.write(%Q| <productUrl>#{values[:product_url]}</productUrl>\n|)
|
119
|
-
file.write(%Q| </product>\n|)
|
120
|
-
file.write(%Q| </request>\n|)
|
121
|
-
file.write(%Q|</cpsxml>|)
|
122
|
-
end
|
123
|
-
|
124
|
-
return File.read(xml_path)
|
125
|
-
end
|
126
|
-
|
127
55
|
end
|
128
56
|
|
129
|
-
CPS = CompletePaymentSystems
|
57
|
+
CPS = CompletePaymentSystems
|
58
|
+
hash = {
|
59
|
+
order: (Time.now.to_i), # Pass the unique purchase ID here
|
60
|
+
value: "166", # Pass the purchase value in cents here (1$ purcase value = 100)
|
61
|
+
currency: "USD", # Pass the purchase currency 3-letter code here ($ = "USD")
|
62
|
+
holder_name: "John", # Ask buyer for this in a form
|
63
|
+
holder_surname: "Doe", # Ask buyer for this in a form
|
64
|
+
card_number: "4314229999999913", # Ask buyer for this in a form
|
65
|
+
card_exp: "01/18", # Ask buyer for this in a form
|
66
|
+
card_cvv: "123", # Ask buyer for this in a form
|
67
|
+
holder_ip: "123.124.125.226" # Get this from request.remote_ip
|
68
|
+
}
|
69
|
+
|
70
|
+
CPS::XX = CPS::Request.new(hash)
|