[英]Paypal-Express gem Rails integration
我正在尝试使用paypal-express gem实现Paypal Express付款。 但是,很困惑。
这是事务控制器中create方法的代码
elsif params[:purchase][:payment_method] == "Paypal"
#paypal payment
request = Paypal::Express::Request.new(
:username => "xxxxxxxxxxxxxxxxx",
:password => "xxxxxxxxxxxxxxxx",
:signature => "xxxxxxxxxxxxxxxx"
)
payment_request = Paypal::Payment::Request.new(
:currency_code => "#{@current_user.currency}", # if nil, PayPal use USD as default
:description => "Purchase of SMS", # item description
:quantity => 1, # item quantity
:amount => "#{@total}", # item value
)
response = request.setup(
payment_request,
success_url,
cancel_url
)
transaction.tracking_id = response.token
transaction.save
response.redirect_uri
和成功方法
def success
token = params[:token]
payer_id = params[:payer_id]
request = Paypal::Express::Request.new(
:username => "xxxxxxxxxxxxxxx",
:password => "xxxxxxxxxxxxxxx",
:signature => "xxxxxxxxxxxxxxx"
)
response = request.details(token)
transaction = Transaction.find_by_tracking_id(token)
transaction.merchant_reference = payer_id
transaction.status = "Completed"
transaction.save
user = User.find(transaction.user_id)
user.balance = (user.balance+response.amount.to_i)
user.save()
response = request.checkout!(
token,
payer_id,
payment_request
)
flash[:notice] = 'Payment Transaction Completed'
user_home_path(@current_user)
end
和取消方法
def cancel
flash[:warn] = 'Payment Request Canceled'
user_home_path(@current_user)
end
我该如何在create方法中提出适当的请求,获得令牌作为响应并存储它,以便能够在成功方法中使用它来搜索特定交易。
另外,我该如何在成功方法中执行适当的DoExpressCheckoutPayment
。
先感谢您。
我从未使用过paypal-express gem,因此对于create方法如何使用response.token(底部第三行:transaction.tracking_id = response.token),我有些困惑。 这项任务感觉很早。
无论如何,您的问题与gem无关,而与您的应用程序有关。 您的基本问题是“如何在两个或多个操作之间保留数据?” 如我所见,您有两种可能的方法。
首先,您可以将response.token或transaction.tracking_id放入会话中。 如果付款的用户不是每次访问您网站的一部分,则此方法可能不起作用。
其次,您可以将token / tracking_id存储在用于跟踪订单的任何DB支持的模型上。 这样,您可以根据token / tracking_id查找活动订单,并为Paypal响应获取应用程序的上下文。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.