spree_komoju 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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