// Include FraudLabs Pro library
require_once 'PATH_TO_FRAUDLABSPRO/lib/FraudLabsPro.class.php';
// Include BrainTree library
require_once 'PATH_TO_BRAINTREE/lib/Braintree.php';
// We show the example code using the SandBox environment.
Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('use_your_merchant_id');
Braintree_Configuration::publicKey('use_your_public_key');
Braintree_Configuration::privateKey('use_your_private_key');
// Create a free user account at http://www.fraudlabspro.com, if you do not have one
$fraud = new FraudLabsPro('use_your_fraudlabspro_api_key');
// Check this transaction for possible fraud. FraudLabs Pro support comprehensive validation check,
// and for this example, we only perform the IP address, BIN and billing country validation.
// For complete validation, please check our developer page at http://www.fraudlabspro.com/developer
$fraudResult = $fraud->check(array( 'ipAddress' => $_SERVER['REMOTE_ADDR'],
'creditCardNumber' => $_POST['number'],
'billingCountry' => $_POST['country'],
'amount' => $_POST['amount']
));
// This transaction is legitimate, let's submit to Braintree
if($fraudResult->fraudlabspro_status == 'APPROVE'){
// Submit for settlement
$result = Braintree_Transaction
::sale(array( 'amount' => $_POST['amount'],
'number' => $_POST['number'],
'cvv' => $_POST['cvv'],
'expirationMonth' => $_POST['month'],
'expirationYear' => $_POST['year']
),
'submitForSettlement' => true
)
));
if ($result->success) {
echo("Success! Transaction ID: " . $result->transaction->id);
} else if ($result->transaction) {
echo("Error: " . $result->message);
echo("<br>");
echo("Code: " . $result->transaction->processorResponseCode);
} else {
echo("Validation errors:<br>");
foreach (($result->errors->deepAll()) as $error) {
echo("- " . $error->message . "<br>");
}
}
}
// Transaction has been rejected by FraudLabs Pro based on your custom validation rules.
elseif($fraudResult->fraudlabspro_status == 'REJECT'){
/*
Do something here, try contact the customer for verification
*/
}
// Transaction is marked for a manual review by FraudLabs Pro based on your custom validation rules.
elseif($fraudResult->fraudlabspro_status == 'REVIEW'){
// Authorize this order with BrainTree, but no settlement
$result = Braintree_Transaction
::sale(array( 'amount' => $_POST['amount'],
'number' => $_POST['number'],
'cvv' => $_POST['cvv'],
'expirationMonth' => $_POST['month'],
'expirationYear' => $_POST['year']
),
'submitForSettlement' => false
)
));
if ($result->success) {
echo("Success! Transaction ID: " . $result->transaction->id);
try{
// Initial MySQL connection
$db = new PDO('mysql:host=your_database_host;dbname=your_database_name;charset=utf8', 'your_database_user', 'your_database_password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Store the transaction information for decision making
$st = $db->prepare('INSERT INTO `fraudlabs_pro` VALUES (:flpId, :flpStatus, :braintreeId)');
':flpId'=>$fraudResult->fraudlabspro_id,
':flpStatus'=>$fraudResult->fraudlabspro_status,
':braintreeId'=>$result->transaction->id
));
}
catch(PDOException $e){
// MySQL error
die($e->getFile() . ':' . $e->getLine() . ' ' . $e->getMessage()); }
} else if ($result->transaction) {
echo("Error: " . $result->message);
echo("<br>");
echo("Code: " . $result->transaction->processorResponseCode);
} else {
echo("Validation errors:<br>");
foreach (($result->errors->deepAll()) as $error) {
echo("- " . $error->message . "<br>");
}
}
}