pay_design 0.1.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/.gitignore +10 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +1 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/pay_design/convenience_store/callbacks.rb +44 -0
- data/lib/pay_design/convenience_store/payment.rb +16 -0
- data/lib/pay_design/convenience_store.rb +14 -0
- data/lib/pay_design/payment_info.rb +51 -0
- data/lib/pay_design/version.rb +3 -0
- data/lib/pay_design.rb +17 -0
- data/pay_design.gemspec +28 -0
- metadata +130 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bf999723abe46da2fa67f799bc67bbe0f8848ff1
|
4
|
+
data.tar.gz: 4af1790f5c8a110853ad481a724586cb2b111149
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fea7cbd783f58795d091d6a3c53f9094d34771d76cb11e59d9b7aa3d901460ce1dce80626e59eba70abb87bffe30a05715e78e08aa79a93feaabb3e7ee1a7bbc
|
7
|
+
data.tar.gz: ac9da9e66e1b09ca9eae9b84ff71cd153c82f3541a48d5e1e446441f5729c3a56711d4e61fbff3716df2f099e72189707d100cf55826e18a9a946ba40941c65e
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# PayDesign
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "pay_design"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
module PayDesign
|
2
|
+
module ConvenienceStore
|
3
|
+
module Callbacks
|
4
|
+
# Whilst they are named "Callbacks", they will just format parameters.
|
5
|
+
# How actual HTTP-level behaves depends on what the library user is.
|
6
|
+
|
7
|
+
def self.payment_registered(params)
|
8
|
+
{
|
9
|
+
deal_id: params["SID"],
|
10
|
+
remarks: PayDesign.encode_to_utf8(params["FUKA"]),
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.payment_cancelled
|
15
|
+
# TODO: Nothing to do.
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.payment_completed(params)
|
19
|
+
datetime_string = params["DATE"] + " " + params["TIME"]
|
20
|
+
{
|
21
|
+
notification_id: params["SEQ"],
|
22
|
+
paid_at: DateTime.parse(datetime_string),
|
23
|
+
ip_code: params["IP"],
|
24
|
+
deal_id: params["SID"],
|
25
|
+
amount: params["KINGAKU"],
|
26
|
+
store_type: params["CVS"],
|
27
|
+
store_code: params["SCODE"],
|
28
|
+
remarks: PayDesign.encode_to_utf8(params["FUKA"]),
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.payment_cancelled(params)
|
33
|
+
{
|
34
|
+
notification_id: params["SEQ"],
|
35
|
+
cancel_date: Date.parse(params["DATE"]),
|
36
|
+
ip_code: params["IP"],
|
37
|
+
deal_id: params["SID"],
|
38
|
+
amount: params["KINGAKU"],
|
39
|
+
remarks: PayDesign.encode_to_utf8(params["FUKA"]),
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module PayDesign
|
2
|
+
module ConvenienceStore
|
3
|
+
class Payment
|
4
|
+
def initialize(ip_code)
|
5
|
+
@ip = ip_code
|
6
|
+
end
|
7
|
+
|
8
|
+
def request_url(payment_info)
|
9
|
+
params = payment_info.data.merge(IP: @ip, STORE: 99)
|
10
|
+
uri = URI(Endpoint::LINK_STYLE_URL)
|
11
|
+
uri.query = params.map{|k,v| [k, (v.is_a?(String) ? URI.escape(v) : v)].join("=")}.join("&")
|
12
|
+
uri.to_s
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module PayDesign
|
2
|
+
module ConvenienceStore
|
3
|
+
module Endpoint
|
4
|
+
LINK_STYLE_URL = "https://www.paydesign.jp/settle/settle3/bp3.dll"
|
5
|
+
SERVER_STYLE_URL = "https://www.paydesign.jp/settle/settle2/ubp3.dll"
|
6
|
+
end
|
7
|
+
module StoreType
|
8
|
+
LOPPI = 1
|
9
|
+
SEVEN = 2
|
10
|
+
FAMIMA = 3
|
11
|
+
UNDECIDED = 99
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module PayDesign
|
2
|
+
class PaymentInfo
|
3
|
+
# TODO:
|
4
|
+
# Validates fields.
|
5
|
+
attr_reader :data
|
6
|
+
def initialize(data)
|
7
|
+
@data = {
|
8
|
+
SID: data[:deal_id],
|
9
|
+
NAME1: PayDesign.encode_to_sjis(data[:sur_name]),
|
10
|
+
NAME2: PayDesign.encode_to_sjis(data[:first_name]),
|
11
|
+
KANA1: PayDesign.encode_to_sjis(data[:sur_name_kana]),
|
12
|
+
KANA2: PayDesign.encode_to_sjis(data[:first_name_kana]),
|
13
|
+
YUBIN1: data[:postal_code_former],
|
14
|
+
YUBIN2: data[:postal_code_latter],
|
15
|
+
TEL: data[:tel],
|
16
|
+
ADR1: PayDesign.encode_to_sjis(data[:address_former]),
|
17
|
+
ADR2: PayDesign.encode_to_sjis(data[:address_latter]),
|
18
|
+
MAIL: data[:email],
|
19
|
+
FUKA: data[:remarks],
|
20
|
+
N1: PayDesign.encode_to_sjis(data[:item_name_1]),
|
21
|
+
K1: data[:item_price_1],
|
22
|
+
N2: PayDesign.encode_to_sjis(data[:item_name_2]),
|
23
|
+
K2: data[:item_price_2],
|
24
|
+
N3: PayDesign.encode_to_sjis(data[:item_name_3]),
|
25
|
+
K3: data[:item_price_3],
|
26
|
+
N4: PayDesign.encode_to_sjis(data[:item_name_4]),
|
27
|
+
K4: data[:item_price_4],
|
28
|
+
N5: PayDesign.encode_to_sjis(data[:item_name_5]),
|
29
|
+
K5: data[:item_price_5],
|
30
|
+
N6: PayDesign.encode_to_sjis(data[:item_name_6]),
|
31
|
+
K6: data[:item_price_6],
|
32
|
+
STORE: data[:store_type],
|
33
|
+
KIGEN: PaymentInfo.date_to_yyyymmdd(data[:expires_at]),
|
34
|
+
TAX: data[:tax],
|
35
|
+
OKURL: data[:successfull_callback_url],
|
36
|
+
RT: data[:cancelling_callback_url],
|
37
|
+
}.delete_if {|_,v| v.nil? }
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def self.date_to_yyyymmdd(date_or_yyyymmdd)
|
43
|
+
case date_or_yyyymmdd
|
44
|
+
when Date
|
45
|
+
date_or_yyyymmdd.strftime("%Y%m%d")
|
46
|
+
when String
|
47
|
+
date_or_yyyymmdd # Trusting given string is in relevant format.
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/pay_design.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "pay_design/version"
|
2
|
+
require "pay_design/payment_info"
|
3
|
+
require 'pay_design/convenience_store'
|
4
|
+
require 'pay_design/convenience_store/payment'
|
5
|
+
require 'pay_design/convenience_store/callbacks'
|
6
|
+
|
7
|
+
module PayDesign
|
8
|
+
def self.encode_to_sjis(str)
|
9
|
+
# Perhaps this should make sure the original encoding is UTF8.
|
10
|
+
str ? str.encode(Encoding::SHIFT_JIS) : nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.encode_to_utf8(str)
|
14
|
+
# Perhaps this should make sure the original encoding is Shift_JIS.
|
15
|
+
str ? str.encode(Encoding::UTF_8) : nil
|
16
|
+
end
|
17
|
+
end
|
data/pay_design.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'pay_design/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "pay_design"
|
8
|
+
spec.version = PayDesign::VERSION
|
9
|
+
spec.authors = ["tnzk"]
|
10
|
+
spec.email = ["tnzk@tnzk.org"]
|
11
|
+
spec.licenses = ["MIT"]
|
12
|
+
|
13
|
+
spec.summary = %q{Pay by PayDesign}
|
14
|
+
spec.description = %q{A think wrapper of PayDesign API for convenience store payment, pay-easy and some more.}
|
15
|
+
spec.homepage = "http://github.com/tnzkorg/pay_design"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_runtime_dependency "http", "~> 0.9.8"
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
spec.add_development_dependency "webmock", ">= 2.1.0"
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pay_design
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- tnzk
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-06-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: http
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.8
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.9.8
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.12'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.12'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.1.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.1.0
|
83
|
+
description: A think wrapper of PayDesign API for convenience store payment, pay-easy
|
84
|
+
and some more.
|
85
|
+
email:
|
86
|
+
- tnzk@tnzk.org
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- Gemfile
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- bin/console
|
98
|
+
- bin/setup
|
99
|
+
- lib/pay_design.rb
|
100
|
+
- lib/pay_design/convenience_store.rb
|
101
|
+
- lib/pay_design/convenience_store/callbacks.rb
|
102
|
+
- lib/pay_design/convenience_store/payment.rb
|
103
|
+
- lib/pay_design/payment_info.rb
|
104
|
+
- lib/pay_design/version.rb
|
105
|
+
- pay_design.gemspec
|
106
|
+
homepage: http://github.com/tnzkorg/pay_design
|
107
|
+
licenses:
|
108
|
+
- MIT
|
109
|
+
metadata: {}
|
110
|
+
post_install_message:
|
111
|
+
rdoc_options: []
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
requirements: []
|
125
|
+
rubyforge_project:
|
126
|
+
rubygems_version: 2.6.6
|
127
|
+
signing_key:
|
128
|
+
specification_version: 4
|
129
|
+
summary: Pay by PayDesign
|
130
|
+
test_files: []
|