I've seen two different versions on how the pay call should be made and I wanted to know what I am doing wrong because both versions do not work.
@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"
}
)
AND
@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"
}
)
I recommend use this gem, http://rubygems.org/gems/active_paypal_adaptive_payment , you can make payments, Pre-approved payment, cancel payments ...etc.
You need use the next code to make a 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
The return_url
and cancel_url
values, must be relative urls on your own website!
Regards!
PayPal has official Ruby SDK( paypal-sdk-adaptivepayments )
Samples available at http://paypal-sdk-samples.herokuapp.com/adaptive_payments/pay
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.