Windows Phone中In-App Purchase应用内购买

前言

应用内购买(In-App Purchase)对于开发者来说绝对是一个非常重要的功能,它提供了一个便捷的入口供用户来购买付费。在IAP盛行之前的游戏运营商一般都是通过接入第三方支付入口来收费。之前做过的一个安卓手机游戏服务器(Asp.Net),他们采用的付费方式有两种,一个是接入支付宝的接口,让用户可以通过支付宝来付费。还有一种是通过手机运营商来付费,先由用户把钱付给运营商,运营商通过你注册的服务器的API告知该用户已付费。在Windows Phone 8中就不用担心第三方付费服务器的问题了,微软为我们提供了一个付费的功能,也就是之前提到的IAP,付费的整个过程都是由微软的交易平台(Microsoft Commerce Platform)来提供支持的,通过Windows.ApplicationModel.Store命名空间下的API可以非常容易的实现IAP的功能,省去了很多接入第三方付费接口的调试时间。下面这张图介绍了创建和购买虚拟物品的流程。

a/b:开发者通过Dev Center注册自己的付费App和所有虚拟物品信息。如果商品要从服务器下载,那么你需要自己提供这个服务器。

c/d:开发者拉取Store上注册的虚拟物品并展示在App内,由用户来点击购买。

e/f:微软交易平台告知你的App用户付费成功,并获取电子收据。

g/h:通过微软交易平台提供的收据作为凭证,从你的服务器下载虚拟物品。并告知交易平台该商品已经成功分发。

整个过程还是非常简单清晰的,需要注意的是如果你的游戏非常的轻量,比如是个单机游戏,那么虚拟商品就不需要服务器的支持,电子收据这步可以省略掉。大型的手机游戏一般都会有后端服务器的支持。电子收据为我们从服务器下载插件时提供了有效的凭证。下面我们就先省略掉注册应用和虚拟物品这两个步骤,做一个简单客户端IAP的例子。

private async void LoadListingInformationAsync()
        {
            try
            {
                // Query the Windows Phone Store for the in-app products defined for the currently-running app.
                var listingInformation = await CurrentApp.LoadListingInformationAsync();
                foreach (var v in listingInformation.ProductListings)
                {
                    Products.Add(new ProductViewModel() { Title = v.Value.Name, ProductId = v.Value.ProductId, ImageUri = v.Value.ImageUri });
                }
            }
            catch
            {
                // An exception is expected to be raised by CurrentApp.LoadListingInformationAsync()
                //when it is not called from an app installed from the Windows Phone Store.
            }
        }

上面这段代码就是异步的从Store中获取我们事先注册好的虚拟物品集合。CurrentApp是一个非常重要的类,它包含了所有主要操作虚拟物品的方法。通过上面的方法获取到虚拟物品的信息后,我们就可以对数据做进一步的处理,例子当中用一个ObservableCollection类型的集合Producets来保存数据,并通过databinding将其展示在商品页面上,供用户选择购买。

private async void PurchaseProduct(string productId)
{
    try
    {
        // Kick off purchase; don't ask for a receipt when it returns
        await CurrentApp.RequestProductPurchaseAsync(productId, false);

        // Now that purchase is done, give the user the goods they paid for
        // (DoFulfillment is defined later)
        //DoFulfillment();
    }
    catch (Exception ex)
    {
        // When the user does not complete the purchase (e.g. cancels or navigates back from the Purchase Page),
        // an exception with an HRESULT of E_FAIL is expected.
    }
}

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索windows
, 服务器
, 微软
, 手机app接口开发
, app接口开发
, hresult e_fail
, 用户
, in-app purchase
, iap
, 应用内购买
, app接口支付宝手机
, 后端服务windows phone
, 一个
The
windowsphone应用商店、windows phone应用、windows phone8应用、windows phone 10应用、windowsphone下载应用,以便于您获取更多的相关知识。

时间: 2024-10-31 17:12:59

Windows Phone中In-App Purchase应用内购买的相关文章

如何解除Windows 8中的Modern Apps网络隔离

  在 Windows 8 中,我们全新引入了 WinRT 平台,带给用户包含动态磁贴和沉浸式用户体验的 Modern Apps. 如果您是企业用户,有公司的代理服务器环境,或者您是开发人员,相信您已经发现了在本地连接更换代理后,所有 Modern Apps 都不再能访问网络.这是由于新的 WinRT 运行时的网络隔离设计造成的. 为了实施新的安全性策略,让 WinRT 平台上的应用更加安全,Modern Apps 在使用某项功能时,必须事先由开发者声明.例如要使用网络连接,就需要声明,不仅要声

