2011-01-06 154 views
1

我有一個創建兩個數據庫表項的過程,並向authorize.net api發送兩個請求。以編程方式處理「交易」

現在,如果在程序中的任何一點出現任何錯誤,我想'回滾'。我們的系統中創建的任何條目都應該被刪除,並且應該通知用戶出現了錯誤,並且應該讓用戶選擇重試。

流動的淡化的版本是這樣的:

Create Account Entry -> Create User Entry -> Send one time payment request to Authorize.net -> Save result of one time payment request from Authorize.net -> Send recurring payment request to Authorize.net -> Save result of recurring payment request from Authorize.net

什麼是處理這種情況的最好方法是什麼?

提前致謝!

回答

0

我會用普通的InnoDB事務處理數據庫的一部分。回滾Authorize.NET調用會更棘手,只需要一些非常小心的異常處理。

0

您可以在事務中包裝查詢,請注意您想要回滾的表需要將其引擎設置爲innodb。下面是代碼如何顯示的示例:

//Wrap your queries in a transaction 

    mysql_query("START TRANSACTION"); 

     try{ 
      //your stuff - if your stuff is successful commit, in the event of an error rollback 

      if($success){ 
       mysql_query("COMMIT"); 
      } 
      else{ 
       mysql_query("ROLLBACK"); 
      } 
     }catch(Exception $e){ 
      //if something goes seriously wrong 
      mysql_query("ROLLBACK"); 
     }