如何在PHP中延迟特定代码行解决USSD应用支付提示冲突
解决USSD支付提示与成功消息冲突的延迟方案
问题核心是支付提示的curl请求与成功消息发送过于频繁,导致手机优先接收了成功消息而忽略支付提示。你可以通过在输出成功消息后延迟几秒再发起支付请求来避免冲突。
具体实现步骤
在PHP中可以使用sleep()函数实现延迟,建议设置3-5秒的延迟(可根据实际测试调整最优时长),确保成功消息完全被手机接收后再发送支付提示。
修改后的代码示例
$transaction->updateTransactionDetails($transactionId, $reference, $request_id, SESSION_ID, MSISDN); echo $RESPONSE_DATA = show("A Payment Prompt of GHS " . $totalAmount . " has been sent to your phone.", "end"); // 延迟3秒,避免与成功消息冲突 sleep(3); $push_payment = $payment->momoPrompt($totalAmount,'MTN_MONEY',MSISDN,$reference, $request_id, $transactionId);
注意事项
- 调整延迟时长:建议测试2-5秒的不同时长,找到既不影响用户体验又能避免冲突的最优值
- 服务器超时设置:确保PHP的
max_execution_time配置足够覆盖延迟时间+请求处理时间,避免会话中途中断 - USSD会话保持:确认你的USSD服务提供商允许会话短暂挂起,避免延迟期间会话被强制关闭
内容的提问来源于stack exchange,提问作者Solomon Addai-boakye
相关产品推荐
相关产品推荐

