Pix*_*xel 5 google-api-php-client android-inapp-purchase
鉴于我的服务器端点已收到与 Google In App Billing 购买相关的购买令牌,我该如何以编程方式对其进行验证并获得对其内容的访问权限?
我已经可以使用以下方法验证 Google登录令牌php
$client = new Google_Client(['client_id' => $client_id]);
$payload = $client->verifyIdToken($token);
if ($payload)
return $payload['sub'];
Run Code Online (Sandbox Code Playgroud)
但是我将如何使用Google_Client来验证购买令牌并访问其内容。
它真的只是GET像下面的 Ruby 示例一样将 a 发送到 Google 服务器的情况吗?
或者他们是Google_Client我应该调用的特定命令?
我开始认为这是在php使用中复制提到的 Ruby 代码OAuth2或其他东西的情况,因为 Google Docs 确实说一旦服务器拥有购买令牌:
使用 Google Play Developer API 的 Subscriptions 和 In-App Purchases 部分执行 GET 请求以从 Google Play 检索购买详细信息(Purchases.products 用于一次性产品购买或 Purchases.subscriptions 用于订阅)。GET 请求包括应用程序包名称、产品 ID 和令牌(购买令牌)。
如果可能的话只是想澄清一下?谢谢。
要在您的客户端应用程序中验证和获取由 Google 应用程序内购买产生的购买令牌的详细信息,请使用以下代码 PHP:
putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/mydir/credentials.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/androidpublisher');
$service = new Google_Service_AndroidPublisher($client);
$purchase = $service->purchases_products->get($packageName, $skuID, $purchaseToken);
Run Code Online (Sandbox Code Playgroud)
然后您可以通过通常的方式访问您需要的所有信息,例如
echo $purchase['orderId'];
Run Code Online (Sandbox Code Playgroud)
访问者名称的完整列表可以在此处的 Google 文档中找到https://developers.google.com/android-publisher/api-ref/purchases/products
packageName 是您的应用程序包的名称,skuID 是被管理产品的字符串 SKU ID,您可以在 Google Developer Console 中创建它。购买令牌是在应用程序购买成功时在客户端应用程序中返回给您的令牌,因此您需要通过 HTML 上的 POST 命令将其发送到您的服务器端点。不要忘记使用 SSL/TLS 来执行此操作。
当您在设置/API 访问权限下创建新的服务帐户时,将会从 Google Developer Consoler 自动下载 credentials.json 文件。
这里也是 JavaScript 版本:
const { google } = require('googleapis');
const auth = new google.auth.GoogleAuth({
keyFile: path.join(__dirname, 'credentials.json'),
scopes: 'https://www.googleapis.com/auth/androidpublisher',
});
const client = await auth.getClient();
google.options({auth: client});
const androidpublisher = google.androidpublisher({ version: 'v3' });
const res = await androidpublisher.purchases.products.get({
packageName: 'your.package.name',
productId: ‘your_sku_id',
token: your_purchase_token,
});
console.log(res.data);
Run Code Online (Sandbox Code Playgroud)
有关 API 访问的一般详细信息,请参阅Google API 文档(例如此处)(上面的代码可以很容易地调整为与其他 API 一起使用)。
| 归档时间: |
|
| 查看次数: |
3268 次 |
| 最近记录: |