как проверить, действительна ли кредитная карта или нет для PayPal - PullRequest
3 голосов
/ 29 января 2010

Я должен принять данные кредитной карты пользователя для оплаты через PayPal. Когда пользователь вводит данные карты в первый раз, оплата производится через PayPal Pro. Если карта недействительна, оплата не будет произведена. Оплата будет производиться только в том случае, если карта действительна.

Когда пользователь вводит действительные данные карты в первый раз, и платеж выполняется, если такой пользователь изменяет данные кредитной карты в то время, мне нужно снова проверить, действительна ли карта для PayPal или нет.

Так есть ли какие-либо API, которые только проверяют данные кредитной карты и не обрабатывают какой-либо платеж?

Я использую php и mysql.

Спасибо.

Авинаш

Ответы [ 3 ]

4 голосов
/ 29 января 2010

С Paypal ваши возможности очень ограничены. Если вы используете Paypal Pro, вы можете подтвердить, что карта существует и является законной, выполнив Авторизацию только за 0,00 долларов США. Если вы используете другие способы оплаты, предлагаемые Paypal, вы не сможете это сделать.

Тогда вы можете проверить, что карта содержит хотя бы достоверную информацию. Вы можете проверить правильность номера карты, используя алгоритм Luhn . Все номера кредитных карт выдаются по шаблону, который можно проверить с помощью этого алгоритма. Он не может подтвердить, что карта действительна, но исключит ввод поддельных номеров кредитных карт. Вам также следует убедиться, что срок действия не истек и что код CVV имеет длину всего три цифры для Visa, MasterCard и Discover Card и четыре цифры для American Express.

Если вам нужен код для проверки номера карты по алгоритму Луна, дайте мне знать, и я могу добавить свой ответ, чтобы включить его.

EDIT (добавлен код алгоритма Луна в PHP):

function passes_luhn_check($cc_number) {
    $checksum  = 0;
    $j = 1;
    for ($i = strlen($cc_number) - 1; $i >= 0; $i--) {
        $calc = substr($cc_number, $i, 1) * $j;
        if ($calc > 9) {
            $checksum = $checksum + 1;
            $calc = $calc - 10;
        }
        $checksum += $calc;
        $j = ($j == 1) ? 2 : 1;
    }
    if ($checksum % 10 != 0) {
        return false;
    }
    return true;
}

Использование:

$valid_cc = passes_luhn_check('4427802641004797'); // returns true
$valid_cc = passes_luhn_check('4427802641004798'); // returns false
0 голосов
/ 29 января 2010

Какие данные кредитной карты могут быть изменены клиентом, которые влияют на данные, которые вы сохранили. Если клиент меняет что-то существенное, например, свое имя для тиснения, то эмитент дает ему новую карту. С вашей точки зрения, это должна быть новая карта (даже если номер карты не изменился).

Если вы сохраните некоторые другие данные, значит, вы сэкономите слишком много.

С моей точки зрения (я работаю в эмитенте), не идите путем авторизации в $ 0,00. Если вы хотите взимать плату с клиента, то сделайте авторизацию. Не Paypall, но эмитент будет обрабатывать авторизацию. И, наконец, только эмитент знает, действительна ли карта или нет.

0 голосов
/ 29 января 2010

Не зная много о Paypal, я бы предположил, что у них есть какой-то API авторизации, где вы можете сделать авторизацию за 0,00 $, чтобы проверить, действительна ли карта.

Помните требования PCI при хранении данных кредитной карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...