Module: MyobAcumatica::Api::Payment

Defined in:
lib/myob_acumatica/api/payment.rb

Overview

Provides methods to interact with the Payment API endpoints.

Class Method Summary collapse

Class Method Details

.capture_credit_card_payment(access_token:, entity:, parameters: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Captures a credit card payment.

Examples:

Capture an authorised credit card payment

MyobAcumatica::Api::Payment.capture_credit_card_payment(
  access_token: access_token,
  entity: { 'ReferenceNbr' => { 'value' => payment['ReferenceNbr']['value'] } },
  parameters: { 'Amount' => { 'value' => 60.0 } },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • entity (Hash)

    Payment entity.

  • parameters (Hash) (defaults to: {})

    Optional parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    Response from the capture action.



348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
# File 'lib/myob_acumatica/api/payment.rb', line 348

def capture_credit_card_payment(access_token:, entity:, parameters: {},
                                instance_name: INSTANCE_NAME,
                                endpoint_name: ENDPOINT_NAME,
                                endpoint_version: ENDPOINT_VERSION,
                                logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :post,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment/CaptureCreditCardPayment',
    body: { 'entity' => entity, 'parameters' => parameters },
    logger: logger
  )
end

.card_operation(access_token:, entity:, parameters: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Performs a card operation such as Authorize or Capture.

Examples:

Authorise a card payment

MyobAcumatica::Api::Payment.card_operation(
  access_token: access_token,
  entity: { 'ReferenceNbr' => { 'value' => payment['ReferenceNbr']['value'] } },
  parameters: {
    'Operation' => { 'value' => 'Authorize' },
    'Amount' => { 'value' => 60.0 }
  },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • entity (Hash)

    Payment entity.

  • parameters (Hash) (defaults to: {})

    Operation parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    Response from the card operation.



386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
# File 'lib/myob_acumatica/api/payment.rb', line 386

def card_operation(access_token:, entity:, parameters: {},
                   instance_name: INSTANCE_NAME,
                   endpoint_name: ENDPOINT_NAME,
                   endpoint_version: ENDPOINT_VERSION,
                   logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :post,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment/CardOperation',
    body: { 'entity' => entity, 'parameters' => parameters },
    logger: logger
  )
end

.delete_by_id(access_token:, id:, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ nil

Deletes a payment by ID.

Examples:

Delete a payment by ID

MyobAcumatica::Api::Payment.delete_by_id(
  access_token: access_token,
  id: payment['id'],
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • id (String)

    Unique payment ID.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (nil)


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/myob_acumatica/api/payment.rb', line 26

def delete_by_id(access_token:, id:,
                 instance_name: INSTANCE_NAME,
                 endpoint_name: ENDPOINT_NAME,
                 endpoint_version: ENDPOINT_VERSION,
                 logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :delete,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: "Payment/#{id}",
    logger: logger
  )
end

.delete_by_keys(access_token:, keys:, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ nil

Deletes a payment by composite keys.

Examples:

Delete a payment by keys

MyobAcumatica::Api::Payment.delete_by_keys(
  access_token: access_token,
  keys: [payment['Type']['value'], payment['ReferenceNbr']['value']],
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • keys (Array<String>)

    Keys uniquely identifying the payment.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (nil)


58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/myob_acumatica/api/payment.rb', line 58

def delete_by_keys(access_token:, keys:,
                   instance_name: INSTANCE_NAME,
                   endpoint_name: ENDPOINT_NAME,
                   endpoint_version: ENDPOINT_VERSION,
                   logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :delete,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: "Payment/#{keys.join('/')}",
    logger: logger
  )
end

.get_ad_hoc_schema(access_token:, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Retrieves the ad-hoc schema for the payment endpoint.

Examples:

Retrieve ad-hoc schema

MyobAcumatica::Api::Payment.get_ad_hoc_schema(
  access_token: access_token,
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    Ad-hoc schema.



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/myob_acumatica/api/payment.rb', line 88

def get_ad_hoc_schema(access_token:,
                      instance_name: INSTANCE_NAME,
                      endpoint_name: ENDPOINT_NAME,
                      endpoint_version: ENDPOINT_VERSION,
                      logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :get,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment/$adHocSchema',
    logger: logger
  )
end

.get_by_id(access_token:, id:, query_params: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Retrieves a payment by unique ID.

Examples:

Get payment by ID

MyobAcumatica::Api::Payment.get_by_id(
  access_token: access_token,
  id: payment['id'],
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • id (String)

    Unique payment ID.

  • query_params (Hash) (defaults to: {})

    Optional query parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    The payment.



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/myob_acumatica/api/payment.rb', line 121

def get_by_id(access_token:, id:, query_params: {},
              instance_name: INSTANCE_NAME,
              endpoint_name: ENDPOINT_NAME,
              endpoint_version: ENDPOINT_VERSION,
              logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :get,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: "Payment/#{id}",
    query_params: query_params,
    logger: logger
  )
end

.get_by_keys(access_token:, keys:, query_params: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Retrieves a payment by composite keys.

Examples:

Get payment by keys

MyobAcumatica::Api::Payment.get_by_keys(
  access_token: access_token,
  keys: [payment['Type']['value'], payment['ReferenceNbr']['value']],
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • keys (Array<String>)

    Keys uniquely identifying the payment.

  • query_params (Hash) (defaults to: {})

    Optional query parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    The payment.



155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/myob_acumatica/api/payment.rb', line 155

def get_by_keys(access_token:, keys:, query_params: {},
                instance_name: INSTANCE_NAME,
                endpoint_name: ENDPOINT_NAME,
                endpoint_version: ENDPOINT_VERSION,
                logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :get,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: "Payment/#{keys.join('/')}",
    query_params: query_params,
    logger: logger
  )
end

.get_list(access_token:, query_params: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Array<Hash>

Retrieves a list of payments.

Examples:

List payments of type ‘Payment’

MyobAcumatica::Api::Payment.get_list(
  access_token: access_token,
  query_params: { '$filter' => "Type eq 'Payment'" },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • query_params (Hash) (defaults to: {})

    Optional query parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Array<Hash>)

    List of payments.



188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/myob_acumatica/api/payment.rb', line 188

def get_list(access_token:, query_params: {},
             instance_name: INSTANCE_NAME,
             endpoint_name: ENDPOINT_NAME,
             endpoint_version: ENDPOINT_VERSION,
             logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :get,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment',
    query_params: query_params,
    logger: logger
  )
end

.invoke_action(access_token:, action_name:, entity:, parameters: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash?

Invokes a custom action on a payment.

Examples:

Release a payment via invoke_action

MyobAcumatica::Api::Payment.invoke_action(
  access_token: access_token,
  action_name: 'ReleasePayment',
  entity: { 'id' => payment['id'] },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • action_name (String)

    Action name.

  • entity (Hash)

    Payment entity.

  • parameters (Hash) (defaults to: {})

    Optional parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash, nil)

    Action response.



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
# File 'lib/myob_acumatica/api/payment.rb', line 313

def invoke_action(access_token:, action_name:, entity:, parameters: {},
                  instance_name: INSTANCE_NAME,
                  endpoint_name: ENDPOINT_NAME,
                  endpoint_version: ENDPOINT_VERSION,
                  logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :post,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: "Payment/#{action_name}",
    body: { 'entity' => entity, 'parameters' => parameters },
    logger: logger
  )
end

.put_entity(access_token:, entity:, query_params: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Creates or updates a payment entity.

Examples:

Create a new payment

payment = MyobAcumatica::Api::Payment.put_entity(
  access_token: access_token,
  entity: {
    'CustomerID' => { 'value' => 'JOHNGOODPAYER' },
    'ApplicationDate' => { 'value' => '2025-05-6' },
    'PaymentMethod' => { 'value' => 'CASH' },
    'CashAccount' => { 'value' => 'CASHACCC' },
    'Hold' => { 'value' => false }
  },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • entity (Hash)

    Payment entity.

  • query_params (Hash) (defaults to: {})

    Optional query parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    Created or updated payment.



228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/myob_acumatica/api/payment.rb', line 228

def put_entity(access_token:, entity:, query_params: {},
               instance_name: INSTANCE_NAME,
               endpoint_name: ENDPOINT_NAME,
               endpoint_version: ENDPOINT_VERSION,
               logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :put,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment',
    body: entity,
    query_params: query_params,
    logger: logger
  )
end

.put_file(access_token:, keys:, file_path:, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ nil

Uploads a file to a payment record.

Examples:

Upload a PDF to a payment

MyobAcumatica::Api::Payment.put_file(
  access_token: access_token,
  keys: [payment['Type']['value'], payment['ReferenceNbr']['value']],
  file_path: 'examples/dummy.pdf',
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • keys (Array<String>)

    Keys identifying the payment.

  • file_path (String)

    Path to the file.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (nil)

Raises:



265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
# File 'lib/myob_acumatica/api/payment.rb', line 265

def put_file(access_token:, keys:, file_path:,
             instance_name: INSTANCE_NAME,
             endpoint_name: ENDPOINT_NAME,
             endpoint_version: ENDPOINT_VERSION,
             logger: nil)
  payment = get_by_keys(
    access_token: access_token,
    keys: keys,
    instance_name: instance_name,
    logger: logger
  )
  put_url_template = payment.dig('_links', 'files:put')
  raise MyobAcumatica::Error, 'files:put link not found' unless put_url_template

  filename = File.basename(file_path)
  path = put_url_template.gsub('{filename}', filename)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :put,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: path,
    body: File.binread(file_path),
    content_type: 'application/octet-stream',
    logger: logger
  )
end

.release_payment(access_token:, entity:, parameters: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Releases a payment.

Examples:

Release a payment

MyobAcumatica::Api::Payment.release_payment(
  access_token: access_token,
  entity: { 'id' => payment['id'] },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • entity (Hash)

    Payment entity.

  • parameters (Hash) (defaults to: {})

    Optional parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    Response from the release action.



420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
# File 'lib/myob_acumatica/api/payment.rb', line 420

def release_payment(access_token:, entity:, parameters: {},
                    instance_name: INSTANCE_NAME,
                    endpoint_name: ENDPOINT_NAME,
                    endpoint_version: ENDPOINT_VERSION,
                    logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :post,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment/ReleasePayment',
    body: { 'entity' => entity, 'parameters' => parameters },
    logger: logger
  )
end

.void_card_payment(access_token:, entity:, parameters: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Voids a card payment.

Examples:

Void a credit card payment

MyobAcumatica::Api::Payment.void_card_payment(
  access_token: access_token,
  entity: { 'ReferenceNbr' => { 'value' => payment['ReferenceNbr']['value'] } },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • entity (Hash)

    Payment entity.

  • parameters (Hash) (defaults to: {})

    Optional parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    Response from the void card payment action.



454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
# File 'lib/myob_acumatica/api/payment.rb', line 454

def void_card_payment(access_token:, entity:, parameters: {},
                      instance_name: INSTANCE_NAME,
                      endpoint_name: ENDPOINT_NAME,
                      endpoint_version: ENDPOINT_VERSION,
                      logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :post,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment/VoidCardPayment',
    body: { 'entity' => entity, 'parameters' => parameters },
    logger: logger
  )
end

.void_payment(access_token:, entity:, parameters: {}, instance_name: INSTANCE_NAME, endpoint_name: ENDPOINT_NAME, endpoint_version: ENDPOINT_VERSION, logger: nil) ⇒ Hash

Voids a payment.

Examples:

Void a payment

MyobAcumatica::Api::Payment.void_payment(
  access_token: access_token,
  entity: { 'ReferenceNbr' => { 'value' => payment['ReferenceNbr']['value'] } },
  logger: logger
)

Parameters:

  • access_token (String)

    OAuth2 access token.

  • entity (Hash)

    Payment entity.

  • parameters (Hash) (defaults to: {})

    Optional parameters.

  • instance_name (String) (defaults to: INSTANCE_NAME)

    The instance name.

  • endpoint_name (String) (defaults to: ENDPOINT_NAME)

    The endpoint name.

  • endpoint_version (String) (defaults to: ENDPOINT_VERSION)

    The endpoint version.

  • logger (Logger, nil) (defaults to: nil)

    Optional logger.

Returns:

  • (Hash)

    Response from the void payment action.



488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
# File 'lib/myob_acumatica/api/payment.rb', line 488

def void_payment(access_token:, entity:, parameters: {},
                 instance_name: INSTANCE_NAME,
                 endpoint_name: ENDPOINT_NAME,
                 endpoint_version: ENDPOINT_VERSION,
                 logger: nil)
  Http.request(
    instance_name: instance_name,
    access_token: access_token,
    method: :post,
    endpoint_name: endpoint_name,
    endpoint_version: endpoint_version,
    path: 'Payment/VoidPayment',
    body: { 'entity' => entity, 'parameters' => parameters },
    logger: logger
  )
end