2013-02-11 30 views
6

Tôi đang phát triển hệ thống bán vé trực tuyến cho các sự kiện (như buổi hòa nhạc). Một phần cơ bản là một biểu đồ chỗ ngồi, nơi du khách sẽ được trình bày các ghế/vé có sẵn để lựa chọn. Khi họ thực hiện lựa chọn, hệ thống sẽ ngay lập tức cố gắng đặt vé trong 10 phút (bằng cách nhập ID vé vào một bảng có ID vé là chìa khóa). Chỉ khi đặt phòng thành công, một nút paypal được trình bày để thực hiện thanh toán.Đặt vé trực tuyến bằng PayPal: Ngăn nhiều khách truy cập mua cùng một vé

Tất cả điều này hoạt động tốt. Đặt vé không phải là vấn đề đối với tôi. Tôi có thể xử lý điều đó trong hệ thống của mình. Nhưng một khi paypal đi vào trò chơi, mọi thứ trở nên khó khăn.

Vấn đề: Nếu người dùng vì lý do nào đó dành nhiều thời gian trong Paypal (hơn 10 phút), đặt vé trên trang web của tôi sẽ hết hạn, cho phép khách hàng khác mua vé. trước khi khách truy cập 1 thực hiện thanh toán. Khách truy cập 1 không thấy bất kỳ điều này bởi vì anh ta vẫn còn trong paypal ... Tại một số thời điểm, anh ta sẽ quản lý để thực hiện thanh toán (ví dụ như sau 15 phút), mà sẽ hoàn toàn làm việc vì paypal không biết bất cứ điều gì về đã hết hạn đặt phòng .

Cuối cùng, tôi có thể có hai khách truy cập đã thanh toán cho cùng một vé/chỗ ngồi!

Làm cách nào để ngăn điều đó xảy ra? Làm thế nào để bạn xử lý các điều kiện chủng tộc nếu hai hệ thống có liên quan và một trong số đó là ngoài tầm kiểm soát của bạn?

Suy nghĩ của tôi là: Trên thực tế, bạn nên kiểm tra ngay trước khi thanh toán diễn ra, nhưng tất nhiên tôi không kiểm soát được những gì xảy ra trong paypal!

Tôi biết tôi có thể sử dụng IPN của Paypal và như vậy, nhưng điều này chỉ xảy ra SAU KHI thanh toán quá trễ.

Ngoài ra, sẽ rất tuyệt nếu paypal hỏi tôi qua API để xác nhận thanh toán. Sau đó, tôi có thể nói "không" trong trường hợp vé đã được bán cho người khác. Nhưng tôi không nghĩ rằng điều này là có thể với paypal.

Trả lời

2

Tôi khuyên bạn nên sử dụng Express Checkout. Express Checkout cho phép bạn kiểm soát thời điểm thanh toán xảy ra, bởi vì bạn sẽ kích hoạt cuộc gọi API tới PayPal để thực sự xử lý thanh toán.

Khả năng khác mà bạn có thể xem xét là sử dụng ủy quyền thay vì giao dịch bán hàng. Bằng cách đó, nếu người mua khác nhận chỗ ngồi, bạn có thể vô hiệu ủy quyền và người mua sẽ không bị tính phí. (PayPal có thể sẽ tính phí bạn cho ủy quyền không có giá trị, tuy nhiên.)

+0

cảm ơn bạn. Express Checkout có vẻ tốt và tôi sẽ nghiên cứu điều đó. Về phần thứ hai: đây có phải là tính năng cụ thể của paypal không? Tôi đã tìm kiếm và không thực sự tìm thấy bất cứ điều gì liên quan đến "ủy quyền". – user1595494

+0

Không, ủy quyền là khá chuẩn trong ngành công nghiệp thẻ tín dụng. Trang này cung cấp số lần thanh toán khá tốt của các loại thanh toán khác nhau mà Express Checkout cung cấp: https://www.x.com/developers/paypal/documentation-tools/express-checkout/integration-guide/ECRelatedAPIOps –

1

Một giải pháp như Matt Cole đề xuất là sử dụng 'ủy quyền' thay vì 'bán'.

Bạn có thể thực hiện điều này bằng cách đặt 'intent' thành 'authorise' thay vì 'sale' ({intent: "authorise"}) trong các cuộc gọi tới Paypal API khi bạn đang tạo thanh toán Paypal. Khi khách hàng chấp thuận giao dịch, bạn có quyền ủy quyền giao dịch này bằng cách ghi lại thanh toán.

Các vấn đề liên quan