59 - Handling Invalid Payment Tokens

This commit is contained in:
Adam Wathan
2016-12-30 16:51:27 -05:00
parent 874f63872a
commit 8d96de356c
2 changed files with 25 additions and 5 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Billing;
use Stripe\Charge;
use Stripe\Error\InvalidRequest;
class StripePaymentGateway implements PaymentGateway
{
@@ -15,10 +16,14 @@ class StripePaymentGateway implements PaymentGateway
public function charge($amount, $token)
{
Charge::create([
'amount' => $amount,
'source' => $token,
'currency' => 'usd',
], ['api_key' => $this->apiKey]);
try {
Charge::create([
'amount' => $amount,
'source' => $token,
'currency' => 'usd',
], ['api_key' => $this->apiKey]);
} catch (InvalidRequest $e) {
throw new PaymentFailedException;
}
}
}

View File

@@ -1,6 +1,7 @@
<?php
use App\Billing\StripePaymentGateway;
use App\Billing\PaymentFailedException;
/**
* @group integration
@@ -24,6 +25,20 @@ class StripePaymentGatewayTest extends TestCase
$this->assertEquals(2500, $this->lastCharge()->amount);
}
/** @test */
function charges_with_an_invalid_payment_token_fail()
{
try {
$paymentGateway = new StripePaymentGateway(config('services.stripe.secret'));
$paymentGateway->charge(2500, 'invalid-payment-token');
} catch (PaymentFailedException $e) {
$this->assertCount(0, $this->newCharges());
return;
}
$this->fail("Charging with an invalid payment token did not throw a PaymentFailedException.");
}
private function lastCharge()
{
return array_first(\Stripe\Charge::all(