20招绝学帮你对Windows 10中那些讨厌的功能进行极致优化(上)

无论你是谁以及无论你站在当前针对Windows 10问题激烈讨论的哪一边,我敢打赌,你总会喜欢你的新操作系统的某些功能,还有其他一些方面,你可能希望它们更好一些,或者保持原来的状况,或者干脆去掉. 在本文中,我将向你介绍Windows 10中最令我厌烦的那些功能,使你快速了解如何作出最佳设置......,或至少更合适一些.当然,您的意见会有所不同:所以,如果你有其他的建议(和相应的解决方案)的话,请把您的看法发布到AskWoody.com网站评论部分. 你会看到,本文中我并不会具体谈论虚拟桌面.

研究人员利用应用程序路径绕过Windows 10中的UAC机制

3月22日讯 安全专家Matt Nelson已经设计出一种最新方法,能够利用应用程序路径(App Paths)顺利绕过Windows 10系统上的用户帐户控制(简称UAC)机制. 这位研究人员详细介绍了一种与此前方案完全不同的旁路技术,项此项新方法"不依赖于IFileOperation/DLL劫持机制". Nelson在他发表的一篇博文中表示,"我之前曾在博文中提到过两项其它旁路技术,而本篇文章则着重介绍一种不依赖于IFileOperation/ELL劫持的替代性方法.这项技

在Windows 7中使用Windows日历组件

  首先,下载网友从Vista中分离出的Windows日历 下载后,将其解压到Program FilesWindows Calendar文件夹中,右键单击可执行程序文件名WinCal,选择"锁定到任务栏"或"附到开始菜单"即可. 压缩包内文件夹说明: zh-CN--日历组件的简体中文语言包 en-US--英文语言包 Windows日历主界面 Windows日历组件默认使用简体中文界面,如需英文,将zh-cn改名或删除,关闭并重启日历组件即可.经测试,该组件可在Win

转帖:PHP4(windows版本)中的COM函数

window|函数 这几天一直在写excel转化成mysql,发现一篇文章,搜一下phpx论坛,没有这个帖子,把它转帖如下: PHP4(windows版本)中的COM函数 介绍 内置于PHP4里的COM函数对于我们在win32环境下开发程序是相当有吸引力的,但是至今仍没有多少相关的技术文档.本文将以三个例子分 别处理 MS office 2000 Word . Excel . Adobe Distiller 来说明如何在PHP中使用COM函数. COM技术是由Microsoft在几年前提出并开发

Windows 操作系统中的 .NET Framework 支持(正文)

window Windows 操作系统中的 .NET Framework 支持 Hans VerbeeckMicrosoft EMEA 2002 年 9 月 适用于:   Microsoft .NET Framework   Microsoft Windows 操作系统 摘要:本文提供了有关能够安装 Microsoft .NET Framework 的 Microsoft Windows 版本的信息,同时还列出了 .NET Framework 的软件要求以及常规平台支持的某些例外情况.此外,还解

Windows操作系统中的.NET Framework支持

window Windows 操作系统中的 .NET Framework 支持 Hans Verbeeck Microsoft EMEA 2002 年 9 月 适用于: Microsoft? .NET Framework Microsoft? Windows? 操作系统 摘要:本文提供了有关能够安装 Microsoft .NET Framework 的 Microsoft Windows 版本的信息,同时还列出了 .NET Framework 的软件要求以及常规平台支持的某些例外情况.此外,还解

Windows 7中十大新增工具

Windows 7界面的改变赢得了很多人的赞赏,但是有一些内置工具也同样引人注目.本文将分享该Windows 7中令人印象深刻的改进,包括从ISO 烧制器到生物识别框架等. Windows 7已经吸引了大量注意力,但是其中大部分的注意力都集中在界面的改变上,如重新设计的任务栏,新的资料管理性能,如库.还有一些改善不明显--如操作系统中新的,改进的工具.在这篇文章中,我们讨论了这十个简化操作的工具. 1.活动中心 集中管理是这个中心的主题,Windows 7为我们提供了一站式服务,而在这个中心我们

Windows 7中易用性方面的改进

Michael Bernstein, 微软UI平台团队的开发头头,他一直关注着Windows的易用性.下面是他对于Window 7易用性的一些想法: Michael致力于将Windows 7打造成为微软历史上最具易用性的操作系统.但是易用性这个概念远非这个词表面上那么简单.由于问题本身很复杂,答案自然也不会多简单.Michael从4个方面为我们解释了Window 7在这一方面的改进. 1.建立一个UI自动化基础 在Vista中,微软就引进了一项有关易用性的新核心组件称之为UI自动化.UI自动化使