私はStripeの統合に取り組んでいます。私はPHP APIから得た実際の応答に困惑しています。私は、APIリファレンスが正確であり、応答が各メソッドに示されているJSON文字列であると信じて始めました。私はすぐに大きな違いを発見した。ほとんどの場合、idフィールドはJSONレスポンスにはありません。また、応答は文字列、オブジェクト、およびおそらくいくつかの他の構造であるように見えます。Stripe PHP APIメソッドレスポンスの構造は何ですか?
ここに私のデバッグコードがあります。私は最新のStripe PHPライブラリ1.7.15を使用しています。
function var_dump_ret($mixed=null)
{
ob_start();
var_dump($mixed);
$content=ob_get_contents();
ob_end_clean();
return($content);
}
$token=$_POST['stripeToken'];
$customer=Stripe_Customer::create(array(
"card"=>$token,
"plan"=>"agency")
);
$custVarDump=var_dump_ret($customer);
$cDecoded=json_decode($customer);
$Debug="Invidual attributes of JSON decoded customer object:"._EOL;
$Debug.="object:".$cDecoded->object._EOL;
$Debug.="created:".$cDecoded->created._EOL;
$Debug.="id:".$cDecoded->id._EOL;
$Debug.="livemode:".$cDecoded->livemode._EOL;
$Debug.="description:".$cDecoded->description._EOL;
$Debug.="active_card.object:".$cDecoded->active_card->object._EOL;
$Debug.="active_card.last4:".$cDecoded->active_card->last4._EOL;
$Debug.="active_card.type:".$cDecoded->active_card->type._EOL;
$Debug.="active_card.exp_month:".$cDecoded->active_card->exp_month._EOL;
$Debug.="active_card.exp_year:".$cDecoded->active_card->exp_year._EOL;
$Debug.="active_card.fingerprint:".$cDecoded->active_card->fingerprint._EOL;
$Debug.="active_card.country:".$cDecoded->active_card->country._EOL;
$Debug.="active_card.name:".$cDecoded->active_card->name._EOL;
$Debug.="active_card.address_line1:".$cDecoded->active_card->address_line1._EOL;
$Debug.="active_card.address_line2:".$cDecoded->active_card->address_line2._EOL;
$Debug.="active_card.address_city:".$cDecoded->active_card->address_city._EOL;
$Debug.="active_card.address_state:".$cDecoded->active_card->address_state._EOL;
$Debug.="active_card.address_zip:".$cDecoded->active_card->address_zip._EOL;
$Debug.="active_card.address_country:".$cDecoded->active_card->address_country._EOL;
$Debug.="active_card.cvc_check:".$cDecoded->active_card->cvc_check._EOL;
$Debug.="active_card.address_line1_check:".$cDecoded->active_card->address_line1_check._EOL;
$Debug.="active_card.address_zip_check:".$cDecoded->active_card->address_zip_check._EOL;
$Debug.="email:".$cDecoded->email._EOL;
$Debug.="delinquent:".$cDecoded->delinquent._EOL;
//$Debug.="subscription:".$cDecoded->subscription._EOL;
$Debug.="discount:".$cDecoded->discount._EOL;
$Debug.="account_balance:".$cDecoded->account_balance._EOL;
$Debug.="unaltered response from Stripe_Customer::create:"._EOL.$customer._EOL.
"var dump of response:"._EOL.$custVarDump._EOL.
"print_r of json_decode of response:"._EOL.print_r($cDecoded,true)._EOL;
file_put_contents(_LOGFILE,$Debug,FILE_APPEND);
以下は、JSONデコードされた顧客オブジェクトの無効属性のための私のデバッグファイルの内容です。コードが実行されると、通知がポストされました。
お知らせ:未定義のプロパティ:はstdClass ::ライン上のストライプ/ subscription.php 51
で$ idがまた、私は致命的なのためにデバッグ文字列に「サブスクリプション」を追加した行をコメントアウトしなければならなかったことに注意してくださいstdClassに関するエラー。
object:customer
created:1365951909
id:
livemode:
description:
active_card.object:card
active_card.last4:4242
active_card.type:Visa
active_card.exp_month:7
active_card.exp_year:2013
active_card.fingerprint:WTXPLgKDCXyp9xpD
active_card.country:US
active_card.name:charlie
active_card.address_line1:
active_card.address_line2:
active_card.address_city:
active_card.address_state:
active_card.address_zip:
active_card.address_country:
active_card.cvc_check:pass
active_card.address_line1_check:
active_card.address_zip_check:
email:
delinquent:
discount:
account_balance:0
最も顕著に欠けているのが顧客IDです。 JSONレスポンスには存在しません。ただし、Stripeのサンプルプログラムの一部に見られるように、$ customer-> idを使用してアクセスできます。さらに、var_dumpの出力は、私が理解できない構造内にさらに多くの属性が存在することを示しています。デバッグファイル全体はhttp://www.helioza.com/stripe/debug.txtです。私は顧客作成メソッドしか示していませんが、請求書と同様の問題が発生しており、Stripe_Invoice :: allまたはStripe_Invoice ::の今後の回答のどこにでも請求書IDを見つけることができません。値がStripe_Customerで返されることができますどのように
質問
1)::作成と同時に文字列とオブジェクトの両方であること?
2)各属性にアクセスする方法を含め、APIメソッドの戻り値を説明するドキュメントはどこにありますか?
ありがとうエバン。それは私のパズルのいくつかに役立ちます。なぜ私はオブジェクトをエコーして有効なテキストを出力できるのかまだ分かりません。通常、PHPは単に 'オブジェクト'を報告し、他のものをエコーすることを拒否します。私はまだレスポンスの構造を理解するのに苦労しています。試行錯誤には長い時間がかかります。それぞれの方法について返品構造の文書があれば、確かに役立つでしょう。 – Helioza
オブジェクトのすべてのプロパティが保護されているため、オブジェクトが表示されません。 PHP SDKは実際に '$ response ['some_key']'を介して必要なデータにアクセスするための 'ArrayAccess' PHPインターフェイスを実装しています。ここで、キーはhttps://stripe.com/docs/にリストされているすべてのオプションですapi?lang = php#charges。それはかなり簡単です。 –