paypal_adaptive gem的安全问题

时间:2012-01-13 23:09:46

标签: ruby-on-rails ruby-on-rails-3 paypal paypal-adaptive-payments

我正在使用带有Rails 3.1的paypal_adaptive gem来制作链式付款。但是,在看了http://railscasts.com/episodes/143-paypal-security后,我开始担心我应该在我的付款请求中添加安全措施。具体来说,我不希望有人能够操纵我在请求中发送的商品的价格。当然,我正在使用标准的paypal_adaptive gem请求:

pay_request = PaypalAdaptive::Request.new

data = {
"returnUrl" => "http://testserver.com/payments/completed_payment_request", 
"requestEnvelope" => {"errorLanguage" => "en_US"},
"currencyCode"=>"USD",  
"receiverList"=>{"receiver"=>[{"email"=>"testpp_1261697850_per@nextsprocket.com",     "amount"=>"10.00"}]},
"cancelUrl"=>"http://testserver.com/payments/canceled_payment_request",
"actionType"=>"PAY",
"ipnNotificationUrl"=>"http://testserver.com/payments/ipn_notification"
}

pay_response = pay_request.pay(data)

if pay_response.success?
  redirect_to pay_response.approve_paypal_payment_url
else
  puts pay_response.errors.first['message']
  redirect_to failed_payment_url
end

我的问题是:我是否需要对此请求进行加密,以防止人们改变价格,就像Ryan在他的铁轨演员中所做的那样?如果是这样,我如何操作此代码才能这样做?

1 个答案:

答案 0 :(得分:2)

IPN验证绝对是一种很好的做法。但是关于加密发送的变量;不,那不是必要的。

http://railscasts.com/episodes/143-paypal-security上列出的示例使用网站付款标准,在这种情况下, 可以加密它。

但Adaptive Payments是从服务器到PayPal的一系列服务器到服务器API调用(“付费”API)。接触买方的唯一部分是payKey,这是买方无法操纵的临时代币。