私は現在、月に1回顧客アカウントを処理する支払いモジュールを構築しています。特定の月のすべての顧客支払いアイテムを取得し、金額を合計してから、データを支払いゲートウェイに送信するクエリがあります。これはうまく機能し、銀行から「はい」または「いいえ」の確認が返されます。はいの場合、請求書番号でリクエストに含まれていたすべてのアイテムを更新する必要があります。whileループを使用して合計を取得しています。これは、リクエストが送信される前に実行されます。ゲートウェイは単一のリクエストのみを処理でき、リクエストごとに各請求書アイテムをループするのではなく、すべての未処理の請求書アイテムに対して単一のリクエストを実行したいと思います。
いくつかのコードは次のとおりです。
$get_payment_items_query = mysql_query("SELECT * FROM tbl_invoice_item WHERE billing_cycle = date");
while($get_payment_items_result = mysql_fetch_assoc($get_payment_items_query)){
$invoice_amount = $invoice_amount + $get_payment_items_result['payment_amount'];
}
その後、銀行から応答を受け取った後、請求書テーブルにレコードを追加し、請求書IDを取得して、次の手順を実行します。
$update_payment_item_query = mysql_query("UPDATE tbl_invoice_item SET status = '" . PAYMENTCOMPLETE . "', invoice_id = '$invoice_id' WHERE invoice_item_id = '" . $get_payment_items_result['invoice_item_id'] . "'");
更新クエリはwhileループの外側にあるため、これは1つのレコードのみを更新します。レコード識別子を文字列/配列に格納して単一の更新クエリを実行する方法があることは知っていますが、そのような名前は実際にはわからないため、例を見つけることができませんでした。
それが理にかなっていることを願っていますが、ここでもう少し詳しく説明します。
請求の準備ができている5つのアイテムがあります。5つのアイテムの合計金額を取得します。次に、支払いゲートウェイに1つのリクエストを送信して、5つのアイテムの料金を請求します。銀行は「はい」または「いいえ」の応答を返します。はいの場合、支払いの請求書IDを生成します。次に、新しく作成した請求書IDで5つのアイテムを更新する必要があります。1つのクエリで5つのアイテムを更新することは、私が行き詰まっているところです。
前もって感謝します。