out_trade_no 是開發者生成的訂單號,稱為商家訂單號,會傳到支付寶的支付接口里,然后記錄在支付寶。
**回調出問題的代碼寫法:**
$out_trade_no = date('YmdHis').time().mt_rand(1000,9999);
這種寫法用戶每次點擊支付時都會重新生成out_trade_no,但是只要用戶點擊了支付,然后掃碼支付是不會有回調問題的。
如果用戶點擊了支付,然后掃了碼,然后在瀏覽器返回,再點擊支付,這個時候才輸入上一次掃碼的密碼,就會導致支付寶回調了,但是訂單狀態沒有被修改。
因為用戶點了兩次支付,而支付的是第一次點擊的二維碼。這個時候訂單號變了。支付了就無效了。這段話可能有點難理解!!
改進后的代碼:
$out_trade_no = $data->code;
out_trade_no直接用創建訂單時生成的訂單code,這樣用戶每次點擊支付生成的商家訂單號都不會改變,所以就不會了多次點擊支付之后回調不正常的現象