用于Ruby的Paypal自适应支付

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

@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" } ) 

我建议使用这个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!

问候!

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

可从http://paypal-sdk-samples.herokuapp.com/adaptive_payments/pay获取样本