道招

研究学习华为IAP严谨的支付过程

如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!

研究学习华为IAP严谨的支付过程

大家都知道支付跟钱有关,严谨是必要的,但是没有想到可以做到这么严谨。 首先要记住一个宗旨——1.不要相信客户端,2.支付数据要解码验签

因为用户客户端是支付发起的源头,它就存在被篡改的可能性,而支付的终点是自家服务器,中间一定会经过网络传输过程,网络传输也存在被挟持篡改的可能性,服务器作为自家设备,相对而已就可信得多了,所以网络应用可以做的比单机应用安全的多了。

支付流程

我们先看下华为IAP的流程是什么样子的

file

如下业务流程对于单机应用同样适用。在单机应用中,应用服务器和应用客户端的交互放在应用客户端完成,应用服务器和IAP服务器交互的部分可不处理。

在整个支付过程中涉及华为的那部分安全性我们无需关心这个由华为方保证,我们只需要保证用户支付后我们客户端和我们服务器之间的支付安全性,也就是收到支付结果PurchaseData后怎么处理,也就是购买结果确认。

购买结果确认

这个还要分是交由客户端接收支付结果还是服务端接收支付结果PurchaseData

方式一:通过客户端接收购买结果

首先看如果是客户端接收支付结果的场景

  1. 用户购买成功时,IAP Kit返回包含订单信息的PurchaseData数据。

  2. 应用客户端向应用服务器上报PurchaseData数据。

    这样做的目的为了做日志等支付留痕使用。

  3. 应用服务器需对PurchaseData.jwsPurchaseOrder进行解码验签,成功后可得到PurchaseOrderPayload的JSON字符串。

    PurchaseData数据是加密的,解码验签后才能拿到里面的原始数据

方式二:通过服务器接收购买结果

尽管客户端后收到购买结果,我们为了安全性可不予理会,改用服务器接收购买结果。

  1. 开发者可以接入服务端关键事件通知,在用户购买成功时,IAP服务器将发送订单关键事件通知。

    用户完成支付后我们的服务器就就可以也收到一份购买结果

  2. 应用服务器可从NotificationPayload.NotificationMetaData中解析出purchaseToken和purchaseOrderId信息,并通过服务端订单状态查询接口向IAP服务器查询最新的订单信息,进一步确认订单的准确性。

    因为IAP服务器会发送多次关键事件通知,应用服务器需要查询自行查询是否已经发放过购买权益了,避免重复发货,同时也要将这一结果告知给IAP服务器,这样它就不会重发同类事件通知了。

  3. IAP服务器返回订单信息jwsPurchaseOrder。

  4. 应用服务器需对jwsPurchaseOrder进行解码验签,成功后可得到PurchaseOrderPayload的JSON字符串。

    华为发送给应用服务器的数据也是加密的,同样需要解码验签后才能拿到里面的原始数据

权益发放

待我们确认用户完成了支付,我们就应该发放购买的结果了

  1. 检查当前PurchaseOrderPayload是否已发放权益,未发放则发放相关权益,并记录对应的订单信息(PurchaseOrderPayload),用于后续检查权益发放状态。

  2. 应用客户端向应用服务器查询订单的发货状态。

    这说明非单机应用的话,发货过程应该尽量交由服务器完成。

  3. 应用服务器返回对应的发货状态以及订单信息(PurchaseOrderPayload)。

  4. 发货成功后应用客户端向IAP Kit发送finishPurchase请求,以此通知IAP服务器更新商品的发货状态,完成购买流程。

    尽管应用服务器发货成功后已经告知IAP服务器了,但是应用客户端的IAP Kit并不知道,它需要由我们的应用客户端告知发货状态

  5. 应用成功执行此步骤后,IAP服务器会将相应商品标记为已发货状态。对于消耗型商品,IAP服务器会将相应商品重新设置为可购买状态,用户即可再次购买该商品。对于非消耗型商品,用户购买后永久拥有,无法再次购买该商品。

充分了解了这一支付流程,后面我们就好进行实际的功能开发了,这个下次再讲。

更新时间:
上一篇:运动健康转换工具域名唯一使用www.fitconverter.com下一篇:到顶了

相关文章

推荐一款运动记录转换工具,支持华为小米运动记录导入高驰佳明RQrun等平台

使用过华为手表、小米手环的用户还是蛮多的,很多人在换手表品牌后就希望能将原平台的数据导出,然后再导入到新平台,但是因为平台之间壁垒,无法顺利完成迁移,前段时间我的朋友也遇到了类似的问题,同时还开发一 阅读更多…

华为手表(或手环)表盘主题制作

前几天把自己的小米手环升级成华为手环了,期间看了看表盘市场,这其实类似于主题市场吧,但是相比而言设计难度小不少,只是对配置能力要求稍高一点。 表盘有些是免费,其它的是3元、6元不等。 阅读更多…

华为honor(荣耀)长相标致,我喜欢

标致的长相 华为正式发布Honor!配置方面,将搭载高通MSM 8255T Scorpion处理器,主频可达1.4GHz,4.0英寸FWVGA显示屏,16:9宽屏设计,Android 2. 阅读更多…

运动记录转换工具怎么支持转换华为的跳绳记录到佳明的

最近在 运动记录转换工具 使用的过程中,有的跑友向我反馈希望能更加有效的支持下 跳绳 这种运动类型,毕竟很多女性朋友健身会采用跳绳的方式,网上不都说跳绳是燃脂瘦身最快的运动方式了,比跑步什么的效率 阅读更多…

华为HMS core SDK,返回错误码6003解决方案

最近想业余搞搞Android,所以就一边看android,一边看kotlin,第一个想了解和接入的SDK就是华为的HMS(对,支持国产)。 第一步想到的就是接入华为账号体系。 根据官网的提示对项 阅读更多…

微信开始试水微信公众号支付功能

今天微信公众号“QQ网购充值中心”推送了【2月充值优惠】活动,充50送5元, 抽ipad mini,提供了微信内支付功能,用户通过点击“阅读原文”,接下来的操作类似于pc上的。 阅读更多…

关注道招网公众帐号
友情链接
消息推送
道招网关注互联网,分享IT资讯,前沿科技、编程技术,是否允许文章更新后推送通知消息。
允许
不用了