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