如果交易完成後,向自己的服務器進行二次驗證(服務器對用戶增值操作)的時候,客服端突然斷網了怎麼辦啊,大家是怎麼解決的,有什麼最好的解決辦法嗎。
順便再問下,服務器代碼使用的是CURL方式向蘋果服務器進行驗證,關掉SSL驗證安全嗎?發現不關掉的話會驗證失敗,保存服務器日志發現有error:14090086:SSL 這樣的錯誤。
找到解決辦法了,查了大把資料,現在總結一下
第一個問題,現在的解決辦法是:
transaction持久化,將加密的Base64字符串保存到本地,每次用戶登錄的時候自動重新驗證。當二次驗證時,用戶的客服端斷網,就進入重試狀態。如果二次驗證時,自己的服務器斷網,curl會得到一個"couldn't connect to host"這樣的錯誤,就服務器端重試。對於網絡超時或無法找到主機的都將transaction保存下來就行了,由於http是基於tcp/ip協議的服務層次應用,所以對驗證通過或者失敗的就直接移除掉就行了。
那麼問題來了,用戶在二次驗證超時後,刪掉了app,那麼就完了。。。所以還沒有找到萬無一失的方法。
第二個問題:
之所以curl報“error:14090086:SSL”這樣的錯誤,是因為curl會默認進行SSL雙向認證,由於我服務器沒有證書,所以就報錯了。這時就需要給curl設置這樣的option:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '0');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '0');
才能正常工作。其實也沒有想像的那麼完全不安全。