2011-03-08 4 views
3

그래서 장고 웹 응용 프로그램이 있고 그 모듈에 지불 모듈을 추가해야합니다.데이터베이스에 계정 잔액을 안전하게 저장 하시겠습니까?

기본적으로 사용자는 일정 금액의 서비스에 대해 선불 결제를 수행하며 이는 사용자가 서비스를 사용할 때 천천히 줄입니다. 내가 이것을 촉진하는 가장 좋은 방법은 무엇일까? Satchmo를 사용하여 지불을 처리 할 수 ​​있지만 데이터베이스에 USD 값을 저장하고 해당 값과 상호 작용하는 코드가 직접 위험한 것으로 보입니다. 물론 할 수 있지만 이미이 문제에 대한 잘 테스트 된 솔루션이 있는지 궁금해하고 있습니까?

답변

6

"잘 테스트 된 솔루션"에 대해 모르겠지만 데이터베이스에 달러 값을 저장하고 해당 달러 값을 늘리거나 줄이는 것에는주의해야합니다. 대신, 문제가 발생하면 감사 할 수있는 트랜잭션을 저장하는 것이 좋습니다. 사용자 계정에서 신용 및 직불 거래에서 사용할 수있는 금액을 직접 저장하는 대신 계산합니다.

안전을 위해 응용 프로그램에서 트랜잭션 레코드를 삭제할 수 없도록해야합니다. 어떤 이유로 든 관련 테이블에 대한 쓰기 권한을 거부 할 수없는 경우 트랜잭션이 생성 될 때 두 번째 데이터베이스 (응용 프로그램이 건드리지 않음)로 트랜잭션을 복제하십시오.

+0

이 역시 마찬가지입니다. 구현에 대해서도 언급하지 않았으며,이 설명은 내가 만든 것보다 더 중요합니다. 항상 사용자에게 거래 내역을 제공 할 수 있어야합니다. – David

+0

사실 그것은 회계 목적에도 도움이됩니다. 사용자는 시간이 지남에 얼마나 소비했는지 알 수 있습니다. – itsnotvalid

1

내 언어에 구애받지 않는 권장 사항은 웹 응용 프로그램과 통신하는 데이터베이스가 읽기 전용인지 확인하는 것입니다. 최소한이 계좌 잔고를 다루는 테이블에 대해서. 따라서 귀하는 결제를 처리하고 귀하가 아닌 다른 누구도 액세스 할 수없는 데이터베이스 (즉, 인터넷이나이 웹 앱에 연결되어 있지 않음)에서 계정 잔액의 감소를 관리합니다. 해당 데이터베이스의 스냅 샷을 주기적으로 가져 와서 webapp과 상호 작용하는 업데이트를 업데이트하여 사용자가 저울의 읽기 복사본을 가질 수 있습니다. 이렇게하면 사용자가 데이터를 수정하여 100 만 달러 씩 균형을 조정할 수있는 경우에도 별도의 위치에서 진정한 균형을 유지하게됩니다. 기본적으로 웹 애플리케이션 측면에서 데이터를 신뢰할 필요가 없습니다. 이는 사용자에게 정보를 제공하는 것입니다.

+0

+1 좋은 해결책! – B4NZ41

관련 문제