pay_design 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *~
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.2.3
5
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pay_design.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1 @@
1
+ # PayDesign
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
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,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -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
@@ -0,0 +1,3 @@
1
+ module PayDesign
2
+ VERSION = "0.1.1"
3
+ 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
@@ -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: []