全過程分為3部分,分別為購買流程,支付流程,承保流程
用戶購買流程:
用戶在融石頁面選擇保險產(chǎn)品,并點(diǎn)擊參與活動,融石引導(dǎo)用戶跳轉(zhuǎn)到保險產(chǎn)品頁面,用戶填寫投保信息進(jìn)行報價后,保險代理將投保單號以及相關(guān)信息告知融石,融石創(chuàng)建訂單,并返回全局流水號,保險代理引導(dǎo)用戶到融石產(chǎn)品確認(rèn)頁,用戶進(jìn)行產(chǎn)品確認(rèn),并準(zhǔn)備支付。
支付流程
融石引導(dǎo)用戶進(jìn)行支付,支付成功后,融石通知保險代理保單確認(rèn)購買。
承保流程
保險代理進(jìn)行承保,承保結(jié)果通知融石,承保通過,融石告知用戶承保成功,承保拒絕,融石引導(dǎo)用戶退款流程。
接口方案
傳輸方式
HTTPS 傳輸 端口443
Method:POST
Content-Type:application/json
Encoding:UTF-8
鑒權(quán)方法
HTTP頭
| HTTP頭名稱 | 字段說明 | 樣例 |
|---|---|---|
| timestamp | 時間戳 | 1490259359789 |
| signature | 簽名字段 | 此字段為算法見下文 |
| 名稱 | 字段說明 |
|---|---|
| timestamp | 13位時間戳,需要判斷接收到的時間戳 是否在當(dāng)前時間的前后30分鐘,如果不是,將按照無效請求處理 |
| signature | String temp = MD5(globalno + "I" + token.upper() + "I" + timestamp) |
| globalno | 全局流水號 : S2IDH2017032800001 固定位(S2I) + 渠道商(DH)+ 日期(20170328) + 最大10萬(00001) |
| token | 令牌,雙方各持有一個令牌,接收方將按照自己持有的令牌進(jìn)行判斷,發(fā)送方將使用要接收方的令牌進(jìn)行簽名。 令牌在做簽名的時候需要全大寫。 令牌使用時為提供服務(wù)方,用自己令牌做簽名驗(yàn)證,而調(diào)用方,用對端令牌制作簽名 |
| 令牌持有方 | 令牌號 | 說明 |
|---|---|---|
| 融石科技 | RSXXXXXXXXXXXXXX | 此項(xiàng)為配置項(xiàng),在上線前統(tǒng)一修改,請勿寫死在代碼中 |
| 保險代理 | TAXXXXXXXXXXXXXX | 此項(xiàng)為配置項(xiàng),在上線前統(tǒng)一修改,請勿寫死在代碼中 |
返回結(jié)構(gòu)
{statusCode:"000000",error:"錯誤信息",result:JSON}
在statusCode 為000000時,說明業(yè)務(wù)成功返回,此時result為返回結(jié)果,為必填項(xiàng)。
反之,說明業(yè)務(wù)失敗返回,此時error為返回的錯誤信息,為必填項(xiàng)。
以下為接口形式,里面所用的接口地址,將在上線部署時統(tǒng)一更換
購買流程接口
1. 保險產(chǎn)品頁面
融石——>保險代理
http://www.insurance.com/insuremain.html
time=1490259359789 為防止緩存
randomno=XXXXXXXX:隨機(jī)碼
backurl=http://callback.html: 回退地址
backurl 需要 base64 encode
其他參數(shù),保險代理可以自行確定
http://www.insurance.com/insuremain.html?randomno=g3k2d3h5v4t3j1j&backurl=http://callback.html&time=1490259359789
2. 創(chuàng)建訂單信息
保險代理——>融石
https://www.rongstone.com/createorderinfo
RequestBody:
{
globalno: "XXXXXXXXXXXXX", //這里填寫的就是randomno隨機(jī)碼(用這個做簽名)
orderno:"61232154354325234", //保險公司訂單號
name: "張德智", //姓名
idcard:"140108198302213016", //身份證號
mobile:"15900127643", //手機(jī)號碼
sumpre: "5242.58" //保險總費(fèi)用
begindate:"2018-03-03" //生效日期
enddate:"2019-03-02" //終止日期
}
ResponseBody:
{
statusCode: "000000", //成功返回 6個0
error: "", //錯誤信息
result: "S2IDH2017032800001" //返回全局流水號
}
3. 引導(dǎo)投保確認(rèn)頁
保險代理——>融石
http://www.rongstone.com/confirm.html
time=1490259359789 為防止緩存
randomno=XXXXXXXX:隨機(jī)碼
reason=
%E8%BD%A6%E8%BE%86%E4%BF%A1%E6%81%AF%E9%94%99%E8%AF%AF 這個是"投保信息錯誤"的URL編碼
投保成功調(diào)用如下
http://www.rongstone.com/confirm.html?randomno=g3k2d3h5v4t3j1j&reason=&time=1490259359789
投保失敗調(diào)用如下
http://www.rongstone.com/confirm.html?randomno=g3k2d3h5v4t3j1j&reason=%E8%BD%A6%E8%BE%86%E4%BF%A1%E6%81%AF%E9%94%99%E8%AF%AF&time=1490259359789
其他參數(shù),保險代理可以自行確定
支付流程接口
4. 接收購買請求
融石——>保險代理
https://www.insurance.com/payrequest
RequestBody:
{
globalno: "S2IDH2017032800001", //全局流水號
consumepayno:"12312312", //消費(fèi)訂單號
consumepaytype:"alipay", //消費(fèi)類型
consumesumpre:"5242.58", //消費(fèi)費(fèi)用
}
ResponseBody:
{
statusCode: "000000", //成功返回 6個0
error: "", //錯誤信息
result: "ok" //返回ok
}
承保流程接口
5. 發(fā)送承保結(jié)果
保險代理——>融石
https://www.rongstone.com/receiveacceptanceresult
RequestBody:
{
globalno: "S2IDH2017032800001", //全局流水號
appno:"6703530136320170000695", //投保單號
polno:"6703530136320170000695", //保單號 (承保失敗 此項(xiàng)為空)
result:"success", //success 為承保成功,為fault 為承保失敗
reason:"" //承保成功的時候 此項(xiàng)為空,payresult 承保失敗的時候 此項(xiàng)為失敗原因
}
ResponseBody:
{
statusCode: "000000", //成功返回 6個0
error: "", //錯誤信息
result: "ok" //返回ok
}
如果承保失敗,提供失敗原因。方便用戶后續(xù)操作后,可以重新購買車險
6. 訂單詳情頁面
融石——>保險代理
http://www.insurance.com/insureorder.html
time=1490259359789 為防止緩存
globalno=S2IDH2017032800001:全局流水號
appno=6703530136320170000695:投保單號
backurl=http://callback.html: 回退地址
backurl 需要 base64 encode
http://www.insurance.com/insuremain.html?globalno=S2IDH2017032800001&appno=6703530136320170000695&backurl=http://callback.html&time= 1490259359789
斷鏈重發(fā)策略
重發(fā)條件
1、當(dāng)調(diào)用接口時,timeout時長為:65秒
2、返回的HTTP狀態(tài)碼 不是200 (此時需要記錄日志)
重發(fā)策略
5秒、1分鐘、5分鐘,當(dāng)需要重發(fā)時,將有3次重發(fā)機(jī)會,如果仍然不能正確返回(HTTP狀態(tài)碼為200)將進(jìn)行報警處理,具體報警處理方式不做統(tǒng)一說明。
簽名相關(guān)說明
- 調(diào)用端 使用對端所屬的Token進(jìn)行簽名。
- 服務(wù)端 使用自己所屬的Token進(jìn)行驗(yàn)簽。
例如 融石請求支付校驗(yàn)到保險代理,這里融石就是調(diào)用端,所以要用保險代理的Token進(jìn)行簽名發(fā)送給保險代理,而保險代理這個接口是服務(wù)端,所以要用自己的Token(保險代理)進(jìn)行驗(yàn)簽。
服務(wù)器白名單
- 接口在做服務(wù)端時,被調(diào)用時,需要用對端的服務(wù)器白名單進(jìn)行服務(wù)器驗(yàn)證,這里的白名單可以是列表,只有在列表中的服務(wù)器訪問才能通過白名單驗(yàn)證。