bootpay 3.0.0 → 3.2.0
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/CHANGELOG.md +64 -0
- data/Gemfile +1 -1
- data/bootpay.gemspec +0 -1
- data/lib/bootpay/concern/token.rb +8 -8
- data/lib/bootpay_store/bootpay-store-rest-client.rb +15 -0
- data/lib/bootpay_store/concern/alimtalk_message.rb +4 -4
- data/lib/bootpay_store/concern/alimtalk_official.rb +4 -4
- data/lib/bootpay_store/concern/alimtalk_optout.rb +5 -5
- data/lib/bootpay_store/concern/alimtalk_send.rb +17 -8
- data/lib/bootpay_store/concern/alimtalk_sender.rb +8 -8
- data/lib/bootpay_store/concern/alimtalk_template.rb +11 -11
- data/lib/bootpay_store/concern/alimtalk_webhook.rb +13 -10
- data/lib/bootpay_store/concern/deposit.rb +115 -0
- data/lib/bootpay_store/concern/faq.rb +97 -0
- data/lib/bootpay_store/concern/inquiry.rb +138 -0
- data/lib/bootpay_store/concern/notice.rb +100 -0
- data/lib/bootpay_store/concern/payout.rb +69 -0
- data/lib/bootpay_store/concern/product.rb +9 -4
- data/lib/bootpay_store/concern/product_qna.rb +149 -0
- data/lib/bootpay_store/concern/product_review.rb +145 -0
- data/lib/bootpay_store/concern/rest.rb +14 -3
- data/lib/bootpay_store/concern.rb +14 -0
- data/lib/version.rb +1 -1
- metadata +10 -3
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
module BootpayStore::Concern::ProductQna
|
|
2
|
+
extend ActiveSupport::Concern
|
|
3
|
+
|
|
4
|
+
included do
|
|
5
|
+
# 상품문의 목록 (GET /v1/product-qnas)
|
|
6
|
+
# @comment_by Claude
|
|
7
|
+
# @date: 26-09-29
|
|
8
|
+
# 고객 모드는 product_id 필수. 다른 사람의 비밀글은 is_viewable: false 로 본문 없이 온다.
|
|
9
|
+
# 회원(user_id·login_id·user_jwt)을 보내면 그 회원이 쓴 비밀글 본문이 보인다.
|
|
10
|
+
# supervisor: true + view: 'all' 이면 몰 전체(숨김 포함) — 이때 product_id 는 선택 필터다.
|
|
11
|
+
def product_qnas(product_id: nil, view: nil, page: 1, limit: 20, user_id: nil, login_id: nil, user_jwt: nil,
|
|
12
|
+
supervisor: false, idempotency_key: nil)
|
|
13
|
+
request(
|
|
14
|
+
uri: 'product-qnas',
|
|
15
|
+
method: :get,
|
|
16
|
+
headers: {
|
|
17
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
18
|
+
'Bootpay-Role' => supervisor ? 'supervisor' : 'user',
|
|
19
|
+
'Bootpay-User-JWT' => user_jwt
|
|
20
|
+
}.compact,
|
|
21
|
+
params: {
|
|
22
|
+
product_id: product_id,
|
|
23
|
+
view: view,
|
|
24
|
+
page: page,
|
|
25
|
+
limit: limit,
|
|
26
|
+
user_id: user_id,
|
|
27
|
+
login_id: login_id
|
|
28
|
+
}.compact
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# 상품문의 단건 (GET /v1/product-qnas/:id)
|
|
33
|
+
# @comment_by Claude
|
|
34
|
+
# @date: 26-09-29
|
|
35
|
+
# 다른 사람의 비밀글은 403 PRODUCT_QNA_SECRET_FORBIDDEN. supervisor: true 면 비밀글·숨김 글도 본다.
|
|
36
|
+
def product_qna_detail(product_qna_id:, user_id: nil, login_id: nil, user_jwt: nil, supervisor: false,
|
|
37
|
+
idempotency_key: nil)
|
|
38
|
+
request(
|
|
39
|
+
uri: "product-qnas/#{product_qna_id}",
|
|
40
|
+
method: :get,
|
|
41
|
+
headers: {
|
|
42
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
43
|
+
'Bootpay-Role' => supervisor ? 'supervisor' : 'user',
|
|
44
|
+
'Bootpay-User-JWT' => user_jwt
|
|
45
|
+
}.compact,
|
|
46
|
+
params: {
|
|
47
|
+
user_id: user_id,
|
|
48
|
+
login_id: login_id
|
|
49
|
+
}.compact
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# 상품문의 작성 (POST /v1/product-qnas)
|
|
54
|
+
# @comment_by Claude
|
|
55
|
+
# @date: 26-09-29
|
|
56
|
+
# 회원(user_id·login_id·user_jwt) 또는 비회원(guest_name + guest_password, 몰이 비회원 작성을 허용할 때).
|
|
57
|
+
# 회원 문의면 guest_* 는 무시된다.
|
|
58
|
+
def product_qna_create(product_id:, content:, title: nil, product_option_id: nil, option_text: nil,
|
|
59
|
+
is_secret: nil, guest_name: nil, guest_password: nil,
|
|
60
|
+
user_id: nil, login_id: nil, user_jwt: nil, idempotency_key: nil)
|
|
61
|
+
request(
|
|
62
|
+
uri: 'product-qnas',
|
|
63
|
+
method: :post,
|
|
64
|
+
headers: {
|
|
65
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
66
|
+
'Bootpay-Role' => 'user',
|
|
67
|
+
'Bootpay-User-JWT' => user_jwt
|
|
68
|
+
}.compact,
|
|
69
|
+
payload: {
|
|
70
|
+
product_id: product_id,
|
|
71
|
+
title: title,
|
|
72
|
+
content: content,
|
|
73
|
+
product_option_id: product_option_id,
|
|
74
|
+
option_text: option_text,
|
|
75
|
+
is_secret: is_secret,
|
|
76
|
+
guest_name: guest_name,
|
|
77
|
+
guest_password: guest_password,
|
|
78
|
+
user_id: user_id,
|
|
79
|
+
login_id: login_id
|
|
80
|
+
}.compact
|
|
81
|
+
)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# 상품문의 수정 (PUT /v1/product-qnas/:id) — 작성 회원 본인 또는 비회원 비밀번호, 답변 전만
|
|
85
|
+
# @comment_by Claude
|
|
86
|
+
# @date: 26-09-29
|
|
87
|
+
# 답변이 달린 문의는 409 PRODUCT_QNA_ALREADY_ANSWERED, 비회원 비밀번호가 틀리면 403 PRODUCT_QNA_GUEST_PASSWORD_INVALID.
|
|
88
|
+
def product_qna_update(product_qna_id:, title: nil, content: nil, is_secret: nil, guest_password: nil,
|
|
89
|
+
user_id: nil, login_id: nil, user_jwt: nil, idempotency_key: nil)
|
|
90
|
+
request(
|
|
91
|
+
uri: "product-qnas/#{product_qna_id}",
|
|
92
|
+
method: :put,
|
|
93
|
+
headers: {
|
|
94
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
95
|
+
'Bootpay-Role' => 'user',
|
|
96
|
+
'Bootpay-User-JWT' => user_jwt
|
|
97
|
+
}.compact,
|
|
98
|
+
payload: {
|
|
99
|
+
title: title,
|
|
100
|
+
content: content,
|
|
101
|
+
is_secret: is_secret,
|
|
102
|
+
guest_password: guest_password,
|
|
103
|
+
user_id: user_id,
|
|
104
|
+
login_id: login_id
|
|
105
|
+
}.compact
|
|
106
|
+
)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# 상품문의 삭제 (DELETE /v1/product-qnas/:id) — 작성 회원 본인·비회원 비밀번호 또는 supervisor
|
|
110
|
+
# @comment_by Claude
|
|
111
|
+
# @date: 26-09-29
|
|
112
|
+
# guest_password 는 URL 쿼리가 아닌 본문으로 보낸다(서버는 둘 다 받는다).
|
|
113
|
+
def product_qna_delete(product_qna_id:, guest_password: nil, user_id: nil, login_id: nil, user_jwt: nil,
|
|
114
|
+
supervisor: false, idempotency_key: nil)
|
|
115
|
+
request(
|
|
116
|
+
uri: "product-qnas/#{product_qna_id}",
|
|
117
|
+
method: :delete,
|
|
118
|
+
headers: {
|
|
119
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
120
|
+
'Bootpay-Role' => supervisor ? 'supervisor' : 'user',
|
|
121
|
+
'Bootpay-User-JWT' => user_jwt
|
|
122
|
+
}.compact,
|
|
123
|
+
payload: {
|
|
124
|
+
guest_password: guest_password,
|
|
125
|
+
user_id: user_id,
|
|
126
|
+
login_id: login_id
|
|
127
|
+
}.compact
|
|
128
|
+
)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# 상품문의 답변 등록·수정 (PUT /v1/product-qnas/:id/answer) — supervisor 전용
|
|
132
|
+
# @comment_by Claude
|
|
133
|
+
# @date: 26-09-29
|
|
134
|
+
# 답변이 없으면 만들고, 있으면 내용을 바꾼다. 응답은 답변이 반영된 상품문의 객체다.
|
|
135
|
+
def product_qna_answer(product_qna_id:, content:, idempotency_key: nil)
|
|
136
|
+
request(
|
|
137
|
+
uri: "product-qnas/#{product_qna_id}/answer",
|
|
138
|
+
method: :put,
|
|
139
|
+
headers: {
|
|
140
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
141
|
+
'Bootpay-Role' => 'supervisor'
|
|
142
|
+
},
|
|
143
|
+
payload: {
|
|
144
|
+
content: content
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
module BootpayStore::Concern::ProductReview
|
|
2
|
+
extend ActiveSupport::Concern
|
|
3
|
+
|
|
4
|
+
included do
|
|
5
|
+
# 상품평 목록 (GET /v1/reviews)
|
|
6
|
+
# @comment_by Claude
|
|
7
|
+
# @date: 26-09-29
|
|
8
|
+
# 회원 모드: user_id·login_id·user_jwt 로 정한 회원이 쓴 상품평만 본다.
|
|
9
|
+
# supervisor: true 면 몰 전체 상품평 — 이때 user_id 는 작성 회원 필터(선택)다.
|
|
10
|
+
# 상품 상세의 공개 상품평 목록은 기존 GET /v1/products/:id/reviews 를 쓴다.
|
|
11
|
+
def reviews(page: 1, limit: 20, product_id: nil, view: nil, user_id: nil, login_id: nil, user_jwt: nil,
|
|
12
|
+
supervisor: false, idempotency_key: nil)
|
|
13
|
+
request(
|
|
14
|
+
uri: 'reviews',
|
|
15
|
+
method: :get,
|
|
16
|
+
headers: {
|
|
17
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
18
|
+
'Bootpay-Role' => supervisor ? 'supervisor' : 'user',
|
|
19
|
+
'Bootpay-User-JWT' => user_jwt
|
|
20
|
+
}.compact,
|
|
21
|
+
params: {
|
|
22
|
+
page: page,
|
|
23
|
+
limit: limit,
|
|
24
|
+
product_id: product_id,
|
|
25
|
+
view: view,
|
|
26
|
+
user_id: user_id,
|
|
27
|
+
login_id: login_id
|
|
28
|
+
}.compact
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# 상품평 단건 (GET /v1/reviews/:id)
|
|
33
|
+
# @comment_by Claude
|
|
34
|
+
# @date: 26-09-29
|
|
35
|
+
# 공개 상품평은 누구나, 숨김 상품평은 작성 회원 본인 또는 supervisor 만 본다.
|
|
36
|
+
def review_detail(product_review_id:, user_id: nil, login_id: nil, user_jwt: nil, supervisor: false,
|
|
37
|
+
idempotency_key: nil)
|
|
38
|
+
request(
|
|
39
|
+
uri: "reviews/#{product_review_id}",
|
|
40
|
+
method: :get,
|
|
41
|
+
headers: {
|
|
42
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
43
|
+
'Bootpay-Role' => supervisor ? 'supervisor' : 'user',
|
|
44
|
+
'Bootpay-User-JWT' => user_jwt
|
|
45
|
+
}.compact,
|
|
46
|
+
params: {
|
|
47
|
+
user_id: user_id,
|
|
48
|
+
login_id: login_id
|
|
49
|
+
}.compact
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# 상품평 작성 (POST /v1/reviews) — 회원 전용
|
|
54
|
+
# @comment_by Claude
|
|
55
|
+
# @date: 26-09-29
|
|
56
|
+
# order_id 는 회원의 구매확정 주문, product_id(·product_option_id)는 그 주문에 담긴 상품이어야 한다.
|
|
57
|
+
# images 는 사진 URL 최대 5개(문자열 또는 { url: } 해시). 파일 업로드는 지원하지 않는다.
|
|
58
|
+
def review_create(order_id:, product_id:, rating:, content:, product_option_id: nil, images: nil,
|
|
59
|
+
user_id: nil, login_id: nil, user_jwt: nil, idempotency_key: nil)
|
|
60
|
+
request(
|
|
61
|
+
uri: 'reviews',
|
|
62
|
+
method: :post,
|
|
63
|
+
headers: {
|
|
64
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
65
|
+
'Bootpay-Role' => 'user',
|
|
66
|
+
'Bootpay-User-JWT' => user_jwt
|
|
67
|
+
}.compact,
|
|
68
|
+
payload: {
|
|
69
|
+
user_id: user_id,
|
|
70
|
+
login_id: login_id,
|
|
71
|
+
order_id: order_id,
|
|
72
|
+
product_id: product_id,
|
|
73
|
+
product_option_id: product_option_id,
|
|
74
|
+
rating: rating,
|
|
75
|
+
content: content,
|
|
76
|
+
images: images
|
|
77
|
+
}.compact
|
|
78
|
+
)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# 상품평 수정 (PUT /v1/reviews/:id) — 작성 회원 본인, 작성 후 7일 이내
|
|
82
|
+
# @comment_by Claude
|
|
83
|
+
# @date: 26-09-29
|
|
84
|
+
# images 는 보내면 통째로 교체한다([] 면 모두 삭제). 7일이 지나면 REVIEW_EDIT_TIME_EXPIRED.
|
|
85
|
+
def review_update(product_review_id:, rating: nil, content: nil, images: nil,
|
|
86
|
+
user_id: nil, login_id: nil, user_jwt: nil, idempotency_key: nil)
|
|
87
|
+
request(
|
|
88
|
+
uri: "reviews/#{product_review_id}",
|
|
89
|
+
method: :put,
|
|
90
|
+
headers: {
|
|
91
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
92
|
+
'Bootpay-Role' => 'user',
|
|
93
|
+
'Bootpay-User-JWT' => user_jwt
|
|
94
|
+
}.compact,
|
|
95
|
+
payload: {
|
|
96
|
+
user_id: user_id,
|
|
97
|
+
login_id: login_id,
|
|
98
|
+
rating: rating,
|
|
99
|
+
content: content,
|
|
100
|
+
images: images
|
|
101
|
+
}.compact
|
|
102
|
+
)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# 상품평 삭제 (DELETE /v1/reviews/:id) — 작성 회원 본인 또는 supervisor
|
|
106
|
+
# @comment_by Claude
|
|
107
|
+
# @date: 26-09-29
|
|
108
|
+
# 지급된 적립금 회수·상품 통계 차감이 함께 일어난다. reason 은 운영자 모드의 삭제 사유.
|
|
109
|
+
def review_delete(product_review_id:, reason: nil, user_id: nil, login_id: nil, user_jwt: nil,
|
|
110
|
+
supervisor: false, idempotency_key: nil)
|
|
111
|
+
request(
|
|
112
|
+
uri: "reviews/#{product_review_id}",
|
|
113
|
+
method: :delete,
|
|
114
|
+
headers: {
|
|
115
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
116
|
+
'Bootpay-Role' => supervisor ? 'supervisor' : 'user',
|
|
117
|
+
'Bootpay-User-JWT' => user_jwt
|
|
118
|
+
}.compact,
|
|
119
|
+
params: {
|
|
120
|
+
user_id: user_id,
|
|
121
|
+
login_id: login_id,
|
|
122
|
+
reason: reason
|
|
123
|
+
}.compact
|
|
124
|
+
)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# 상품평 판매자 답글 등록·수정 (PUT /v1/reviews/:id/reply) — supervisor 전용
|
|
128
|
+
# @comment_by Claude
|
|
129
|
+
# @date: 26-09-29
|
|
130
|
+
# 답글이 없으면 만들고, 있으면 내용을 바꾼다(10자 이상). 응답은 답글이 반영된 상품평 객체다.
|
|
131
|
+
def review_reply(product_review_id:, content:, idempotency_key: nil)
|
|
132
|
+
request(
|
|
133
|
+
uri: "reviews/#{product_review_id}/reply",
|
|
134
|
+
method: :put,
|
|
135
|
+
headers: {
|
|
136
|
+
'Idempotency-Key' => idempotency_key.presence || SecureRandom.uuid,
|
|
137
|
+
'Bootpay-Role' => 'supervisor'
|
|
138
|
+
},
|
|
139
|
+
payload: {
|
|
140
|
+
content: content
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
@@ -4,6 +4,17 @@ module BootpayStore::Concern::Rest
|
|
|
4
4
|
included do
|
|
5
5
|
private
|
|
6
6
|
|
|
7
|
+
# 요청 경로에 맞는 API 기본 주소.
|
|
8
|
+
# @comment_by Claude (alfred)
|
|
9
|
+
# @date: 26-09-18
|
|
10
|
+
# 알림톡 API 는 26-09-18 부터 커머스 API(api.bootapi.com/v1)가 아니라 메시지 API(message.bootapi.com, /v1 없음)가 받는다.
|
|
11
|
+
# 경로·파라미터·응답은 그대로이고 호스트만 다르다 — 그래서 알림톡 메서드는 고치지 않고 여기서 주소만 가른다.
|
|
12
|
+
# 옛 주소(/alimtalk/*)는 410 으로 응답한다.
|
|
13
|
+
def api_base_url(uri)
|
|
14
|
+
table = uri.to_s.sub(%r{\A/}, '').start_with?('alimtalk') ? BootpayStore::RestClient::MESSAGE_API : BootpayStore::RestClient::API
|
|
15
|
+
table[@mode.to_sym]
|
|
16
|
+
end
|
|
17
|
+
|
|
7
18
|
# HTTP Request 기본 Method
|
|
8
19
|
# Comment by Gosomi
|
|
9
20
|
# Date: 2021-05-21
|
|
@@ -19,7 +30,7 @@ module BootpayStore::Concern::Rest
|
|
|
19
30
|
}.merge!(headers).compact
|
|
20
31
|
).send(
|
|
21
32
|
method.to_sym,
|
|
22
|
-
[
|
|
33
|
+
[api_base_url(uri), uri].join('/'),
|
|
23
34
|
json: payload,
|
|
24
35
|
params: params
|
|
25
36
|
)
|
|
@@ -54,7 +65,7 @@ module BootpayStore::Concern::Rest
|
|
|
54
65
|
}.merge!(headers).compact
|
|
55
66
|
).send(
|
|
56
67
|
method.to_sym,
|
|
57
|
-
[
|
|
68
|
+
[api_base_url(uri), uri].join('/'),
|
|
58
69
|
params: params
|
|
59
70
|
)
|
|
60
71
|
BootpayStore::Response.new(
|
|
@@ -86,7 +97,7 @@ module BootpayStore::Concern::Rest
|
|
|
86
97
|
bootpay_sdk_type: '300'
|
|
87
98
|
}.merge!(headers).compact
|
|
88
99
|
).post(
|
|
89
|
-
[
|
|
100
|
+
[api_base_url(uri), uri].join('/'),
|
|
90
101
|
form: form
|
|
91
102
|
)
|
|
92
103
|
BootpayStore::Response.new(
|
|
@@ -7,12 +7,19 @@ module BootpayStore
|
|
|
7
7
|
require_relative 'concern/alimtalk_sender'
|
|
8
8
|
require_relative 'concern/alimtalk_template'
|
|
9
9
|
require_relative 'concern/alimtalk_webhook'
|
|
10
|
+
require_relative 'concern/deposit'
|
|
11
|
+
require_relative 'concern/faq'
|
|
12
|
+
require_relative 'concern/inquiry'
|
|
10
13
|
require_relative 'concern/invoice'
|
|
11
14
|
require_relative 'concern/mall_setting'
|
|
15
|
+
require_relative 'concern/notice'
|
|
12
16
|
require_relative 'concern/order'
|
|
13
17
|
require_relative 'concern/order_subscription'
|
|
14
18
|
require_relative 'concern/payment'
|
|
19
|
+
require_relative 'concern/payout'
|
|
15
20
|
require_relative 'concern/product'
|
|
21
|
+
require_relative 'concern/product_qna'
|
|
22
|
+
require_relative 'concern/product_review'
|
|
16
23
|
require_relative 'concern/rest'
|
|
17
24
|
require_relative 'concern/supervisor'
|
|
18
25
|
require_relative 'concern/token'
|
|
@@ -28,12 +35,19 @@ module BootpayStore
|
|
|
28
35
|
include AlimtalkSender
|
|
29
36
|
include AlimtalkTemplate
|
|
30
37
|
include AlimtalkWebhook
|
|
38
|
+
include Deposit
|
|
39
|
+
include Faq
|
|
40
|
+
include Inquiry
|
|
31
41
|
include Invoice
|
|
32
42
|
include MallSetting
|
|
43
|
+
include Notice
|
|
33
44
|
include Order
|
|
34
45
|
include OrderSubscription
|
|
35
46
|
include Payment
|
|
47
|
+
include Payout
|
|
36
48
|
include Product
|
|
49
|
+
include ProductQna
|
|
50
|
+
include ProductReview
|
|
37
51
|
include Rest
|
|
38
52
|
include Supervisor
|
|
39
53
|
include Token
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bootpay
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- gosomi
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-11-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -106,12 +106,19 @@ files:
|
|
|
106
106
|
- lib/bootpay_store/concern/alimtalk_sender.rb
|
|
107
107
|
- lib/bootpay_store/concern/alimtalk_template.rb
|
|
108
108
|
- lib/bootpay_store/concern/alimtalk_webhook.rb
|
|
109
|
+
- lib/bootpay_store/concern/deposit.rb
|
|
110
|
+
- lib/bootpay_store/concern/faq.rb
|
|
111
|
+
- lib/bootpay_store/concern/inquiry.rb
|
|
109
112
|
- lib/bootpay_store/concern/invoice.rb
|
|
110
113
|
- lib/bootpay_store/concern/mall_setting.rb
|
|
114
|
+
- lib/bootpay_store/concern/notice.rb
|
|
111
115
|
- lib/bootpay_store/concern/order.rb
|
|
112
116
|
- lib/bootpay_store/concern/order_subscription.rb
|
|
113
117
|
- lib/bootpay_store/concern/payment.rb
|
|
118
|
+
- lib/bootpay_store/concern/payout.rb
|
|
114
119
|
- lib/bootpay_store/concern/product.rb
|
|
120
|
+
- lib/bootpay_store/concern/product_qna.rb
|
|
121
|
+
- lib/bootpay_store/concern/product_review.rb
|
|
115
122
|
- lib/bootpay_store/concern/rest.rb
|
|
116
123
|
- lib/bootpay_store/concern/store.rb
|
|
117
124
|
- lib/bootpay_store/concern/supervisor.rb
|
|
@@ -137,7 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
137
144
|
requirements:
|
|
138
145
|
- - ">="
|
|
139
146
|
- !ruby/object:Gem::Version
|
|
140
|
-
version:
|
|
147
|
+
version: '0'
|
|
141
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
149
|
requirements:
|
|
143
150
|
- - ">="
|