2016-08-22 5 views
-1

が表示されない私はトークンアンドロイド側クライアント午前私のサーバーを渡すためにナンスオブジェクトを生成し得る、今PHP側checkouutファイルブレーントリーサンドボックスアカウントはトランザクション

<?php 

require_once(__DIR__ . DIRECTORY_SEPARATOR . 'config.php'); 

$nonceFromTheClient = $_POST['payment_method_nonce'] 
$amount = $_POST['amount'] 
$merchantAccountId = someFunctionToLookupCorrectMerchantIdBasedOnCurrency(); 

$result = Braintree_Transaction::sale([ 
'amount' => "10.00", 
'paymentMethodNonce' => $nonceFromTheClient, 
'merchantAccountId' => $merchantAccountId, 
'options' => [ 
    'submitForSettlement' => True 
    ] 
]); 
$transaction = $result->transaction; 
$transaction->paymentInstrumentType ==  
Braintree_PaymentInstrumentType::PAYPAL_ACCOUNT; 
# false 
    $transaction->paymentInstrumentType ==  
Braintree_PaymentInstrumentType::CREDIT_CARD; 

これらの私のコードの後に概要は私がやるよ何

クライアント側のコード

AsyncHttpClient client = new AsyncHttpClient(); 
    client.get("http://192.168.0.102:8080/btsample/client_token.php", new TextHttpResponseHandler() { 
     @Override 
     public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 

     } 
     @Override 
     public void onSuccess(int statusCode, Header[] headers, String clientToken) { 
      Toast.makeText(MainActivity.this, clientToken.toString(), Toast.LENGTH_SHORT).show(); 
      Log.d("clientToken",clientToken.toString()); 
      // onBraintreeSubmit("eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiI4ZjJhOTVlN2E0NjE2NzRjYzE3MmIxN2I4MmYxOGZiNjhhODkzOWVmZmViNTkxNTExM2EzMjlkMjY4MWIwYjE1fGNyZWF0ZWRfYXQ9MjAxNi0wOC0yMlQwNTozNzo0OC45MjU5NDk2OTArMDAwMFx1MDAyNm1lcmNoYW50X2lkPTM0OHBrOWNnZjNiZ3l3MmJcdTAwMjZwdWJsaWNfa2V5PTJuMjQ3ZHY4OWJxOXZtcHIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzM0OHBrOWNnZjNiZ3l3MmIvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tLzM0OHBrOWNnZjNiZ3l3MmIifSwidGhyZWVEU2VjdXJlRW5hYmxlZCI6dHJ1ZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiQWNtZSBXaWRnZXRzLCBMdGQuIChTYW5kYm94KSIsImNsaWVudElkIjpudWxsLCJwcml2YWN5VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3BwIiwidXNlckFncmVlbWVudFVybCI6Imh0dHA6Ly9leGFtcGxlLmNvbS90b3MiLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjp0cnVlLCJlbnZpcm9ubWVudCI6Im9mZmxpbmUiLCJ1bnZldHRlZE1lcmNoYW50IjpmYWxzZSwiYnJhaW50cmVlQ2xpZW50SWQiOiJtYXN0ZXJjbGllbnQzIiwiYmlsbGluZ0FncmVlbWVudHNFbmFibGVkIjp0cnVlLCJtZXJjaGFudEFjY291bnRJZCI6ImFjbWV3aWRnZXRzbHRkc2FuZGJveCIsImN1cnJlbmN5SXNvQ29kZSI6IlVTRCJ9LCJjb2luYmFzZUVuYWJsZWQiOmZhbHNlLCJtZXJjaGFudElkIjoiMzQ4cGs5Y2dmM2JneXcyYiIsInZlbm1vIjoib2ZmIn0="); 
      onBraintreeSubmit(clientToken.toString()); 
      // onBraintreeSubmit("eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiI3OGFkNDRjMzNjNmMzOGU0NDUxMjNjYzY4ZTE4ZGE2NTJkMmUxY2JmODMzZWZhOTFkMTIwOGE3OWEzNjRhZTllfGNyZWF0ZWRfYXQ9MjAxNi0wOC0yM1QwOToxNzozMy4xNzIxMTcwMzIrMDAwMFx1MDAyNm1lcmNoYW50X2lkPTM0OHBrOWNnZjNiZ3l3MmJcdTAwMjZwdWJsaWNfa2V5PTJuMjQ3ZHY4OWJxOXZtcHIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzM0OHBrOWNnZjNiZ3l3MmIvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tLzM0OHBrOWNnZjNiZ3l3MmIifSwidGhyZWVEU2VjdXJlRW5hYmxlZCI6dHJ1ZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiQWNtZSBXaWRnZXRzLCBMdGQuIChTYW5kYm94KSIsImNsaWVudElkIjpudWxsLCJwcml2YWN5VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3BwIiwidXNlckFncmVlbWVudFVybCI6Imh0dHA6Ly9leGFtcGxlLmNvbS90b3MiLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjp0cnVlLCJlbnZpcm9ubWVudCI6Im9mZmxpbmUiLCJ1bnZldHRlZE1lcmNoYW50IjpmYWxzZSwiYnJhaW50cmVlQ2xpZW50SWQiOiJtYXN0ZXJjbGllbnQzIiwiYmlsbGluZ0FncmVlbWVudHNFbmFibGVkIjp0cnVlLCJtZXJjaGFudEFjY291bnRJZCI6ImFjbWV3aWRnZXRzbHRkc2FuZGJveCIsImN1cnJlbmN5SXNvQ29kZSI6IlVTRCJ9LCJjb2luYmFzZUVuYWJsZWQiOmZhbHNlLCJtZXJjaGFudElkIjoiMzQ4cGs5Y2dmM2JneXcyYiIsInZlbm1vIjoib2ZmIn0="); 
     } 
    }); 
} 

