2016-12-26 8 views
0

BraintreeのドロップインSwiftコードとBraintreeドロップインを使用してトランザクションを作成するためのRubyサーバーコードを以下でご覧ください。これは1 USDの取引を作成するのにうまく機能し、すべてがBraintreeで正しく予約されます。iOS SwiftのBraintree:Rubyサーバーに異なる取引金額を渡す方法は?

私の質問は、金額を変更する方法ですか?私はどのように私のルビーサーバーに私の迅速なコードから変数(任意の量を含む)を渡すかわからない、また、それが安全かどうか、または量が渡されるときに暗号化する必要があるかどうか疑問に思う?

私が見たスウィフトコードでは、 'request.amount = "23.00"という文が出てきました(SwiftからRubyに量を渡す代わりになる可能性があります)私はこれを正しく使用する方法がわからない、それは私が使用ブレーントリーのウェブサイト上で説明していない:https://developers.braintreepayments.com/start/hello-server/python#create-a-transaction

SWIFT(Appで):

func postNonceToServer(paymentMethodNonce: String) { 
    let paymentURL = URL(string: "https://myexample-31423.herokuapp.com/checkout")! 
    let request = NSMutableURLRequest(url: paymentURL) 
    request.httpBody = "payment_method_nonce=\(paymentMethodNonce)".data(using: String.Encoding.utf8) 
    request.httpMethod = "POST" 
    URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) -> Void in 
     // TODO: Handle success or failure 
     }.resume() 
} 

func showDropIn(clientTokenOrTokenizationKey: String) { 
    let request = BTDropInRequest() 
    let dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request) 
    { (controller, result, error) in 
     if (error != nil) { 
      print("ERROR") 
     } else if (result?.isCancelled == true) { 
      print("CANCELLED") 
     } else if let result = result {  
      let selectedPaymentMethod = result.paymentMethod! 
      self.postNonceToServer(paymentMethodNonce: selectedPaymentMethod.nonce) 
     } 
     controller.dismiss(animated: true, completion: nil) 
    } 
    self.present(dropIn!, animated: true, completion: nil) 
} 

をRUBY(Herokuの上):

post "/checkout" do 
    nonce_from_the_client = params[:payment_method_nonce] 
    result = Braintree::Transaction.sale(
         :amount => "1.00", 
         :payment_method_nonce => nonce_from_the_client, 
         :options => { 
         :submit_for_settlement => true 
         } 
    ) 
end 

答えて

1

さて、私はそれを自分で作りました。 Swiftでは、この行を例として使用してください:

let amount  = "50" as String 
request.httpBody = "payment_method_nonce=\(paymentMethodNonce)&amount=\(amount)".data(using: String.Encoding.utf8) 

そして次にルビーで、次のようにします。

post "/checkout" do 
    nonce_from_the_client = params[:payment_method_nonce] 
    amount     = params[:amount] 
    result = Braintree::Transaction.sale(
            :amount => amount, 
            :payment_method_nonce => nonce_from_the_client, 
            :options => { 
            :submit_for_settlement => true 
            } 
            ) 
end 

それは仕事です。私は、2つの変数が単に「&」で区切られていることに気付かなかった。

関連する問題