
ç§ã¯é·ãéæ°ãããã®ã詊ããŠã¿ãããšæã£ãŠããŸããããä»äºã§Yandex.Money APIãç°ãªãèšèªã§äœ¿çšããäŸãæžãããšãææ¡ãããšããç§ã¯ãã®ãã£ã¬ã³ãžãªãã¡ãŒãåãã§åãå
¥ããŸããã ã»ãšãã©ã®å Žåããã®ãããªæ©èœã¯ããŸããŸãªãã¹ãã£ã³ã°ãµã€ãã®ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããããããæåã«PHPã§èšè¿°ããããšããåŒ·ãææãæ±ºå®ãããŸããã ããã«ããã®åã®APIãèŠãããšããããŸããã ããã«ã倧åŠã®ç 究宀ãé€ããPHPã®çµéšã¯ãããŸããã§ããã ãã®äºä»¶ã¯è峿·±ããšçŽæãããã
ç°å¢ã®éžæ
ç§ãæåã«åºäŒã£ãã®ã¯ããã¹ãã£ã³ã°ã«ããã«éçºããŠãããã€ããããšã¯ããŸã䟿å©ã§ã¯ãªããšããããšã§ãã ãããŠããŠã§ãéçºè
åãã«ç޳士çšããããããŠã³ããŒãããããšã«ããŸããã åŠçæä»£ããããã³ã¯ãŒãšããååãèšæ¶ã«æµ®ãã³ãŸããã 詊ããŸããããããã«æåŠããŸããã 圌ã¯èªåã®äººçãçããŠãããApache confãã¡ã€ã«å
ã®äœããæžãæããŠèšå®ããããšãããšãã圌ã¯èªåã®è£éã§ãããæ¶å»ãããæ¶å»ããŸããã§ããã ã€ãŸããç§ã¯ãããèšå®ããªãã£ããã圌ãç§ãããããšã倿ããã ãç§ã銬ãæã£ãŠããã-ããã¯æ°åã«ãªãã ãã...ããšæãåºããã ãã®çµæãç§ã¯ãã¡ãã圌ãæã¡è² ãããŸããããããåçŽãªWAMPãµãŒããŒãèŠã€ããããšã«ããŸããã Denwerã¯è¯ã補åã§ãããããã«å察ãããã®ã¯äœããããŸãããããã¡ãã¯ã¹ãããã¥ã¢ã«ãèªã¿ãããããŸããã§ããã
Wiki
ã§ WAMPã®
ãªã¹ããå«ãããŒãžãèŠã€ããããããæŽçãå§ããŸããã éžæã®äž»ãªåºæºã¯ãããžã§ã¯ãã®ãµããŒãæ§ã§ããããã®ãããã«ãããŒãžã§ã³ã¯å€ããå°ãªããæ°é®®ã§ãããã€ã³ã¹ããŒã«/èµ·åã容æã§ããã ãã®çµæã
The Uniform Serverãå®å
šã«æšå¥šã§ã
ãŸã ã ã€ã³ã¹ããŒã«ã¯äžèŠã§ãïŒã¢ãŒã«ã€ããè§£åããã ãã§ãïŒãèµ·åæã«ãã¬ã€ã«ãã³ã°ãã=ãè»œãæŒããšèµ·åããŸãã 圌ã¯è£å®ãããªãã£ãã®ã§ãç§ã¯åœŒã«æ±ºçãã€ããŸããã
OAuthèªèšŒ
ç§ã¯
æç€ºãèªã¿ã
ããã¥ã¡ã³ããããŠã³ããŒããããµãŒãã«ãæŽé²ããæŠéã«çªå
¥ããŸããã ããããæŠãã§ã¯ãOAuthèªèšŒã«ããã«è² ããŠããŸããŸããã OAuthã¯ããŠãŒã¶ãŒåãšãã¹ã¯ãŒããã¢ããªã±ãŒã·ã§ã³ã«å
¥åããã³ä¿åããã«ããŠãŒã¶ãŒã®ãµãŒãã¹/ã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹ããæ¹æ³ã§ãã ããã¯Twitterã®äœæè
ããå±ãããã®ã§ã次ã®ãããªãã®ã§ãããµãŒãã¹ïŒãã®å Žåã¯Yandex.MoneyïŒã«ãªã¯ãšã¹ããè¡ãããŠãŒã¶ãŒã¯Yandex.MoneyãµãŒããŒã§ãŠãŒã¶ãŒå/ãã¹ã¯ãŒããå
¥åããã¢ããªã±ãŒã·ã§ã³ã«ã¢ã«ãŠã³ãã䜿çšããèš±å¯ãäžããŸãã ãã®åŸãYandex.MoneyãµãŒããŒã¯ã¢ããªã±ãŒã·ã§ã³ã«ãªãã€ã¬ã¯ãããåç¶æéãéåžžã«çãäžæã³ãŒããååŸããŸãã æ¬¡ã«ãYandex.Moneyãžã®å¥ã®èŠæ±ãéããŠããã®ã¿ã€ã ã³ãŒãããŠãŒã¶ãŒã®å®æ°ããŒã¯ã³ã«å€æŽããåå¡è§£é€ãšããŠããã¹ãŠã®éè·¯ãéããŠããŸãã
ããããOAuthèªèšŒãè¡ã£ãŠããéã«ãã»ãã¥ãªãã£ã®åé¡ã«ééããŸããã Yandex.MoneyãµãŒããŒã«ã¢ã¯ã»ã¹ããããšããŸããããPHPã¯æ±ãããšãèªãå§ããèšŒææžã«ã€ããŠäœãèšããŸããã ã€ã³ã¿ãŒããããå°ã調ã¹ãŠã¿ããšãã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã®SSLèšŒææžã確èªããå¿
èŠãããããšã«æ°ä»ããŸããã ãŠãŒã¶ãŒã®å®å
šã確ä¿ããããã«ããŸãããããšæã£ãã®ã§ãæ€çŽ¢ãç¶ããŸããã ããããRuNetã§ã®ãµãŒããŒèšŒææžæ€èšŒã®å®è£
ã®å¥å
šãªäŸã¯ã»ãšãã©ãããŸããã é çªã«èª¬æããŸãã
æåã«ããªã¯ãšã¹ããéä¿¡ãããšãã«ã³ãŒãã§èšŒææžæ€èšŒãç»é²ããå¿
èŠããããŸããã èšŒææžæ€èšŒèŠæ±ã®éä¿¡ã«äœ¿çšããcURLã匷å¶ããã«ã¯ã©ãããã°ããã§ããïŒ ç§ã¯æ€çŽ¢ãéå§ããèšŒææžãšã©ãŒã«é¢ããæãäžè¬çãªã¢ããã€ã¹ã§ããDISABLE Verificationã«é©ããŸããã ãããŠãããã¯å€ãã®ãµã€ãããã©ãŒã©ã ã§æäŸãããŠããŸãïŒããšãã°ã
ãã¡ã ïŒã ãã©ãŒå
šè¬ã æãé »ç¹ã«æäŸãããã³ãŒãã¯æ¬¡ã®ãšããã§ãã
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
ãããèŠããŠãåäŸãã¡ããããŠæ±ºããŠæžããªãã§ãã ããã ããããŠä»ãæ¯åãç§ãã¡ã¯ããªããå¿ããªããã°ãªããªãæªãèšèããã¹ãŠç¹°ãè¿ãã§ããããã è±èªã話ãã€ã³ã¿ãŒãããäžã§ãã¹ãŠãããã»ã©æªãããã§ã¯ãªãããšãç¥ã«æè¬ãããã¹ãŠã説æãã
ãªã³ã¯ãèŠã€ããŸããã 圌ã¯ããã«æžãããŠããéãã«ãããŸããããããŠããã¯åããŸããã
次ã«ãYandex.Moneyã®å
¬éèšŒææžãèªå®
ã«ä¿ç®¡ããå¿
èŠããã£ããããèŠæ±ãéä¿¡ãããšãã«æ¯èŒãããã®ããããŸããã ç§ã¯å®å
šã«é
ããŠããããã§ã¯ãããŸããããããã§ãç§ã«ã¯ããªãé£ããããã«æããŸããã SSLã䜿çšããéã«å°æ¥åœ¹ç«ã€ãããããŸããã httpsçµç±ã§ç®çã®ãµã€ãã«ã¢ã¯ã»ã¹ããèšŒææžã確èªããŠãšã¯ã¹ããŒãããŸãã ãããããããã¯3ã€ãããã©ããå¿
èŠã§ããïŒ ãæ£ãããã€ãåããŸãã ãããã®2ã€ããããŸããçãäžã®ãã®ãåããŸããã èšŒææ©é¢ïŒã«ãŒãïŒããã³äžéïŒYandexïŒã®èšŒææžããšã¯ã¹ããŒãããå¿
èŠãããããšãããããŸããã æçµèšŒææžã¯å¹Žã«1å倿ŽãããŸãããã§ãŒã³ã«å
¥åããåé¡ãçºçãããšãã«å€æŽãå¿ãããšãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠãç ŽæããŸãã ãããã£ãŠãæå®ããã2ã€ã®èšŒææžã®ã¿ããšã¯ã¹ããŒããã1ã€ã®ããã¹ããã¡ã€ã«ã«ä¿åããã ãã§ãïŒ
ã¹ã¯ãªãŒã³ã·ã§ãã ïŒã ç§ã®ã©ã€ãã©ãªã§ã¯ã圌
ã¯ym.crtãšããŠ
衚瀺ãã
ãŸã ã
ãã®åŸããªã¯ãšã¹ãã¯ç§ãç²åŸããŸããã ãã£ãïŒ ããã«æè¡ã®åé¡ã§ããã ããã¥ã¡ã³ãã§ã¯ãã¹ãŠãæç¢ºã§ããã å®éããããå®éã«ã³ãŒãããã¥ã¡ã³ãã«ã³ããŒããçç±ã§ãã ãŸãããªããžã§ã¯ããšããŠäœæããäºçŽãäœæããŸãã ç§ã®æèŠã§ã¯ããªããžã§ã¯ããæ±ãã®ã¯äŸ¿å©ã§äŸ¿å©ã§ãã
æå·å
æå·åã«ã¯ãŸã å°ããªåé¡ããããŸããã æåã«ããŠãŒã¶ãŒããŒã¯ã³ã®ä¿å/埩å
ã¯ãæšæºã®Mcrypt PHPã©ã€ãã©ãªã«ãã£ãŠå®è£
ãããŸããã ããããçµå±ã®ãšããã圌女ã«ã¯åé¡ããããŸãã ããšãã°ãããã¥ã¢ã«ã«èšèŒãããŠããäŸããã廿¢ããã颿°ã¯ãã ã¡ã«æ©èœããŸããã ä»ã®é¢æ°ã¯ãããããæ©èœãããããšããç§ã®æ¬²æ±ã«æºã¡ãŠããã倱æããã¢ãžã¥ãŒã«ã®åæåã«ã€ããŠã®ã¿è¿°ã¹ãŸããã çè§£ããå¿
èŠããããŸããã ããããããã¹ãã¯ãã®ã©ã€ãã©ãªãããŸã奜ãã§ã¯ãªãããšã倿ããŸããã PHP 5.3ã§ãµã€ããäœæãããšãã«Mcryptã¢ãžã¥ãŒã«ããªãçç±ããã¹ãã£ã³ã°æ¥è
ã®ãµããŒãã«å°ããŸããã 圌ãã¯ç§ã«ïŒéèªçã«ïŒçããŸããïŒã圌ã¯5.2ã§é·å¹Žãã°ããããŸãã-ã¢ãžã¥ãŒã«ãšããŠ5.3ã«èªåçã«è¿œå ããŸããã§ããã5幎ããšã«èšæ¶ãããŸãããåé¡ããããŸãããã PHPã«å¯Ÿç§°æå·åãå®è£
ããä»ã®äŸ¿å©ãªæšæºã©ã€ãã©ãªã¯èŠã€ãããŸããã§ããïŒOpenSSLã©ã€ãã©ãªããããŸãããããã«ã¯ãŸã£ããé©ããŠããŸããïŒã ãã®åŸãæå·åã©ã€ãã©ãªã
phpseclibã«å€æŽããããšã«ã
ãŸãã ãããã¯ãªãŒãã³ã§ãäžè¬çãªAESã¢ã«ãŽãªãºã ããµããŒãããŠããŸãã 圌女ã¯ããã«åé¡ãªã皌ãã ã
æ©èœãšäœ¿çšäŸ
ãŸãããç«ã®ãã¬ãŒãã³ã°ãããŸãã¯ããããã¹ããšãããã°ã®ããã«ãã©ã€ãã©ãªé¢æ°ã®åŒã³åºããè¡ãããŸããããã®åŸãèŠæ ãã®è¯ãã¬ã€ã¢ãŠãã®ããã«ã¬ã€ã¢ãŠãã䜿çšããã³ã¡ã³ãã§æºããããã©ã€ãã©ãªã®äœ¿çšäŸãåŒã³åºããŸããã
ãã®çµæã次ã®Yandex.Money API颿°ã®åŒã³åºããå®è£
ãããŸããïŒã¢ã«ãŠã³ãæ
å ±ãååŒå±¥æŽãæäœã®è©³çްæ
å ±ãä»ã®ãŠãŒã¶ãŒãžã®ééã é·æãšæ©èœïŒ
- OAuthãŠãŒã¶ãŒèªèšŒã
- äœæ¥ã»ãã¥ãªãã£ïŒèšŒææžãã§ãŒã³ã®æ€èšŒããµããŒããããŠããŸãïŒ;
- äœæ¥ã®å©äŸ¿æ§ïŒãµãŒããŒã®å¿çã¯ãªããžã§ã¯ããšããŠè¡šãããŸãïŒããã³ã¯ã€ãã¯ã¹ã¿ãŒãã
- ããŒã¿ããŒã¹ã䜿çšããã«æå·åã䜿çšããŠãŠãŒã¶ãŒããŒã¯ã³ãä¿åããããã®æ¯èŒçå®å
šã§ã·ã³ãã«ãªãœãªã¥ãŒã·ã§ã³ã ãã®ãœãªã¥ãŒã·ã§ã³ã®å®è£
ããªããžããªã«ç°¡åã«æžãæããããšãã§ããŸãã
ã©ã€ãã©ãªèªäœã¯ã
ym.crtèšŒææžãã§ãŒã³ãã¡ã€ã«ãšã
次ãå«ã
ym.phpãã¡ã€ã«ã§ãã
- IYandexMoneyãœãããŠã§ã¢ã€ã³ã¿ãŒãã§ã€ã¹ã
- YandexMoneyã¡ã€ã³ã¯ã©ã¹ïŒã€ã³ã¿ãŒãã§ã€ã¹å®è£
ïŒ;
- ã¢ã¯ã»ã¹æš©ãæã€åæã¯ã©ã¹ïŒã¹ã³ãŒãïŒ;
- è£å©ã¯ã©ã¹ïŒAPIãžã®èŠæ±ã®çµæã®åºåã®å¿çãªããžã§ã¯ãïŒã
ãã®ã©ã€ãã©ãªã«ã¯ãæå·åãå®è£
ãã2ã€ã®ãã¡ã€ã«Rijndael.phpãšAES.phpãä»å±ããŠããŸãã ãããã®ãã¡ã€ã«ã¯ã
phpseclibã©ã€ãã©ãªããååŸãããŸãã ããŒã¯ã³ãä¿åããã³åŸ©å
ããæ¹æ³ã䜿çšããå Žåã«å¿
èŠã§ãã
泚ïŒPHPããŒãžã§ã³5ãšãhttpãªã¯ãšã¹ãçšã®cUrlæšæºã©ã€ãã©ãªã䜿çšããŸãã
詳现ãªäŸãã€ã³ã¹ããŒã«ããŠèŠãŠããªã人ã®ããã«ãããã€ãã®èª²é¡ã瀺ããŸãã
APIãä»ããŠã¢ã«ãŠã³ãã§æäœãå®è¡ããã«ã¯ããŠãŒã¶ãŒã®èš±å¯ãã€ãŸãããŒã¯ã³ãååŸããå¿
èŠããããŸãã æ¬¡ã®åŒã³åºãã§åä¿¡ã§ããŸãïŒããšãã°ãã¢ã«ãŠã³ãæ
å ±ãååŒå±¥æŽã衚瀺ããã¢ã¯ã»ã¹æš©ããããŸãïŒã
YandexMoney :: authorizeïŒConsts :: CLIENT_IDã 'account-info operation-history'ãConsts :: REDIRECT_URLïŒ;
//次ã«ããªãã€ã¬ã¯ãããŒãžã§ãªããžã§ã¯ãã®äœæãšããŒã¯ã³ã®ååŸãéå§ããŸã
$ ym = new YandexMoneyïŒå®æ°:: CLIENT_IDã宿°:: CERTIFICATE_CHAIN_PATHïŒ;
$ token = $ ym-> receiveOAuthTokenïŒ$ _ GET ['code']ãConsts :: REDIRECT_URLïŒ;
ãªããžã§ã¯ã$ ymãäœæãããšãã¢ããªã±ãŒã·ã§ã³èå¥åãšèšŒææžãã§ãŒã³ãžã®ãµãŒããŒäžã®çµ¶å¯Ÿãã¹ïŒãã¡ã€ã«ym.crtïŒãæž¡ãããŸãã ãããšãå¥ã®ã¢ãžã¥ãŒã«ã¯éåžžãä»»æã®ã¢ãžã¥ãŒã«ã®å®æ°ïŒãã®äŸã§ã¯consts.phpïŒã«ç»é²ãããŸãã
ããã§ã¯ããŠãŒã¶ãŒã®ã¢ã«ãŠã³ãã«é¢ããæ
å ±ãååŸããæ¹æ³ã瀺ããŸãããã åæ§ã«ããªããžã§ã¯ããäœæããŠããã¡ãœãããåŒã³åºãããŠãŒã¶ãŒããŒã¯ã³ãæž¡ããŸãã
$ ym = new YandexMoneyïŒå®æ°:: CLIENT_IDã宿°:: CERTIFICATE_CHAIN_PATHïŒ;
$ accountInfoResponse = $ ym-> accountInfoïŒ$ããŒã¯ã³ïŒ;
echo 'ã¢ã«ãŠã³ãçªå·ïŒ'ã $ accountInfoResponse-> getAccountïŒïŒã ã\ nã;
echo 'BalanceïŒ'ã $ accountInfoResponse-> getBalanceïŒïŒã ã\ nã;
echo 'é貚ã³ãŒãïŒ'ã $ accountInfoResponse-> getCurrencyïŒïŒã ã\ nã;
åä¿¡ããã¢ã«ãŠã³ãæ
å ±ã
ç¶æ³ã¯ä»ã®èª²é¡ãšäŒŒãŠããŸãã
ãã®çµæã圌ãã¯ãã®ã©ã€ãã©ãªãããã°ããŒã SDKãšåŒã³ãããã
GitHubã«çœ®ãããšã«ããŸããã
ãæèŠããææ¡ããåŸ
ã¡ããŠãããŸãããŸãããã©ãŒã¯ããã«ãªã¯ãšã¹ããã芧ããã ããŸãã