PR

[WIP]ガチャ課金購入失敗時再チェック追加 #1577

kouho opened this at 2022-02-24T17:41:01; closed

Description

opened by kouho at 2022-02-24T17:41:01; updated 2022-04-08T09:51:14

概要

#1574の対応です。表示周りの追加は既存箇所への影響と工数がかかるため
失敗した場合に0.5秒後に再チェックでさらに失敗時にテキストログに残す形で試してみています。
ガチャ課金処理に対してのみ対応してみてます。

status_code503 で返ってきた時のデータの例

[status_code] => 503
[status_msg] => request_noは処理済みです。request_no[JOLLY-ROGER_164
5691139_10040_0]

status_code 200の時のbalanceやuse_coin,use_free_coinは取得できませんでした。

テスト方法、確認した内容

課金成功しているけど失敗した状態のテスト方法
Gacha_Payment.php

	public function use_coin(array $user_info): ?array
	{
		return S_GetUserCoinUse(
			$user_info['user_no'],
			$this->coin_payment['insert_id'],
			$this->gacha_master['price'],
			"ガチャでカードを{$type}枚引きました");
	}

	public function use_coin(array $user_info): ?array
	{
		$return =  S_GetUserCoinUse(
			$user_info['user_no'],
			$this->coin_payment['insert_id'],
			$this->gacha_master['price'],
			"ガチャでカードを{$type}枚引きました");
                return null;
	}

YamadaAPI.class.php

useCoinCheck関数の$retを出力して通っているか確認

TODO

ショップ購入の方にも反映

Comment

#17548 by kouho at 2022-02-24T17:45:02; updated 2022-02-24T17:45:02

@wada
途中ですが対応の方向性が間違っていないか確認していただきたいです。

kouho assign at 2022-02-24T17:47:42: Not assigned:kouho

Comment

#17558 by wada at 2022-02-25T10:33:55; updated 2022-02-25T10:33:55

@kouho
タイムアウトやAPIの情報が増えると変わるかもしれませんが、わかっている範囲では以下のような対応が考えられます。

ユーザーの行動

  • 待つ

行ロックの待機時間(あれば)で、2回目の通信も途中で中断しないか
行ロックの待機時間内で完結するのであれば、2回目以降の付与済み対応でok
中断した場合、エラー画面に問合せリンクを追加
(待たない対応を入れる場合、そちらに誘導)

  • 待たない

中断されたカード付与を実行する
一定期間以内の未解決決済ログ(log_yamada_payment)があれば、再度実行用のボタンを対象ページに表示
マイページ新着のお知らせ欄に対象ページへのリンクを追加
再度実行時は、決済完了か未完了かAPIで確認できないため、useCoinを呼び出す
useCoinが成功すれば(503含む)カード付与と演出を実行

Comment

#17559 by wada at 2022-02-25T10:45:49; updated 2022-02-25T10:45:56

> 再度実行時は、決済完了か未完了かAPIで確認できないため

決済前のコイン残高を保持しておけば確認できそう

kouho close at 2022-04-08T09:51:14: Close

Commit range

baseb856ca0fe799d365f49d559fe627a6192f360dc7
headea0b9b7fef86314a061ff3d4bf66e76e5f19e23c
base branchjolly/jr-web:develop
head branchjolly/jr-web:fix_yamda_api

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed3 filesView patch
statusfile
modifiedlib/SubFunc/SubFunc_yamada.inc
modifiedlib/class/platform/yamada/YamadaAPI.class.php
modifiedlib/models/Gacha_payment.php
Patch body is stored as a separate file to keep this page lightweight.