使用ActiveMerchant自定义Paypal Express的评论页面

Rya*_*yan 6 paypal ruby-on-rails activemerchant

我正在使用ActiveMerchant让我的rails应用程序访问Paypal的Express Checkout.我想在审核页面上包含订单详细信息,如下所述:https://cms.paypal.com/us/cgi-bin/?cmd = _render-content&content_ID = developer/e_howto_api_ECCustomizing

可以这样做吗?

目前,我的控制器代码如下所示:

def paypal
  #currently, options is unused, I'm not sure where to send this info
  options = { 
              :L_NAME0=>"Tickets", 
              :L_QTY0=>@payment.quantity, 
              :L_DESC0=>"Tickets for #{@payment.event_name}",
              :L_AMT0=>@payment.unit_price
            }

  #the actual code that gets used
  setup_response = gateway.setup_purchase(@payment.amount,
    :ip=> request.remote_ip,
    :return_url=> url_for(:action=>:confirm, :id=>@payment.id, :only_path=>false),
    :cancel_return_url => url_for(:action=>:show, :id=>@payment.id, :only_path=>false)
  )
  redirect_to gateway.redirect_url_for(setup_response.token)
end
Run Code Online (Sandbox Code Playgroud)

如果我想做的事情是可能的,我需要改变什么?

ash*_*ai_ 11

确保您的activemerchant版本不低于1.12.0.

EXPRESS_GATEWAY.setup_purchase(220,
  :items => [{:name => "Tickets", :quantity => 22,:description => "Tickets for 232323",                          :amount => 10}],
  :return_url => 'example.com',
  :cancel_return_url => 'example.com'
)

希望这可以帮助 :)


yan*_*ngo 4

@Soleone我尝试你的解决方案,但不适合我。

xml.tag! 'n2:OrderDescription', options[:description]
xml.tag! 'n2:Name', options[:name]
xml.tag! 'n2:Description', options[:desc]
xml.tag! 'n2:Amount', options[:amount]
xml.tag! 'n2:Quantity', options[:quantity]
Run Code Online (Sandbox Code Playgroud)

我认为xml结构不正确,订单项目有多个,所以应该像这样

xml.tag! 'n2:OrderItems' do
    xml.tag! 'n2:OrderItem' do
        xml.tag! 'n2:Name', options[:name]
        xml.tag! 'n2:Description', options[:desc]
        xml.tag! 'n2:Amount', options[:amount]
        xml.tag! 'n2:Quantity', options[:quantity]
    end
end
Run Code Online (Sandbox Code Playgroud)

但我真的不知道正确的结构,现在正在寻找。

====更新

我找到了 SOAP api 文档,https://cms.paypal.com/us/cgi-bin/ ?cmd=_render-content&content_ID=developer/e_howto_api_soap_r_SetExpressCheckout#id09BHC0QF07Q

xml.tag! 'n2:PaymentDetails' do
    xml.tag! 'n2:PaymentDetailsItem' do
        xml.tag! 'n2:Name', options[:name]
        xml.tag! 'n2:Description', options[:desc]
        xml.tag! 'n2:Amount', options[:amount]
        xml.tag! 'n2:Quantity', options[:quantity]
    end
end
Run Code Online (Sandbox Code Playgroud)

但还是不行,谁能帮忙?

=====更新====

我尝试了添加 PaymentDetails 参数的方法,但似乎仍然不起作用,我找到了 SetExpressCheckoutReq xml 的 schema,http://www.visualschema.com/vs/paypal/SetExpressCheckoutReq/,没有 PaymentDetails 的定义,谁做的之前的事情,希望对你有帮助。

======最终========

我已经修复了这个问题,新版本的ActiveMerchant支持订单详情审核,mwagg也推送了这个补丁,大家可以使用这个版本https://github.com/mwagg/active_merchant