2016-10-15 9 views
1

変更可能なショッピングカート、選択可能な送料が、簡単なPayPal支払いで済むRailsアプリに取り組んでいます。 PayPalの開発者ドキュメントによれば、Express Checkoutは適切であると思われ、Railsの簡単な方法はBraintreeのv.zero SDKであるかもしれません。(Rails)Braintree v.zero SDKを使用したPayPal支払い

PayPal client-side implementation(JS V2 SDK)のためのブレインドキュメントによると、私はPayPalのボタンと、すべてのオプションを備えたJavaScriptや提供されるクライアント・トークンのための容器を持っていますが:

このボタンを提出
<div id="paypal-container"></div> 

<script type="text/javascript"> 
    braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", { 
    paypal: { 
     container: "paypal-container", 
    }, 
    onPaymentMethodReceived: function (obj) { 
     doSomethingWithTheNonce(obj.nonce); 
    } 
    }); 
</script> 

私はbraintreeからpayment_method_nonceを取得し、必要な支払い情報(payment_method_nonce、amountなど)を記入し、最後にトランザクションを完了するサーバー側メソッドを呼び出す必要があります。このようなルビーのためのserver-side implementation docsのように:

def checkout 
    result = Braintree::Transaction.sale(
     :amount => "10.00", 
     :payment_method_nonce => params[:payment_method_nonce], 
     :order_id => "Mapped to PayPal Invoice Number", 
     :options => { 
     :paypal => { 
      :custom_field => "PayPal custom field", 
      :description => "Description for PayPal email receipt", 
     }, 
     } 
    ) 
    if result.success? 
     "Success ID: #{result.transaction.id}" 
    else 
     result.message 
    end 
    end 

私が思うに、私は基本的に、この手順を理解し、私はどのようにJavaScriptのが私のサーバ側のメソッドへのルートだろう得ることはありません。クレジットカードのフォームを使用して、/checkoutなどの投稿先を定義して、/checkoutの振り込み方法を使用することができます。しかし、PayPalのみを使用すると、私のPayPalボタンから私のチェックアウト方法にどのようにルーティングできますか?

おかげ

答えて

3

完全な開示:私はブレインツリーで働いています。ご不明な点がございましたら、supportまでお気軽にお問い合わせください。

Braintreeのjavascript SDKは、新しいpayment_method_nonceを生成しますが、自動的にあなたのサーバーに送信しません。プロセスのその部分はあなた次第です。あなたはonPaymentMethodReceived callback`を実装することにより、新しいナンスでアクセスして作業することができます:

<script type="text/javascript"> 
    braintree.setup("CLIENT-TOKEN-FROM-SERVER", "custom", { 
    paypal: { 
     container: "paypal-container", 
    }, 
    onPaymentMethodReceived: function (obj) { 
     // you may submit the nonce to your server here 
     doSomethingWithTheNonce(obj.nonce); 
    } 
    }); 
</script> 

この関数は、doSomethingWithTheNonceは、これはあなたがナンスを処理する場所であることを示すプレースホルダです。あなたが思っていたように、/checkoutのようなエンドポイントへの投稿を設定することができます。また、ユーザーが後で提出するフォームでnonceを設定し、送信時にnonceをフォームから取得することもできます。

関連する問題