Поделиться через


Предоставление покупок из приложения с помощью API цифровых товаров

Если прогрессивное веб-приложение (PWA) указано в Microsoft Store, вы можете предоставлять продукты и подписки из приложения с помощью API цифровых товаров и API запроса на оплату.

API цифровых товаров

API цифровых товаров — это интерфейс между приложением PWA и Microsoft Store. API цифровых товаров поддерживает:

  • Запрос сведений о цифровом элементе из серверной части Microsoft Store, таких как имя, описание и региональная цена.
  • Использование или подтверждение покупок.
  • Проверка цифровых элементов, которые в настоящее время принадлежат пользователю.
  • Проверка журнала покупок пользователя.

См. следующие статьи:

API запроса на оплату

API запроса на оплату обрабатывает фактическую платежную транзакцию, когда пользователь совершает покупку. API запроса на оплату использует сведения об элементе, предоставляемые API цифровых товаров, для совершения покупки в приложении с помощью метода выставления счетов, настроенного пользователем в Microsoft Store.

См. следующие статьи:

Включение API цифровых товаров

API цифровых товаров в настоящее время доступен для всех каналов в Microsoft Edge. Чтобы протестировать API, убедитесь, что версия Edge или 134.0.3124.51 выше.

Проверка доступности API цифровых товаров

Чтобы определить, есть ли у вас доступ к API на веб-сайте, проверка, существует ли getDigitalGoodsService метод в объекте window :

if ('getDigitalGoodsService' in window) {
  // The Digital Goods API is supported.
} else {
  console.log('DigitalGoodsService is not available.');
  // Use another payment method.
}

См. также:

Подключение к службе выставления счетов Microsoft Store (window.getDigitalGoodsService метод)

getDigitalGoodsService Используйте метод объекта для window подключения к службе выставления счетов Microsoft Store. Возвращается интерфейс DigitalGoodsService .

API цифровых товаров был разработан для обеспечения совместимости с различными браузерами и цифровыми магазинами, аналогично тому, как API запроса на оплату не зависит от браузера и может использоваться с разными поставщиками платежных услуг. Чтобы получить экземпляр службы для выставления счетов в Microsoft Store, передайте строку "https://store.microsoft.com/billing" в качестве метода оплаты в getDigitalGoodsService метод .

Если метод выдает ошибку, способ оплаты выставления счетов в Microsoft Store недоступен (например, когда пользователь обращается к PWA через браузер). Кроме того, рассмотрите возможность предоставления другого метода оплаты для транзакций.

if (window.getDigitalGoodsService === undefined) {
  // The Digital Goods API isn't supported in this context.
  return;
}
try {
  const digitalGoodsService = await window.getDigitalGoodsService("https://store.microsoft.com/billing");
  // Use the service here.
  ...
} catch (error) {
  // The preferred service provider is not available.
  // Use a web-based payment flow instead.
  return;
}

Этот способ getDigitalGoodsService("https://store.microsoft.com/billing") оплаты доступен только для PWA, установленного из Microsoft Store в Windows. Другие параметры не требуются.

См. также:

Запрос сведений об элементе (getDetails метод)

getDetails Используйте метод интерфейса для DigitalGoodsService запроса сведений об элементе.

После подключения службы цифровых товаров к Microsoft Store вы можете использовать API для доступа к информации о продукте и покупках. Метод getDetails позволяет получить сведения о элементах, настроенных в Центре партнеров. Отображение таких сведений, как название продукта, описание и цена, в пользовательском интерфейсе приложения, чтобы пользователь знал, что доступно для покупки.

Метод getDetails принимает список идентификаторов элементов, которые соответствуют идентификаторам продуктов из приложения и подписок, созданных в Центре партнеров.

const itemDetails = await digitalGoodsService.getDetails(['shiny_sword', 'gem', 'monthly_subscription']);

for (item of itemDetails) {
  const priceStr = new Intl.NumberFormat(
      locale,
      {style: 'currency', currency: item.price.currency}
    ).format(item.price.value);

  // Do something with the item's data, such as displaying it in the PWA's UI.
  displayProductItem(item.itemId, item.title, priceStr, item.description);
}

Возвращаемая itemDetails последовательность может находиться в любом порядке и не включать элемент, если элемент не существует на сервере (то есть, если между входным и выходным списками нет соответствия 1:1).

Идентификатор элемента — это строка, представляющая первичный ключ элементов. В Microsoft Store идентификатор элемента — InAppOfferToken. Нет функции для получения списка идентификаторов элементов; Идентификаторы элементов должны быть жестко закодированы в клиентском коде или получить с собственного сервера (сервера разработчика).

