2017-10-16 48 views
1

Im uisng Braintree Paypal SDK以呈现托管表单的形式呈现贝宝按钮。然而,我不知道如何提交nonce到服务器。我在这一节怎么做?提交有效载荷随机数到服务器Braintree SDK贝宝红宝石轨道

onAuthorize: function (data, actions) { 
     return paypalCheckoutInstance.tokenizePayment(data) 
      .then(function (payload) { 
      // Submit `payload.nonce` to your server 

     //console.log (payload.nonce) 
    }); 
}, 

我的控制器动作

def payment 
    Cart.find(session[:cart_id]) 
    result = Braintree::Transaction.sale(
      amount: current_order.subtotal, 
      payment_method_nonce: params[:payment_method_nonce], 
      :options => { 
       :submit_for_settlement => true}, 
     ) 
    response = {:success => result.success?}   
    if result.success? 
    response[:transaction_id] = result.transaction.id 
    current_order.update(status: "purchased") 
    ReceiptMailer.purchase_order(current_passenger, 
     current_order).deliver_now 
    redirect_to root_path, 
    notice: "Thank you for booking, Please check your email for invoice" 
    session.delete(:cart_id) 

    elsif result.transaction 
    redirect_to cart_path, alert: "something went wrong, your transactions was not successful!" 
    end 
end 

回答

1

您需要将生成的JavaScript请求支付现时传递给你的服务器。以下是使用jQuery的ajax方法生成请求的简单示例:

$.ajax({ 
    method: "POST", 
    url: "/payment", 
    data: { payment_method_nonce: payload.nonce } 
}) 
+0

谢谢。它工作得很好。 – Sebala