function test_showsTransactionInformation()
 {
     $result = Braintree\Transaction::sale(['amount' => 10, 'paymentMethodNonce' => 'fake-valid-nonce']);
     $transaction = $result->transaction;
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, "localhost:3000/transaction.php?id=" . $transaction->id);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     $output = curl_exec($curl);
     $httpStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);
     curl_close($curl);
     $this->assertEquals($httpStatus, 200);
     $this->assertContains($transaction->id, $output);
     $this->assertContains($transaction->type, $output);
     $this->assertContains($transaction->amount, $output);
     $this->assertContains($transaction->status, $output);
     $this->assertContains($transaction->creditCardDetails->bin, $output);
     $this->assertContains($transaction->creditCardDetails->last4, $output);
     $this->assertContains($transaction->creditCardDetails->cardType, $output);
     $this->assertContains($transaction->creditCardDetails->expirationDate, $output);
     $this->assertContains($transaction->creditCardDetails->customerLocation, $output);
 }
 function test_checkoutsShowContainsTransactionInformation()
 {
     $non_duplicate_amount = rand(1, 100) . "." . rand(1, 99);
     $result = Braintree\Transaction::sale(['amount' => $non_duplicate_amount, 'paymentMethodNonce' => 'fake-valid-nonce', 'options' => ['submitForSettlement' => True]]);
     $transaction = $result->transaction;
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, "localhost:3000/checkouts/" . $transaction->id);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     $output = curl_exec($curl);
     $httpStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);
     curl_close($curl);
     $this->assertEquals($httpStatus, 200);
     $this->assertContains($transaction->id, $output);
     $this->assertContains($transaction->type, $output);
     $this->assertContains($transaction->amount, $output);
     $this->assertContains($transaction->status, $output);
     $this->assertContains($transaction->creditCardDetails->bin, $output);
     $this->assertContains($transaction->creditCardDetails->last4, $output);
     $this->assertContains($transaction->creditCardDetails->cardType, $output);
     $this->assertContains($transaction->creditCardDetails->expirationDate, $output);
     $this->assertContains($transaction->creditCardDetails->customerLocation, $output);
 }
 public function sendData($data)
 {
     $response = Braintree\Transaction::submitForSettlement($data['transactionId'], $data['amount']);
     return $this->response = new Response($this, $response);
 }
 public function sendData($data)
 {
     $response = Braintree\Transaction::void($data);
     return $this->response = new Response($this, $response);
 }
$app->get('/checkouts', function () use($app) {
    $app->render('checkouts/new.php', ['client_token' => Braintree\ClientToken::generate()]);
});
$app->post('/checkouts', function () use($app) {
    $result = Braintree\Transaction::sale(["amount" => $app->request->post('amount'), "paymentMethodNonce" => $app->request->post('payment_method_nonce'), 'options' => ['submitForSettlement' => True]]);
    if ($result->success || $result->transaction) {
        $app->redirect('/checkouts/' . $result->transaction->id);
    } else {
        $errorString = "";
        foreach ($result->errors->deepAll() as $error) {
            $errorString .= 'Error: ' . $error->code . ": " . $error->message . "\n";
        }
        $_SESSION["errors"] = $errorString;
        $app->redirect('/checkouts');
    }
});
$app->get('/checkouts/:transaction_id', function ($transaction_id) use($app) {
    $transaction = Braintree\Transaction::find($transaction_id);
    $transactionSuccessStatuses = [Braintree\Transaction::AUTHORIZED, Braintree\Transaction::AUTHORIZING, Braintree\Transaction::SETTLED, Braintree\Transaction::SETTLING, Braintree\Transaction::SETTLEMENT_CONFIRMED, Braintree\Transaction::SETTLEMENT_PENDING, Braintree\Transaction::SUBMITTED_FOR_SETTLEMENT];
    if (in_array($transaction->status, $transactionSuccessStatuses)) {
        $header = "Sweet Success!";
        $icon = "success";
        $message = "Your test transaction has been successfully processed. See the Braintree API response and try again.";
    } else {
        $header = "Transaction Failed";
        $icon = "fail";
        $message = "Your test transaction has a status of " . $transaction->status . ". See the Braintree API response and try again.";
    }
    $app->render('checkouts/show.php', ['transaction' => $transaction, 'header' => $header, 'icon' => $icon, 'message' => $message]);
});
$app->run();
Example #6
0
<?php

