博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APP STORE 付费验证(IAP)服务端验证全过程(三)
阅读量:5154 次
发布时间:2019-06-13

本文共 1115 字,大约阅读时间需要 3 分钟。

手游APP Store付费 服务端验证流程

苹果付费服务端验证图解

我把整个过程叫做三方协定,也叫四次握手.

首先,由客户端APP发出购买请求,这里要求要向服务器,苹果APP STORE同时发送购买请求.
服务端接收到请求之后,在数据库log_Purcharse中新增一条记录,并将新增记录的ID返回给客户端.(log_Purcharse表的设计见后文)
苹果APP STORE接收到请求之后,进行扣费,返回一个付费成功详细信息,或者失败信息.
以上我们称之为一次和第二次握手

如果苹果APP STORE返回付费失败,则客户端终止购买流程.
如果苹果APP STORE返回付费成功,则将第一次服务端返回的ID和苹果返回的付费详情字符串一同发送给服务端.
这里是第三次握手开始.

服务端接收到ID和付费详情字符串,首先到数据库中检索ID是否合法(检验方法详见后文),ID不合法则返回给客户端失败,客户端终止购买流程,ID合法则将付费详情字符串发送给苹果APP STORE进行验证.
苹果APP STORE验证付费字符串之后会返回给服务端一个付费验证成功码(0表示成功),或者失败码(很多情况,各有其含义).
这里称作第四次握手.

服务端检测苹果APP STORE返回的成败信息,更新表log_Purcharse对应ID下面的数值.
返回给客户端成功/失败信息,成功客户端增加购买物品,失败客户端终止购买流程.
此处算是第三次握手的结束.

附一:log_Purcharse表结构设计与简单解析:

Id 自增主键,自增主键是一次握手时客户端请求时添加的主键,也就是将此键值返回给客户端.三次握手的时候也将根据此值来定位购买信息
UserId 付费用户ID,用于三次握手时的验证条件之一
GoodsId 购买物品ID
IAPState 苹果返回状态,三次握手的时候将更新此值,以便记录苹果的具体返回情况,方便核对,为后期客服服务提供依据.
ServerState DEFAULT ’0′ 是否付费成功,0未验证,1成功,2不成功
Money 充值钱数
PayTime 付费请求时间,一次握手更新此值
DateTime 付费成功时间,四次握手成功更新此值

附二:检索ID是否合法的方法:
根据ID,检索数据库中对应的字段,此时需要验证UserId是否与发出请求的UserId一致,检测ServerState是否仍处于未验证状态,IAPState是否为未返回状态,如果这几项都符合验证,表明付费成功,给客户端返回成功,增加购买物品.

转载于:https://www.cnblogs.com/songchunmin/p/7789890.html

你可能感兴趣的文章
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
js兼容公用方法
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>