Skip to main content

get Method

Overview

The get method retrieves the current status of a payment from the payment processor. Use this to synchronize your system's payment state with the processor's actual state, especially useful for handling asynchronous status updates.

Business Use Case: A webhook notification was missed or delayed. Your system shows a payment as PENDING, but you need to verify its actual status with the processor before fulfilling the order.

Purpose

Why use get?

ScenarioBenefit
Webhook fallbackPoll when webhooks fail or are delayed
ReconciliationSync payment states with internal systems
Customer serviceVerify payment status for support inquiries
Before fulfillmentConfirm payment succeeded before shipping

Key outcomes:

  • Current payment status from processor
  • Synchronized state between systems
  • Accurate payment information

Request Fields

FieldTypeRequiredDescription
merchant_transaction_idstringYesYour unique transaction reference
connector_transaction_idstringYes*Connector's transaction ID (*one of merchant or connector ID required)

Response Fields

FieldTypeDescription
merchant_transaction_idstringYour transaction reference
connector_transaction_idstringConnector's transaction ID
statusPaymentStatusCurrent status: AUTHORIZED, CAPTURED, FAILED, etc.
amountMoneyPayment amount
errorErrorInfoError details if status is FAILED
status_codeintHTTP-style status code (200, 404, etc.)

Example

SDK Setup

from orchestratorx_prism import PaymentClient

payment_client = PaymentClient(
connector='stripe',
api_key='YOUR_API_KEY',
environment='SANDBOX'
)

Request

request = {
"merchant_transaction_id": "txn_order_001",
"connector_transaction_id": "pi_3Oxxx..."
}

response = await payment_client.get(request)

Response

{
"merchant_transaction_id": "txn_order_001",
"connector_transaction_id": "pi_3Oxxx...",
"status": "CAPTURED",
"amount": {
"minor_amount": 1000,
"currency": "USD"
},
"status_code": 200
}

Common Patterns

Polling for Status Updates

import asyncio

async def poll_payment_status(merchant_id, connector_id, max_attempts=10):
for attempt in range(max_attempts):
response = await payment_client.get({
"merchant_transaction_id": merchant_id,
"connector_transaction_id": connector_id
})

if response["status"] in ["CAPTURED", "FAILED"]:
return response

# Exponential backoff
await asyncio.sleep(2 ** attempt)

return response

Status Values

StatusDescription
AUTHORIZEDFunds reserved, awaiting capture
CAPTUREDPayment completed, funds transferred
FAILEDPayment failed, check error details
VOIDEDAuthorization was cancelled
REFUNDEDPayment was refunded

Error Handling

Error CodeMeaningAction
404Payment not foundVerify transaction ID
400Invalid requestCheck required fields

Next Steps

  • authorize - Create new authorization
  • capture - Complete authorized payment
  • void - Cancel authorization