调用开放平台的api的回调分析

最近在作一个使用美团api的项目,当用到美团门店解绑功能的回调时,开始思考它的功能linux

 

这是美团官方提供的api文档,连接在这:http://developer.meituan.com/openapi#4.4json

 

美团官方文档部分:windows

  

 开发者若是想要支持自主解绑功能须要进行一下对接步骤:api

  • 开发者在开发者中心的回调接口设置页面设置"门店映射解绑回调地址"
  • 开发者接入解绑UISDK或者WEB解绑方式供商家使用
  • 商家本身操做解绑后,开放平台会经过开发者设置的"门店映射解绑回调地址",将解绑信息回传给开发者

 

注意
  • 回传的参数不是json,http方式是POST,contentType是application/x-www-form-urlencoded
  • 因为历史缘由,存在两个相赞成义的参数ePoiId,epoiId。对于像linux等区分大小写的系统,没什么问题,可是像windows系统的程序,须要单独处理一下两个epoiId
  • 开发者接收到回调参数以后,必须返回json字符串{"data":"success"},开放平台若是没有推送成功,或者没有收到{"data":"success"},或发起重试,最多重试10次,每次重试的间隔随时间增长而增长。开发者须要本身处理重试推送的消息。
  • 一店一token,团购和外卖同时解绑,再次绑定token会更新;只解绑其中一个业务再次绑定,token和以前的一致。

 

 流程大体是这样:app

1.程序先调开放平台的解绑地址函数

2.开放平台回调程序的回调方法ui

3.回调方法返回success,开放平台执行解绑操做,返回其余,则不执行解绑操做url

 

思考,若是开放平台没有回调,直接执行解绑方法,那么若是此时,程序解绑操做失败后,会形成信息不一致的状况:个人程序上显示还在绑定状态,美团上却已经解除绑定了code

因此,用到了回调函数,当程序请求开放平台的解绑方法时,开放平台回调,等待客户端执行成功操做返回sucess,而后再执行解绑操做,保证了数据的一致性。orm

 

那么,问题来了:

若是说,当客户端成功执行了操做,而开放平台美团却执行操做失败了,又形成了信息的不一致。

这个情形,相似于TCP的通讯,采用了三次握手来解决这个问题:

程序调开放平台的解绑函数
程序执行操做成功后返回success,可是不知到开放平台是否执行操做成功,因此再去调开放平台的回调
当开放平台返回的是sucess时,那么就执行操做,返回的时fail时,那么就不执行解绑操做。
当开放平台返回的是sucess时,若是程序端执行解绑操做又失败了,那就提示用户操做失败,请重试。

 

 

应该是出现这种状况的可能微乎其微,再加上美团的开发者不可能不了解三次握手确认来说
对这些业务作这样的确认操做是没有必要的。

可是对于钱财交易这样的方式就必须采起三次握手这样的操做方式了。

 

本人系新手上路,文章可能显得臃肿,写下来记录本身的成长历程。

水平有限,欢迎并感谢纠错指正

相关文章
相关标签/搜索