제목 | 결제 이후 세션 사라지는 부분 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 다다닷 | 작성시각 | 2024/02/14 16:12:19 |
|
|||
안녕하세요. 현재 저희 서비스에서는 페이플 PG를 이용하고 있습니다. 결제 로직은 아래와 같이 단순합니다.
서비스 결제 페이지에서 사용자는 무조건 로그인이 되어 있는 상태입니다.
1.결제 요청 버튼 클릭 -> 2.PG 결제 화면 표시 -> 3.정보 기입 -> 4.결제 요청 -> 5.결제 진행 및 완료 -> 6.callback
이런 프로세스인데, 간헐적으로 콜백을 받는 과정에서 기존 로그인 세션이 사라져서
callback으로 지정해놓은 API 호출시 $this->session 정보가 없어서 프로세스 진행이 안되는 상황입니다.
관련해서 같은 상황을 경험해보신 분이 계실까 싶어 문의 드려봅니다.
++++ - 콜백의 경우 페이플 업체의 도메인에서 자사 서비스 API를 호출 해주는 형태인데, 웹 서버 (NGINX) 로그를 확인 해보면 결제 요청 버튼 클릭시 IP와, 콜백 받을 때 IP는 동일하며, "도메인만 다릅니다." 결제 요청시에는 자사 도메인이고, 콜백은 PG사 도메인입니다. 때문에 ini_set('session.cookie_secure', 1); ini_set('session.cookie_httponly', 1); ini_set('session.cookie_samesite', 'None'); 위와 같은 설정도 config.php 상단에 해봤지만 간헐적 세션 사라짐은 여전하더라구요..
- 간헐적으로 발생하는 상황은 안드로이드 모바일에서만 발생 합니다.
- 모바일 네이버 앱에서 자사 서비스 결제 페이지 진입하여 결제 진행시 위와 같이 간헐적 세션 사라짐이 발생합니다. ++++
컨피그 설정은 아래와 같습니다.
$config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 43200; $config['sess_save_path'] = APPPATH.'session'; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; // 더 큰 값(3600)으로도 변경해서 테스트 해봤습니다만 똑같습니다. $config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix'] = ''; $config['cookie_domain'] = '.자사도메인.com'; $config['cookie_path'] = '/'; //$config['cookie_path'] = '/; SameSite=None; Secure'; (주석상태) $config['cookie_secure'] = FALSE; $config['cookie_httponly'] = FALSE;
읽어주셔서 감사합니다. |
|||
다음글 | CI4 css js 경로문제 (3) | ||
이전글 | 페이지네이팅 링크 paginating (1) | ||
변종원(웅파)
/
2024/02/15 16:33:57 /
추천
0
|
다다닷
/
2024/02/15 18:47:26 /
추천
0
아 제가 버전을 설명안했네요.. 죄송합니다. CI3 이며, 정확히는 const CI_VERSION = '3.1.11'; 입니다. 말씀하신 것 처럼 새로운 세션이 추가 되어서 그런 것 같습니다만.. 내용에 작성 해놓은 부분처럼 "콜백의 경우 페이플 업체의 도메인에서 자사 서비스 API를 호출" 하는 상황에서만 "간헐적" 으로 발생이 되고 있어 문의 드려봅니다. |
다다닷
/
2024/03/12 12:49:25 /
추천
0
"CI 묻고 답하기" 이곳에 조금 더 명쾌한 답변들로 가득찰 수 있길 바라며, 저와 같은 문제가 발생하고 계신분들 CI 버전 체크하셔서 3.1.11 버전 보다 높은 버전 이용하시고, samesite 설정하셔서 이용해보세요. 버전 업그레이드 후 본인 config.php 설정은 아래와 같습니다.
$config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'ci_session'; $config['sess_samesite'] = 'None'; $config['sess_expiration'] = 86400; $config['sess_save_path'] = APPPATH.'session'; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 3600; $config['sess_regenerate_destroy'] = FALSE; $config['cookie_prefix'] = ''; $config['cookie_domain'] = '.도메인'; $config['cookie_path'] = '/'; $config['cookie_secure'] = TRUE; $config['cookie_httponly'] = TRUE; $config['cookie_samesite'] = 'None';
참고로 저는 자사 서비스 -> PG 호출 ( 1.2.3.4 / 자사 서비스) PG 결제 후 -> 자사 서비스 ( 1.2.3.4 / PG 서비스) 위와 같이 web server - access log 보면 IP는 동일한 상황이었고, referrer 주소만 달랐습니다. 만약 IP가 서로 다르다면 새로운 세션이 만들어 질테니, 로직 수정하셔야 할거에요. |
정확하게 ci2 인가요? ci3인가요?
ci3에서는 상당부분 세션관련 문제가 없어졌습니다. ci2라면 포럼에서 세션으로 검색해서 나오는 글들 참고하세요. (ci3도 참고하시면 좋습니다)
그리고 세션이 사라지는게 아니라 새 세션이 추가생성되는 겁니다. 기존 세션은 살아있고 데이터를 가지고 있습니다.