price Элемент является объектом , который содержит текущую PaymentCurrencyAmount цену товара в текущем регионе и валюте пользователя. Предназначен price для форматирования для текущего языкового стандарта пользователя с помощью Intl.NumberFormat, как показано выше.

См. также

Спецификация API цифровых товаров

Разработка Windows App:

W3C:

MDN:

Приобретение элемента (PaymentRequest конструктор и show метод)

После отображения продуктов и сведений для пользователя реализуйте поток покупки с помощью API запроса на оплату. Чтобы приобрести элемент, сначала создайте запрос, содержащий сведения об элементе, с помощью конструктора PaymentRequest , а затем используйте show метод PaymentRequest объекта для запуска потока оплаты.

В сочетании с API цифровых товаров единственным обязательным входным параметром для конструктора PaymentRequest является methodData. В параметре конструктора:

  • В элементе supportedMethods укажите выставление счетов в Microsoft Store в качестве метода оплаты, а в качестве строки 'https://store.microsoft.com/billing'.
  • В элементе data передайте в itemId качестве sku.
const details = await digitalGoodsService.getDetails(['monthly_subscription']);
const item = details[0];

const request = new PaymentRequest([
  {
    supportedMethods: 'https://store.microsoft.com/billing',
    data: { sku: item.itemId }
  }
]);

Затем вызовите show метод PaymentRequest объекта , чтобы запустить поток оплаты:

const response = await request.show();

Откроется пользовательский интерфейс покупки в Магазине для пользователя, где пользователь может просмотреть сведения о продукте, который он пытается приобрести. Во время этого процесса текущий сеанс браузера временно отключается до завершения потока покупки. Пользователь может либо отменить транзакцию, либо продолжить оплату:

  • Если пользователь отменяет платеж, обещание, возвращаемое методом show , будет отклонено с ошибкой.

  • Если пользователь успешно оплатит и завершит покупку, обещание будет разрешаться с помощью PaymentResponse. В свойстве details ответа на оплату возвращается токен покупки.

См. также:

Использование покупки (consume метод)

consume Используйте метод интерфейса для DigitalGoodsService использования покупки.

Потребляемая покупка — это покупка, которая предназначена для приобретения несколько раз. Потребляемая покупка обычно должна быть помечена как "потребляемая", прежде чем покупка может быть приобретена пользователем снова. Примером потребляемой покупки является внутриигровая мощность, которая делает игрока сильнее в течение короткого периода времени.

Чтобы пометить покупку как "использованную", используйте consume метод :

digitalGoodsService.consume(purchaseToken);

См. также:

  • Метод DigitalGoodsServiceconsume() интерфейса.

Проверка существующих покупок (listPurchases метод)

listPurchases Используйте метод интерфейса для DigitalGoodsService проверка существующих покупок. Этот метод возвращает сведения о существующих покупках пользователя. Этот метод позволяет клиенту получить список элементов, которые в настоящее время принадлежат пользователю или приобрели их. Это может потребоваться для выполнения любого из следующих действий:

  • Проверьте наличие прав, например, активна ли подписка, рекламный код или постоянное обновление.

  • Восстановление после перебоев в сети во время покупки, например, когда элемент приобретен, но еще не подтвержден.

Метод listPurchases возвращает идентификаторы элементов и маркеры покупки. Перед предоставлением права необходимо проверить идентификатор возвращаемого элемента или возвращенный токен покупки с помощью API прямого подключения от разработчика к поставщику, как показано ниже.

const purchaseList = await digitalGoodsService.listPurchases();

for (const purchase of purchaseList) {
  // Handle the purchase data in your PWA.
  verifyAndGrantEntitlement(purchase.itemId, purchase.purchaseToken);
}

Метод listPurchases не возвращает использованные продукты или подписки с истекшим сроком действия.

См. также:

Получение журнала покупок (listPurchaseHistory метод)

listPurchaseHistory Используйте метод интерфейса, DigitalGoodsService чтобы получить журнал покупок.

Этот метод возвращает список, PurchaseDetails содержащий и purchaseToken для каждой itemId покупки. Список включает последнюю покупку, совершенную пользователем для каждого элемента, независимо от того, истек срок действия, отмена или потребление покупки.

const purchaseList = await digitalGoodsService.listPurchaseHistory();

for (const purchase of purchaseList) {
  // Handle the expired purchase data in your PWA.
  verifyAndCheckExpiredEntitlement(purchase.itemId, purchase.purchaseToken);
}

См. также:

См. также

GitHub:

MDN:

W3C:

Разработка Windows App: