Я работаю над системой онлайн-рассылки билетов.
Система проверяет, доступны ли билеты, прежде чем пользователь попытается их оплатить, однако может случиться, что билеты закончатся, пока пользователь платит.
Я хочу сделать так, чтобы, когда пользователь фактически завершил платеж через PayPal, если билеты закончились, он отменяет платеж и предупреждает пользователя.
Я не прошу полное руководство, но я спрашиваю о том, какой метод оплаты я должен использовать (Adaptive Payments, Express Checkout) и на какие части API я должен ссылаться. Я использую классический API.
Спасибо за вашу помощь.
Вы можете использовать любой из платежных продуктов PayPal. Стандартная вещь, которую нужно сделать при продаже ограниченного количества товаров или других товаров, которые имеют издержки / задержки / проблемы при полном заполнении, — это получить разрешение на оплату от покупателя (поэтому используйте PAYMENTACTION = AUTHORIZATION), а затем распределить / зарезервировать / продать товары этому Конкретный покупатель, а затем захватить средства.
Лично я рекомендую Express Checkout over Adaptive Payments, хотя оба продукта отлично справляются с этой задачей. Принимая EC в качестве примера, вы должны проверить доступность билета, выполнить SetEC, перенаправить пользователя в PayPal для входа в систему, вызвать GetEC (дополнительно здесь вы можете снова проверить доступность) и вызвать DoEC с paymentaction = authorization. Теперь вы гарантированно сможете получить средства, потому что вы зарезервировали их у покупателя. Забронировать / продать билеты покупателю. Когда это удастся, вызовите DoCapture для получения авторизации. Если билеты исчезли в течение нескольких секунд между DoEC и вашим резервированием (или возникла какая-то другая проблема с выполнением с вашей стороны), вы звоните в DoVoid, чтобы аннулировать авторизацию и освободить удержание средств (хотя ваш код взрывается и не может аннулироваться. в любом случае, срок его действия истекает через несколько дней, поэтому воздействие на покупателя должно быть минимальным).
Других решений пока нет …