6

我有一个基于 GWT 的应用程序,它部署在 Google App Engine for Java 上。该应用程序使用基于 Google 帐户的身份验证。我在 GAE 数据存储中维护基本用户信息,例如电子邮件 ID(来自 Google 帐户)、上次登录日期等。访问该网站是免费的。任何人都可以使用他/她的 Google 帐户使用它。

展望未来,我想让它成为一项付费服务​​。但是,我对建立和运营电子商务网站的经验为零。所以我的问题可能有点模糊。我需要一些关于如何去做的指导。

以下是我的一些要求(但我对具体实施很灵活):

  1. 提供 2 种不同类型的帐户 - 免费和高级。
  2. 我不想在我的系统中维护任何与信用卡相关的信息。我也不想维护一个复杂的用户数据库。
  3. 当用户首次登录时,他/她会自动获得一个免费帐户。
  4. 用户必须“升级”到高级帐户才能访问应用程序的所有功能。
  5. 用户必须支付一次性费用才能升级。

鉴于此信息,我有以下问题:

  1. GAE 是否适合我的要求?
  2. 哪种支付网关(Paypal、Google Checkout 等)最适合我的要求?
  3. 我的应用程序和支付网关之间需要什么级别的集成?我想在我的应用程序中维护最少的用户信息。我想专注于我的应用程序开发,并希望在用户管理上花费最少的精力。
  4. 我是否需要实施自定义身份验证机制或继续使用 Google 帐户或其他基于 OpenID 的身份验证?
  5. 我还需要考虑哪些其他事项?

我会很感激这方面的任何帮助。谢谢。

4

3 回答 3

3

一般来说,您绝对没有理由不能保留当前的应用程序及其帐户管理。您可以使用帐户类型字段来扩展您的用户帐户,该字段存储用户是否是付费客户。如果您需要发送发票,请同时存储用户联系信息(Paypal 将连同付款收据一起发送给您)

就特定的支付提供商而言。我只有 PayPal 的实际动手经验。由于以下几个原因,我不会再次使用它们:

  • 他们的 API 没有很好的文档记录,并且一些文档是错误的(或过时的)。
  • 如果你是一个小玩家,支持主要是通过论坛。所以基本上这意味着你是一个人。
  • 一些 API 存在严重漏洞和缺失功能(例如,您可以创建订阅,但如果您使用标准支付 API,则不能取消订阅。
  • 在美国和一些幸运的国家之外,高级 API 不可用。因此,您坚持实施 IPN 侦听器 servlet,而在需要时提取信息会更可取。

我发现的所有现有 PayPal Java 库都使用了大多数用户无法使用的 Pro 功能。因为我在其他任何地方都找不到它,所以我创建并开源了我自己的IPN servlet,但它还没有完成。如果有需求,我愿意改进它,请告诉我。

这个 IPN servlet 的作用是监听传入的 PayPal 消息。例如,如果用户订阅,您将收到一条消息。如果向用户收费(例如按月计费),您会收到一条消息。如果用户取消订阅,您会收到一条消息。这些消息允许您维护用户的帐户类型。

如果我再做一次,我可能会使用更高级和更高级别的订阅 API,例如Spreedly。我听说过一些关于 API 的好消息,而且价格相当实惠。我没有使用 Spreedly 的实际经验,所以这不是一种认可。

于 2011-05-25T06:13:45.603 回答
1

GAE 支持此类应用程序,没有任何特殊问题;如果您选择的语言是 Java,我会选择带有这个工具包的 Paypal,因为 Google Checkout Java API在 GAE 上似乎不能很好地工作。

您需要一个授权机制来检查您的用户根据他们的权限可以做什么。
基本上你需要以下东西:

  1. membership指示用户是否为高级用户的标志状态;这应该在付款通知之后设置
  2. 一个授权系统,通过读取membership标志值来检查当前用户是否可以使用给定的 Web 处理程序

看看这个很棒的 Spring Security 教程;它涵盖:

  • 使用 Google 帐户进行身份验证。
  • 根据分配给用户的角色设置访问控制限制。
于 2011-05-23T09:07:09.960 回答
0

如果您需要免费试用、优惠券、计划升级/降级、催款管理等基于订阅的计费,请查看Recurly

您可以选择让客户在Recurly托管的页面上维护他们的账单信息,或者使用他们的透明 POST API 从您的 GAE 应用程序中的页面将账单信息发布到他们的服务器 - 这两种解决方案都避免通过您的服务器传递敏感的信用卡数据,这使 PCI 合规性变得容易。

Java API 尚未完全开发,但使用 JAXB 很容易根据您的特定要求进行构建。我没有将我的代码打包到开源项目中,但愿意分享片段。

于 2011-05-25T13:40:52.550 回答