k_koichiと申します。
Rubyで似たような質問をされている方がおりましたが、その方法ではうまくいかなかった為質問させて頂きます。
決済サービスのSPIKEにてAPIでのやりとりを実現しようとしておりますが、
コンソールではうまくいくのですが、PHPでは失敗してしまいます。
[コンソール] curl "https://api.spike.cc/v1/tokens" \ -u "sk_test_apikey:" \ -d "card[number]=4444333322221111" \ -d "card[exp_month]=3" \ -d "card[exp_year]=2017" \ -d "card[cvc]=111" \ -d "card[name]=TARO SPIKE" \ -d "currency=JPY" \ -d "email=foo@example.com"
PHP
1<?php 2include(dirname(__FILE__).'/../const.php'); 3// 問い合わせ先 4$host = API_URL . 'tokens'; 5// APIキー 6$key = API_KEY; 7 8// ホストに接続 9$ch = curl_init($host); 10 11// データ 12$data = array( 13 "card[number]" => 4444333322221111, 14 "card[exp_month]" => 3, 15 "card[exp_year]" => 2017, 16 "card[cvc]" => 111, 17 "card[name]" => 'TARO SPIKE', 18 "currency" => 'JPY', 19 "email" => 'foo@example.com' 20); 21// データをJSONエンコードする 22$json_data = json_encode($data); 23 24//POSTを指定 25curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 26 27// ヘッダーにJSONを指定 28curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); 29 30// 送信するデータをセット 31curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); 32 33// TRUE を設定すると出力結果を何も加工せずに返します。 34curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 35 36// 接続に使用するユーザー名とパスワード。 "[key]:" 形式で指定します。 37curl_setopt($ch, CURLOPT_USERPWD, $key . ':'); 38 39// HTTP/1.1 を使用する 40curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 41 42$return = curl_exec($ch); 43curl_close($ch); 44 45// 値をJSONデコードして配列化する 46$json = json_decode($return, true); 47// ダンプする 48print_r($json); 49?>
PHPでのリクエスト結果は、以下のようなエラーメッセージが返ってきます。
Array ( [error] => Array ( [type] => invalid_request_error [message] => カード名義を入力してください。 カード番号を入力してください。 セキュリティーコードを入力してください。 有効期限(月)を入力してください。 有効期限(年)を入力してください。 指定したクレジットカードは未対応です。 ) )
card[...]の指定方法が間違っている為に、認識されていないように見えます。
正しい指定方法を教えていただけないでしょうか。
宜しくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/13 07:51