paywitheasebuzz-ruby 0.0.1
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 +7 -0
- data/lib/paywitheasebuzz-ruby.rb +105 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ea85f51e9106e44d0a3a2d9a8088c35cf49a71b875e6d50f342121c3b8b98e7b
|
4
|
+
data.tar.gz: b5095b288878e245acff0140c2daa29d071127538d90c925559d0ffe1d8acc9a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 82522e1b330598ac097bd7132c609a29e025919ee405cd4484274d3d626bcd49fde4da6afb79f6a5bb5a8e6329435dc9899b297373c9c8b725b1c5f88a5ddc7d
|
7
|
+
data.tar.gz: 8af171f8b03b1d2dbfb7a7caac7666a3fd288a89068537d4a9259a1d524e8b9a21bd836d89576d351c26513396d644ed1f97b1977cb16286701a6a333816d768
|
@@ -0,0 +1,105 @@
|
|
1
|
+
class PayWithEasebuzz
|
2
|
+
def initialize(key, salt, env="test")
|
3
|
+
@key = key
|
4
|
+
@salt = salt
|
5
|
+
@env = env
|
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
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def stripify params
|
26
|
+
params.keys.each do |param_key|
|
27
|
+
params[param_key] = params[param_key].instance_of?(String) ? params[param_key].strip : params[param_key]
|
28
|
+
end
|
29
|
+
params
|
30
|
+
end
|
31
|
+
|
32
|
+
def params_valid? params
|
33
|
+
result = { 'status' => true }
|
34
|
+
if not params['key'].present? or not params['key'].instance_of?(String)
|
35
|
+
result['status'] = false
|
36
|
+
result['message'] = "Merchant Key is not valid. Must be string. Please refer documentation."
|
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
|
75
|
+
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
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: paywitheasebuzz-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Easebuzz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-09-17 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Ruby gem for easebuzz payment process.
|
14
|
+
email: info@easebuzz.im
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/paywitheasebuzz-ruby.rb
|
20
|
+
homepage: https://rubygems.org/gems/hola
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubyforge_project:
|
40
|
+
rubygems_version: 2.7.6
|
41
|
+
signing_key:
|
42
|
+
specification_version: 4
|
43
|
+
summary: Pay with easebuzz
|
44
|
+
test_files: []
|