1

我已经看到了关于如何进行付费电话的两个不同版本,我想知道我做错了什么,因为这两个版本都不起作用。

@result = HTTParty.post('https://svcs.sandbox.paypal.com/AdaptivePayments/Pay',
  :body =>
    {:actionType => "PAY",
     :currencyCode => "USD",
     :receiverList => {
       :receiver => [
         {:amount => "1.00",
          :email => "rec1_1312486368_biz@gmail.com"}]
     },
     :returnUrl => "www.yahoo.com",
     :cancelUrl => "google.com",
     :requestEnvelope => {
       :errorLanguage => "en_US",
       :detailLevel => "ReturnAll"}
     },
     :headers => {
       "X-PAYPAL-SECURITY-USERID" => "caller_13124862354_api1.gmail.com",
       "X-PAYPAL-SECURITY-PASSWORD" => "1234567890",
       "X-PAYPAL-SECURITY-SIGNATURE" => "AbtI7HV1xB428VygBUcIhARzxch4AL78.T19CTeylixNNxDZUu0iO87e",
       "X-PAYPAL-APPLICATION-ID" => "APP-81W284485P518643T",
       "X-PAYPAL-REQUEST-DATA-FORMAT" => "JSON",
       "X-PAYPAL-RESPONSE-DATA-FORMAT" => "JSON"
     }
 )

@result = HTTParty.post('https://svcs.sandbox.paypal.com/AdaptivePayments/Pay',
  :body => {
    :actionType => "PAY",
    :currencyCode => "USD",
    "receiverList.receiver(0).email".to_sym => "rec1_1312486368_biz@gmail.com",
    "receiverList.receiver(0).amount".to_sym => "1.00",
    :returnUrl => "www.yahoo.com",
    :cancelUrl => "gizmodo.com",
    :requestEnvelope => {
      :errorLanguage => "en_US",
      :detailLevel => "ReturnAll"}
  },
  :headers => {
    "X-PAYPAL-SECURITY-USERID" => "caller_13124862354_api1.gmail.com",
    "X-PAYPAL-SECURITY-PASSWORD" => "1234567890",
    "X-PAYPAL-SECURITY-SIGNATURE" => "AbtI7HV1xB428VygBUcIhARzxch5AL65.T18CTeylixNNxDZUu0iO87e",
    "X-PAYPAL-APPLICATION-ID" => "APP-81W284485P518643T",
    "X-PAYPAL-REQUEST-DATA-FORMAT" => "JSON",
    "X-PAYPAL-RESPONSE-DATA-FORMAT" => "JSON"
   }
)
4

2 回答 2

3

PayPal 有官方的 Ruby SDK(paypal-sdk-adaptivepayments

示例可在http://paypal-sdk-samples.herokuapp.com/adaptive_payments/pay

于 2013-01-24T04:49:32.363 回答
3

我推荐使用这个 gem,http://rubygems.org/gems/active_paypal_adaptive_payment,你可以进行付款、预批付款、取消付款等。

您需要使用下一个代码进行付款。

def checkout #this method is for checking, you must add this code to your method on your controller
  recipients = [{:email => 'email1',
                 :amount => some_amount,
                 :primary => true},
                {:email => 'email2',
                 :amount => recipient_amount,
                 :primary => false}
                 ]
  response = gateway.setup_purchase(
    :return_url => url_for(:action => 'action', :only_path => false),
    :cancel_url => url_for(:action => 'action', :only_path => false),
    :ipn_notification_url => url_for(:action => 'notify_action', :only_path => false),
    :receiver_list => recipients
  )

  # For redirecting the customer to the actual paypal site to finish the payment.
  redirect_to (gateway.redirect_url_for(response["payKey"]))
end

return_urlcancel_url值,必须是您自己网站上的相对 url !

问候!

于 2013-01-22T10:32:43.760 回答