veritrans 1.1.3 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/generators/install_generator.rb +30 -13
- data/lib/generators/templates/app/controllers/vtlink/merchant_controller.rb +7 -0
- data/lib/generators/templates/app/controllers/{veritrans_controller.rb → vtlink/veritrans_controller.rb} +19 -18
- data/lib/generators/templates/app/views/vtlink/merchant/checkout.html.erb +43 -0
- data/lib/generators/templates/app/views/{veritrans → vtlink/veritrans}/cancel.html.erb +0 -0
- data/lib/generators/templates/app/views/{veritrans → vtlink/veritrans}/confirm.html.erb +0 -0
- data/lib/generators/templates/app/views/{veritrans → vtlink/veritrans}/error.html.erb +0 -0
- data/lib/generators/templates/app/views/{veritrans → vtlink/veritrans}/finish.html.erb +0 -0
- data/lib/generators/templates/app/views/{veritrans → vtlink/veritrans}/pay.html.erb +0 -0
- data/lib/generators/templates/config/veritrans.yml +6 -8
- data/lib/veritrans/client.rb +32 -0
- data/lib/veritrans/post_data.rb +9 -4
- data/lib/veritrans/version.rb +2 -2
- metadata +11 -11
- data/lib/generators/templates/app/controllers/merchant_controller.rb +0 -7
- data/lib/generators/templates/app/views/merchant/checkout.html.erb +0 -46
@@ -8,14 +8,29 @@
|
|
8
8
|
|
9
9
|
desc <<DESC
|
10
10
|
Description:
|
11
|
+
Copy veritrans.yml template need for veritrans weblinktype payment:
|
12
|
+
- config/veritrans.yml
|
13
|
+
DESC
|
14
|
+
|
15
|
+
def create_or_update_config_files
|
16
|
+
path = __FILE__.sub(__FILE__.split('/').pop,'templates/config/')
|
17
|
+
create_file("config/veritrans.yml",IO.read("#{path}veritrans.yml"))
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
class SampleGenerator < ::Rails::Generators::Base
|
23
|
+
|
24
|
+
desc <<DESC
|
25
|
+
Description:
|
11
26
|
Copy templates need for veritrans weblinktype payment:
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
27
|
+
- app/controllers/merchant_controller.rb + views
|
28
|
+
- app/controllers/veritrans_controller.rb + views
|
29
|
+
- config/veritrans.yml
|
30
|
+
- config/routes.rb
|
16
31
|
DESC
|
17
32
|
def create_controller_file
|
18
|
-
acts = "app/controllers/"
|
33
|
+
acts = "app/controllers/vtlink/"
|
19
34
|
path = __FILE__.sub(__FILE__.split('/').pop,"templates/#{acts}")
|
20
35
|
create_file("#{acts}merchant_controller.rb", IO.read("#{path}merchant_controller.rb"))
|
21
36
|
create_file("#{acts}veritrans_controller.rb",IO.read("#{path}veritrans_controller.rb"))
|
@@ -26,11 +41,11 @@ DESC
|
|
26
41
|
path = __FILE__.sub(__FILE__.split('/').pop,"templates/#{acts}")
|
27
42
|
create_file("#{acts}layout_auto_post.html.erb",IO.read("#{path}layout_auto_post.html.erb" ))
|
28
43
|
|
29
|
-
acts = "app/views/merchant/"
|
44
|
+
acts = "app/views/vtlink/merchant/"
|
30
45
|
path = __FILE__.sub(__FILE__.split('/').pop,"templates/#{acts}")
|
31
46
|
create_file("#{acts}checkout.html.erb",IO.read("#{path}checkout.html.erb" ))
|
32
47
|
|
33
|
-
acts = "app/views/veritrans/"
|
48
|
+
acts = "app/views/vtlink/veritrans/"
|
34
49
|
path = __FILE__.sub(__FILE__.split('/').pop,"templates/#{acts}")
|
35
50
|
create_file("#{acts}confirm.html.erb", IO.read("#{path}confirm.html.erb"))
|
36
51
|
create_file("#{acts}cancel.html.erb", IO.read("#{path}cancel.html.erb" ))
|
@@ -45,12 +60,14 @@ DESC
|
|
45
60
|
end
|
46
61
|
|
47
62
|
def update_routes
|
48
|
-
route("
|
49
|
-
route("match '
|
50
|
-
route("match '
|
51
|
-
route("match '
|
52
|
-
route("match '
|
53
|
-
route("match '
|
63
|
+
route("end")
|
64
|
+
route(" match '/' => 'merchant#checkout', :via => :get # show checkout form")
|
65
|
+
route(" match 'confirm' => 'veritrans#confirm', :via => :post # pay-confirmation autosubmit to veritrans server")
|
66
|
+
route(" match 'cancel' => 'veritrans#cancel', :via => :post # canceling transaction redirect back to merchant-web")
|
67
|
+
route(" match 'pay' => 'veritrans#pay', :via => :post # server to server pay-notification to merchant-web")
|
68
|
+
route(" match 'finish' => 'veritrans#finish', :via => :post # successfull transaction redirect back to merchant-web")
|
69
|
+
route(" match 'error' => 'veritrans#error', :via => :post # error transaction redirect back to merchant-web")
|
70
|
+
route("namespace :vtlink do")
|
54
71
|
end
|
55
72
|
|
56
73
|
hook_for :test_framework
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class VeritransController < ApplicationController
|
1
|
+
class Vtlink::VeritransController < ApplicationController
|
2
2
|
|
3
3
|
# post action after user submit checkout-form
|
4
4
|
# Ex POST:
|
@@ -6,14 +6,14 @@ class VeritransController < ApplicationController
|
|
6
6
|
# "commodity"=>[
|
7
7
|
# {
|
8
8
|
# "COMMODITY_ID" => "Espirit",
|
9
|
-
# "
|
10
|
-
# "
|
9
|
+
# "COMMODITY_QTY" => "4",
|
10
|
+
# "COMMODITY_PRICE" => "500000",
|
11
11
|
# "COMMODITY_NAME1" => "Espirit"
|
12
12
|
# },
|
13
13
|
# {
|
14
14
|
# "COMMODITY_ID" => "Tablet",
|
15
|
-
# "
|
16
|
-
# "
|
15
|
+
# "COMMODITY_QTY" => "2",
|
16
|
+
# "COMMODITY_PRICE" => "2500000",
|
17
17
|
# "COMMODITY_NAME1" => "Tablet"
|
18
18
|
# }]}
|
19
19
|
# Return from get_keys:
|
@@ -27,19 +27,20 @@ class VeritransController < ApplicationController
|
|
27
27
|
client.gross_amount = params["gross_amount"]
|
28
28
|
client.commodity = params["commodity"]
|
29
29
|
|
30
|
-
client.
|
31
|
-
client.
|
32
|
-
|
33
|
-
client.
|
34
|
-
client.
|
35
|
-
client.
|
36
|
-
client.
|
37
|
-
client.
|
38
|
-
client.
|
39
|
-
client.
|
40
|
-
client.
|
41
|
-
|
42
|
-
|
30
|
+
client.billing_address_different_with_shipping_address = "1" #'1':Different Address with shipping
|
31
|
+
client.required_shipping_address = "1" #'0':Not required shipping address
|
32
|
+
|
33
|
+
client.shipping_first_name = "Sam"
|
34
|
+
client.shipping_last_name = "Anthony"
|
35
|
+
client.shipping_address1 = "Buaran I"
|
36
|
+
client.shipping_address2 = "Pulogadung"
|
37
|
+
client.shipping_city = "Jakarta"
|
38
|
+
client.shipping_country_code = "IDN"
|
39
|
+
client.shipping_postal_code = "16954"
|
40
|
+
client.shipping_phone = "0123456789123"
|
41
|
+
|
42
|
+
client.email = "sam.anthony@gmail.com" # pay-notification email
|
43
|
+
# client.promo_id = "PROMO_MERCHANT_NAME" #if there is a join-promo w/ CC issuer
|
43
44
|
|
44
45
|
client.get_keys
|
45
46
|
@client = client
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%= form_tag('/vtlink/confirm', :id =>"cart_form") do -%>
|
2
|
+
<table border=1>
|
3
|
+
<tbody>
|
4
|
+
<tr>
|
5
|
+
<th>Product Info</th>
|
6
|
+
<th>Price</th>
|
7
|
+
<th align="center">Qty</th>
|
8
|
+
<th>Total Price</th>
|
9
|
+
</tr>
|
10
|
+
<tr>
|
11
|
+
<td>Red Esprint</td>
|
12
|
+
<td align="right">Rp 500,000</td>
|
13
|
+
<td align="center">4</td>
|
14
|
+
<td align="right">Rp 2,000,000</td>
|
15
|
+
</tr>
|
16
|
+
<tr>
|
17
|
+
<td>Android Tablet</td>
|
18
|
+
<td align="right">Rp 2,500,000</td>
|
19
|
+
<td align="center">2</td>
|
20
|
+
<td align="right">Rp 5,000,000</td>
|
21
|
+
</tr>
|
22
|
+
<tr class="subtotal">
|
23
|
+
<td colspan="2">
|
24
|
+
<input class="checkout" name="commit" type="submit" value="Checkout">
|
25
|
+
</td>
|
26
|
+
<td><strong>Subtotal:</strong></td>
|
27
|
+
<td align="right"><strong>Rp 7,000,000</strong></td>
|
28
|
+
</tr>
|
29
|
+
</tbody>
|
30
|
+
</table>
|
31
|
+
|
32
|
+
<input type="hidden" name="commodity[][COMMODITY_ID]" value="Espirit"/>
|
33
|
+
<input type="hidden" name="commodity[][COMMODITY_QTY]" value="1"/>
|
34
|
+
<input type="hidden" name="commodity[][COMMODITY_PRICE]" value="5000"/>
|
35
|
+
<input type="hidden" name="commodity[][COMMODITY_NAME1]" value="Espirit"/>
|
36
|
+
|
37
|
+
<input type="hidden" name="commodity[][COMMODITY_ID]" value="Tablet"/>
|
38
|
+
<input type="hidden" name="commodity[][COMMODITY_QTY]" value="2"/>
|
39
|
+
<input type="hidden" name="commodity[][COMMODITY_PRICE]" value="2500"/>
|
40
|
+
<input type="hidden" name="commodity[][COMMODITY_NAME1]" value="Tablet"/>
|
41
|
+
|
42
|
+
<input type="hidden" name="gross_amount" value="10000"/>
|
43
|
+
<% end %>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,15 +1,13 @@
|
|
1
1
|
development:
|
2
2
|
merchant_id: "test_id"
|
3
3
|
merchant_hash_key: "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789012345678901"
|
4
|
-
unfinish_payment_return_url: "http://
|
5
|
-
finish_payment_return_url: "http://
|
6
|
-
error_payment_return_url: "http://
|
7
|
-
# server_host: "http://192.168.10.250:80"
|
4
|
+
unfinish_payment_return_url: "http://path/to/cancel"
|
5
|
+
finish_payment_return_url: "http://path/to/finish"
|
6
|
+
error_payment_return_url: "http://path/to/error"
|
8
7
|
|
9
8
|
production:
|
10
9
|
merchant_id: "production_id"
|
11
10
|
merchant_hash_key: "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789012345678901"
|
12
|
-
unfinish_payment_return_url: "http://
|
13
|
-
finish_payment_return_url: "http://
|
14
|
-
error_payment_return_url: "http://
|
15
|
-
# server_host: "http://192.168.10.250:80"
|
11
|
+
unfinish_payment_return_url: "http://path/to/cancel"
|
12
|
+
finish_payment_return_url: "http://path/to/finish"
|
13
|
+
error_payment_return_url: "http://path/to/error"
|
data/lib/veritrans/client.rb
CHANGED
@@ -41,10 +41,22 @@ module Veritrans
|
|
41
41
|
def get_keys
|
42
42
|
init_instance
|
43
43
|
|
44
|
+
if customer_specification_flag == "0" && shipping_flag == "0"
|
45
|
+
raise "required_shipping_address must be '1'"
|
46
|
+
end
|
47
|
+
|
44
48
|
params = prepare_params(PostData::ServerParam,PostData::PostParam)
|
45
49
|
|
46
50
|
if @commodity.class == Array
|
47
51
|
commodity = @commodity.collect do |data|
|
52
|
+
if data.keys.index "COMMODITY_QTY"
|
53
|
+
data["COMMODITY_NUM"] = data["COMMODITY_QTY"]
|
54
|
+
data.delete "COMMODITY_QTY"
|
55
|
+
end
|
56
|
+
if data.keys.index "COMMODITY_PRICE"
|
57
|
+
data["COMMODITY_UNIT"] = data["COMMODITY_PRICE"]
|
58
|
+
data.delete "COMMODITY_PRICE"
|
59
|
+
end
|
48
60
|
uri = Addressable::URI.new
|
49
61
|
uri.query_values = data
|
50
62
|
uri.query
|
@@ -117,6 +129,26 @@ module Veritrans
|
|
117
129
|
return @token
|
118
130
|
end
|
119
131
|
|
132
|
+
# :nodoc:
|
133
|
+
def billing_address_different_with_shipping_address
|
134
|
+
@customer_specification_flag
|
135
|
+
end
|
136
|
+
|
137
|
+
# :nodoc:
|
138
|
+
def billing_address_different_with_shipping_address=(flag)
|
139
|
+
@customer_specification_flag = customer_specification_flag
|
140
|
+
end
|
141
|
+
|
142
|
+
# :nodoc:
|
143
|
+
def required_shipping_address
|
144
|
+
@shipping_flag
|
145
|
+
end
|
146
|
+
|
147
|
+
# :nodoc:
|
148
|
+
def required_shipping_address=(flag)
|
149
|
+
@shipping_flag = flag
|
150
|
+
end
|
151
|
+
|
120
152
|
private
|
121
153
|
|
122
154
|
def merchanthash
|
data/lib/veritrans/post_data.rb
CHANGED
@@ -55,7 +55,7 @@ module Veritrans
|
|
55
55
|
:postal_code,
|
56
56
|
:phone,
|
57
57
|
:email,
|
58
|
-
:customer_specification_flag
|
58
|
+
:customer_specification_flag # billing_address_different_with_shipping_address
|
59
59
|
]
|
60
60
|
|
61
61
|
# +:shipping_flag,
|
@@ -69,7 +69,7 @@ module Veritrans
|
|
69
69
|
# +:shipping_phone,
|
70
70
|
# +:shipping_method,
|
71
71
|
Shipping =[
|
72
|
-
:shipping_flag,
|
72
|
+
:shipping_flag, # required_shipping_address
|
73
73
|
:shipping_first_name,
|
74
74
|
:shipping_last_name,
|
75
75
|
:shipping_address1,
|
@@ -102,12 +102,17 @@ module Veritrans
|
|
102
102
|
# +:commodity_name2+
|
103
103
|
PurchaseParam =[
|
104
104
|
:commodity_id,
|
105
|
-
:commodity_unit,
|
106
|
-
:commodity_num,
|
105
|
+
:commodity_unit, # commodity_qty
|
106
|
+
:commodity_num, # commodity_price
|
107
107
|
:commodity_name1,
|
108
108
|
:commodity_name2
|
109
109
|
]
|
110
110
|
|
111
|
+
# AliasesParam = {
|
112
|
+
# :commodity_unit => :commodity_qty,
|
113
|
+
# :commodity_num => :commodity_price
|
114
|
+
# }
|
115
|
+
|
111
116
|
# +:order_id,+
|
112
117
|
# +:session_id,+
|
113
118
|
# +:merchanthash,+
|
data/lib/veritrans/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: veritrans
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -77,15 +77,15 @@ files:
|
|
77
77
|
- lib/veritrans/post_data.rb
|
78
78
|
- lib/veritrans/version.rb
|
79
79
|
- lib/generators/install_generator.rb
|
80
|
-
- lib/generators/templates/app/controllers/merchant_controller.rb
|
81
|
-
- lib/generators/templates/app/controllers/veritrans_controller.rb
|
80
|
+
- lib/generators/templates/app/controllers/vtlink/merchant_controller.rb
|
81
|
+
- lib/generators/templates/app/controllers/vtlink/veritrans_controller.rb
|
82
82
|
- lib/generators/templates/app/views/layouts/layout_auto_post.html.erb
|
83
|
-
- lib/generators/templates/app/views/merchant/checkout.html.erb
|
84
|
-
- lib/generators/templates/app/views/veritrans/confirm.html.erb
|
85
|
-
- lib/generators/templates/app/views/veritrans/error.html.erb
|
86
|
-
- lib/generators/templates/app/views/veritrans/finish.html.erb
|
87
|
-
- lib/generators/templates/app/views/veritrans/pay.html.erb
|
88
|
-
- lib/generators/templates/app/views/veritrans/cancel.html.erb
|
83
|
+
- lib/generators/templates/app/views/vtlink/merchant/checkout.html.erb
|
84
|
+
- lib/generators/templates/app/views/vtlink/veritrans/confirm.html.erb
|
85
|
+
- lib/generators/templates/app/views/vtlink/veritrans/error.html.erb
|
86
|
+
- lib/generators/templates/app/views/vtlink/veritrans/finish.html.erb
|
87
|
+
- lib/generators/templates/app/views/vtlink/veritrans/pay.html.erb
|
88
|
+
- lib/generators/templates/app/views/vtlink/veritrans/cancel.html.erb
|
89
89
|
- lib/generators/templates/config/veritrans.yml
|
90
90
|
homepage: http://veritrans.co.id
|
91
91
|
licenses: []
|
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
109
|
rubyforge_project: veritrans
|
110
|
-
rubygems_version: 1.8.
|
110
|
+
rubygems_version: 1.8.23
|
111
111
|
signing_key:
|
112
112
|
specification_version: 3
|
113
113
|
summary: Veritrans Webclient wrapper
|
@@ -1,46 +0,0 @@
|
|
1
|
-
<%= form_tag('/confirm', :id =>"cart_form") do -%>
|
2
|
-
<table border=1>
|
3
|
-
<tbody>
|
4
|
-
<tr>
|
5
|
-
<th>Product Image</th>
|
6
|
-
<th>Product Info</th>
|
7
|
-
<th>Price</th>
|
8
|
-
<th align="center">Qty</th>
|
9
|
-
<th>Total Price</th>
|
10
|
-
</tr>
|
11
|
-
<tr>
|
12
|
-
<td><img src="/assets/esprit.png" title="Esprit"></td>
|
13
|
-
<td>Red Esprint</td>
|
14
|
-
<td align="right">Rp 500,000</td>
|
15
|
-
<td align="center">4</td>
|
16
|
-
<td align="right">Rp 2,000,000</td>
|
17
|
-
</tr>
|
18
|
-
<tr>
|
19
|
-
<td><img src="/assets/tablet.jpg" title="Tablet"></td>
|
20
|
-
<td>Android Tablet</td>
|
21
|
-
<td align="right">Rp 2,500,000</td>
|
22
|
-
<td align="center">2</td>
|
23
|
-
<td align="right">Rp 5,000,000</td>
|
24
|
-
</tr>
|
25
|
-
<tr class="subtotal">
|
26
|
-
<td colspan="3">
|
27
|
-
<input class="checkout" name="commit" type="submit" value="Checkout">
|
28
|
-
</td>
|
29
|
-
<td><strong>Subtotal:</strong></td>
|
30
|
-
<td align="right"><strong>Rp 7,000,000</strong></td>
|
31
|
-
</tr>
|
32
|
-
</tbody>
|
33
|
-
</table>
|
34
|
-
|
35
|
-
<input type="hidden" name="commodity[][COMMODITY_ID]" value="Espirit"/>
|
36
|
-
<input type="hidden" name="commodity[][COMMODITY_UNIT]" value="500000"/>
|
37
|
-
<input type="hidden" name="commodity[][COMMODITY_NUM]" value="4"/>
|
38
|
-
<input type="hidden" name="commodity[][COMMODITY_NAME1]" value="Espirit"/>
|
39
|
-
|
40
|
-
<input type="hidden" name="commodity[][COMMODITY_ID]" value="Tablet"/>
|
41
|
-
<input type="hidden" name="commodity[][COMMODITY_UNIT]" value="2500000"/>
|
42
|
-
<input type="hidden" name="commodity[][COMMODITY_NUM]" value="2"/>
|
43
|
-
<input type="hidden" name="commodity[][COMMODITY_NAME1]" value="Tablet"/>
|
44
|
-
|
45
|
-
<input type="hidden" name="gross_amount" value="7000000"/>
|
46
|
-
<% end %>
|