我们如何在Windows Phone 7中实现应用内购买?

4

您好,我正在创建一个Windows Phone 7.1应用程序,需要进行应用内购买。

由于WP7没有像iPhone那样的特定的应用内购买SDK,我们能否使用 PayPal 进行应用内购买呢?

我对Windows Phone 7和PayPal API都不太熟悉。

例如,在单击付款按钮时,在 browsercontrol 中打开移动版PayPal网站,并让用户完成付款,如果付款成功则返回成功消息,如果失败则返回失败消息。

我认为 Movend 不是最佳选择,因为我们还需要在他们的网站上维护产品数据库,而我不想这样做。

3个回答

4

这里是我提出的问题的答案。

Paypal没有专门为WP7开发的SDK,因此我尝试以以下方式解决上述问题:

  1. Create a website which will take item prices/details in querystring
  2. implement ExpressCheckout in that website only. I've implemented using paypal Sandbox Web service
  3. Place a browser control in the WP7 app and add an event BrowserControl_Navigated for that control
  4. Create the Url for for our own website like string.Format("http://localhost:62744/PaymentGateway/ExpressCheckout.aspx?ItemName={0}&Number={1}&Desc={2}&ItemPrice={3}&ItemUrl={4}", ItemName, ItemNumber, ItemDescription, ItemPrice, ItemUrl).Replace(" ", "+");
  5. Call the Website in our WP7 app code BrowserControl.Navigate(new Uri(url));
  6. After completion of the payment paypal service will redirect the app to a success url which we mentioned otherwise redirect to failure url
  7. in the BrowserControl_Navigated event add conditions to check the paypal success and failure urls
  8. if the condition success navigate to success page in WP7

    if (BrowserControl.Source.ToString().Contains( "http://localhost:62744/PaymentGateway/Success.html"))
         NavigationService.Navigate(new Uri("/Success.xaml", UriKind.Relative));
    

更新:

以上代码将页面重定向到PayPal移动页面,但外观不如iOS登录页面好。我们可以通过在Windows Phone 7中使用小技巧来获取PayPal iOS页面。

通过更改浏览器的头部(client的用户代理),我们可以获得PayPal iPhone页面。

像下面这样:

  string header = "User-Agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7";

  string url = string.Format("http://10.11.32.211:88/PaymentGateway/ExpressCheckout.aspx?ItemName={0}&Number={1}&Desc={2}&ItemPrice={3}&ItemUrl={4}", ItemName, ItemNumber, ItemDescription, ItemPrice, ItemUrl).Replace(" ", "+");

  BrowserControl.IsScriptEnabled = true;

  BrowserControl.Navigate(new Uri(url),null, header);

你好,我已经按照你上面提到的实现了支付功能。我有一个产品网站,我是通过移动浏览器访问该网站的。但我的应用程序未能通过应用认证过程,因为支付网关出现了问题。我收到了以下错误提示:“用户在应用内被提示输入信息。交易必须通过安全(HTTPS)网站或通过托管控件进行外部处理,其中地址栏可见以验证URL和HTTPS安全性。” 我需要在我的应用程序中实现支付网关,请问有人可以帮助我吗? - Noorul
嗨,@RVG你是否使用这个支付网关在市场上发布了你的应用程序?应用程序的认证过程是否成功? - Noorul
谢谢您的回复,您是否已经在应用商店提交了该应用程序?我有一个使用相同类型支付网关的应用程序,我已经提交到应用商店,但是认证失败了。 - Noorul

2

在您的应用程序中使用PayPal进行付款是完全可接受的,但请注意市场应用政策2.1

从Windows Phone Marketplace获取应用程序时,您的应用程序必须是完全功能的(除了下面允许的其他数据)。除非您已与用户建立了预先存在的计费关系,否则您的应用程序可能不需要在应用程序体验中要求用户提供付款信息以激活、解锁或延长应用程序的使用。


2
代码示例是用来做什么的?PayPal没有关于如何使用他们的API的教程吗?SO不应该被用来让其他人为你寻找教程。 - Matt Lacey
需要强调的是,这仅适用于个人和学生(要求2.1.2),对于企业使用第三方支付网关进行应用内购买是完全可以接受的。该政策也没有规定必须使用Microsoft In-App SDK来解锁数字商品(解锁功能、数字内容等),而不是苹果更严格的政策,但我没有尝试提交使用除Microsoft之外的In-App SDK来解锁内容等的应用程序的经验... - Leon Storey

1
我们在三月份的游戏中实施了IAP。我们不得不通过修改初始浏览器请求的主机头来欺骗PayPal,以便让PayPal将WP上的IE9识别为移动浏览器。这非常痛苦。我不知道他们是否已经解决了这个问题。
此外,PayPal使用带水印的文本框,而IE9不支持,因此我们需要在结账时包含帮助文本,以显示未标记的文本框是用于信用卡结账,而不是PayPal账户。
这是一个非常痛苦的过程,但现在它正在工作。去应用商店下载QONQR并查看最终结果。如果您需要更多实施细节,请发送电子邮件到我们的支持地址。我们很乐意提供帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接