2013-04-13 5 views
1

현재 페이팔 익스프레스 체크 아웃 시스템을 사용하는 전자 통신 사이트를 개발 중입니다. 익스프레스 체크 아웃 시스템이 정상적으로 작동하며 지불 금액을 보내고 사용자가 로그인하여 배송 세부 사항을 확인한 다음 확인하고 지불이 완료된 내 페이지로 돌아갑니다. 내가 겪고있는 주요 문제는 세션에 저장된 사용자 이름 (이메일)입니다. 사용자가 paypal로 체크 아웃을 클릭하고 paypal 계좌를 확인하면 내 세션이 지워집니다. 따라서 어떤 항목을 구입했는지 기록 할 수 없습니다 (사용자가 내 사이트에서 사용한 것과 다른 페이팔 이메일 주소를 사용하지 않는 한).paypal 익스프레스 체크 아웃 중 세션이 지워짐

제 질문은이 확인 작업을 통해 세션 상태를 유지할 수있는 방법이 있습니까? 아니면 사용자 정보를 유지할 수있는 또 다른 방법이 있습니까? 이 문서화 된 문제 (나는 그것을 어디에도 보지 못했습니까?)?

더 자세한 정보가 필요하면 알려주십시오.

감사합니다.

답변

1

아니요, 일단 사용자가 도메인을 떠나면 세션이 종료됩니다.

대신 사용자가 사이트를 떠나서 삽입 된 레코드의 ID를 paypal로 전달하기 전에 이메일 주소를 테이블에 저장할 수 있습니다. 이 ID는 맞춤 입력란이므로 사용자가 결제를 완료하면 콜백 url에 반환됩니다. URL에서 ID를 가져 와서 데이터베이스에서 해당 이메일을 검색 할 수 있습니다.

+0

사이트에 a.session을 만들고 도메인에없는 다른 사이트로 이동 한 다음 몇 분 동안 그대로두고 주소 막대에 주소를 입력하고 Enter 키를 눌러 세션이있는 페이지로 돌아갑니다. –

+0

다른 동작을합니다. 나를 위해 ...하지만 라이브 환경에서 이것을 테스트 해 봤는데 ... –

0

PHP 세션이 종료되지 않은 경우에도 (닫는 다른 이유가있을 수 있음) 사용자가 PayPal을 떠난 후 반환 할 때까지 수정되지 않은 세션을 사용하는 것이 좋습니다. . Express Checkout을 마치기 전에 다른 탭에서 웹 사이트를 두드리기 시작하는 여러 개의 탭이있는 사용자를 생각해보십시오.

대신 체크 아웃 완료에 중요한 모든 것을 데이터베이스에 저장하고 CUSTOM 또는 INVNUM 매개 변수를 통해 익스프레스 체크 아웃 프로세스를 통해 고유 한 식별자를 전달하십시오. 그것들은 계산 과정을 통해 저글링됩니다. 콜백이 사이트로 돌아 오면 데이터베이스에서 어떤 "불완전한"주문을 참조하고 있는지 쉽게 식별하고 "유료"라고 표시 할 수 있습니다.

+0

CUSTOM 속성과 INVNUM 속성을 설정하려고했지만 확인 페이지가 나타나면 인덱스가 존재하지 않는다고 말합니다. 그것에 액세스하기 위해 내가해야 할 특별한 것이 있습니까? – RMT

+0

var_dump()를 사용하여 PayPal 응답을 덤프하여 비슷한 이름으로 응답하지 않았습니까? SetExpressCheckout에 대한 호출에서 올바르게 전달되면 해당 값이 있어야합니다. EC v63 on과 같아서 CUSTOM 및 INVNUM은 PAYMENTREQUEST_n_CUSTOM 및 PAYMENTREQUEST_n_INVNUM을 사용하여 더 이상 사용되지 않습니다. https://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_SetExpressCheckout – jimp

+0

print_r을 사용하여 반환 된 배열 내의 모든 값을 표시했습니다. INVNUM의 인스턴스가 없습니다. 또는 사용자 정의. – RMT

관련 문제