Description
opened by kouho at 2022-02-16T14:46:52; updated 2022-02-21T14:52:46
概要
curl_execでヤマダAPIから返ってきたデータをjson_decodeする際にエラーになったけどログに残せないケースがありました。(本番ではSyntax errorとしてerror2.txtに残る。)
exec_postのjson_decodeに例外処理を追加してjson_decodeでエラーをキャッチした際はログに残してエラーページを表示させてます。
テスト方法、確認した内容
exec_postでjsonDecodeの直前に$bodyにエラーとなるデータ(例:"test")を入れてexec_postが使われている処理を通す
log/yamada_api_log.txtにエラーが残ってエラー画面が表示されればOK。
課金実行のAPIを確認するときはexec_post関数の以下の箇所を修正したら確認できます。
balance APIでエラーが起きると課金実行までいけないので以下のようにifで省いてください。
curl_close($req);
↓
curl_close($req);
if($end_point != $this->api_host . "/api/balance"){
$body = "test";
}
- ガチャ実行前残額表示
- ガチャ実行
- デイリークエスト達成のポイント付与
TODO
懸念点
apiへの送信に成功したけど受信したデータのjsonDecodeに失敗した場合2重で処理が行われる可能性
kouho change_title at 2022-02-16T14:49:50: 【2/17】apiのレスポンスのjson_decodeにエラー処理を追加
[WIP]apiのレスポンスのjson_decodeにエラー処理を追加
kouho change_title at 2022-02-17T15:12:59: [WIP]apiのレスポンスのjson_decodeにエラー処理を追加
apiのレスポンスのjson_decodeにエラー処理を追加
Comment
#17416 by kouho at 2022-02-17T15:26:53; updated 2022-02-17T15:34:00
@wada @iwamoto
確認お願いいたします。
TODOに書いていますが、apiへの送信に成功してヤマダ側では処理が通ったけど受信したデータのjson_decodeに失敗したというケースに対応できず何かいい方法はないでしょうか?
いざ問題が発生した際にbodyの中身をyamada_api_error.txtに吐き出して確認しようと思いますが、
例えばaddPoint APIで上記の問題が起きた場合、ポイント付与が2回以上行われてしまう可能性があります。
Comment
#17466 by wada at 2022-02-21T14:05:00; updated 2022-02-21T14:05:00
wada add_label at 2022-02-21T14:05:12: 和田 LGTM
Comment
#17474 by iwamoto at 2022-02-21T14:33:19; updated 2022-02-21T14:33:19
iwamoto add_label at 2022-02-21T14:33:22: 岩本 LGTM
kouho merge at 2022-02-21T14:41:47: apiのレスポンスのjson_decodeにエラー処理を追加
kouho close at 2022-02-21T14:41:47: Close
kouho refer at 2022-02-21T14:52:46: 1569:【2/21】リリース・apiのレスポンスのjson_decodeにエラー処理を追加