Я создаю электронную коммерцию на 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>";
}
}
?>
а откуда ты используешь payment_method_nonce?
это работает хорошо для оплаты, им нужно авторизовать его, проверить его, а затем сохранить на странице клиента, я не получил пример его работы над ним.






Я рекомендую следовать официальному руководству на https://developers.braintreepayments.com/guides/transactions/php
Способ, которым вы собираете данные кредитной карты (например, номер или срок действия), не соответствует требованиям, предъявляемым Braintree, и может привести к приостановке или прекращению действия вашей учетной записи.
Данные кредитной карты не должны быть доступны для вашего сервера. Лучше использовать Встраиваемый пользовательский интерфейс или Размещенные поля.
я знаю это, но идея проверить это и сохранить
Full disclosure: I work at Braintree. If you have any further questions, feel free to contact support.
Самое простое исправление того, что вы пытаетесь сделать, — передать параметр storeInVault в ваш вызов Transaction::sale(). Это сохраняет информацию о клиенте в вашем хранилище до тех пор, пока платеж будет успешным.
Кроме того, вы можете создать клиента, интегрировав наш вызов Customer::create() в свой код с параметром verifyCard.
поделитесь ошибкой здесь.
paymentMethodTokenотсутствует вsale()