Пошаговый туториал для организации in-app purchases в своем приложении для WIndows Phone 8
Шаг первый: Добавление продукта в Windows Phone Dev Center
С этим пунктом всё просто, идём в Windows Phone Dev Center -> Apps -> APPName -> Products -> Add in-app product.
Старательно заполняем все поля, обязательно обратите внимание на In-app product ID (это уникальный идентификатор вашего продукта) и Content type. Content type рекумендуется выбирать Electronic software download, при ином выборе, после сборки приложения вы можетес толкнуться с неприятной ошибкой Магазина c101a006. Так же обратите внимание на Type: Durable и Consurable, если говорить по-русски, то первый вариант для одноразовых покупок, а второй для многоразовых (например: покупка монет в играх), в данном примере мы выберем тип Durable. Ошибка проявится в том, что никто не сможет приобрести ваш продукт — всем будет выдаваться эта таинственная ошибка. Почему таинственная? Потому что, на форумах Microsoft тоже не знают причин её возниконовения.
Всё, сабмитим продукт, в течении пары часов/дней наш продукт заапрувят.
Шаг второй: Реализация покупки нашего продукта в приложении
Рассмотрим простейший вариант: у нас один продукт для продажи в приложении. Для начала добавим куда-нибудь в XAML-разметке нашей страницы кнопку с вызовом диалога покупки приложения и дадим ей Name=«Donate». Далее идем в .CS файл страницы и пишем обработчик нажатия на кнопку.
Добавим две строчки в пространства имён для работы с Магазином:
using Windows.ApplicationModel.Store;
using Store = Windows.ApplicationModel.Store;Пишем обработчик для кнопки Donate:
private async void Donate(object sender, EventArgs e)
{
if (!Store.CurrentApp.LicenseInformation.ProductLicenses["Тут наш In-app product ID"].IsActive)
{
try
{
await CurrentApp.RequestProductPurchaseAsync("Тут наш In-app product ID", false);
ProductLicense productLicense = null;
if (CurrentApp.LicenseInformation.ProductLicenses.TryGetValue("Тут наш In-app product ID", out productLicense))
{
if (productLicense.IsActive)
{
MessageBoxResult result =
MessageBox.Show("Сообщение о том как мы благодарны за покупку ;)",
"Заголовок сообщения", MessageBoxButton.OK);
// Сообщаем Магазину, о том что продукт доставлен
CurrentApp.ReportProductFulfillment("Тут наш In-app product ID");
return;
}
}
}
catch (Exception ex)
{
// Обрабатываем ошибки
}
}
else
{
MessageBoxResult result =
MessageBox.Show("Сообщаем пользователю о том, что он уже купил продукт.",
"У нас же Durable-продукт?", MessageBoxButton.OK);
}
}Вот и всё. Самый простой способ добвить in-app покупки в ваши приложения.