2017-02-03 92 views
1

今天,當拉手網了,我想到一個簡單的場景如下:如何調用API

我有我自己的支付系統,當用戶來省錢,我用一種形式來保存交易數據我自己的數據庫。在保存我自己的記錄之前,我需要撥打具有Web服務API的銀行支付系統,如

public boolean pay(userInfo userInfo, float money)

根據返回的結果,我確定是否保存自己的數據。

我的問題是,如果在撥打銀行支付API後,我自己的網絡關閉,並且沒有結果返回。如何確定我是否需要保存自己的表格記錄。也許銀行支付系統已經處理了這筆交易?如何使兩部分數據同步?

由於銀行規格是固定的,我們無法更改銀行付款API。 Web服務API是SOAP或寧靜

回答

0

你的實現可能是這樣的:

  • 始終交易數據保存到數據庫並標記爲「未處理」。

  • 使用單獨的「worker」進程,該進程從數據庫中提取所有未處理的事務,並調用銀行支付系統的pay方法。

  • 根據pay方法結果,選擇更改/不更改事務的狀態。

工人可以通過調度處理(各XX秒/分鐘/等)或不斷查詢未處理事務(可能與環之間有一些延遲)的一些服務。

因此,如果銀行支付系統的「無結果」,交易狀態將不會更改,並且下一次工人運行時將重試「付款」方法。