kaznachey_payments 0.9.7.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +22 -0
- data/README.md +50 -0
- data/Rakefile +2 -0
- data/doc/HttpHelper.html +221 -0
- data/doc/KaznacheyConfigurations.html +132 -0
- data/doc/KaznacheyPayments.html +117 -0
- data/doc/KaznacheyPaymentsApi.html +294 -0
- data/doc/Md5Helper.html +189 -0
- data/doc/PaySystem.html +430 -0
- data/doc/PaymentDetails.html +900 -0
- data/doc/Product.html +480 -0
- data/doc/ReqCommonObject.html +274 -0
- data/doc/ReqCreatePayment.html +534 -0
- data/doc/ReqGetMerchantInfo.html +202 -0
- data/doc/RespCommonObject.html +274 -0
- data/doc/RespCreatePayment.html +303 -0
- data/doc/RespMerchantInfo.html +387 -0
- data/doc/RespPaymentStatus.html +689 -0
- data/doc/_index.html +212 -0
- data/doc/class_list.html +58 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +110 -0
- data/doc/file_list.html +60 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +126 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +181 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +333 -0
- data/doc/top-level-namespace.html +114 -0
- data/lib/ApiObjects/Requests/payment_details.rb +34 -0
- data/lib/ApiObjects/Requests/product.rb +16 -0
- data/lib/ApiObjects/Requests/req_common_object.rb +6 -0
- data/lib/ApiObjects/Requests/req_create_payment.rb +42 -0
- data/lib/ApiObjects/Requests/req_get_merchant_info.rb +11 -0
- data/lib/ApiObjects/Responses/pay_system.rb +19 -0
- data/lib/ApiObjects/Responses/resp_common_object.rb +6 -0
- data/lib/ApiObjects/Responses/resp_create_payment.rb +15 -0
- data/lib/ApiObjects/Responses/resp_merchant_info.rb +26 -0
- data/lib/ApiObjects/Responses/resp_payment_status.rb +43 -0
- data/lib/ApiObjects/kaznachey_configurations.rb +9 -0
- data/lib/Helpers/http_helper.rb +26 -0
- data/lib/Helpers/md5_helper.rb +7 -0
- data/lib/kaznachey_payments/version.rb +3 -0
- data/lib/kaznachey_payments_api.rb +32 -0
- data/test/test_get_merchant_info.rb +55 -0
- metadata +95 -0
@@ -0,0 +1,114 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>
|
7
|
+
Top Level Namespace
|
8
|
+
|
9
|
+
— Documentation by YARD 0.8.7.6
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
hasFrames = window.top.frames.main ? true : false;
|
19
|
+
relpath = '';
|
20
|
+
framesUrl = "frames.html#!top-level-namespace.html";
|
21
|
+
</script>
|
22
|
+
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
25
|
+
|
26
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
27
|
+
|
28
|
+
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<div id="header">
|
32
|
+
<div id="menu">
|
33
|
+
|
34
|
+
<a href="_index.html">Index</a> »
|
35
|
+
|
36
|
+
|
37
|
+
<span class="title">Top Level Namespace</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a class="full_list_link" id="class_list_link"
|
46
|
+
href="class_list.html">
|
47
|
+
Class List
|
48
|
+
</a>
|
49
|
+
|
50
|
+
<a class="full_list_link" id="method_list_link"
|
51
|
+
href="method_list.html">
|
52
|
+
Method List
|
53
|
+
</a>
|
54
|
+
|
55
|
+
<a class="full_list_link" id="file_list_link"
|
56
|
+
href="file_list.html">
|
57
|
+
File List
|
58
|
+
</a>
|
59
|
+
|
60
|
+
</div>
|
61
|
+
<div class="clear"></div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<iframe id="search_frame"></iframe>
|
65
|
+
|
66
|
+
<div id="content"><h1>Top Level Namespace
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
</h1>
|
71
|
+
|
72
|
+
<dl class="box">
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
</dl>
|
82
|
+
<div class="clear"></div>
|
83
|
+
|
84
|
+
<h2>Defined Under Namespace</h2>
|
85
|
+
<p class="children">
|
86
|
+
|
87
|
+
|
88
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="KaznacheyPayments.html" title="KaznacheyPayments (module)">KaznacheyPayments</a></span>
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="HttpHelper.html" title="HttpHelper (class)">HttpHelper</a></span>, <span class='object_link'><a href="KaznacheyConfigurations.html" title="KaznacheyConfigurations (class)">KaznacheyConfigurations</a></span>, <span class='object_link'><a href="KaznacheyPaymentsApi.html" title="KaznacheyPaymentsApi (class)">KaznacheyPaymentsApi</a></span>, <span class='object_link'><a href="Md5Helper.html" title="Md5Helper (class)">Md5Helper</a></span>, <span class='object_link'><a href="PaySystem.html" title="PaySystem (class)">PaySystem</a></span>, <span class='object_link'><a href="PaymentDetails.html" title="PaymentDetails (class)">PaymentDetails</a></span>, <span class='object_link'><a href="Product.html" title="Product (class)">Product</a></span>, <span class='object_link'><a href="ReqCommonObject.html" title="ReqCommonObject (class)">ReqCommonObject</a></span>, <span class='object_link'><a href="ReqCreatePayment.html" title="ReqCreatePayment (class)">ReqCreatePayment</a></span>, <span class='object_link'><a href="ReqGetMerchantInfo.html" title="ReqGetMerchantInfo (class)">ReqGetMerchantInfo</a></span>, <span class='object_link'><a href="RespCommonObject.html" title="RespCommonObject (class)">RespCommonObject</a></span>, <span class='object_link'><a href="RespCreatePayment.html" title="RespCreatePayment (class)">RespCreatePayment</a></span>, <span class='object_link'><a href="RespMerchantInfo.html" title="RespMerchantInfo (class)">RespMerchantInfo</a></span>, <span class='object_link'><a href="RespPaymentStatus.html" title="RespPaymentStatus (class)">RespPaymentStatus</a></span>
|
93
|
+
|
94
|
+
|
95
|
+
</p>
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<div id="footer">
|
108
|
+
Generated on Wed Dec 3 14:19:56 2014 by
|
109
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
110
|
+
0.8.7.6 (ruby-1.9.3).
|
111
|
+
</div>
|
112
|
+
|
113
|
+
</body>
|
114
|
+
</html>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class PaymentDetails
|
2
|
+
#Order id in merchant's system
|
3
|
+
attr_accessor :MerchantInternalPaymentId
|
4
|
+
|
5
|
+
#User id in merchant's system
|
6
|
+
attr_accessor :MerchantInternalUserId
|
7
|
+
|
8
|
+
#Buyer email
|
9
|
+
attr_accessor :EMail
|
10
|
+
|
11
|
+
#Buyer phone
|
12
|
+
attr_accessor :PhoneNumber
|
13
|
+
|
14
|
+
#Custom info like comments, etc
|
15
|
+
attr_accessor :CustomMerchantInfo
|
16
|
+
|
17
|
+
#Url which receive payment status after paying
|
18
|
+
attr_accessor :StatusUrl
|
19
|
+
|
20
|
+
#Url to redirect buyer after paying
|
21
|
+
attr_accessor :ReturnUrl
|
22
|
+
|
23
|
+
#Buyer first name
|
24
|
+
attr_accessor :BuyerFirstname
|
25
|
+
|
26
|
+
#Buyer last name
|
27
|
+
attr_accessor :BuyerLastname
|
28
|
+
|
29
|
+
#Delivery type
|
30
|
+
attr_accessor :DeliveryType
|
31
|
+
|
32
|
+
#Delivery address
|
33
|
+
attr_accessor :BuyerStreet
|
34
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Product
|
2
|
+
#Quantity
|
3
|
+
attr_accessor :ProductItemsNum
|
4
|
+
|
5
|
+
#Name
|
6
|
+
attr_accessor :ProductName
|
7
|
+
|
8
|
+
#Price
|
9
|
+
attr_accessor :ProductPrice
|
10
|
+
|
11
|
+
#Id or code in merchant's system
|
12
|
+
attr_accessor :ProductId
|
13
|
+
|
14
|
+
#Image url
|
15
|
+
attr_accessor :ProductImageUrl
|
16
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative 'req_common_object'
|
2
|
+
require 'ApiObjects/kaznachey_configurations'
|
3
|
+
require 'Helpers/md5_helper'
|
4
|
+
|
5
|
+
class ReqCreatePayment < ReqCommonObject
|
6
|
+
|
7
|
+
# Chosen by buyer payment system
|
8
|
+
attr_accessor :SelectedPaySystemId
|
9
|
+
|
10
|
+
# Buyer info
|
11
|
+
attr_accessor :PaymentDetails
|
12
|
+
|
13
|
+
# Products in order
|
14
|
+
attr_accessor :Products
|
15
|
+
|
16
|
+
attr_accessor :MerchantGuid
|
17
|
+
|
18
|
+
def GenerateSign
|
19
|
+
sum = 0
|
20
|
+
count = 0
|
21
|
+
if @Products != nil
|
22
|
+
@Products.each do |product|
|
23
|
+
sum += product.ProductPrice * product.ProductItemsNum
|
24
|
+
count += product.ProductItemsNum
|
25
|
+
|
26
|
+
product.ProductPrice = format('%.2f', product.ProductPrice)
|
27
|
+
product.ProductItemsNum = format('%.2f', product.ProductItemsNum)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
str = @MerchantGuid.upcase
|
32
|
+
str += format('%.2f', sum)
|
33
|
+
str += format('%.2f', count)
|
34
|
+
str += @PaymentDetails.MerchantInternalUserId ||= '0'
|
35
|
+
str += @PaymentDetails.MerchantInternalPaymentId ||= '0'
|
36
|
+
str += @SelectedPaySystemId.to_s
|
37
|
+
str += KaznacheyConfigurations.MerchantSecretKey.upcase
|
38
|
+
@Signature = Md5Helper.GetMd5FromString(
|
39
|
+
str
|
40
|
+
);
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require_relative 'req_common_object'
|
2
|
+
require 'ApiObjects/kaznachey_configurations'
|
3
|
+
require 'Helpers/md5_helper'
|
4
|
+
|
5
|
+
class ReqGetMerchantInfo < ReqCommonObject
|
6
|
+
|
7
|
+
def GenerateSign
|
8
|
+
@Signature = Md5Helper.GetMd5FromString(KaznacheyConfigurations.MerchantGuid.upcase + KaznacheyConfigurations.MerchantSecretKey.upcase);
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class PaySystem
|
2
|
+
|
3
|
+
def initialize(jsonParams)
|
4
|
+
if(jsonParams != nil)
|
5
|
+
@Id = jsonParams['Id']
|
6
|
+
@PaySystemName = jsonParams['PaySystemName']
|
7
|
+
@PaySystemTag = jsonParams['PaySystemTag']
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# Unique payment system id
|
12
|
+
attr_accessor :Id
|
13
|
+
|
14
|
+
# Payment system title
|
15
|
+
attr_accessor :PaySystemName
|
16
|
+
|
17
|
+
# Payment system short name
|
18
|
+
attr_accessor :PaySystemTag
|
19
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'resp_common_object'
|
2
|
+
|
3
|
+
class RespCreatePayment < RespCommonObject
|
4
|
+
|
5
|
+
# Html code in base64 that need to append into the page
|
6
|
+
attr_accessor :ExternalForm
|
7
|
+
|
8
|
+
def initialize(jsonParams)
|
9
|
+
if jsonParams != nil
|
10
|
+
@DebugMessage = jsonParams['DebugMessage']
|
11
|
+
@ErrorCode = jsonParams['ErrorCode']
|
12
|
+
@ExternalForm = jsonParams['ExternalForm']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'resp_common_object'
|
2
|
+
require_relative 'pay_system'
|
3
|
+
|
4
|
+
|
5
|
+
class RespMerchantInfo < RespCommonObject
|
6
|
+
def initialize(jsonParams)
|
7
|
+
if(jsonParams != nil)
|
8
|
+
@ErrorCode = jsonParams['ErrorCode']
|
9
|
+
@DebugMessage = jsonParams['DebugMessage']
|
10
|
+
@TermToUse = jsonParams['TermToUse']
|
11
|
+
|
12
|
+
if(jsonParams['PaySystems'] != nil)
|
13
|
+
@PaySystems = []
|
14
|
+
jsonParams['PaySystems'].each do |value|
|
15
|
+
@PaySystems.push(PaySystem.new(value))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Payment systems list
|
22
|
+
attr_accessor :PaySystems
|
23
|
+
|
24
|
+
# Link to the license agreement, that buyer must to agree
|
25
|
+
attr_accessor :TermToUse
|
26
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative 'resp_common_object'
|
2
|
+
|
3
|
+
class RespPaymentStatus < RespCommonObject
|
4
|
+
|
5
|
+
#Order id in merchant's system
|
6
|
+
attr_accessor :MerchantInternalPaymentId
|
7
|
+
|
8
|
+
#User id in merchant's system
|
9
|
+
attr_accessor :MerchantInternalUserId
|
10
|
+
|
11
|
+
#Order sum
|
12
|
+
attr_accessor :Sum
|
13
|
+
|
14
|
+
#Custom info like comments, etc
|
15
|
+
attr_accessor :CustomMerchantInfo
|
16
|
+
|
17
|
+
attr_accessor :Signature
|
18
|
+
|
19
|
+
def initialize(jsonParams)
|
20
|
+
if (jsonParams != nil)
|
21
|
+
@MerchantInternalPaymentId = jsonParams['MerchantInternalPaymentId']
|
22
|
+
@MerchantInternalUserId = jsonParams['MerchantInternalUserId']
|
23
|
+
@Sum = jsonParams['Sum']
|
24
|
+
@CustomMerchantInfo = jsonParams['CustomMerchantInfo']
|
25
|
+
@Signature = jsonParams['Signature']
|
26
|
+
@ErrorCode = jsonParams['ErrorCode']
|
27
|
+
@DebugMessage = jsonParams['DebugMessage']
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def ValidateSignature?()
|
32
|
+
signature = Md5Helper.GetMd5FromString(
|
33
|
+
@ErrorCode +
|
34
|
+
@MerchantInternalPaymentId ||= '' +
|
35
|
+
@MerchantInternalUserId ||= '' +
|
36
|
+
format('%.2f', @Sum) +
|
37
|
+
@CustomMerchantInfo ||= '' +
|
38
|
+
KaznacheyConfigurations.MerchantSecretKey.upcase
|
39
|
+
);
|
40
|
+
|
41
|
+
signature == @Signature
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#require 'json'
|
2
|
+
require 'net/http'
|
3
|
+
require 'active_support'
|
4
|
+
require 'ApiObjects/kaznachey_configurations'
|
5
|
+
|
6
|
+
class HttpHelper
|
7
|
+
def self.SendRequest(request, uri)
|
8
|
+
|
9
|
+
uri = URI.parse(KaznacheyConfigurations.ServerUrl + uri)
|
10
|
+
begin
|
11
|
+
header = {'Content-Type' => 'text/json'}
|
12
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
13
|
+
httpRequest = Net::HTTP::Post.new(uri.request_uri, header)
|
14
|
+
body = ActiveSupport::JSON.encode(request)
|
15
|
+
httpRequest.body = body
|
16
|
+
|
17
|
+
response = http.request(httpRequest)
|
18
|
+
|
19
|
+
response.body
|
20
|
+
rescue
|
21
|
+
|
22
|
+
ensure
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Gem was created for creating payments with Kaznachey platform.
|
2
|
+
# All requests and responses are used json encoding and sent via POST
|
3
|
+
# More information you can find on our website https://kaznachey.ua/
|
4
|
+
|
5
|
+
require 'Helpers/http_helper'
|
6
|
+
require 'active_support'
|
7
|
+
require 'ApiObjects/Responses/resp_merchant_info'
|
8
|
+
require 'ApiObjects/Responses/resp_create_payment'
|
9
|
+
|
10
|
+
# Main class for interaction with api
|
11
|
+
class KaznacheyPaymentsApi
|
12
|
+
|
13
|
+
# GetMerchantInfo method retrieves a list of payment systems accessible for merchant.
|
14
|
+
# Request class - ReqGetMerchantInfo
|
15
|
+
# Response class - RespMerchantInfo
|
16
|
+
def GetMerchantInfo(request)
|
17
|
+
request.GenerateSign()
|
18
|
+
response = HttpHelper.SendRequest(request, 'GetMerchatInformation')
|
19
|
+
|
20
|
+
responseObject = RespMerchantInfo.new(ActiveSupport::JSON.decode(response))
|
21
|
+
end
|
22
|
+
|
23
|
+
# GetMerchantInfo method allow to create payment.
|
24
|
+
# Request class - ReqGetMerchantInfo
|
25
|
+
# Response class - RespMerchantInfo
|
26
|
+
def CreatePayment(request)
|
27
|
+
request.GenerateSign()
|
28
|
+
response = HttpHelper.SendRequest(request, 'CreatePayment')
|
29
|
+
|
30
|
+
responseObject = RespCreatePayment.new(ActiveSupport::JSON.decode(response))
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'kaznachey_payments_api'
|
3
|
+
require 'ApiObjects/kaznachey_configurations'
|
4
|
+
require 'ApiObjects/Requests/req_get_merchant_info'
|
5
|
+
require 'ApiObjects/Requests/req_create_payment'
|
6
|
+
require 'ApiObjects/Requests/payment_details'
|
7
|
+
require 'ApiObjects/Requests/product'
|
8
|
+
|
9
|
+
class GetMerchantInfo < MiniTest::Unit::TestCase
|
10
|
+
def test_GetInfo
|
11
|
+
KaznacheyConfigurations.MerchantGuid = 'F33AC643-0847-4174-9E72-65FEE9563AD7'
|
12
|
+
KaznacheyConfigurations.MerchantSecretKey = '253A65F6-4CD5-4EA7-AF09-9F6485592D7F'
|
13
|
+
|
14
|
+
api = KaznacheyPaymentsApi.new
|
15
|
+
|
16
|
+
request = ReqGetMerchantInfo.new
|
17
|
+
|
18
|
+
request.MerchantGuid = KaznacheyConfigurations.MerchantGuid
|
19
|
+
|
20
|
+
response = api.GetMerchantInfo(request)
|
21
|
+
|
22
|
+
assert_equal(0, response.ErrorCode)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_CreatePayment
|
26
|
+
KaznacheyConfigurations.MerchantGuid = 'F33AC643-0847-4174-9E72-65FEE9563AD7'
|
27
|
+
KaznacheyConfigurations.MerchantSecretKey = '253A65F6-4CD5-4EA7-AF09-9F6485592D7F'
|
28
|
+
|
29
|
+
api = KaznacheyPaymentsApi.new
|
30
|
+
|
31
|
+
request = ReqCreatePayment.new
|
32
|
+
request.MerchantGuid = KaznacheyConfigurations.MerchantGuid
|
33
|
+
request.SelectedPaySystemId = 1
|
34
|
+
|
35
|
+
paymentDetails = PaymentDetails.new
|
36
|
+
paymentDetails.PhoneNumber = '123123123'
|
37
|
+
paymentDetails.EMail = 'email@email.com'
|
38
|
+
paymentDetails.MerchantInternalPaymentId = '0'
|
39
|
+
paymentDetails.BuyerFirstname = 'Test'
|
40
|
+
request.PaymentDetails = paymentDetails
|
41
|
+
|
42
|
+
|
43
|
+
product = Product.new
|
44
|
+
product.ProductId = '1'
|
45
|
+
product.ProductItemsNum = 1
|
46
|
+
product.ProductName = 'Test Item'
|
47
|
+
product.ProductPrice = 1
|
48
|
+
request.Products = [ product ]
|
49
|
+
request
|
50
|
+
|
51
|
+
response = api.CreatePayment(request)
|
52
|
+
|
53
|
+
assert_equal(0, response.ErrorCode)
|
54
|
+
end
|
55
|
+
end
|