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); }
<?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 'vendor/autoload.php'; require_once "includes/braintree_init.php"; $app = new \Slim\Slim(); $app->config(['templates.path' => 'templates']); $app->get('/', function () use($app) { $app->redirect('/checkouts'); }); $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";
<?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"); }