나는 온라인 소매점을 개발 해왔다.Paypal IPN 인벤토리 관리
이것은 PHP로 작성되었으며 paypal과 IPN을 사용하여 지불을 처리합니다.
나는 내 장바구니를 작성했습니다. 사용자가 결제를 원할 때 버튼을 클릭 한 표준 장바구니 업로드 기능이있는 결제 버튼을 클릭하면 사용자는 결제를 완료하기 위해 페이팔로 이동합니다. Paypal은 나에게 지불금을 알려주는 IPN을 보냅니다.
제 질문은 언제 저장해야합니까? 재고 수준을 언제 줄여야합니까?
표준 프로세스 흐름
지금 내가 가지고있는 것입니다 다음과 같습니다사용자 장바구니에 항목을 추가합니다.
- 품목이 현재 매진되었거나 추가 된 수량이 초과하면 카트가 업데이트되어이를 반영합니다.
- 그러나 장바구니에 재고가 재고 수준을 감소시키지 않습니다.
사용자가 체크 아웃합니다.
- 카트가 db의 주문 레코드에로드되고 재고 수준이 낮아집니다.
- 사용자는 지불을 완료하기 위해 페이팔로 이동합니다.
(a) 사용자가 결제를 완료했습니다.
(b) 사용자는 웹 사이트로 돌아가거나 다른 곳/폐쇄 브라우저로 이동하여 지불을 완료하지 못합니다.
(선택 사항) 사용자 클릭으로 웹 사이트로 돌아갑니다.
- 사용자에게 '감사합니다. 주문 완료'라는 전체 페이지가 표시됩니다.
- paypal에서 IPN을 보내므로 주문 테이블과 관련하여 아무 것도 처리되지 않습니다.
- 페이팔은 당신이 볼 수있는 바와 같이,이 과정에 일부 문제가있는 트랜잭션 상태
와 IPN
- 업데이트 순서를 보냅니다. 고객이 지불을 완료하지 않고 페이팔 페이지를 떠난다면 나는 매달린 주문을하게 될 것이고 재고 수준도 또한 낮아질 것이기 때문에이 재고는 다른 고객들에게 제공되지 않을 것입니다! 이에 대한 해결책은 데이터베이스를 수작업으로 '청소'하는 것입니다.
대체품?
옵션 I)는 다음 IPN를 수신하는 '트랜잭션 (transaction)'까지 데이터베이스에서 순서를 저장하는 재고 수준을 주문을 생성하고 줄이기 위해 세션에 저장되어있는 카트 정보를 사용하지 마십시오. 그러나 세션이 만료되고 페이팔 지불은 지불에 따라 며칠이 소요될 수 있습니다.
옵션 2) 지금 주문을 저장하십시오. 그러나 완료된 거래 IPN이 수신 될 때까지 재고를 줄이지 마십시오. 이것은 여전히 매달려있는 주문의 문제를 가지고 있지만 정리할 때 재고가 다시 추가되어야 할 것입니다. 주문을 제거하면됩니다. 그러나 이것에 대한 또 다른 문제점은 여러 사람들이 유사한시기에 주문을하면 집합 적으로 그들의 주문에 재고를 초과하는 수량이 들어 있다는 것입니다. 시스템이 완료된 IPNS를 수신 한 다음 스톡 레벨을 음수로 줄이면 상당히 혼란 스러울 수 있습니다!
나는 인터넷에서 도처에서 일종의 도움을 봤지만 어디에도 언급되어 있지 않습니다! 누구나 IPN을 처리하는 방법을 건너 뜁니다. 나는 다른 사람들이이 문제를 어떻게 가질 수 없었는지 이해하지 못한다.
도와주세요!
정말 도움이 필요합니다. 나는 재고없는 품목을 사기 위하여 선택권을 수동으로 삭제하는 것을하고있다. – maxmitch