除錯支付寶介面時遇到的 TRADE_TOTALFEE_NOT_MATCH 問題

溫謙發表於2013-05-10

今天在除錯和測試支付寶支付的時候,遇到一個有趣的問題,記下來留個底兒,也拿出來給大家分享一下。

對於一個正在執行的網站,如果增加或改動了和支付相關的功能,當然要經過除錯和測試。

為了測試,自然會再搭一個測試的網站,與正式執行的網站完全無關。今天遇到的問題是,在測試網站上,每次點選了支付按鈕以後,本來應該跳轉到支付寶的頁面,提示使用者輸入支付寶的帳號密碼等等,完成支付流程。可是今天非常奇怪的是,頻頻出現如下的錯誤提示:

錯誤描述: 抱歉,該商品的交易金額與原先的不一致,請重新建立交易付款。
錯誤程式碼: TRADE_TOTALFEE_NOT_MATCH

以前沒遇到,自然要上Google搜一下,找到很多相關問題的網頁,都是說的一個道理:當第一次向支付寶提交某個一個訂單後,這個訂單的商家訂單號(out_trade_no)以及訂單金額等都會被記錄下來,如果一次支付成功當然沒有問題,如果一次沒有成功,以後又再次支付這個訂單(根據商家訂單號來判斷是否是再次支付),就會重新交驗一次訂單金額,如果和原來的訂單金額不一致,就會給出上面的報錯資訊。

可是奇怪的是,我這裡在第一次提交的時候,就報這個錯誤,實在是不理解,為什麼就會報這個錯呢,而且並不是每次都會報這個錯,而是有一定比例的次數不會報錯。反覆跟蹤,不得其解~~

經過一番長考,突然明白過來,雖然測試網站和正在執行的網站是完全沒有關係的,但是支付寶的帳號用的同一個!因此,在測試網站上支付一個訂單的時候,這個訂單號實際上在主站上已經存在並支付過了,這個訂單號在支付寶的後臺已經有記錄了,因此當在測試網站再次使用這個訂單號支付的時候,就被認為是同一個訂單的再次支付了,從而就會報這個錯了!

原來如此!

相關文章