public void onBraintreeSubmit(String Token) { 

    PaymentRequest paymentRequest = new PaymentRequest().clientToken(Token); 
    startActivityForResult(paymentRequest.getIntent(this), REQUEST_CODE); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_CODE) { 
     if (resultCode == Activity.RESULT_OK) { 
      PaymentMethodNonce paymentMethodNonce = data.getParcelableExtra(
        BraintreePaymentActivity.EXTRA_PAYMENT_METHOD_NONCE 
      ); 
      String nonce = paymentMethodNonce.getNonce(); 
      Log.d("nonce",nonce); 
      postNonceToServer(nonce); 
     } 
    } 
} 

    void postNonceToServer(String nonce) { 
    AsyncHttpClient client = new AsyncHttpClient(); 
    RequestParams params = new RequestParams(); 
    params.put("payment_method_nonce", nonce); 
    params.put("amount", 20); 
    client.post("http://192.168.0.102:8080/btsample/checkout.php", params, new AsyncHttpResponseHandler() { 
     @Override 
     public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { 
      Log.d("responsebody",responseBody.toString()); 
      Toast.makeText(MainActivity.this, responseBody.toString(), Toast.LENGTH_SHORT).show(); 
      startActivity(new Intent(getApplicationContext(),Main2Activity.class)); 
     } 

     @Override 
     public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { 
     } 
    } 
); 

答えて

-3

私のコードは完璧な作業PHPサーバー側の静的量パスの使用「偽-有効-ナンス」とクライアント側の量のパスが「paymentMethodNonce」=> nonceFromTheClientを使用され、コードが

0

全ディ私はおかげで進める助けてくださいsclosure:私はBraintreeで働いています。ご不明な点がございましたら、supportまでお気軽にお問い合わせください。

トランザクションがゲートウェイに登録されていない理由はいくつかあります。あなたは確実

  1. あなたAPI credentialsあるすべての設定とご自分のサーバでgenerating a unique client tokenある
  2. サーバー側との統合に利用できる、あなたのクライアントにgenerating a paymentMethodNonceです

  3. あなたのクライアントに送信し、送信する必要がありますそれをあなたのサーバーに戻します

  4. 新しいトランザクションを作成するためにナンスを使用してください。
  5. Braintree_Transaction::Saleから返されたtransaction result objectをチェックして、エラーをチェックしてください。あなたの特定の実装を掲載したものから

は、私はあなたにsomeFunctionToLookupCorrectMerchantIdBasedOnCurrency()が有効merchantIDを返すという二重のチェックをお勧めします、$nonceFromTheClientを定義し、ユニークな、そしてあなたのクライアントは、クライアントのトークンを受信して​​いることをされています。

統合の詳細については、Braintree supportにお問い合わせください。

+0

は、サンドボックスアカウントを示していない作業に最適ですトランザクションの概要 –

+0

コードを変更しても動作しない –

+0

サーバに渡す支払いはトランザクションに表示されませんmanualalyトランザクションの支払いが成功しました –

関連する問題