spree_komoju 0.0.5 → 0.0.6
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 +4 -4
- data/README.md +16 -1
- data/app/assets/javascripts/spree/backend/spree_komoju.js +0 -2
- data/app/assets/javascripts/spree/frontend/spree_komoju.js +0 -2
- data/app/assets/stylesheets/spree/frontend/spree_komoju.css +23 -0
- data/app/controllers/spree/admin/payments_controller_decorator.rb +3 -0
- data/app/controllers/spree/checkout_controller_decorator.rb +1 -16
- data/app/controllers/spree/komoju_controller.rb +34 -0
- data/app/models/spree/bank_transfer.rb +1 -10
- data/app/models/spree/gateway/komoju_bank_transfer.rb +4 -0
- data/app/models/spree/gateway/komoju_konbini.rb +4 -0
- data/app/models/spree/gateway/komoju_pay_easy.rb +28 -0
- data/app/models/spree/gateway/komoju_web_money.rb +57 -0
- data/app/models/spree/konbini.rb +1 -10
- data/app/models/spree/pay_easy.rb +18 -0
- data/app/models/spree/web_money.rb +21 -0
- data/app/models/spree/web_money_decorator.rb +15 -0
- data/app/views/spree/admin/payments/source_forms/_komoju_bank_transfer.html.erb +1 -0
- data/app/views/spree/admin/payments/source_forms/_komoju_credit_card.html.erb +1 -0
- data/app/views/spree/admin/payments/source_forms/_komoju_konbini.html.erb +1 -0
- data/app/views/spree/admin/payments/source_forms/_komoju_pay_easy.html.erb +1 -0
- data/app/views/spree/admin/payments/source_forms/_komoju_web_money.html.erb +1 -0
- data/app/views/spree/admin/payments/source_views/_komoju_bank_transfer.html.erb +13 -0
- data/app/views/spree/admin/payments/source_views/_komoju_pay_easy.html.erb +21 -0
- data/app/views/spree/admin/payments/source_views/_komoju_web_money.html.erb +13 -0
- data/app/views/spree/checkout/payment/_komoju_pay_easy.html.erb +36 -0
- data/app/views/spree/checkout/payment/_komoju_web_money.html.erb +74 -0
- data/app/views/spree/orders/_pay_easy.html.erb +24 -0
- data/bin/rails +6 -1
- data/config/locales/en.yml +32 -4
- data/config/locales/ja.yml +24 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20150402013829_create_spree_pay_easies.rb +24 -0
- data/db/migrate/20151209053401_create_spree_web_moneys.rb +17 -0
- data/lib/active_merchant/billing/gateways/komoju.rb +9 -4
- data/lib/ext/activemerchant/connection.rb +47 -0
- data/lib/generators/spree_komoju/install/images/pay-easy.png +0 -0
- data/lib/generators/spree_komoju/install/images/webmoney.png +0 -0
- data/lib/spree_komoju/controller_helpers.rb +29 -0
- data/lib/spree_komoju/engine.rb +3 -0
- data/lib/spree_komoju/errors.rb +5 -0
- data/lib/spree_komoju.rb +8 -0
- data/spec/controllers/spree/checkout_controller_spec.rb +1 -1
- data/spec/controllers/spree/komoju_controller_spec.rb +82 -0
- data/spec/models/spree/bank_transfer_spec.rb +1 -57
- data/spec/models/spree/gateway/komoju_pay_easy_spec.rb +92 -0
- data/spec/models/spree/gateway/komoju_web_money_spec.rb +108 -0
- data/spec/models/spree/konbini_spec.rb +1 -57
- data/spec/models/spree/pay_easy_spec.rb +13 -0
- data/spec/models/spree/web_money_decorator_spec.rb +24 -0
- data/spec/models/spree/web_money_spec.rb +13 -0
- data/spree_komoju.gemspec +1 -1
- metadata +40 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fb49e7926e73b422ef5265abb5fff354a2a9c4aa
|
|
4
|
+
data.tar.gz: cc33f0b3f7852687708ada96fb1d7c42fd8363f9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c9a991202fbd2c1c0ab2de087d2f9bb64d1fcf4acafd02850e552d0247328d9cc4f8b310f1dce7ea09a1213bd07b57c706510ac6756d5b2e919c49af53a3e090
|
|
7
|
+
data.tar.gz: b170a98fe37a3dad419ab1c058b13fc1ccc5e045e585a53cca48f0497bb33c496227dc8217ecbf9e4d3d6995c7bc70654f68106ac1f6b326560b441e0df93f0d
|
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
SpreeKomoju
|
|
2
2
|
===========
|
|
3
3
|
|
|
4
|
-
SpreeKomoju provides a comprehensive integration for all [Komoju](https://docs.komoju.com) payment methods with a single gem, including Credit Card, Konbini and Bank Transfer.
|
|
4
|
+
SpreeKomoju provides a comprehensive integration for all [Komoju](https://docs.komoju.com) payment methods with a single gem, including Credit Card, Konbini, PayEasy, and Bank Transfer.
|
|
5
5
|
|
|
6
6
|
Installation
|
|
7
7
|
------------
|
|
@@ -19,6 +19,21 @@ bundle
|
|
|
19
19
|
bundle exec rails g spree_komoju:install
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
+
Webhooks
|
|
23
|
+
--------
|
|
24
|
+
|
|
25
|
+
You will need to [setup a webhook](https://docs.komoju.com/api/webhooks) to complete non credit card
|
|
26
|
+
payments options. This is because payment options like Konbini, Bank Transfer, etc. are completed offline.
|
|
27
|
+
|
|
28
|
+
Adding spree_komoju will expose a new route `http://localhost:3000/komoju/callback` which expects
|
|
29
|
+
a `payment.captured` webhook. You can configure a [secret token](https://docs.komoju.com/api/webhooks#secret_token)
|
|
30
|
+
for your callback endpoint using the following configuration code:
|
|
31
|
+
|
|
32
|
+
```ruby
|
|
33
|
+
# config/initializers/spree_komoju.rb
|
|
34
|
+
SpreeKomoju.komoju_webhook_secret_token = 'MY WEBHOOK SECRET'
|
|
35
|
+
```
|
|
36
|
+
|
|
22
37
|
Testing
|
|
23
38
|
-------
|
|
24
39
|
|
|
@@ -2,3 +2,26 @@
|
|
|
2
2
|
Placeholder manifest file.
|
|
3
3
|
the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css'
|
|
4
4
|
*/
|
|
5
|
+
|
|
6
|
+
.webmoney .multicard {
|
|
7
|
+
margin-top: 20px;
|
|
8
|
+
font-family: monospace;
|
|
9
|
+
font-size: 14px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.webmoney .multicard th {
|
|
13
|
+
width: 200px;
|
|
14
|
+
font-weight: normal;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.webmoney .form-inline .form-control,
|
|
18
|
+
.webmoney .form-inline .form-group {
|
|
19
|
+
display: inline;
|
|
20
|
+
width: auto;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@media screen and (max-width: 460px){
|
|
24
|
+
.webmoney .multicard span.points {
|
|
25
|
+
display: none;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,18 +1,3 @@
|
|
|
1
1
|
Spree::CheckoutController.class_eval do
|
|
2
|
-
|
|
3
|
-
super.push(permitted_komoju_konbini_attributes)
|
|
4
|
-
super.push(permitted_komoju_banktransfer_attributes)
|
|
5
|
-
super.flatten
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
private
|
|
9
|
-
|
|
10
|
-
def permitted_komoju_konbini_attributes
|
|
11
|
-
:convenience
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def permitted_komoju_banktransfer_attributes
|
|
15
|
-
[:email, :phone, :family_name, :given_name, :family_name_kana, :given_name_kana]
|
|
16
|
-
end
|
|
2
|
+
include SpreeKomoju::ControllerHelpers
|
|
17
3
|
end
|
|
18
|
-
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
class KomojuController < ApplicationController
|
|
3
|
+
protect_from_forgery except: :callback
|
|
4
|
+
|
|
5
|
+
def callback
|
|
6
|
+
return head :unauthorized unless callback_verified?
|
|
7
|
+
|
|
8
|
+
case params[:type]
|
|
9
|
+
when "ping"
|
|
10
|
+
# do nothing
|
|
11
|
+
when "payment.captured"
|
|
12
|
+
order_number = extract_payment_number(params[:data][:external_order_num])
|
|
13
|
+
payment = Spree::Payment.find_by_number!(order_number)
|
|
14
|
+
payment.complete! unless payment.completed?
|
|
15
|
+
else
|
|
16
|
+
return head :unauthorized
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
head 200
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def extract_payment_number(external_order_num)
|
|
25
|
+
external_order_num.split('-').try(:last)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def callback_verified?
|
|
29
|
+
request_body = request.body.read
|
|
30
|
+
signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), SpreeKomoju.komoju_webhook_secret_token.to_s, request_body)
|
|
31
|
+
Rack::Utils.secure_compare(signature, request.env["HTTP_X_KOMOJU_SIGNATURE"].to_s)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -7,16 +7,7 @@ module Spree
|
|
|
7
7
|
validates :email, :given_name, :family_name, :given_name_kana, :family_name_kana, presence: true
|
|
8
8
|
|
|
9
9
|
def actions
|
|
10
|
-
%w{
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def can_capture?(payment)
|
|
14
|
-
return false unless ['checkout', 'pending'].include?(payment.state)
|
|
15
|
-
payment.source.expires_at && (payment.source.expires_at > DateTime.current)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def can_void?(payment)
|
|
19
|
-
payment.state != 'void'
|
|
10
|
+
%w{}
|
|
20
11
|
end
|
|
21
12
|
|
|
22
13
|
def instructions_partial_path
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
class Gateway::KomojuPayEasy < KomojuGateway
|
|
3
|
+
def authorize(money, source, options)
|
|
4
|
+
details = {
|
|
5
|
+
type: "pay_easy",
|
|
6
|
+
email: source.email,
|
|
7
|
+
phone: source.phone,
|
|
8
|
+
given_name: source.given_name,
|
|
9
|
+
family_name: source.family_name,
|
|
10
|
+
given_name_kana: source.given_name_kana,
|
|
11
|
+
family_name_kana: source.family_name_kana
|
|
12
|
+
}
|
|
13
|
+
options = change_options_to_dollar(options) if options[:currency] == "JPY"
|
|
14
|
+
|
|
15
|
+
response = provider.purchase(money - options[:tax], details, options)
|
|
16
|
+
|
|
17
|
+
source.update!(
|
|
18
|
+
expires_at: response.params["payment_deadline"].to_time,
|
|
19
|
+
bank_id: response.params["payment_details"]["bank_id"],
|
|
20
|
+
customer_id: response.params["payment_details"]["customer_id"],
|
|
21
|
+
confirmation_id: response.params["payment_details"]["confirmation_id"],
|
|
22
|
+
instructions_url: response.params["payment_details"]["instructions_url"]
|
|
23
|
+
) if response.success?
|
|
24
|
+
|
|
25
|
+
response
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
class Gateway::KomojuWebMoney < KomojuGateway
|
|
3
|
+
def auto_capture?
|
|
4
|
+
true
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def purchase(money, source, options)
|
|
8
|
+
raise SpreeKomoju::Errors::UnsupportedCurrency if options[:currency] != "JPY"
|
|
9
|
+
|
|
10
|
+
details = {
|
|
11
|
+
type: "web_money",
|
|
12
|
+
email: source.email,
|
|
13
|
+
prepaid_number: source.prepaid_number
|
|
14
|
+
}
|
|
15
|
+
options = change_options_to_dollar(options)
|
|
16
|
+
|
|
17
|
+
if uuid = continue_uuid(options[:order_id])
|
|
18
|
+
response = provider.continue(uuid, details)
|
|
19
|
+
else
|
|
20
|
+
response = provider.purchase(money - options[:tax], details, options)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
source.update!(
|
|
24
|
+
prepaid_cards: response.params["payment_details"]["prepaid_cards"],
|
|
25
|
+
short_amount: response.params["payment_details"]["short_amount"]
|
|
26
|
+
) if response.success?
|
|
27
|
+
|
|
28
|
+
if response.params["status"] == "pending"
|
|
29
|
+
source.update!(payment_uuid: response.params["id"])
|
|
30
|
+
response = multi_card_response(response)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
response
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def reusable_sources(*args)
|
|
37
|
+
[]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def multi_card_response(response)
|
|
43
|
+
response.instance_variable_set(:@success, false)
|
|
44
|
+
response.instance_variable_set(:@message, I18n.t('spree.komoju.web_money.insufficient_funds'))
|
|
45
|
+
response
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def continue_uuid(current_order_id)
|
|
49
|
+
order = Spree::Order.find_by_number(current_order_id.split('-').first)
|
|
50
|
+
|
|
51
|
+
# NOTE: Since the current payment is this payment, find the payment before
|
|
52
|
+
# and see if it was for a webmoney transaction. If it was check if it has a payment UUID
|
|
53
|
+
# to continue the transaction.
|
|
54
|
+
order.payments.last(2).first.try(:source).try(:payment_uuid)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
data/app/models/spree/konbini.rb
CHANGED
|
@@ -9,16 +9,7 @@ module Spree
|
|
|
9
9
|
validates :convenience, presence: true
|
|
10
10
|
|
|
11
11
|
def actions
|
|
12
|
-
%w{
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def can_capture?(payment)
|
|
16
|
-
return false unless ['checkout', 'pending'].include?(payment.state)
|
|
17
|
-
payment.source.expires_at && (payment.source.expires_at > DateTime.current)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def can_void?(payment)
|
|
21
|
-
payment.state != 'void'
|
|
12
|
+
%w{}
|
|
22
13
|
end
|
|
23
14
|
|
|
24
15
|
def instructions_partial_path
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
class PayEasy < Spree::Base
|
|
3
|
+
belongs_to :payment_method
|
|
4
|
+
belongs_to :user, class_name: Spree.user_class, foreign_key: 'user_id'
|
|
5
|
+
has_many :payments, as: :source
|
|
6
|
+
|
|
7
|
+
validates :email, :given_name, :family_name, :given_name_kana, :family_name_kana, presence: true
|
|
8
|
+
validates :phone, numericality: true, allow_nil: true
|
|
9
|
+
|
|
10
|
+
def actions
|
|
11
|
+
%w{}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def instructions_partial_path
|
|
15
|
+
"spree/orders/pay_easy"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
class WebMoney < Spree::Base
|
|
3
|
+
belongs_to :payment_method
|
|
4
|
+
belongs_to :user, class_name: Spree.user_class, foreign_key: 'user_id'
|
|
5
|
+
has_many :payments, as: :source
|
|
6
|
+
|
|
7
|
+
serialize :prepaid_cards, Array
|
|
8
|
+
|
|
9
|
+
attr_accessor :prepaid_number
|
|
10
|
+
validates :email, presence: true
|
|
11
|
+
validates :prepaid_number, presence: true, on: :create
|
|
12
|
+
|
|
13
|
+
def actions
|
|
14
|
+
%w{}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def instructions_partial_path
|
|
18
|
+
"spree/orders/web_money"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
class WebMoneyDecorator
|
|
3
|
+
attr_reader :source
|
|
4
|
+
delegate :short_amount, :prepaid_cards, :payment_uuid, to: :source,
|
|
5
|
+
allow_nil: true
|
|
6
|
+
|
|
7
|
+
def initialize(source)
|
|
8
|
+
@source = if source.present? && source.brand == "web_moneys"
|
|
9
|
+
source
|
|
10
|
+
else
|
|
11
|
+
nil
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render partial: "spree/checkout/payment/komoju_bank_transfer", locals: { payment_method: payment_method } %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render :partial => "spree/admin/payments/source_forms/gateway", locals: { payment_method: payment_method, previous_cards: previous_cards } %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render partial: "spree/checkout/payment/komoju_konbini", locals: { payment_method: payment_method } %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render partial: "spree/checkout/payment/komoju_pay_easy", locals: { payment_method: payment_method } %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render partial: "spree/checkout/payment/komoju_web_money", locals: { payment_method: payment_method } %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<fieldset data-hook="bank-transfer">
|
|
2
|
+
<legend><%= Spree.t(:bank_tansfer) %></legend>
|
|
3
|
+
<table class="table table-condensed table-bordered">
|
|
4
|
+
<tr>
|
|
5
|
+
<th width="20%"><%= Spree::BankTransfer.human_attribute_name(:order_id) %>:</th>
|
|
6
|
+
<td><%= payment.source.order_id %></td>
|
|
7
|
+
</tr>
|
|
8
|
+
<tr>
|
|
9
|
+
<th><%= Spree::BankTransfer.human_attribute_name(:expires_at) %>:</th>
|
|
10
|
+
<td><%= payment.source.expires_at %></td>
|
|
11
|
+
</tr>
|
|
12
|
+
</table>
|
|
13
|
+
</fieldset>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<fieldset data-hook="pay-easy">
|
|
2
|
+
<legend><%= Spree.t(:pay_easy) %></legend>
|
|
3
|
+
<table class="table table-condensed table-bordered">
|
|
4
|
+
<tr>
|
|
5
|
+
<th width="20%"><%= Spree::PayEasy.human_attribute_name(:bank_id) %>:</th>
|
|
6
|
+
<td><%= payment.source.bank_id %></td>
|
|
7
|
+
</tr>
|
|
8
|
+
<tr>
|
|
9
|
+
<th width="20%"><%= Spree::PayEasy.human_attribute_name(:customer_id) %>:</th>
|
|
10
|
+
<td><%= payment.source.customer_id %></td>
|
|
11
|
+
</tr>
|
|
12
|
+
<tr>
|
|
13
|
+
<th width="20%"><%= Spree::PayEasy.human_attribute_name(:confirmation_id) %>:</th>
|
|
14
|
+
<td><%= payment.source.confirmation_id %></td>
|
|
15
|
+
</tr>
|
|
16
|
+
<tr>
|
|
17
|
+
<th><%= Spree.t(:expires_at) %>:</th>
|
|
18
|
+
<td><%= payment.source.expires_at %></td>
|
|
19
|
+
</tr>
|
|
20
|
+
</table>
|
|
21
|
+
</fieldset>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<fieldset data-hook="web-money">
|
|
2
|
+
<legend><%= Spree.t(:web_money) %></legend>
|
|
3
|
+
<table class="table table-condensed table-bordered">
|
|
4
|
+
<tr>
|
|
5
|
+
<th width="20%"><%= Spree::WebMoney.human_attribute_name(:prepaid_number) %>:</th>
|
|
6
|
+
<td>
|
|
7
|
+
<% payment.source.prepaid_cards.each do |card| %>
|
|
8
|
+
**** **** **** <%= card["last_four_digits"] %> / <%= card["points"] %> points<br/>
|
|
9
|
+
<% end %>
|
|
10
|
+
</td>
|
|
11
|
+
</tr>
|
|
12
|
+
</table>
|
|
13
|
+
</fieldset>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<div class="well clearfix">
|
|
2
|
+
<p><%= image_tag 'pay-easy.png' %></p>
|
|
3
|
+
<% param_prefix = "payment_source[#{payment_method.id}]" %>
|
|
4
|
+
|
|
5
|
+
<p class="field">
|
|
6
|
+
<%= label_tag "email", Spree.t(:email) %><span class="required">*</span><br />
|
|
7
|
+
<%= text_field_tag "#{param_prefix}[email]", @order.email, { id: "email", class: 'form-control required'} %>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p class="field">
|
|
11
|
+
<%= label_tag "phone", Spree.t(:phone) %><span class="required">*</span><br />
|
|
12
|
+
<%= text_field_tag "#{param_prefix}[phone]", @order.billing_address.phone, { id: "phone", class: 'form-control required'} %>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<div class="row">
|
|
16
|
+
<div class="col-md-6 field">
|
|
17
|
+
<%= label_tag "family_name", Spree.t(:family_name) %><span class="required">*</span><br />
|
|
18
|
+
<%= text_field_tag "#{param_prefix}[family_name]", @order.billing_lastname, { id: "family_name", class: 'form-control required'} %>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="col-md-6 field">
|
|
21
|
+
<%= label_tag "given_name", Spree.t(:given_name) %><span class="required">*</span><br />
|
|
22
|
+
<%= text_field_tag "#{param_prefix}[given_name]", @order.billing_firstname, { id: "given_name", class: 'form-control required'} %>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="row">
|
|
27
|
+
<div class="col-md-6 field">
|
|
28
|
+
<%= label_tag "family_name_kana", Spree.t(:family_name_kana) %><span class="required">*</span><br />
|
|
29
|
+
<%= text_field_tag "#{param_prefix}[family_name_kana]", "", { id: "family_name_kana", class: 'form-control required'} %>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="col-md-6 field">
|
|
32
|
+
<%= label_tag "given_name_kana", Spree.t(:given_name_kana) %><span class="required">*</span><br />
|
|
33
|
+
<%= text_field_tag "#{param_prefix}[given_name_kana]", "", { id: "given_name_kana", class: 'form-control required'} %>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<% @webmoney = Spree::WebMoneyDecorator.new(@order.payments.last.try(:source)) %>
|
|
2
|
+
|
|
3
|
+
<div class="well webmoney clearfix">
|
|
4
|
+
<p><%= image_tag 'webmoney.png' %></p>
|
|
5
|
+
<% param_prefix = "payment_source[#{payment_method.id}]" %>
|
|
6
|
+
|
|
7
|
+
<p class="field">
|
|
8
|
+
<%= label_tag "email", Spree.t(:email) %><span class="required">*</span><br />
|
|
9
|
+
<%= text_field_tag "#{param_prefix}[email]", @order.email, { id: "email", class: 'form-control required'} %>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<%= hidden_field_tag "#{param_prefix}[prepaid_number]", "" %>
|
|
13
|
+
|
|
14
|
+
<div class="form-inline">
|
|
15
|
+
<%= label_tag "prepaid_number", Spree.t(:prepaid_number) %><span class="required">*</span><br />
|
|
16
|
+
<div class="form-group">
|
|
17
|
+
<%= text_field_tag nil, "", { id: "ppn1", class: 'form-control required webmoney_pin', size: 4, maxlength: 4 } %>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="form-group">
|
|
20
|
+
<%= text_field_tag nil, "", { id: "ppn2", class: 'form-control required webmoney_pin', size: 4, maxlength: 4 } %>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="form-group">
|
|
23
|
+
<%= text_field_tag nil, "", { id: "ppn3", class: 'form-control required webmoney_pin', size: 4, maxlength: 4 } %>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="form-group">
|
|
26
|
+
<%= text_field_tag nil, "", { id: "ppn4", class: 'form-control required webmoney_pin', size: 4, maxlength: 4 } %>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<% if @webmoney.prepaid_cards.present? %>
|
|
31
|
+
<%= hidden_field_tag "#{param_prefix}[payment_uuid]", @webmoney.payment_uuid %>
|
|
32
|
+
|
|
33
|
+
<div class="well multicard">
|
|
34
|
+
<table>
|
|
35
|
+
<% @webmoney.prepaid_cards.each do |card| %>
|
|
36
|
+
<tr>
|
|
37
|
+
<th>**** **** **** <%= card["last_four_digits"] %></th>
|
|
38
|
+
<td><%= card["points"] %></td>
|
|
39
|
+
</tr>
|
|
40
|
+
<% end %>
|
|
41
|
+
<tr>
|
|
42
|
+
<th><%= t('spree.komoju.web_money.balance_remaining') %></th>
|
|
43
|
+
<td><%= @webmoney.short_amount %> <span class="points"><%= t('spree.komoju.web_money.points') %></td>
|
|
44
|
+
</tr>
|
|
45
|
+
</table>
|
|
46
|
+
</div>
|
|
47
|
+
<% end %>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<%=
|
|
51
|
+
javascript_tag <<-JS
|
|
52
|
+
SpreeKomoju = {
|
|
53
|
+
addWebMoneyListener: function() {
|
|
54
|
+
$(".webmoney input.webmoney_pin").keyup(function() {
|
|
55
|
+
var length = $(this).val().length;
|
|
56
|
+
if (length == 4) {
|
|
57
|
+
$nextInput = $('input.webmoney_pin:eq(' + ($('input.webmoney_pin').index(this) + 1) + ')');
|
|
58
|
+
$nextInput.focus();
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
$(".webmoney").parents('form').has("input.webmoney_pin").submit(function() {
|
|
63
|
+
var prepaid_number = $("#ppn1").val() + $("#ppn2").val() + $("#ppn3").val() + $("#ppn4").val();
|
|
64
|
+
$(this).find("input[name*=prepaid_number]").val(prepaid_number)
|
|
65
|
+
$(this).find("input.webmoney_pin").prop('disabled', true)
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
$(document).ready(function() {
|
|
71
|
+
SpreeKomoju.addWebMoneyListener();
|
|
72
|
+
})
|
|
73
|
+
JS
|
|
74
|
+
%>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<div>
|
|
2
|
+
<p>
|
|
3
|
+
Thank you for your order. Instructions have been sent to your e-mail address.<br/>
|
|
4
|
+
Please follow the link below to complete your purchase:
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<%= link_to source.instructions_url do %>
|
|
8
|
+
How to pay with PayEasy
|
|
9
|
+
<% end %>
|
|
10
|
+
</div>
|
|
11
|
+
<br>
|
|
12
|
+
|
|
13
|
+
<div class='alert alert-info' role='alert'>
|
|
14
|
+
<dl>
|
|
15
|
+
<dt>Bank Number</dt>
|
|
16
|
+
<dd><%= source.bank_id %></dd>
|
|
17
|
+
<dt>Customer Number</dt>
|
|
18
|
+
<dd><%= source.customer_id %></dd>
|
|
19
|
+
<dt>Confirmation Number</dt>
|
|
20
|
+
<dd><%= source.confirmation_id %></dd>
|
|
21
|
+
<dt>Expiry Date</dt>
|
|
22
|
+
<dd><%= l source.expires_at.in_time_zone("Tokyo"), format: :short %></dd>
|
|
23
|
+
</dl>
|
|
24
|
+
</div>
|
data/bin/rails
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
|
2
3
|
|
|
3
4
|
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
|
4
5
|
ENGINE_PATH = File.expand_path('../../lib/spree_komoju/engine', __FILE__)
|
|
5
6
|
|
|
7
|
+
# Set up gems listed in the Gemfile.
|
|
8
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
|
9
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
|
10
|
+
|
|
6
11
|
require 'rails/all'
|
|
7
12
|
require 'rails/engine/commands'
|
data/config/locales/en.yml
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
en:
|
|
2
2
|
spree:
|
|
3
|
+
pay_easy: Pay Easy
|
|
4
|
+
bank_transfer: Bank Transfer
|
|
5
|
+
web_money: WebMoney
|
|
3
6
|
conveniences:
|
|
4
7
|
lawson: Lawson
|
|
5
8
|
family-mart: Family Mart
|
|
@@ -10,7 +13,32 @@ en:
|
|
|
10
13
|
seven-eleven: Seven Eleven
|
|
11
14
|
email: Email
|
|
12
15
|
phone: Phone
|
|
13
|
-
given_name:
|
|
14
|
-
family_name:
|
|
15
|
-
given_name_kana:
|
|
16
|
-
family_name_kana:
|
|
16
|
+
given_name: First Name
|
|
17
|
+
family_name: Last Name
|
|
18
|
+
given_name_kana: First Name (Katakana)
|
|
19
|
+
family_name_kana: Last Name (Katakana)
|
|
20
|
+
prepaid_number: Prepaid Number
|
|
21
|
+
komoju:
|
|
22
|
+
attributes: &komoju-payment-details
|
|
23
|
+
email: Email
|
|
24
|
+
phone: Phone Number
|
|
25
|
+
given_name_kana: First Name (Katakana)
|
|
26
|
+
family_name_kana: Last Name (Katakana)
|
|
27
|
+
given_name: First Name
|
|
28
|
+
family_name: Last Name
|
|
29
|
+
instructions_url: Instructions URL
|
|
30
|
+
prepaid_number: Prepaid Number
|
|
31
|
+
order_id: Order ID
|
|
32
|
+
expires_at: Expiry Date
|
|
33
|
+
bank_id: Bank ID
|
|
34
|
+
customer_id: Customer ID
|
|
35
|
+
confirmation_id: Confirmation ID
|
|
36
|
+
web_money:
|
|
37
|
+
balance_remaining: "Balance Remaining"
|
|
38
|
+
points: "points"
|
|
39
|
+
insufficient_funds: Insufficient funds, please enter another card
|
|
40
|
+
activerecord:
|
|
41
|
+
attributes:
|
|
42
|
+
spree/pay_easy: *komoju-payment-details
|
|
43
|
+
spree/web_money: *komoju-payment-details
|
|
44
|
+
spree/bank_transfer: *komoju-payment-details
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
ja:
|
|
2
|
+
spree:
|
|
3
|
+
pay_easy: Pay Easy
|
|
4
|
+
conveniences:
|
|
5
|
+
lawson: ローソン
|
|
6
|
+
family-mart: ファミリーマート
|
|
7
|
+
sunkus: サンクス
|
|
8
|
+
circle-k: サークルK
|
|
9
|
+
ministop: ミニストップ
|
|
10
|
+
daily-yamazaki: デイリーヤマザキ
|
|
11
|
+
seven-eleven: セブンイレブン
|
|
12
|
+
email: メール
|
|
13
|
+
phone: 電話番号
|
|
14
|
+
given_name: 名
|
|
15
|
+
family_name: 姓
|
|
16
|
+
given_name_kana: 名 (カタカナ)
|
|
17
|
+
family_name_kana: 姓 (カタカナ)
|
|
18
|
+
activerecord:
|
|
19
|
+
attributes:
|
|
20
|
+
spree/pay_easy:
|
|
21
|
+
given_name_kana: 名 (カタカナ)
|
|
22
|
+
family_name_kana: 姓 (カタカナ)
|
|
23
|
+
given_name: 名
|
|
24
|
+
family_name: 姓
|
data/config/routes.rb
CHANGED