complete_payment_systems 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|