微信支付的採坑經歷

     繼上次的《第三方支付訂單修改金額的踩坑經歷》之後,我又發現了新的坑。

     背景:我們的系統接入了微信App支付、微信公衆號支付以及微信小程序支付(至於爲什麼要接這麼多微信支付,此處只需腦補:這個需求很簡單,怎麼實現我不管,不服你就找老闆。PS:在微信瀏覽器中進行微信支付,只能使用微信公衆號支付。在微信小程序中支付,只能使用微信小程序支付。在App內進行App支付,只能使用微信App支付。)

     產生的原因:有客戶在某個微信渠道下了訂單,未進行支付。然後又去另一個渠道支付這個訂單,結果支付不了,忘記當時微信那邊報什麼提示了,不知道是不是“訂單已存在”之類的。

     排查的過程:我開始接到這個反饋的時候真的一頭霧水(當時並不知道客戶進行了多渠道操作),測試的時候並未發現這個問題。因爲測試都是同一渠道下單支付的。怎麼辦?向讓客服同事向客戶瞭解了他的操作過程,結果這個人說他記不得了。沒辦法,只能自己和測試一起復現。最終種種跡象表明是多渠道下單的問題,併成功復現(真是一把辛酸淚)。

     這裏微信支付就挺讓人費解的,當初接微信支付的時候,就被各種參數appId和mchId搞暈了。後來理清之後,對應關係就是多個的支付渠道對應同一個商戶id,因此猜測不同渠道創建支付單,支付單的判重緯度是根據商戶id走的。因此,只能自行在自己的系統中解決多渠道支付同一訂單的問題。

     因此我採取的方案如下:

     對應金額確定的支付單,在系統中只存在一個。當用戶發起支付請求時,向第三方系統下單時,在支付單號後面拼接支付渠道,保證同一支付單不同支付渠道在微信商戶中對應不同的訂單,這樣就解決了多渠道重複下單問題。不過,需要注意的是在支付結果通知以及退款時,都需要對微信測返回的支付單號進行解析,然後對應到自己的系統的支付單上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章