Google内购完成后,服务端需要校验订单的状态是否正确(是否已经成功付款)。

一、申请认证

参考https://developers.google.cn/android-publisher/getting_started申请流程

  1. 进入Google控制台,选择开发者者账号登陆

  2. 设置API权限(默认未开通,点击开通即可,然后创建一个新的项目)。

  3. 创建一个Google Cloud平台服务账号

  4. 创建秘钥,选择json格式

  5. 添加将刚刚注册的那个服务账号为新用户,关联对应的app,授予以下权限

二、服务端校验订单

服务端校验订单要准备以下内容:

  1. 第一步申请到的认证凭据
  2. 用户成功付款之后,客户端传递给服务端的相关订单信息,消息如下
{"packageName": "xxx", # 应用包名"purchaseState": 0,  # 付款状态,0为已购买"orderId": "GPA.xxxxxx",  # 订单ID"purchaseTime": xx, # 付款时间"productId": "001",  # 产品ID"quantity": 1, # 数量"purchaseToken": "xxxxx"  # Token,可用于后续的验证

接下来根据purchases.products 这个API来查询订单状态。这是一个Rest API,接下来使用python来请求

# pip3 install  oauth2client google-api-python-client import httplib2, json
from pprint import pprint
from oauth2client.service_account import ServiceAccountCredentialspackageName = "xxx"
productId =  "xxx"
token = "xxx"URL = f"https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}"credentials = ServiceAccountCredentials.from_json_keyfile_name("google-sa.json",    # 使用上面申请到的凭据scopes="https://www.googleapis.com/auth/androidpublisher",
)# 注意需要能访问到google,这里开了代理
http = httplib2.Http(proxy_info=httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 7890))
http = credentials.authorize(http)
resp, content = http.request(URL, "GET")
pprint(json.loads(content))

返回结果如下,一般我们就是验证purchaseState是否为0,对于消耗性的内购应用,验证consumptionState字段是否为1

{"acknowledgementState": 1,"consumptionState": 1,"developerPayload": "",  # 如果有透传我们自定义的字段,例如自己系统的订单ID,这里会显示"kind": "androidpublisher#productPurchase","orderId": "GPA.xxx","purchaseState": 0,"purchaseTimeMillis": "xxx","purchaseType": 0,"regionCode": "US"
}

完整的返回字段说明参考purchases.products/acknowledge

{"kind": string,"purchaseTimeMillis": string,"purchaseState": integer,"consumptionState": integer,"developerPayload": string,"orderId": string,"purchaseType": integer,"acknowledgementState": integer,"purchaseToken": string,"productId": string,"quantity": integer,"obfuscatedExternalAccountId": string,"obfuscatedExternalProfileId": string,"regionCode": string
}

Python Google内购服务端验证相关推荐

  1. postman关闭ssl验证_【第5期】springboot:苹果内购服务端验证

    ​苹果内购: 只要你在苹果系统购买APP中虚拟物品(虚拟货币,VIP充值等),必须通过内购方式进行支付,苹果和商家进行三七开 验证模式有两种: Validating Receipts With the ...

  2. ios内购php验证码,PHP (Laravel) 实现 iOS 内购服务端验证

    /** * @Author woann * @param Request $request * @return \Illuminate\Http\JsonResponse * @des ios内购支付 ...

  3. iOS内购 - 服务端票据验证及漏单引发的思考

    因业务需要实现了APP内购处理,但在过程中出现了部分不可控的因素,导致部分用户反映有充值不成并漏单的情况. 仔细考虑了几个付费安全上的问题,凡是涉及到付费的问题都很敏感,任何一方出现损失都是不能接受的 ...

  4. java服务端验证谷歌支付Google Pay

    翻阅大半个谷歌,对服务器验证账单,讲的少之又少,还TM没有看懂 查阅整个百度,发现几乎所有demo都是用世界上最好的语言php写的,这我 在此坐下记录希望能帮到有需要的人 支付流程 前端支付完成,谷歌 ...

  5. ios内购二次验证安全性问题_苹果IOS内购二次验证返回state为21002的坑

    项目是三四年前的老项目,之前有IOS内购二次验证的接口,貌似很久都没用了,然而最近IOS的妹子说接口用不了,让我看看啥问题.接口流程时很简单的,就是前端IOS在购买成功之后,接收到receipt后进行 ...

  6. Google 内购总结

    Google 内购坑之总结 最近项目中增加了 Google 内购的内容,接入并不难,在这里总结下接入过程中的细节和坑的地方. 内购接入过程 如何接入官方的教程写的很详细(传送门),并且官方也提供了一个 ...

  7. ios内购二次验证安全性问题_iOS内购之二次验证

    开篇:关于iOS内购整体流程网上能找到很多.我抽丝剥茧,着重说一下二次验证及收据回传的数据问题. 二次验证 关于二次验证,其实有两种做法,第一种是在app端验证,第二种也是安全防盗的一种,在服务端进行 ...

  8. JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践

    任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...

  9. iOS开发——高级技术内购服务

    内购服务 大家都知道做iOS开发本身的收入有三种来源:出售应用.内购和广告.国内用户通常很少直接 购买应用,因此对于开发者而言(特别是个人开发者),内购和广告收入就成了主要的收入来源.内购营销模式,通 ...

最新文章

  1. linux数据库都备份什么,Linux运维学习之数据库备份与恢复
  2. linux多核单进程,Linux的在多核处理器3个处理(每个进程在不同的核心上运行)之间共享存储器/ SMP...
  3. [蓝桥杯][2018年第九届真题]日志统计(树状数组)
  4. PHP---错误处理(error)
  5. mipi协议_Cadence发布业界首款面向多协议PHY的验证IP产品
  6. 配置Sublime Text3和MASM32编译汇编的问题汇总
  7. python邮件收发
  8. nb信号和4g信号_【行业】万物互联的世界NB-IoT VS 4G,到底哪个更能打?
  9. 大数据分析师需要掌握哪些技能
  10. html打印预览空白,win7系统下使用IE浏览器预览打印页面时显示页面空白如何解决...
  11. html文字段落i排版,i排版基础操作GIF版
  12. 只能输入数字的正则表达式
  13. [FirefoxOS_开发环境]Linux和Ubuntu环境下B2G(Firefox OS)安装、编译、测试教程集合
  14. Others8_如何在Chrome中导入和导出密码
  15. 数栈产品分享:干货解读数据中台产品「模块化」设计思路
  16. Linux查看流量情况以及关闭流量端口
  17. 高精度在线计时器(秒表)
  18. apt-get update出现无法连接上 archive.ubuntukylin.com:10006
  19. ClickHouse的入门、使用和优化
  20. 计算机应用基础试卷分析报告,计算机应用基础 试卷分析.doc

热门文章

  1. 计算机主机怎么关,小编教你电脑防火墙怎么关
  2. Redis学习最终版:面试题合集
  3. QtCreator不能加载qrc里面的资源
  4. 推荐算法-PNN(Product Network)
  5. 利用脚本帮找回微信上删除了“好友“
  6. 人工智能算法在外卖配送系统中的应用和前景
  7. Allegro Aurora <III>---Crosstalk
  8. 3GPP 文档查看方法及部分关键协议
  9. 我的世界服务器唱片修改,《我的世界》替换原版音效及唱片文件方法图文详解...
  10. ffmpy.FFRuntimeError: exited with status 1