(20241217) Payment message capture improved.
This commit is contained in:
@@ -198,11 +198,12 @@ async def safaricom_m_pesa_express_callback(
|
||||
# Figure out which of the above codes is relevant to you:
|
||||
pg_reference_id = inbound_data["Body"]["stkCallback"]["CheckoutRequestID"]
|
||||
pg_result_code = int(inbound_data["Body"]["stkCallback"]["ResultCode"])
|
||||
pg_result_desc = inbound_data["Body"]["stkCallback"]["ResultDesc"]
|
||||
relevant_code = code_map.get(
|
||||
pg_result_code,
|
||||
{
|
||||
"status": "unknown",
|
||||
"message": f"Unknown code '{pg_result_code}' from the payment gateway."
|
||||
"message": f"Unknown code '{pg_result_code}' from the payment gateway. PG: '{pg_result_desc}'"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -231,6 +231,7 @@ class PaymentController:
|
||||
payment_id = payment_id,
|
||||
event = PaymentEvent(
|
||||
paymentStatus = "initiated" if client_response.success else "initFailed",
|
||||
message = f"PG: {client_response.message}",
|
||||
initByPG = False,
|
||||
httpCode = client_response.httpCode,
|
||||
headers = await client_response.get_headers(),
|
||||
@@ -241,12 +242,12 @@ class PaymentController:
|
||||
|
||||
# Done here:
|
||||
result.success = client_response.success and event_note_success
|
||||
result.message = "; ".join([
|
||||
"payment requested successfully" if client_response.success
|
||||
else f"payment request failed (PG: {client_response.message})",
|
||||
"event noted successfully" if event_note_success
|
||||
else "event noting failed",
|
||||
])
|
||||
result.message = " ".join([
|
||||
"Payment requested successfully." if client_response.success
|
||||
else f"Payment request FAILED (PG: '{client_response.message}').",
|
||||
" " if event_note_success
|
||||
else "Event noting FAILED.",
|
||||
]).strip()
|
||||
return result
|
||||
|
||||
async def request_payment(
|
||||
@@ -272,6 +273,7 @@ class PaymentController:
|
||||
payerNo = payment_request.payerNo,
|
||||
email = payment_request.email
|
||||
),
|
||||
lastEventMessage = "Payment Request Queued",
|
||||
lastPaymentStatus = "queued",
|
||||
tokenId = auth_token.authTokenId,
|
||||
amount = payment_request.amount,
|
||||
|
||||
@@ -317,8 +317,9 @@ class CorePaymentController(BaseModel):
|
||||
"events": event.model_dump()
|
||||
},
|
||||
"$set": {
|
||||
"lastEventTs": date_time.get_current_ist_date_time(as_string = False),
|
||||
"lastPaymentStatus": event.paymentStatus
|
||||
"lastEventTs": event.eventTs,
|
||||
"lastEventMessage": event.message,
|
||||
"lastPaymentStatus": event.paymentStatus,
|
||||
}
|
||||
}
|
||||
if client_reference_id: update_json["$set"]["clientPaymentReferenceId"] = client_reference_id
|
||||
@@ -354,7 +355,8 @@ class CorePaymentController(BaseModel):
|
||||
"events": event.model_dump()
|
||||
},
|
||||
"$set": {
|
||||
"lastEventTs": date_time.get_current_ist_date_time(as_string = False),
|
||||
"lastEventTs": event.eventTs,
|
||||
"lastEventMessage": event.message,
|
||||
"lastPaymentStatus": event.paymentStatus
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,6 +235,12 @@ class CorePaymentModel(BaseModel):
|
||||
default = None
|
||||
)
|
||||
|
||||
lastEventMessage: str | None = Field(
|
||||
description = "a short, human-readable message",
|
||||
frozen = False,
|
||||
default = None
|
||||
)
|
||||
|
||||
lastPaymentStatus: str = Field(
|
||||
description = "the status of the payment request to see what stage of the process we are in",
|
||||
frozen = False
|
||||
|
||||
@@ -346,12 +346,12 @@ class SafaricomMPesaExpress:
|
||||
)
|
||||
|
||||
# If the call failed:
|
||||
if api_response.httpCode == 400:
|
||||
if api_response.httpCode not in [200]:
|
||||
api_json = await api_response.get_json()
|
||||
api_response.message = f"{api_json['errorCode']} -> {api_json['errorMessage']}"
|
||||
|
||||
# If the call failed:
|
||||
if api_response.httpCode in [200]:
|
||||
else:
|
||||
api_json = await api_response.get_json()
|
||||
success = True if str(api_json.get("ResponseCode")) == "0" else False
|
||||
api_response.message = api_json.get("ResponseDescription", "N/A")
|
||||
|
||||
Reference in New Issue
Block a user