Авторизация braintree Проверка и сохранение кредитной карты php

Я создаю электронную коммерцию на PHP, и эта страница должна авторизовать кредитную карту. Если он действителен, я сохраню его на странице клиента.

Я написал для него этот код, но так и не понял, как авторизовать карту не заряжать его.

код

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST['card_number']) && !empty($_POST['card_name']) && !empty($_POST['expiry_month']) && !empty($_POST['expiry_year']) && !empty($_POST['cvv']))
{
$card_number=str_replace("+","",$_POST['card_number']);  
$card_name=$_POST['card_number'];
$expiry_month=$_POST['expiry_month'];
$expiry_year=$_POST['expiry_year'];
$cvv=$_POST['cvv'];
$expirationDate=$expiry_month.'/'.$expiry_year;

require_once 'braintree/Braintree.php';
Braintree_Configuration::environment('production'); /* this is sandbox or production */
Braintree_Configuration::merchantId('id');
Braintree_Configuration::publicKey('public');
Braintree_Configuration::privateKey('secrit ');

$result = Braintree_Transaction::sale(array(
'amount' => 0,
'creditCard' => array(
'number' => $card_number,
'cardholderName' => $card_name,
'expirationDate' => $expirationDate,
'cvv' => $cvv
)
));

//echo "<pre>";
echo $result->message;
die;
if ($result->success) 
{
    //print_r("success!: " . $result->transaction->id);
    if ($result->transaction->id)
    {
        $braintreeCode=$result->transaction->id;
        echo "<h2>Your payment successfully done ".$braintreeCode."</h2>";
    }
}else if ($result->transaction){
        echo "<pre>";
        print_r($result->transaction);
        //echo '{"OrderStatus": [{"status":"2"}]}';

}else{

    echo "<h2>Your payment is not completed</h2>";
}

}
?>

поделитесь ошибкой здесь. paymentMethodToken отсутствует в sale()

devpro 14.03.2019 14:17

а откуда ты используешь payment_method_nonce?

devpro 14.03.2019 14:25

это работает хорошо для оплаты, им нужно авторизовать его, проверить его, а затем сохранить на странице клиента, я не получил пример его работы над ним.

hamed alh 14.03.2019 14:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
223
2

Ответы 2

Я рекомендую следовать официальному руководству на https://developers.braintreepayments.com/guides/transactions/php

Способ, которым вы собираете данные кредитной карты (например, номер или срок действия), не соответствует требованиям, предъявляемым Braintree, и может привести к приостановке или прекращению действия вашей учетной записи.

Данные кредитной карты не должны быть доступны для вашего сервера. Лучше использовать Встраиваемый пользовательский интерфейс или Размещенные поля.

я знаю это, но идея проверить это и сохранить

hamed alh 14.03.2019 14:38

Full disclosure: I work at Braintree. If you have any further questions, feel free to contact support.

Самое простое исправление того, что вы пытаетесь сделать, — передать параметр storeInVault в ваш вызов Transaction::sale(). Это сохраняет информацию о клиенте в вашем хранилище до тех пор, пока платеж будет успешным.

Кроме того, вы можете создать клиента, интегрировав наш вызов Customer::create() в свой код с параметром verifyCard.

Другие вопросы по теме