如何使用 PayPal 立即购买组件
Jayashri Visvanathan 创建的 JSF 立即购买组件包装了 PayPal 立即购买按钮功能,所以可以方便地进行重用。通过此按钮,您可以在支持 JavaServer Faces 页面的网站上销售许多个别的商品。将立即购买按钮与 JSF 组件包装在一起的主要优点是,通过将组件属性绑定到受管 Bean 的属性上,组件属性可以得到动态地填充。确切地说,当通过 Web 站点销售的商品达到数百种时,这可节省大量的时间。可以使用以下声明来访问立即购买组件的标记库:
<%@taglib prefix="ui" uri="http://java.sun.com/blueprints/ui/14"%>
立即购买组件呈现一个 form HTML 元素,该元素通过隐藏的表单字段向 PayPal 提交买方要订购的商品的相关信息。为此,在 JSP 页中使用此组件时,不能将其放在 form 元素中。要完成交易时发布到 PayPal 上的所有基本信息是作为立即购买组件上的属性支持的。如果要将受立即购买组件属性支持以外的其他信息发布到 PayPal 上,则可以使用立即购买组件上的 postData 属性。postData 属性接受一个值表达式,该表达式是 "com.sun.j2ee.blueprints.ui.shopping.BuyNowPostData" 类型的 JavaBean 的计算结果。此 Bean 支持您选择发布到 PayPal 上以完成交易的所有属性。
缺省情况下,立即购买组件发布到 PayPal 沙箱上。沙箱是实际 PayPal 站点的一个镜像,并没有在其中进行实际金融交易。它是一个用于测试 PayPal 功能(如 Web 站点付款)的安全测试环境。在 Web 站点具有可操作性并准备好将其放置在公共域中作为代理之前,您可能需要在此模式下运行站点。
缺省情况下,按钮图像是从 PayPal 站点装入。如果希望覆盖缺省行为,则可以配置 "image" 属性以装入一个替代图像。无论是在测试模式下还是在生产模式下,在测试应用程序时,您都必须能够访问 Internet,因为这两种模式都启动一个 PayPal 付款服务的连接。
使用 JSF 立即购买组件的示例如下所示:
<ui:buyNow business="donate@animalfoundation.com" id="buyNow1" itemName="Buy Item One"
amount="100.00" quantity="1" type="BuyNow" postData="#{PayPalBean.postData}" target="paypal"/>
JSP 标记属性
除标准 JSF CommandButton 的特定属性外,立即购买组件还支持以下属性。圆括号中是相应的 PayPal 属性名称。
- business - PayPal 帐户的电子邮件地址 (business)
- itemName - 商品的名称 (item_name)
- quantity - 商品的数量 (quantity)
- imageUrl - 在 PayPal 页中作为 LOGO 显示的 150x50 像素图像的 URL (image_url)
- postBackUrl - PayPal 将交易相关信息发布到的 URL。(notify_url)
- paymentCancelledUrl - 取消付款时客户浏览器返回到的 URL。(cancel_return)
- returnUrl - 完成付款后客户浏览器返回到的 URL。(return)
- alt - 无法正常呈现元素时作为内容提供的替换文本。
- postData - 对 BuyNowPostData 类型的 JavaBean 进行计算的结果,它封装了卖方可能要发布到 PayPal 上的任何其他属性(请参见以下内容)。
- target - 框架名称,将在其中显示通过此超级链接检索到的资源。
- type - 一种表示这是“立即购买”还是“捐赠”按钮的方法。支持的模式为“立即购买”或“捐赠”。不区分大小写 (type)
- testMode - 如果为 on,则将信息发布到沙盒上。缺省情况下,将此属性设置为 "on"。
BuyNowPostData Bean 属性
BuyNowPostData Bean 支持以下属性。圆括号中是相应的 PayPal 属性名称。
- itemNumber - 用于跟踪购买或捐赠的传递变量,在完成付款时该变量将传回给您。(item_number)
- undefinedQuantity - 允许买方指定数量。(undefined_quantity)
- firstOptionFieldName - 第一个选项字段的名称。如果省略,则不会为您传回任何变量。(on0)
- secondOptionFieldName - 第二个选项字段的名称。如果省略,则不会为您传回任何变量。(on1)
- continueLabel - 为“PayPal 付款完成”页上的“继续”按钮设置文本。(cbt)
- noteFieldLabel - 说明字段上面的标签。(cn)
- paymentPageHeaderImage - 在付款页面的左上角设置图像。最大尺寸为 750 像素(宽)x 90 像素(高)(cpp_header_image)
- headerBgColor - 设置付款页面页眉的背景色。(cpp_headerback_color)
- headerBorderColor - 设置付款页面页眉周围的边框颜色。(cpp_headerborder_color)
- headerPayFlowColor - 为页眉下面的付款页面设置背景色。(cpp_payflow_color)
- paymentPageBgColor - 设置付款页面的背景色。(cs)
- promptPaymentNote- 提示客户在付款中包含说明。(no_note)
- promptShippingAddress - 提示客户输入送货地址。(no_shipping)
- pageStyle - 为此按钮/链接的关联付款页面设置定制付款页面样式。(page_style)
- submissionMethod - 返回方法 GET 或 POST (rm)
- currencyCode - 定义用于表示货币变量的币种 (currency_code)
- handlingCost - 手续费。它不是特定于数量的费用 (handling)
- invoiceNumber - 可用于标识此次购买的发票号的传递变量。(invoice)
- shippingCost - 此商品的运费(如果已启用特定于商品的运费)。(shipping)
- additionalItemShippingCost - 每个额外商品的运费。(shipping2)
已知的限制
- 对于技术预览,暂时不支持处理 PayPal 在付款完成后发回到卖方的属性
- 不支持启用预填充 PayPal 表单或覆盖地址的属性
参考资料
© Sun Microsystems 2006。Java BluePrints Solutions Catalog 中的所有内容受版权保护,未经 Sun Microsystems 的明确书面许可,不得在其他产品中发布。