paywitheasebuzz-ruby 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/paywitheasebuzz-ruby.rb +14 -100
- data/lib/paywitheasebuzz-ruby/constants.rb +4 -0
- data/lib/paywitheasebuzz-ruby/helper.rb +14 -0
- data/lib/paywitheasebuzz-ruby/payment.rb +59 -0
- data/lib/paywitheasebuzz-ruby/request.rb +29 -0
- metadata +9 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 189de487f9871bdce5e698c81ba4286efec11eec05fd517b8b36268d3529ee93
|
4
|
+
data.tar.gz: f403b398ead8751dc978617a7a90b3a2a6f3b221c556d80c9a8f46c8e8542182
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 819408c1264f47db79d5e1ef748bb096b706deb53c155394627015b8396e3cc49f03edf8e9e5db7cebfd971a0caf6a33c8e0927f8174cd770b631235edcf2ee4
|
7
|
+
data.tar.gz: d181a009f42289a6421742a49cb4475b031d095f56dd143ed67ccd987170d7efdb65e3dad52ed139d4d6e45c6e9dfa23b585a9b57ec46677ceb7c4cc66e63e70
|
data/lib/paywitheasebuzz-ruby.rb
CHANGED
@@ -1,105 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
@api_end_point = generate_payment_api_end_point(@env)
|
7
|
-
end
|
8
|
-
|
9
|
-
def initiate_payment params
|
10
|
-
params = params || {}
|
11
|
-
params = JSON.parse(params.to_json)
|
12
|
-
params = generate_final_params(params)
|
13
|
-
params['key'] = @key
|
14
|
-
validation_result = params_valid? params
|
15
|
-
if validation_result['status']
|
16
|
-
easepay_response = send_payment_request(stripify(params))
|
17
|
-
easepay_response
|
18
|
-
else
|
19
|
-
validation_result
|
20
|
-
end
|
21
|
-
end
|
1
|
+
require 'active_support'
|
2
|
+
require 'active_support/core_ext'
|
3
|
+
require 'paywitheasebuzz-ruby/helper'
|
4
|
+
require 'paywitheasebuzz-ruby/request'
|
5
|
+
require 'paywitheasebuzz-ruby/payment'
|
22
6
|
|
23
|
-
private
|
24
7
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
params
|
8
|
+
module Easebuzz
|
9
|
+
class << self
|
10
|
+
attr_accessor :key, :salt, :env, :request
|
30
11
|
end
|
31
12
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
elsif not params['txnid'].present? or not params['txnid'].instance_of?(String)
|
38
|
-
result['status'] = false
|
39
|
-
result['message'] = "Transaction ID is not valid. Must be string. Please refer documentation."
|
40
|
-
elsif not params['amount'].present? or not params['amount'].instance_of?(Float)
|
41
|
-
result['status'] = false
|
42
|
-
result['message'] = "Amount is not valid. Must be float. Please refer documentation."
|
43
|
-
elsif not params['productinfo'].present? or not params['productinfo'].instance_of?(String)
|
44
|
-
result['status'] = false
|
45
|
-
result['message'] = "Product Info is not valid. Must be string. Please refer documentation."
|
46
|
-
elsif not params['firstname'].present? or not params['firstname'].instance_of?(String)
|
47
|
-
result['status'] = false
|
48
|
-
result['message'] = "First Name is not valid. Must be string. Please refer documentation."
|
49
|
-
elsif not params['email'].present? or not params['email'].match? URI::MailTo::EMAIL_REGEXP
|
50
|
-
result['status'] = false
|
51
|
-
result['message'] = "Email is not valid. Must be a valid email. Please refer documentation."
|
52
|
-
elsif not params['phone'].present? or not params['phone'].instance_of?(String)
|
53
|
-
result['status'] = false
|
54
|
-
result['message'] = "Phone number is not valid. Must be string. Please refer documentation."
|
55
|
-
elsif not params['surl'].present? or not params['surl'].instance_of?(String)
|
56
|
-
result['status'] = false
|
57
|
-
result['message'] = "Success URL is not valid. Must be string. Please refer documentation."
|
58
|
-
elsif not params['furl'].present? or not params['furl'].instance_of?(String)
|
59
|
-
result['status'] = false
|
60
|
-
result['message'] = "Failure URL is not valid. Must be string. Please refer documentation."
|
61
|
-
end
|
62
|
-
result
|
63
|
-
end
|
64
|
-
|
65
|
-
def send_payment_request params
|
66
|
-
params["hash"] = generate_hash(params, @key, @salt)
|
67
|
-
url = URI.parse(@api_end_point)
|
68
|
-
req = Net::HTTP::Post.new(url.to_s)
|
69
|
-
req.set_form_data(params)
|
70
|
-
http = Net::HTTP.new(url.host, url.port)
|
71
|
-
http.use_ssl = (url.scheme == "https")
|
72
|
-
response = http.request(req)
|
73
|
-
easepay_response = response ? JSON.parse(response.body) : {status: false, message: "Could not reach payment gateway server."}
|
74
|
-
easepay_response
|
13
|
+
def self.init(key, salt, env='test')
|
14
|
+
self.key = key
|
15
|
+
self.salt = salt
|
16
|
+
self.env = env
|
17
|
+
self.request = Request.new(self.env)
|
75
18
|
end
|
76
|
-
|
77
|
-
def generate_final_params params
|
78
|
-
# handle user defined parameters as it might be empty.
|
79
|
-
final_params = params
|
80
|
-
["udf1","udf2","udf3","udf4","udf5","udf6","udf7","udf8","udf9","udf10"].each do |udf|
|
81
|
-
final_params[udf] = (params[udf] || '').strip
|
82
|
-
end
|
83
|
-
final_params
|
84
|
-
end
|
85
|
-
|
86
|
-
def generate_hash(data, key, salt)
|
87
|
-
# generate hash that needs to be authenticated on easepay server.
|
88
|
-
hash_sequence = "#{key}|#{data['txnid']}|#{data['amount']}|#{data['productinfo']}|#{data['firstname']}|#{data['email']}|#{data['udf1']}|#{data['udf2']}|#{data['udf3']}|#{data['udf4']}|#{data['udf5']}|#{data['udf6']}|#{data['udf7']}|#{data['udf8']}|#{data['udf9']}|#{data['udf10']}|#{salt}"
|
89
|
-
Digest::SHA512.hexdigest(hash_sequence).downcase
|
90
|
-
end
|
91
|
-
|
92
|
-
def generate_reverse_hash(data, key, salt)
|
93
|
-
# generate hash that needs to be authenticated on easepay server.
|
94
|
-
hash_sequence = "#{key}|#{data['txnid']}|#{data['amount']}|#{data['productinfo']}|#{data['firstname']}|#{data['email']}|#{data['udf1']}|#{data['udf2']}|#{data['udf3']}|#{data['udf4']}|#{data['udf5']}|#{data['udf6']}|#{data['udf7']}|#{data['udf8']}|#{data['udf9']}|#{data['udf10']}|#{salt}"
|
95
|
-
Digest::SHA512.hexdigest(hash_sequence).downcase
|
96
|
-
end
|
97
|
-
|
98
|
-
def generate_payment_api_end_point env
|
99
|
-
url = "https://testpay.easebuzz.in/payment/initiateLink"
|
100
|
-
if env.downcase=="production" or env.downcase=="live" or env.downcase=="prod"
|
101
|
-
url = "https://pay.easebuzz.in/payment/initiateLink"
|
102
|
-
end
|
103
|
-
url
|
104
|
-
end
|
105
|
-
end
|
19
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'digest'
|
2
|
+
module Easebuzz
|
3
|
+
class Helper
|
4
|
+
def self.generate_hash(data, key, salt)
|
5
|
+
hash_sequence = "#{key}|#{data['txnid']}|#{data['amount']}|#{data['productinfo']}|#{data['firstname']}|#{data['email']}|#{data['udf1']}|#{data['udf2']}|#{data['udf3']}|#{data['udf4']}|#{data['udf5']}|#{data['udf6']}|#{data['udf7']}|#{data['udf8']}|#{data['udf9']}|#{data['udf10']}|#{salt}"
|
6
|
+
Digest::SHA512.hexdigest(hash_sequence).downcase
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.generate_reverse_hash(data, key, salt)
|
10
|
+
hash_sequence = "#{key}|#{data['txnid']}|#{data['amount']}|#{data['productinfo']}|#{data['firstname']}|#{data['email']}|#{data['udf1']}|#{data['udf2']}|#{data['udf3']}|#{data['udf4']}|#{data['udf5']}|#{data['udf6']}|#{data['udf7']}|#{data['udf8']}|#{data['udf9']}|#{data['udf10']}|#{salt}"
|
11
|
+
Digest::SHA512.hexdigest(hash_sequence).downcase
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Easebuzz
|
2
|
+
class Payment
|
3
|
+
def self.initiate params
|
4
|
+
params = self.get_params(JSON.parse((params || {}).to_json))
|
5
|
+
validation_result = self.params_valid? params
|
6
|
+
if validation_result['status']
|
7
|
+
easepay_response = Easebuzz.request.initiate_payment params
|
8
|
+
easepay_response
|
9
|
+
else
|
10
|
+
validation_result
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def self.params_valid? params
|
16
|
+
result = { 'status' => true }
|
17
|
+
if not params['key'].present? or not params['key'].instance_of?(String)
|
18
|
+
result['status'] = false
|
19
|
+
result['message'] = "Merchant Key is not valid. Must be string. Please refer documentation."
|
20
|
+
elsif not params['txnid'].present? or not params['txnid'].instance_of?(String)
|
21
|
+
result['status'] = false
|
22
|
+
result['message'] = "Transaction ID is not valid. Must be string. Please refer documentation."
|
23
|
+
elsif not params['amount'].present? or not params['amount'].instance_of?(Float)
|
24
|
+
result['status'] = false
|
25
|
+
result['message'] = "Amount is not valid. Must be float. Please refer documentation."
|
26
|
+
elsif not params['productinfo'].present? or not params['productinfo'].instance_of?(String)
|
27
|
+
result['status'] = false
|
28
|
+
result['message'] = "Product Info is not valid. Must be string. Please refer documentation."
|
29
|
+
elsif not params['firstname'].present? or not params['firstname'].instance_of?(String)
|
30
|
+
result['status'] = false
|
31
|
+
result['message'] = "First Name is not valid. Must be string. Please refer documentation."
|
32
|
+
elsif not params['email'].present? or not params['email'].match? URI::MailTo::EMAIL_REGEXP
|
33
|
+
result['status'] = false
|
34
|
+
result['message'] = "Email is not valid. Must be a valid email. Please refer documentation."
|
35
|
+
elsif not params['phone'].present? or not params['phone'].instance_of?(String)
|
36
|
+
result['status'] = false
|
37
|
+
result['message'] = "Phone number is not valid. Must be string. Please refer documentation."
|
38
|
+
elsif not params['surl'].present? or not params['surl'].instance_of?(String)
|
39
|
+
result['status'] = false
|
40
|
+
result['message'] = "Success URL is not valid. Must be string. Please refer documentation."
|
41
|
+
elsif not params['furl'].present? or not params['furl'].instance_of?(String)
|
42
|
+
result['status'] = false
|
43
|
+
result['message'] = "Failure URL is not valid. Must be string. Please refer documentation."
|
44
|
+
end
|
45
|
+
result
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.get_params params
|
49
|
+
params['key'] = Easebuzz.key
|
50
|
+
udf_keys = ["udf1","udf2","udf3","udf4","udf5","udf6","udf7","udf8","udf9","udf10"]
|
51
|
+
(params.keys + udf_keys).uniq.each do |param_key|
|
52
|
+
value = params[param_key] || ''
|
53
|
+
params[param_key] = value.instance_of?(String) ? value.strip : value
|
54
|
+
end
|
55
|
+
params['hash'] = Helper.generate_hash(params, Easebuzz.key, Easebuzz.salt)
|
56
|
+
params
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'paywitheasebuzz-ruby/constants'
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
module Easebuzz
|
5
|
+
class Request
|
6
|
+
def initialize env
|
7
|
+
@BASE_URL = (env=='prod' || env=='production' || env=='PROD') ? PROD_URL : TEST_URL
|
8
|
+
parsed_base_url = URI.parse(@BASE_URL)
|
9
|
+
@HOST = parsed_base_url.host
|
10
|
+
@PORT = parsed_base_url.port
|
11
|
+
@HAS_SSL = parsed_base_url.scheme
|
12
|
+
end
|
13
|
+
|
14
|
+
def initiate_payment params
|
15
|
+
url = "#{@BASE_URL}payment/initiateLink"
|
16
|
+
hit_it(url, Net::HTTP::Post, params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def hit_it action, method, params
|
20
|
+
request = method.new(action)
|
21
|
+
request.set_form_data(params)
|
22
|
+
http = Net::HTTP.new(@HOST, @PORT)
|
23
|
+
http.use_ssl = @HAS_SSL
|
24
|
+
response = http.request(request)
|
25
|
+
response_parsed = response ? JSON.parse(response.body) : {status: false, message: "Could not reach payment gateway server."}
|
26
|
+
response_parsed
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,23 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paywitheasebuzz-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Karan Bhutwala
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby gem for easebuzz payment process.
|
14
|
-
email:
|
14
|
+
email: karan.bhutwala@easebuzz.in
|
15
15
|
executables: []
|
16
16
|
extensions: []
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- lib/paywitheasebuzz-ruby.rb
|
20
|
-
|
20
|
+
- lib/paywitheasebuzz-ruby/constants.rb
|
21
|
+
- lib/paywitheasebuzz-ruby/helper.rb
|
22
|
+
- lib/paywitheasebuzz-ruby/payment.rb
|
23
|
+
- lib/paywitheasebuzz-ruby/request.rb
|
24
|
+
homepage: https://github.com/easebuzz/paywitheasebuzz-ruby
|
21
25
|
licenses:
|
22
26
|
- MIT
|
23
27
|
metadata: {}
|