google play 结算服务接入流程
公司有部分需求用到google play 结算服务(google 订阅),去实现商品的订阅,所以研究了一下,记录一下这次开发流程。
流程说明:
订阅流程:
用户从 Google Play 下载安装 APP, 通过APP的支付接口调用 Google Play 的支付界面, 成功后,App 获取到 Google 返回的携带 Token, productId, 与本APP的用户信息, 发送到后端, 进行验证, 验证成功后 发放/开通 相应权限;
续订流程:
订单续订后,google会发生通知到服务端(需要提供一个api),订单只要有状态变化,服务端都会收到通知。启用实时开发者通知后,订阅项目有更新,服务端就会收到Cloud Pub/Sub 推送的购买令牌,然后利用购买令牌去请求Google Play Developer API,以获取订单完整信息,然后将订单信息更新后端。
Google 实时开发者通知文档:https://developer.android.com/google/play/billing/realtime_developer_notifications.html#scale_notification_processing
正式开发:
官方接入文档:
https://developer.android.com/google/play/developer-api
oauth认证:
developer Api 需要oauth认证:这里是后端认证,选择的是服务账户的方式。(权限生效要24小时)
文档:https://developers.google.com/android-publisher/getting_started
配置好后,会下载下来一个json文件,格式如下:
Google 订阅信息验证:
参数说明:
https://developers.google.com/android-publisher/api-ref/purchases/subscriptions
第一种方式:
直接请求google api:
POST https://www.googleapis.com/androidpublisher/v3/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token:acknowledgePath parameters:
packageName string 购买此订阅的应用程序的包名称(例如: 'com.some.thing'.)subscriptionId string 购买的订阅ID (例如,'monthly001')token string 购买订阅时提供给用户设备的令牌。
加密token方法:
https://developers.google.com/identity/protocols/oauth2/service-account#jwt-auth
第二种方式:
使用google 官方client :
https://developers.google.com/api-client-library:
我是使用的php client:
$client = new \Google_Client();$client->setAuthConfig(EASYSWOOLE_ROOT . '/google_services_account.json');$client->addScope('https://www.googleapis.com/auth/androidpublisher');$service = new \Google_Service_AndroidPublisher($client);$postBody = new \Google_Service_AndroidPublisher_SubscriptionPurchasesAcknowledgeRequest();$postBody->setDeveloperPayload("test");$purchase = $service->purchases_subscriptions->acknowledge($packageName,$subscriptionId,$token,$postBody);return $purchase;
Google实时开发者通知:
有两种类型,拉取和推送(提供一个api)
消息格式:
{"message": {"attributes": {"key": "value"},"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9","messageId": "136969346945"},"subscription": "projects/myproject/subscriptions/mysubscription"
}
message里面的data是需要的数据,是base64加密的,解密后可以得到购买的用户令牌,后端可以请求google的api,进行订单的其他操作
google play 结算服务接入流程相关推荐
- coco2d-x游戏开发google play Google In-app-Billing 支付接入
android google play接入一样的操作借用了网上别人博客的部分 改正的一些错误,主要介绍 cocos2d-x google play 接入不一样的部分 如果没有GooglePlay此处附 ...
- NR 5G UE初始接入流程
5G UE初始接入流程 流程图 流程说明 1. UE向gNB-DU发送RRC连接请求消息. 2. gNB-DU包括RRC消息,并且如果UE被允许,则在F1AP INITIAL UL RRC MESSA ...
- 顺丰快递商家寄件发货接口API类型和接入流程方案【快递100接口Demo】
顺丰快递对于商家和个人的隐私保护较为严格,对于操作频次高的用户会进行多次验证码确认信息和服务安全.如果需要大量地邮寄顺丰快递以及查询顺丰的快递物流轨迹信息,必须对接顺丰官方的寄件和查询API接口.企业 ...
- APP、网站等注册、登录、改密等发送验证码短信的接入流程---创蓝253云通讯
1.登录 https://zz.253.com/site/login.html 2.获取接口API账号,密码:选择任意产品>激活>企业认证(上传公司营业执照) 3.申请签名(以公司简称或缩 ...
- ESP8266天猫精灵接入流程
Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID/PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey ...
- 以美颜sdk为例,详解sdk接入流程
Sdk,是可用于开发面向特定平台的软件应用程序的工具包.举个例子,如果你想组装一个模型车或飞机.在构建这个模型时,需要一整套物品去组装.sdk相当于组装它们所需的工具,包括装配说明等.在这信息化时代, ...
- v5行为验证使用介绍(三)- 程序接入流程
目录 v5行为验证使用介绍(一)- 试探攻击的威胁 v5行为验证使用介绍(二)- 应用管理 v5行为验证使用介绍(三)- 程序接入流程 v5行为验证使用介绍(四)- Verify5Client.jav ...
- 五分钟了解机智云自助接入流程
机智云平台是致力于物联网.智能硬件云服务的开放平台.机智云专注于提供智能云服务及物联网的软硬件一体化解决方案,帮助传统硬件厂商产品升级,快速实现硬件智能化. 要实现硬件的智能化,除了硬件本身外,还需要 ...
- 深入理解CDC原理与Debezium数据接入流程和原理
深入理解CDC原理与Debezium数据接入流程和原理 一.什么是WAL 二.什么是CDC 三.理解CDC客户端 四.Debezium数据接入原理 1.postgresql数据库对CDC的支持 2.p ...
- YS动态口令系统接入流程
动态口令是保护用户账户的一种常见有效手段,即用户进行敏感操作(比如登录)时,需要用户提供此动态生成的口令做二次身份验证,假设用户的口令被盗,如果没有动态口令,也无法进行登录或进行敏感操作,保护了用户的 ...
最新文章
- 霍山职业学校16届计算机学生,霍山职高(安徽霍山职业学校)
- CSS3之利用选择器和content属性在页面中插入内容
- Linux下安装配置EasyPR中文车牌识别系统
- moa 35 批量删除
- php 大数运算类,PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
- 我认为视频内容不会取代文字内容的原因
- java通过JNI接口调用C语言-初级
- html表格固定右侧列,jQuery锁定表头和固定列插件FixedTable
- 南京商标注册流程是什么
- c:forEach--------------JSTL
- 单片机diy作品鉴赏,初学者进来膜拜
- 13 Unveiling hidden migration and mobility patterns in climate stressed regions
- 移动商务,还是短信商务?
- JAVA(一)依赖注入的简单理解
- 计算机网络————IP地址分类以及网络地址的计算
- RISC-V Linux 启动流程分析
- ubuntu 环境搭建问题归纳
- 计算机二级考试不及格看不到分数吗,计算机二级查不到成绩是不是没过,不及格有分数吗...
- linux的自动挂载
- IAR集成开发环境中无法设置断点的问题
热门文章
- 9.3. Mathematical Functions and Operators
- yyyy-MM-dd 转化成 中国标准时间(Tue Dec 31 2019 00:00:00 GMT+0800 (中国标准时间))
- Fortran中分配数组大小
- win10系统如何telnet服务器,win10专业版官网系统如何开启telnet服务的办法
- 计算机专业我的生涯规划档案,大学生学业生涯规划登记表11.doc
- 上传图片到淘宝 API
- 纵横算法之三:算法到底考什么
- 远程接入Linux、unix、Windows工具-opentext ETX
- Android开发——数据库框架Suger遇到的大坑(依据列名查询不到数据解决办法)
- Tomcat CVE-2020-1938(CNVD-2020-10487) 漏洞复现