9

我最初的问题(如下)可能太具体了,所以我要问一些更笼统的问题!

谁能指出有关使用 Active Merchant Integrations支持异地支付网关的教程、示例或文档的方向?

Active Merchant 的 rdoc 将以下所有内容列为支持的异地支付网关,但我没有找到任何关于如何使用ActiveMerchant::Billing::Integrations的教程或示例

  • 2 结帐
  • Banca Sella GestPay
  • 计时支付
  • 直接电子银行
  • 直接支付
  • 海信
  • 理财师
  • 诺切克斯
  • 贝宝网站支付标准
  • SagePay 表格
  • 勇敢者
  • WorldPay

尽管它们可能很好,但peepcoderails casts只考虑网关,而不是集成。

非常感谢!

我的公司正在从 PayPal Express Checkout 迁移到 WorldPay Business Gateway(托管支付页面)。我们正在使用 Rails 和 Active Merchant。

  1. Active Merchant 是否支持 WorldPay 业务网关(托管支付页面)?从 rdoc来看,我认为确实如此
  2. 我必须向 ActiveMerchant::Billing::Integrations::WorldPay.new 提供什么参数?

谢谢

4

1 回答 1

11

我制作了一个简单的应用程序来演示 Worldpay 和 Rails/Activemerchant 的异地支付如何协同工作。

演示 Rails 应用程序- https://github.com/daemonsy/Worldpay-Rails--Off-Site--Integration-Example

对于 World Pay 托管支付,基本上post需要他们的支付 URL。添加test-到secure.worldpay.com 以进行测试模式。WP 需要金额、货币、安装 ID 和 cartId 才能将页面呈现给客户。

<form action="https://test-secure.worldpay.com/wcc/purchase" method=POST>

<!-- This next line contains the testMode parameter - it specifies that the submission is a test submission -->
<input type="hidden" name="testMode" value="100">

<!-- This next line contains a mandatory parameter. Put your Installation ID inside the quotes after value= -->
<input type="hidden" name="instId" value="Your installation ID ">

<!-- Another mandatory parameter. Put your own reference identifier for the item purchased inside the quotes after value= -->
<input type="hidden" name="cartId" value="Your ID for the product ">

<!-- Another mandatory parameter. Put the total cost of the item inside the quotes after value= -->
<input type="hidden" name="amount" value="The cost of the product ">

<!-- Another mandatory parameter. Put the code for the purchase currency inside the quotes after value= -->
<input type="hidden" name="currency" value="currency code e.g. GBP, USD ">

<!-- This creates the button. When it is selected in the browser, the form submits the purchase details to us. -->
<input type=submit value=" Buy This ">

来源:http ://www.worldpay.com/support/kb/bg/htmlredirect/rhtml.html

这将创建一个button将您的订单传送到 World Pay 的简单程序,客户将在其中输入信用卡详细信息并完成购买。我已将上述代码嵌入到show订单控制器的页面中。例如,例如,<input type="hidden" name="amount" value="<%=@order.amount"%>>。所以您可以buy this在提交订单后点击。有很多方法可以实现POSTto World Pay。

之后,World Pay 可以显示购物者响应页面、发送给您payment response等。要使付款响应正常工作,您可以将付款响应设置callback URL到您的控制器之一。例如 => http://mysite.com/payment-backend

这将是一个POST请求,因此您必须设置控制器来处理它。这就是Activemerchant发挥作用的地方。例如,

class BackendsController < ApplicationController
  include ActiveMerchant::Billing::Integrations
  protect_from_forgery :except=>[:worldpay_return]

  #in routes => match '/payment-backend'=>'backends#worldpay_return'
  def worldpay_return
    notification = WorldPay::Notification.new(request.raw_post)  

    order = Order.find(notification.item_id)

    if notification.acknowledge
      begin
        if notification.complete?
          order.status = 'success'
        end
      rescue
        order.status = "failed"
        raise
      ensure
        order.save
      end
    end
  render :text =>"Order status for #{order.id} is #{order.status}" 

  end

end

因此 Notification 对象将读取参数request.raw_post并将它们设置为您可以查询的对象。我发现活跃的商家文档在告诉它映射了哪些返回参数方面很有用。

请注意,此控制器是一个非常粗略的示例。World Pay 为您提供了一些方法来验证响应,这由 Active Merchant 支持。

WorldPay 上的 ActiveMerchant 文档::Notifications http://rdoc.info/github/Shopify/active_merchant/master/ActiveMerchant/Billing/Integrations/WorldPay World Pay 支付响应文档 http://www.worldpay.com/support/kb/bg /paymentresponse/payment_response.html

于 2012-02-21T14:11:33.013 回答