公司有部分需求用到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 结算服务接入流程相关推荐

  1. coco2d-x游戏开发google play Google In-app-Billing 支付接入

    android google play接入一样的操作借用了网上别人博客的部分 改正的一些错误,主要介绍 cocos2d-x google play 接入不一样的部分 如果没有GooglePlay此处附 ...

  2. NR 5G UE初始接入流程

    5G UE初始接入流程 流程图 流程说明 1. UE向gNB-DU发送RRC连接请求消息. 2. gNB-DU包括RRC消息,并且如果UE被允许,则在F1AP INITIAL UL RRC MESSA ...

  3. 顺丰快递商家寄件发货接口API类型和接入流程方案【快递100接口Demo】

    顺丰快递对于商家和个人的隐私保护较为严格,对于操作频次高的用户会进行多次验证码确认信息和服务安全.如果需要大量地邮寄顺丰快递以及查询顺丰的快递物流轨迹信息,必须对接顺丰官方的寄件和查询API接口.企业 ...

  4. APP、网站等注册、登录、改密等发送验证码短信的接入流程---创蓝253云通讯

    1.登录 https://zz.253.com/site/login.html 2.获取接口API账号,密码:选择任意产品>激活>企业认证(上传公司营业执照) 3.申请签名(以公司简称或缩 ...

  5. ESP8266天猫精灵接入流程

    Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID/PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey ...

  6. 以美颜sdk为例,详解sdk接入流程

    Sdk,是可用于开发面向特定平台的软件应用程序的工具包.举个例子,如果你想组装一个模型车或飞机.在构建这个模型时,需要一整套物品去组装.sdk相当于组装它们所需的工具,包括装配说明等.在这信息化时代, ...

  7. v5行为验证使用介绍(三)- 程序接入流程

    目录 v5行为验证使用介绍(一)- 试探攻击的威胁 v5行为验证使用介绍(二)- 应用管理 v5行为验证使用介绍(三)- 程序接入流程 v5行为验证使用介绍(四)- Verify5Client.jav ...

  8. 五分钟了解机智云自助接入流程

    机智云平台是致力于物联网.智能硬件云服务的开放平台.机智云专注于提供智能云服务及物联网的软硬件一体化解决方案,帮助传统硬件厂商产品升级,快速实现硬件智能化. 要实现硬件的智能化,除了硬件本身外,还需要 ...

  9. 深入理解CDC原理与Debezium数据接入流程和原理

    深入理解CDC原理与Debezium数据接入流程和原理 一.什么是WAL 二.什么是CDC 三.理解CDC客户端 四.Debezium数据接入原理 1.postgresql数据库对CDC的支持 2.p ...

  10. YS动态口令系统接入流程

    动态口令是保护用户账户的一种常见有效手段,即用户进行敏感操作(比如登录)时,需要用户提供此动态生成的口令做二次身份验证,假设用户的口令被盗,如果没有动态口令,也无法进行登录或进行敏感操作,保护了用户的 ...

最新文章

  1. 霍山职业学校16届计算机学生,霍山职高(安徽霍山职业学校)
  2. CSS3之利用选择器和content属性在页面中插入内容
  3. Linux下安装配置EasyPR中文车牌识别系统
  4. moa 35 批量删除
  5. php 大数运算类,PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
  6. 我认为视频内容不会取代文字内容的原因
  7. java通过JNI接口调用C语言-初级
  8. html表格固定右侧列,jQuery锁定表头和固定列插件FixedTable
  9. 南京商标注册流程是什么
  10. c:forEach--------------JSTL
  11. 单片机diy作品鉴赏,初学者进来膜拜
  12. 13 Unveiling hidden migration and mobility patterns in climate stressed regions
  13. 移动商务,还是短信商务?
  14. JAVA(一)依赖注入的简单理解
  15. 计算机网络————IP地址分类以及网络地址的计算
  16. RISC-V Linux 启动流程分析
  17. ubuntu 环境搭建问题归纳
  18. 计算机二级考试不及格看不到分数吗,计算机二级查不到成绩是不是没过,不及格有分数吗...
  19. linux的自动挂载
  20. IAR集成开发环境中无法设置断点的问题

热门文章

  1. 9.3. Mathematical Functions and Operators
  2. yyyy-MM-dd 转化成 中国标准时间(Tue Dec 31 2019 00:00:00 GMT+0800 (中国标准时间))
  3. Fortran中分配数组大小
  4. win10系统如何telnet服务器,win10专业版官网系统如何开启telnet服务的办法
  5. 计算机专业我的生涯规划档案,大学生学业生涯规划登记表11.doc
  6. 上传图片到淘宝 API
  7. 纵横算法之三:算法到底考什么
  8. 远程接入Linux、unix、Windows工具-opentext ETX
  9. Android开发——数据库框架Suger遇到的大坑(依据列名查询不到数据解决办法)
  10. Tomcat CVE-2020-1938(CNVD-2020-10487) 漏洞复现