我使用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>";
}
}
?>
答案 0 :(得分:4)
全部披露:我在Braintree工作。如有其他疑问,请随时联系 support。
最简单的解决方法是将storeInVault
参数传递到您的Transaction::sale()
调用中。只要付款成功,这会将客户信息保存到您的保管库中。
此外,您可以通过将我们的Customer::create()
调用与verifyCard
参数集成到您的代码中来创建客户。
答案 1 :(得分:1)
我建议遵循https://developers.braintreepayments.com/guides/transactions/php上的官方指南
收集信用卡数据(例如号码或有效日期)的方式不符合Braintree的要求,并且可能会导致您的帐户被暂停或终止。
您的服务器将无法使用信用卡数据。您应该使用Drop-in UI或Hosted fields。