因公司系統升級,出現突然有些銀行卡不能支付的情況,最開始排查發現是第三方平台接口返回有問題:
返回如下:
從11月7日下午開始一直聯系第三方,第三方開始排查,一直說是數據格式有問題。
修改格式以后問題同樣出現,又重新調試跟蹤下代碼,發現如下問題:
看錯誤描述應該是判斷是訪問發生問題,又想到了為什么升級以前是好好得,升級以后才出現這個問題?
重新找來官方的demo文檔,重新下單測試,發現又是正常的 ?why?把所有的數據復制到系統來,發現還是不能訪問。。。。
於是把系統中的請求數據直接寫死:
直接訪問下單頁面 ,OK終於能訪問了,到這以為問題已經解決,估計是數據格式問題,然后就又從下單界面測試了一次,發現又不行了 ,
我擦,為什么直接訪問接口頁面能夠訪問,通過下單界面調用接口訪問而不行了呢?仍然報錯誤:由於遠程方關閉傳輸流,身份驗證失敗。
打開百度,出現很多類似的情況,找到各種處理方法,但是都不能解決,太奇怪了啊。於是想起了用Fiddler試試看,果然在這里出現了問題。
當訪問失敗時請求數據為:
當訪問成功時,請求數據為:
兩次采用的ssl加密版本方式居然不一樣,難道是隨機的嗎?太奇葩了吧,修改訪問時,強制采用Tsl/1.0版本的加密方式:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
問題終於得到解決,然后現在已經是11月8日的下午了。
話說:對接的兩個第三方平台,支付都出問題,
一個是java和.net ,對json反序列化不同,導致驗證失敗,他們主要使用java。
一個是沒有設置正確的ssl訪問加密方式,由於第三方平台沒有.NET開發了,他們自己也測試不到。
還有一個支付平台,只有php和java的接口,沒有.NET的接口,暫時還未對接。
怎么感覺使用.NET的突然好像變少了呢?