1. 程式人生 > >google支付被刷問題及服務端訂單驗證解決方案

google支付被刷問題及服務端訂單驗證解決方案

最近在google play上線的應用內支付被人刷了,使用者模擬發起了大量的支付請求,並且全部成功支付。搞得我最近茶飯不思。。今天總算是解決了,和大家分享一下。

我們客戶端的支付實現步驟是:

1. app端呼叫google支付

2. 支付成功後,呼叫 自己伺服器的發貨介面,當然發貨介面是做了簽名校驗的。

之所以在app端呼叫發貨,是因為google貌似沒有提供伺服器端直接回調url的地方,所以才給了惡意使用者模擬google返回的機會。

一開始我以為是我們自己的發貨介面金鑰被破解了,但是後來經過app上報,發現客戶端是真實的走過了所有的google支付流程,即google的支付sdk真的返回了成功。

由於不清楚是因為google的金鑰洩漏還是攻擊者用別的方法實現,所以客戶端這邊已經沒有辦法確認是安全的了。

實現的流程在文件中已經寫的很清楚了,我這裡就不贅述了。

判斷的方法也很簡單:

1. 判斷是否購買成功

2. 判斷返回 developerPayload 是否與傳入的值一致。最好傳入訂單號,以防止重放攻擊