Route::get('/', function () {
    return view('welcome');
});
Route::group(['middleware' => 'web'], function () {
    Route::auth();
    Route::get('/home', 'HomeController@index');
    Route::group(['prefix' => 'braintree'], function () {
        Route::get('checkout', ['as' => 'braintree.checkout', 'uses' => function () {
            $clientToken = Braintree\ClientToken::generate();
            return view('braintree.checkout', compact('clientToken'));
        }]);
        Route::post('checkout', ['as' => 'braintree.charge', 'uses' => function () {
            return Braintree\Transaction::sale(['amount' => (int) Request::input('amount'), 'paymentMethodNonce' => Request::input('payment_method_nonce')]);
        }]);
    });
    Route::group(['prefix' => 'stripe'], function () {
        Route::get('checkout', ['as' => 'stripe.checkout', 'uses' => function () {
            return view('stripe.checkout');
        }]);
        Route::post('subscribe', ['as' => 'stripe.subscribe', 'uses' => function () {
            $user = App\User::find(1);
            $user->newSubscription('main', 'monthly')->create(Request::input('stripeToken'));
            return $user;
        }]);
        Route::get('invoice', ['as' => 'stripe.invoice', 'uses' => function () {
            $user = App\User::find(1);
            $invoices = $user->invoices();
            return $user->downloadInvoice($invoices[0]->id, ['vendor' => 'Your Company', 'product' => 'Your Product']);
        }]);
<?php

require_once "../includes/braintree_init.php";
$amount = $_POST["amount"];
$nonce = $_POST["payment_method_nonce"];
$result = Braintree\Transaction::sale(['amount' => $amount, 'paymentMethodNonce' => $nonce, 'options' => ['submitForSettlement' => true]]);
if ($result->success || !is_null($result->transaction)) {
    $transaction = $result->transaction;
    header("Location: transaction.php?id=" . $transaction->id);
} else {
    $errorString = "";
    foreach ($result->errors->deepAll() as $error) {
        $errorString .= 'Error: ' . $error->code . ": " . $error->message . "\n";
    }
    $_SESSION["errors"] = $errorString;
    header("Location: index.php");
}
<html>
<?php 
require_once "../includes/head.php";
?>
<body>

<?php 
require_once "../includes/braintree_init.php";
require_once "../includes/header.php";
if (isset($_GET["id"])) {
    $transaction = Braintree\Transaction::find($_GET["id"]);
    $transactionSuccessStatuses = [Braintree\Transaction::AUTHORIZED, Braintree\Transaction::AUTHORIZING, Braintree\Transaction::SETTLED, Braintree\Transaction::SETTLING, Braintree\Transaction::SETTLEMENT_CONFIRMED, Braintree\Transaction::SETTLEMENT_PENDING, Braintree\Transaction::SUBMITTED_FOR_SETTLEMENT];
    if (in_array($transaction->status, $transactionSuccessStatuses)) {
        $header = "Sweet Success!";
        $icon = "success";
        $message = "Your test transaction has been successfully processed. See the Braintree API response and try again.";
    } else {
        $header = "Transaction Failed";
        $icon = "fail";
        $message = "Your test transaction has a status of " . $transaction->status . ". See the Braintree API response and try again.";
    }
}
?>

<div class="wrapper">
    <div class="response container">
        <div class="content">
            <div class="icon">
            <img src="/images/<?php 
echo $icon;
?>