Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)

访客 254 0

请点击此链接查看原文:https://blog.csdn.net/m0_51939215/article/details/124293978?spm=1001.2014.3001.5502

Google支付服务器端验证已经停止使用老的方式,现在采用新的验证方式,请务必记录下来。

在进行服务端验证之前,需要先进行一些准备工作。

  1. 创建 API 项目与登录项目不是同一个。

  1. 启用Google Play Android Developer API

  1. OAuth同意屏幕是指在开发者授权账号登录时,弹出的登录页面。

  1. 创建OAuth客户端ID用于Web应用

  1. 在Google Play开发者后台的API权限菜单中,您可以关联刚刚创建的项目。请注意,一个Google Play账号只能关联一个API项目。通过这个项目,您可以查询与该账号相关的所有应用程序订单信息。

  1. 点击授权页面,使用Google开发者账号为项目进行授权,获取代码

  1. 通过code,获取refreshToken。这个token只有第一次才会返回,需要永久储存(这个refreshtoken很重要,需要保存下来)。如果丢失了,只能重新创建一个oauth客户端ID,并重复步骤6、7,获取新的refreshToken。

  1. 使用refreshToken刷新,获取新的accessToken后,即可通过该accessToken查询订单状态。需要注意的是,accessToken通常只在5分钟左右有效,在此期限过后,需再次使用refreshToken来获取新的accessToken。

Step 1

在Google API控制台上创建一个API项目

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第1张图片-谷歌商店上架

setp2

激活Google Play Android Developer API

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第2张图片-谷歌商店上架Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第3张图片-谷歌商店上架

搜索“Google Play Android Developer API”

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第4张图片-谷歌商店上架

开启“Google Play Android Developer API”

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第5张图片-谷歌商店上架

setp3

开启同意屏幕

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第6张图片-谷歌商店上架

填上必填项

只需填写必填项即可,此授权同意屏幕会在请求code时向我们的开发人员展示。无论填写什么都没有关系。

Step 4

创建OAuth 2.0客户端标识

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第7张图片-谷歌商店上架

创建页面和创建成功后的修改页面可以获取到clientId和clientSecret

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第8张图片-谷歌商店上架

至此,API项目已成功创建。

setp5

与Google Play后台关联的API项目

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第9张图片-谷歌商店上架

Step 6

获取code

地址:https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri={填写的重定向地址}&client_id={创建的clientId}

请将上述{XX}替换为您在创建API项目时填写的重定向地址和clientId,然后将链接复制到浏览器中打开。这样就会自动跳转至授权界面,并使用您的开发者账号进行授权登录。

请使用浏览器打开

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第10张图片-谷歌商店上架

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第11张图片-谷歌商店上架

这里可以看到,重定向地址上有两个参数code和scope,我们只需要code就行了,这里的code是urlencode后的,使用时需要decode

setp7

兑换refreshToken所需的代码

地址:https://accounts.google.com/o/oauth2/token

请求方式:POST

参数:grant_type=authorization_code

code = 获取到的code(需要检查code中是否含有%号,如果有则需要进行urldecode处理)

在创建API项目时,需要提供客户端ID(client_id)。

将client_secret改为clientSecret(客户端密钥),用于创建API项目时。

重定向地址是在创建API项目时指定的redirect_uri。

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第12张图片-谷歌商店上架

在这里,我们成功获取到了refreshToken。请注意,重要的是要牢记refreshToken并妥善保存。它只会在第一次请求中返回,并且后续相同的请求不会再返回refreshToken。如果不小心丢失了该token,您需要重新创建一个WebClientId。

Step 8

获取accessToken的方法是使用refreshToken进行刷新。

地址:https://accounts.google.com/o/oauth2/token

请求方式:POST

参数:grant_type=refresh_token

refresh_token=刚刚获得的refreshToken

在创建API项目时,需要提供客户端ID(client_id)。

将client_secret改为clientSecret(客户端密钥),用于创建API项目时。

Google支付服务端验证是指通过Google的支付平台进行交易时,服务器对交易信息进行验证的过程。(谷歌支付服务不可用)(谷歌支付528387)-第13张图片-谷歌商店上架

setp9

查询订单状态

请点击以下链接查看购买产品的详细信息:https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}?access_token={access_token}

包名:app的包名必须与创建登录API项目时所使用的Android客户端ID的包名相同。

商品ID(productId)是指与购买商品相对应的唯一标识符。

Token: 购买成功后,您可以通过调用Purchase对象的getPurchaseToken()方法来获取购买令牌。

access_token:我们从上面获取到的accessToken

请求方式:GET

返回结果:

  1. {

改写为:
  1. {

  1. purchaseTimeMillis: 1623980699933, // The time of product purchase, measured in milliseconds since the epoch (January 1, 1970).

  1. purchaseState: 0, // The purchase status of the order. Possible values are: 0. Purchased 1. Cancelled 2. Pending

  1. consumptionState: 0, //产品的消费状态。可能的取值为:0. 尚未消耗 1. 已消耗

  1. developerPayload:

  1. orderId: GPA.3398-6726-1036-80298, // Google订单号

  1. purchaseType: 0, 改写为: 购买类型: 0,

  1. acknowledgementState: 0, 改写为: acknowledgementState is set to 0.

  1. kind: androidpublisher#productPurchase,

  1. obfuscatedExternalAccountId: SDK2106180944530041, // This field is used to store user information during customer payment, as advised by Google. It should not be too long, otherwise the client may not be able to process the payment.

  1. "obfuscatedExternalProfileId": "",

  1. "regionCode": "HK"

  1. 很抱歉,你提供的信息不足以让我进行修改。请提供更多上下文或具体要求,我将竭尽全力帮助你进行编辑。

支付验证流程已经顺利完成,现在让我们来总结一下笔者在试用过程中遇到的一些挑战。

  • 为了能够进行支付,所有的Google应用都必须通过封闭测试并经过审核。根据文档所述,只需进行内部测试即可满足要求。因此,笔者每次都将应用置于封闭测试状态下才能顺利完成支付操作。

  • 在firebase中创建了项目,会自动同步到google api后台,不用再去单独创建登录使用的项目

  • 登录使用的API项目和查询支付使用的API项目是两个独立的项目,彼此之间没有任何干扰。查询支付的API项目与每个Google Play账号对应一个独立的项目。通过这个查询支付的API项目,可以对该Google Play账号中所有应用进行支付查询操作。

  • 在获取code授权api项目时,请确保使用Google Play后台的开发者账号进行授权。

标签: 谷歌商店上架 谷歌支付服务 过程

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~