在 Rails 3.2 中使用贝宝预先批准的付款
Posted
技术标签:
【中文标题】在 Rails 3.2 中使用贝宝预先批准的付款【英文标题】:preapproved payments with paypal in rails 3.2 【发布时间】:2012-07-21 21:44:24 【问题描述】:我将此信息发送到贝宝,以使用预先批准的付款功能:
response = gateway.preapprove_payment(
:return_url => user_orders_url(current_user),
:cancel_url => user_orders_url(current_user),
:requestEnvelope => "errorLanguage" => "en_US",
:start_date => Time.now,
:end_date => Time.now + (60*60*24) * 30,
:currency_code =>"USD",
:senderEmail =>"email address of sender",
:max_amount => "20.00",
:maxNumberOfPayments => "1",
:notify_url => ipn_notification_user_orders_url(current_user),
)
redirect_to (gateway.redirect_url_for(response["preapprovalKey"]))
p response
我在贝宝页面收到一条消息:
This transaction is invalid. Please return to the recipient's website and try again.
我正在使用此 gem https://github.com/jpablobr/active_paypal_adaptive_payment/blob/master/lib/active_merchant/billing/gateways/paypal_adaptive_payment.rb 中的方法 build_preapproval_payment
这是我的日志控制台中的输出:
#<ActiveMerchant::Billing::AdaptivePaymentResponse:0xb7c6838 @json="\"responseEnvelope\":\"timestamp\":\"2012-07-23T09:32:42.631-07:00\",\"ack\":\"Success\",\"correlationId\":\"0c4df4aefe651\",\"build\":\"DEV\",\"preapprovalKey\":\"PA-8D4362235H161382C\"", @response=#<Hashie::Rash preapproval_key="PA-8D4362235H161382C" response_envelope=#<Hashie::Rash ack="Success" build="DEV" correlation_id="0c4df4aefe651" timestamp="2012-07-23T09:32:42.631-07:00">>, @xml_request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<PreapprovalRequest>\n <requestEnvelope>\n <detailLevel>ReturnAll</detailLevel>\n <errorLanguage>en_US</errorLanguage>\n <senderEmail>sender_email</senderEmail>\n </requestEnvelope>\n <endingDate>2012-08-22T18:32:40</endingDate>\n <startingDate>2012-07-23T18:32:40</startingDate>\n <maxTotalAmountOfAllPayments>20.00</maxTotalAmountOfAllPayments>\n <maxNumberOfPayments>1</maxNumberOfPayments>\n <currencyCode>USD</currencyCode>\n <cancelUrl>http://localhost:3000/en/u/maserranocaceres/orders</cancelUrl>\n <returnUrl>http://localhost:3000/en/u/maserranocaceres/orders</returnUrl>\n <ipnNotificationUrl>http://localhost:3000/en/u/maserranocaceres/orders/ipn_notification</ipnNotificationUrl>\n</PreapprovalRequest>\n", @request="PreapprovalRequest"=>"requestEnvelope"=>"detailLevel"=>"ReturnAll", "errorLanguage"=>"en_US", "senderEmail"=>"microf_1342709287_biz@gmail.com", "endingDate"=>"2012-08-22T18:32:40", "startingDate"=>"2012-07-23T18:32:40", "maxTotalAmountOfAllPayments"=>"20.00", "maxNumberOfPayments"=>"1", "currencyCode"=>"USD", "cancelUrl"=>"http://localhost:3000/en/u/maserranocaceres/orders", "returnUrl"=>"http://localhost:3000/en/u/maserranocaceres/orders", "ipnNotificationUrl"=>"http://localhost:3000/en/u/maserranocaceres/orders/ipn_notification", @action="Preapproval">
哪里出错了?
谢谢!
【问题讨论】:
【参考方案1】:嗯,根据我对该 gem 源代码的调查,预批准付款的正确 redirect_url 方法是 redirect_pre_approval_url_for
redirect_pre_approval_url_for(token)
【讨论】:
非常感谢!问题已解决;D以上是关于在 Rails 3.2 中使用贝宝预先批准的付款的主要内容,如果未能解决你的问题,请参考以下文章