訂單整單退款跟只退一次的情況,我之前寫的都是類似這種,out_trade_no跟out_refund_no都放訂單號,但是這次出現了一個訂單退款一次以上的問題,官方錯誤信息為[訂單金額或退款金額與之前請求不一致,請核實后再試]
//微信退款 $wechatData = array( 'out_trade_no' => $data['ordernum'], 'out_refund_no'=> $data['ordernum'], 'total_fee' => $data['so_sum_price'], 'refund_fee' => $refund_money );
貼上官方文檔說明,人家還重點標紅了:
應用場景
當交易發生之后一段時間內,由於買家或者賣家的原因需要退款時,賣家可以通過退款接口將支付款退還給買家,微信支付將在收到退款請求並且驗證成功之后,按照退款規則將支付款按原路退到買家帳號上。
注意:
1、交易時間超過一年的訂單無法提交退款
2、微信支付退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號和設置不同的退款單號。申請退款總金額不能超過訂單金額。 一筆退款失敗后重新提交,請不要更換退款單號,請使用原商戶退款單號
3、請求頻率限制:150qps,即每秒鍾正常的申請退款請求次數不超過150次
錯誤或無效請求頻率限制:6qps,即每秒鍾異常或錯誤的退款申請請求不超過6次
4、每個支付訂單的部分退款次數不能超過50次
5、如果同一個用戶有多筆退款,建議分不同批次進行退款,避免並發退款導致退款失敗
一個訂單退款一次以上,就不能再拿之前退款的out_refund_no參數了,我這邊就改成了下面的,就好了,我們業務只有整單退,跟部分商品退款,所以我就拼接了訂單里商品的唯一標識(同一訂單不存在重復問題)
//微信退款 $wechatData = array( 'out_trade_no' => $data['ordernum'], 'out_refund_no'=> $data['ordernum'].$sog_id, 'total_fee' => $data['so_sum_price'], 'refund_fee' => $refund_money );