2016-04-30 25 views
1

これはあいまいと思われる場合はまずお許しください。

CURL、Stripe、Angularに精通しているにもかかわらず、これはあまり形成されていない質問ではありません。問題のオン

私はAngular.jsの$ httpでストライプAPIにCURLの結果を再作成しようとすると、いくつかのトラブルそうすることを持っています。

curl -X POST https://api.stripe.com/v1/tokens \ 
    -u MY_TEST_KEY: \ 
    -d "card[number]"=4242424242424242 \ 
    -d "card[exp_month]"=12 \ 
    -d "card[exp_year]"=2017 \ 
    -d "card[cvc]"=123 

これは「tok_blahblahbcryptnonsense」しかし

、私は角$にこのCURLを翻訳するように見えることができないように私に何かを与える:CURLを使用して

、私は次のようにカードトークンを作成することができていますhttp機能を使用し、ステータスコード400を返します。「トークンを作成するには完全なカードの詳細を渡す必要があります」というメッセージが表示されます。

$http({ 
    method: 'POST', 
    url: 'https://api.stripe.com/v1/tokens', 
    headers: { 
     'content-type': 'application/json', 
     'Authorization': 'Bearer MY_TEST_KEY' 
    }, 
    params: { 
     card: { 
      "number": '4242424242424242', // I have tried this as 
             // an integer and string 
             // Stripe docs say string 
      "exp_month": 12, 
      "exp_year": 2017, 

      "cvc": '123' // I have tried this as 
         // an integer and string 
         // Stripe docs don't specify but I think string 
     } 
    } 
    }).then(function(success){ 
     console.log('success ', success) 
    }, function(error){ 
     console.log('error ', error) // gets here, this is where the message is 
    }) 

私の理解が行く限り、これは完全に可能です。私が必要とするのは、そのカードのトークンを作ることだけです。それは遅くなっており、それは完全に明白な解決策かもしれないと私はあまりにも疲れています。

+0

は、ブラウザの開発ツールを開き、ネットワーク]タブをクリックします。それからあなたの要求を送ってください。次に、[ネットワーク]タブでリクエストの本文を確認します。それはどのように見えるのですか? –

+0

うわー、私はすでに恥ずかしいです、より具体的な方法があったはずです。私はエミュレートされたiPhone 5s - iOS 9.2で、ライブリロードとコンソールを有効にして、このコードをイオンで実行しています。コード自体は角張っているので、私はそのように質問をすると思いました。私はこれを別の角度のあるプロジェクトに投げ込み、すぐにそれをチェックアウトすると思います。 –

+0

@SamuelPolicar:PCI準拠の理由から、生のHTTPリクエストを自分で作るべきではありません。代わりにStripe CheckoutまたはStripe.jsを使用する必要があります。 – koopajah

答えて

1

多分、Stripe APIもJSONを受け入れますが、あなたのcurlコマンドで送信するものはJSONではありません。フォームデータです。

また、paramsは、クエリ文字列のデータを渡すために使用されます。 POST本体にこのデータが必要です。

正しいコードは次のようになります。

var myData = { 
    card: { 
    "number": '4242424242424242', 
    "exp_month": 12, 
    "exp_year": 2017, 
    "cvc": '123' 
    } 
}; 
$http({ 
    method: 'POST', 
    url: 'https://api.stripe.com/v1/tokens', 
    headers: { 
    'Authorization': 'Bearer MY_TEST_KEY', 
    'Content-Type': 'application/x-www-form-urlencoded' 
    }, 
    data: $httpParamSerializerJQLike(myData), 
}); 
+0

JBoss、httpParamSerializerJQLikeとデータキーがありませんでした。それは、paramsキーと$ httpParamSerializerJQLikeを使用せずに、x-www-form-urlencodedを使用したStripeの特定のPOST要求が奇妙です。それは私の思考の列車を本当に乱してしまいました。私はついに眠ることができます。 –

+0

おやすみなさい。 –

関連する問題