Class: ZaiPayment::Resources::Item
- Inherits:
-
Object
- Object
- ZaiPayment::Resources::Item
- Defined in:
- lib/zai_payment/resources/item.rb
Overview
Item resource for managing Zai items (transactions/payments)
Constant Summary collapse
- FIELD_MAPPING =
Map of attribute keys to API field names
{ id: :id, name: :name, amount: :amount, payment_type: :payment_type, buyer_id: :buyer_id, seller_id: :seller_id, fee_ids: :fee_ids, description: :description, currency: :currency, custom_descriptor: :custom_descriptor, buyer_url: :buyer_url, seller_url: :seller_url, tax_invoice: :tax_invoice }.freeze
- ITEM_PAYMENT_ATTRIBUTES =
{ account_id: :account_id, device_id: :device_id, ip_address: :ip_address, cvv: :cvv, merchant_phone: :merchant_phone }.freeze
- ITEM_ASYNC_PAYMENT_ATTRIBUTES =
{ account_id: :account_id, request_three_d_secure: :request_three_d_secure }.freeze
- REQUEST_THREE_D_SECURE_VALUES =
Valid values for request_three_d_secure parameter
%w[automatic challenge any].freeze
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
Instance Method Summary collapse
-
#authorize_payment(item_id, **attributes) ⇒ Response
Authorize Payment.
-
#cancel(item_id) ⇒ Response
The API response containing cancellation details.
-
#capture_payment(item_id, **attributes) ⇒ Response
Capture Payment.
-
#create(**attributes) ⇒ Response
Create a new item.
-
#delete(item_id) ⇒ Response
Delete an item.
-
#initialize(client: nil) ⇒ Item
constructor
A new instance of Item.
-
#list(limit: 10, offset: 0, search: nil, created_before: nil, created_after: nil) ⇒ Response
List all items.
-
#list_batch_transactions(item_id, limit: 10, offset: 0) ⇒ Response
List item batch transactions.
-
#list_transactions(item_id, limit: 10, offset: 0) ⇒ Response
List item transactions.
-
#make_payment(item_id, **attributes) ⇒ Response
Make a payment.
-
#make_payment_async(item_id, **attributes) ⇒ Response
Make an async Payment.
-
#refund(item_id, refund_amount: nil, refund_message: nil, account_id: nil) ⇒ Response
Refund an item.
-
#show(item_id) ⇒ Response
Get a specific item by ID.
-
#show_buyer(item_id) ⇒ Response
Show item buyer.
-
#show_fees(item_id) ⇒ Response
Show item fees.
-
#show_seller(item_id) ⇒ Response
Show item seller.
-
#show_status(item_id) ⇒ Response
Show item status.
-
#show_wire_details(item_id) ⇒ Response
Show item wire details.
-
#update(item_id, **attributes) ⇒ Response
Update an existing item.
-
#void_payment(item_id) ⇒ Response
Void Payment.
Constructor Details
#initialize(client: nil) ⇒ Item
44 45 46 |
# File 'lib/zai_payment/resources/item.rb', line 44 def initialize(client: nil) @client = client || Client.new end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
9 10 11 |
# File 'lib/zai_payment/resources/item.rb', line 9 def client @client end |
Instance Method Details
#authorize_payment(item_id, **attributes) ⇒ Response
Authorize Payment
424 425 426 427 428 |
# File 'lib/zai_payment/resources/item.rb', line 424 def (item_id, **attributes) validate_id!(item_id, 'item_id') client.patch("/items/#{item_id}/authorize_payment", body: build_item_payment_body(attributes)) end |
#cancel(item_id) ⇒ Response
Returns the API response containing cancellation details.
363 364 365 366 |
# File 'lib/zai_payment/resources/item.rb', line 363 def cancel(item_id) validate_id!(item_id, 'item_id') client.patch("/items/#{item_id}/cancel") end |
#capture_payment(item_id, **attributes) ⇒ Response
Capture Payment
448 449 450 451 452 453 454 455 |
# File 'lib/zai_payment/resources/item.rb', line 448 def capture_payment(item_id, **attributes) validate_id!(item_id, 'item_id') body = {} body[:amount] = attributes[:amount] if attributes[:amount] client.patch("/items/#{item_id}/capture_payment", body: body) end |
#create(**attributes) ⇒ Response
Create a new item
133 134 135 136 137 138 |
# File 'lib/zai_payment/resources/item.rb', line 133 def create(**attributes) validate_create_attributes!(attributes) body = build_item_body(attributes) client.post('/items', body: body) end |
#delete(item_id) ⇒ Response
Delete an item
185 186 187 188 |
# File 'lib/zai_payment/resources/item.rb', line 185 def delete(item_id) validate_id!(item_id, 'item_id') client.delete("/items/#{item_id}") end |
#list(limit: 10, offset: 0, search: nil, created_before: nil, created_after: nil) ⇒ Response
List all items
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/zai_payment/resources/item.rb', line 74 def list(limit: 10, offset: 0, search: nil, created_before: nil, created_after: nil) params = { limit: limit, offset: offset } params[:search] = search if search params[:created_before] = created_before if created_before params[:created_after] = created_after if created_after client.get('/items', params: params) end |
#list_batch_transactions(item_id, limit: 10, offset: 0) ⇒ Response
List item batch transactions
291 292 293 294 295 296 297 298 299 300 |
# File 'lib/zai_payment/resources/item.rb', line 291 def list_batch_transactions(item_id, limit: 10, offset: 0) validate_id!(item_id, 'item_id') params = { limit: limit, offset: offset } client.get("/items/#{item_id}/batch_transactions", params: params) end |
#list_transactions(item_id, limit: 10, offset: 0) ⇒ Response
List item transactions
267 268 269 270 271 272 273 274 275 276 |
# File 'lib/zai_payment/resources/item.rb', line 267 def list_transactions(item_id, limit: 10, offset: 0) validate_id!(item_id, 'item_id') params = { limit: limit, offset: offset } client.get("/items/#{item_id}/transactions", params: params) end |
#make_payment(item_id, **attributes) ⇒ Response
Make a payment
344 345 346 347 348 349 350 |
# File 'lib/zai_payment/resources/item.rb', line 344 def make_payment(item_id, **attributes) validate_id!(item_id, 'item_id') body = build_item_payment_body(attributes) client.patch("/items/#{item_id}/make_payment", body: body) end |
#make_payment_async(item_id, **attributes) ⇒ Response
Make an async Payment
Initiate a card payment with 3D Secure 2.0 authentication support. This endpoint initiates the payment process and returns a payment_token required for 3DS2 component initialisation.
501 502 503 504 505 506 507 |
# File 'lib/zai_payment/resources/item.rb', line 501 def make_payment_async(item_id, **attributes) validate_id!(item_id, 'item_id') body = build_async_payment_body(attributes) client.patch("/items/#{item_id}/make_payment_async", body: body) end |
#refund(item_id, refund_amount: nil, refund_message: nil, account_id: nil) ⇒ Response
Refund an item
390 391 392 393 394 395 396 397 398 399 400 |
# File 'lib/zai_payment/resources/item.rb', line 390 def refund(item_id, refund_amount: nil, refund_message: nil, account_id: nil) validate_id!(item_id, 'item_id') body = build_refund_body( refund_amount: refund_amount, refund_message: , account_id: account_id ) client.patch("/items/#{item_id}/refund", body: body) end |
#show(item_id) ⇒ Response
Get a specific item by ID
98 99 100 101 |
# File 'lib/zai_payment/resources/item.rb', line 98 def show(item_id) validate_id!(item_id, 'item_id') client.get("/items/#{item_id}") end |
#show_buyer(item_id) ⇒ Response
Show item buyer
217 218 219 220 |
# File 'lib/zai_payment/resources/item.rb', line 217 def show_buyer(item_id) validate_id!(item_id, 'item_id') client.get("/items/#{item_id}/buyers") end |
#show_fees(item_id) ⇒ Response
Show item fees
233 234 235 236 |
# File 'lib/zai_payment/resources/item.rb', line 233 def show_fees(item_id) validate_id!(item_id, 'item_id') client.get("/items/#{item_id}/fees") end |
#show_seller(item_id) ⇒ Response
Show item seller
201 202 203 204 |
# File 'lib/zai_payment/resources/item.rb', line 201 def show_seller(item_id) validate_id!(item_id, 'item_id') client.get("/items/#{item_id}/sellers") end |
#show_status(item_id) ⇒ Response
Show item status
313 314 315 316 |
# File 'lib/zai_payment/resources/item.rb', line 313 def show_status(item_id) validate_id!(item_id, 'item_id') client.get("/items/#{item_id}/status") end |
#show_wire_details(item_id) ⇒ Response
Show item wire details
249 250 251 252 |
# File 'lib/zai_payment/resources/item.rb', line 249 def show_wire_details(item_id) validate_id!(item_id, 'item_id') client.get("/items/#{item_id}/wire_details") end |
#update(item_id, **attributes) ⇒ Response
Update an existing item
165 166 167 168 169 170 171 172 173 |
# File 'lib/zai_payment/resources/item.rb', line 165 def update(item_id, **attributes) validate_id!(item_id, 'item_id') body = build_item_body(attributes) raise Errors::ValidationError, 'At least one attribute must be provided for update' if body.empty? client.patch("/items/#{item_id}", body: body) end |
#void_payment(item_id) ⇒ Response
Void Payment
468 469 470 471 |
# File 'lib/zai_payment/resources/item.rb', line 468 def void_payment(item_id) validate_id!(item_id, 'item_id') client.patch("/items/#{item_id}/void_payment") end |