谷歌支付

回调通知

实时开发者通知参考指南 | Google Play 结算系统 | Android Developers

回调通知只会告知购买状态发生了变化,不会提供购买交易的相关信息,需要开发者在接收到了通知后调用谷歌接口自己查询

回调示例:

1
2
3
4
5
6
7
8
9
10
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}

Base64解码:

1
2
3
4
5
6
{
"version": string,
"packageName": string,
"eventTimeMillis": long,
"subscriptionNotification": SubscriptionNotification
}
属性名称 说明
version string 此通知的版本。最初,此值为“1.0”。此版本与其他版本字段不同。
packageName string 与此通知相关的应用的软件包名称(例如“com.some.thing”)。
eventTimeMillis long 事件发生的时间戳,以从公元纪年开始计算的毫秒数表示。
subscriptionNotification SubscriptionNotification 订阅相关信息

subscriptionNotification:

1
2
3
4
5
6
{
"version": string,
"notificationType": int,
"purchaseToken": string,
"subscriptionId": string
}
属性名称 说明
version string 此通知的版本。最初,此值为“1.0”。此版本与其他版本字段不同。
notificationType int 订阅的 notificationType 可以具有以下值:
(1) SUBSCRIPTION_RECOVERED - 从帐号保留状态恢复了订阅。
(2) SUBSCRIPTION_RENEWED - 续订了处于活动状态的订阅。
(3) SUBSCRIPTION_CANCELED - 自愿或非自愿地取消了订阅。如果是自愿取消,在用户取消时发送。
(4) SUBSCRIPTION_PURCHASED - 购买了新的订阅。
(5) SUBSCRIPTION_ON_HOLD - 订阅已进入帐号保留状态(如果已启用)。
(6) SUBSCRIPTION_IN_GRACE_PERIOD - 订阅已进入宽限期(如果已启用)。
(7) SUBSCRIPTION_RESTARTED - 用户已通过 Play > 帐号 > 订阅恢复了订阅。订阅已取消,但在用户恢复时尚未到期。如需了解详情,请参阅 恢复
(8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED - 用户已成功确认订阅价格变动。
(9) SUBSCRIPTION_DEFERRED - 订阅的续订时间点已延期。
(10) SUBSCRIPTION_PAUSED - 订阅已暂停。
(11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - 订阅暂停计划已更改。
(12) SUBSCRIPTION_REVOKED - 用户在到期时间之前已撤消订阅。
(13) SUBSCRIPTION_EXPIRED - 订阅已到期。
purchaseToken string 购买订阅时向用户设备提供的令牌。
subscriptionId string 所购买订阅的商品 ID(例如“monthly001”)。

订单查询接口(网址采用gRPC转码)

1
2
3
4
5
GET https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/subscriptionsv2/tokens/{token}

packageName string 购买此订阅的应用的软件包(例如“com.some.thing”)。

token string 必需。购买订阅时向用户设备提供的令牌。

返回值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"kind": string,
"regionCode": string,
"latestOrderId": string,
"lineItems": [
{
object (SubscriptionPurchaseLineItem)
}
],
"startTime": string,
"subscriptionState": enum (SubscriptionState),
"linkedPurchaseToken": string,
"pausedStateContext": {
object (PausedStateContext)
},
"canceledStateContext": {
object (CanceledStateContext)
},
"testPurchase": {
object (TestPurchase)
},
"acknowledgementState": enum (AcknowledgementState),
"externalAccountIdentifiers": {
object (ExternalAccountIdentifiers)
},
"subscribeWithGoogleInfo": {
object (SubscribeWithGoogleInfo)
}
}
属性名称 说明
kind string 此类型表示 androidpublisherservice 中的 SubscriptionPurchaseV2 对象。
regionCode string 订阅获得批准的用户的 ISO 3166-1 alpha-2 帐单邮寄地址所在国家/地区代码。
latestOrderId string 与购买订阅有关的最新订单的订单 ID。对于自动续订型订阅,这是注册订单的订单 ID(如果尚未续订),或最新的周期性订单 ID(成功、待处理或遭拒的订单)。对于预付费订阅,这是与所查询的购买令牌相关联的订单 ID。
lineItems[] object 订阅购买交易的商品级信息。同一笔购买交易中的所有商品都应全部使用 AutoRenewingPlan,或者全都使用 PrepaidPlan。
startTime string 授予订阅的时间。没有为待处理的订阅设置订阅(订阅已创建,但在注册期间正在等待付款)。
时间戳采用 RFC3339 世界协调时间 (UTC)(即“祖鲁时”)格式,分辨率为纳秒级,最多包含九个小数位。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"
subscriptionState enum 如果旧订阅的购买令牌是以下任一项,则视为购买令牌:* 已取消但未过期的订阅重新注册 * 升级/降级之前的订阅。* 将预付费订阅转换为自动续订型订阅。* 将自动续订型订阅转换为预付费订阅。* 为预付费订阅充值。
pausedStateContext object 有关暂停的订阅的其他背景信息。仅当订阅当前具有 subscriptionState SUBSCRIPTION_STATE_PAUSED 时才存在。
canceledStateContext object 有关取消订阅的其他背景信息。仅当订阅当前具有 subscriptionState SUBSCRIPTION_STATE_CANCELED 时才存在。
testPurchase object 仅当此订阅购买交易是测试购买交易时,此字段才会显示。
acknowledgementState enum 订阅的确认状态。
externalAccountIdentifiers object 第三方服务中的用户帐号标识符。
subscribeWithGoogleInfo object 与通过“通过 Google 订阅”进行的购买交易相关联的用户个人资料。

订阅状态:

枚举
SUBSCRIPTION_STATE_UNSPECIFIED 未指定订阅状态。
SUBSCRIPTION_STATE_PENDING 订阅已创建,但在注册期间正在等待付款。在此状态下,所有商品都正在等待付款。
SUBSCRIPTION_STATE_ACTIVE 订阅处于有效状态。- (1) 如果订阅是自动续订方案,则至少有一个项目已自动续订且未过期。- (2) 如果订阅是预付费方案,至少有一项不会过期。
SUBSCRIPTION_STATE_PAUSED 订阅已暂停。仅当订阅是自动续订方案时,这个状态才可用。在此状态下,所有内容都会处于暂停状态。
SUBSCRIPTION_STATE_IN_GRACE_PERIOD 订阅处于宽限期。仅当订阅是自动续订方案时,这个状态才可用。在此状态下,所有内容都处于宽限期。
SUBSCRIPTION_STATE_ON_HOLD 订阅处于暂停状态(已暂停)。仅当订阅是自动续订方案时,这个状态才可用。在此状态下,所有内容都会处于保全状态。
SUBSCRIPTION_STATE_CANCELED 订阅已取消,但尚未到期。仅当订阅是自动续订方案时,这个状态才可用。所有内容的 autoRenewEnabled 都设为 false。
SUBSCRIPTION_STATE_EXPIRED 订阅已过期。所有项的过期时间均为过去时间。

回调配置

网域验证

欢迎使用 Google Search Console

image-20230409194342210

image-20230409194443417

添加网域到Google Console

Google Console

https://play.google.com/console

google pay 配置sub/pub回调_google play怎么设置订阅回调地址_spcof的博客-CSDN博客