/home/desid573/public_html/app/braintree/tests/integration
Edit: /home/desid573/public_html/app/braintree/tests/integration/TransactionWithUsBankAccountTest.php (11892B)
'100.00',
'merchantAccountId' => Test\Helper::usBankMerchantAccount(),
'paymentMethodNonce' => Test\Helper::generateValidUsBankAccountNonce(),
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertTrue($result->success);
$transaction = $result->transaction;
$this->assertEquals(Braintree\Transaction::SETTLEMENT_PENDING, $transaction->status);
$this->assertEquals(Braintree\Transaction::SALE, $transaction->type);
$this->assertEquals('100.00', $transaction->amount);
$this->assertEquals('021000021', $transaction->usBankAccount->routingNumber);
$this->assertEquals('1234', $transaction->usBankAccount->last4);
$this->assertEquals('checking', $transaction->usBankAccount->accountType);
$this->assertEquals('Dan Schulman', $transaction->usBankAccount->accountHolderName);
$this->assertRegExp('/CHASE/', $transaction->usBankAccount->bankName);
$this->assertEquals('cl mandate text', $transaction->usBankAccount->achMandate->text);
$this->assertEquals('DateTime', get_class($transaction->usBankAccount->achMandate->acceptedAt));
}
public function testSaleWithUsBankAccountNonceAndVaultedToken()
{
$result = Braintree\Transaction::sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::usBankMerchantAccount(),
'paymentMethodNonce' => Test\Helper::generateValidUsBankAccountNonce(),
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertTrue($result->success);
$transaction = $result->transaction;
$this->assertEquals(Braintree\Transaction::SETTLEMENT_PENDING, $transaction->status);
$this->assertEquals(Braintree\Transaction::SALE, $transaction->type);
$this->assertEquals('100.00', $transaction->amount);
$this->assertEquals('021000021', $transaction->usBankAccount->routingNumber);
$this->assertEquals('1234', $transaction->usBankAccount->last4);
$this->assertEquals('checking', $transaction->usBankAccount->accountType);
$this->assertEquals('Dan Schulman', $transaction->usBankAccount->accountHolderName);
$this->assertEquals('cl mandate text', $transaction->usBankAccount->achMandate->text);
$this->assertEquals('DateTime', get_class($transaction->usBankAccount->achMandate->acceptedAt));
$result = Braintree\Transaction::sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::usBankMerchantAccount(),
'paymentMethodToken' => $transaction->usBankAccount->token,
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertTrue($result->success);
$transaction = $result->transaction;
$this->assertEquals(Braintree\Transaction::SETTLEMENT_PENDING, $transaction->status);
$this->assertEquals(Braintree\Transaction::SALE, $transaction->type);
$this->assertEquals('100.00', $transaction->amount);
$this->assertEquals('021000021', $transaction->usBankAccount->routingNumber);
$this->assertEquals('1234', $transaction->usBankAccount->last4);
$this->assertEquals('checking', $transaction->usBankAccount->accountType);
$this->assertEquals('Dan Schulman', $transaction->usBankAccount->accountHolderName);
$this->assertEquals('cl mandate text', $transaction->usBankAccount->achMandate->text);
$this->assertEquals('DateTime', get_class($transaction->usBankAccount->achMandate->acceptedAt));
}
public function testSaleWithPlaidUsBankAccountNonce()
{
$result = Braintree\Transaction::sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::usBankMerchantAccount(),
'paymentMethodNonce' => Test\Helper::generatePlaidUsBankAccountNonce(),
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertTrue($result->success);
$transaction = $result->transaction;
$this->assertEquals(Braintree\Transaction::SETTLEMENT_PENDING, $transaction->status);
$this->assertEquals(Braintree\Transaction::SALE, $transaction->type);
$this->assertEquals('100.00', $transaction->amount);
$this->assertEquals('011000015', $transaction->usBankAccount->routingNumber);
$this->assertEquals('0000', $transaction->usBankAccount->last4);
$this->assertEquals('checking', $transaction->usBankAccount->accountType);
$this->assertEquals('Dan Schulman', $transaction->usBankAccount->accountHolderName);
$this->assertRegExp('/FEDERAL/', $transaction->usBankAccount->bankName);
$this->assertEquals('cl mandate text', $transaction->usBankAccount->achMandate->text);
$this->assertEquals('DateTime', get_class($transaction->usBankAccount->achMandate->acceptedAt));
}
public function testSaleWithInvalidUsBankAccountNonce()
{
$result = Braintree\Transaction::sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::usBankMerchantAccount(),
'paymentMethodNonce' => Test\Helper::generateInvalidUsBankAccountNonce(),
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertFalse($result->success);
$baseErrors = $result->errors->forKey('transaction')->onAttribute('paymentMethodNonce');
$this->assertEquals(Braintree\Error\Codes::TRANSACTION_PAYMENT_METHOD_NONCE_UNKNOWN, $baseErrors[0]->code);
}
public function testCompliantMerchantUnverifiedToken()
{
$gateway = new Braintree\Gateway([
'environment' => 'development',
'merchantId' => 'integration2_merchant_id',
'publicKey' => 'integration2_public_key',
'privateKey' => 'integration2_private_key'
]);
$customer = $gateway->customer()->create([
'firstName' => 'Joe',
'lastName' => 'Brown'
])->customer;
$result = $gateway->paymentMethod()->create([
'customerId' => $customer->id,
'paymentMethodNonce' => Test\Helper::generateValidUsBankAccountNonce(),
'options' => [
'verificationMerchantAccountId' => Test\Helper::anotherUsBankMerchantAccount()
]
]);
$usBankAccount = $result->paymentMethod;
$this->assertEquals('021000021', $usBankAccount->routingNumber);
$this->assertEquals('1234', $usBankAccount->last4);
$this->assertEquals('checking', $usBankAccount->accountType);
$this->assertEquals('Dan Schulman', $usBankAccount->accountHolderName);
$this->assertRegexp('/CHASE/', $usBankAccount->bankName);
$this->assertEquals(false, $usBankAccount->verified);
$this->assertEquals(0, count($usBankAccount->verifications));
$sale = $gateway->transaction()->sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::anotherUsBankMerchantAccount(),
'paymentMethodToken' => $usBankAccount->token,
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertFalse($sale->success);
$baseErrors = $sale->errors->forKey('transaction')->onAttribute('paymentMethodToken');
$this->assertEquals(Braintree\Error\Codes::TRANSACTION_US_BANK_ACCOUNT_NOT_VERIFIED, $baseErrors[0]->code);
}
public function testCompliantMerchantUnverifiedNonce()
{
$gateway = new Braintree\Gateway([
'environment' => 'development',
'merchantId' => 'integration2_merchant_id',
'publicKey' => 'integration2_public_key',
'privateKey' => 'integration2_private_key'
]);
$sale = $gateway->transaction()->sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::anotherUsBankMerchantAccount(),
'paymentMethodNonce' => Test\Helper::generateValidUsBankAccountNonce(),
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertFalse($sale->success);
$baseErrors = $sale->errors->forKey('transaction')->onAttribute('paymentMethodNonce');
$this->assertEquals(Braintree\Error\Codes::TRANSACTION_US_BANK_ACCOUNT_NONCE_MUST_BE_PLAID_VERIFIED, $baseErrors[0]->code);
}
public function testCompliantMerchantPlaidToken()
{
$gateway = new Braintree\Gateway([
'environment' => 'development',
'merchantId' => 'integration2_merchant_id',
'publicKey' => 'integration2_public_key',
'privateKey' => 'integration2_private_key'
]);
$customer = $gateway->customer()->create([
'firstName' => 'Joe',
'lastName' => 'Brown'
])->customer;
$result = $gateway->paymentMethod()->create([
'customerId' => $customer->id,
'paymentMethodNonce' => Test\Helper::generatePlaidUsBankAccountNonce(),
'options' => [
'verificationMerchantAccountId' => Test\Helper::anotherUsBankMerchantAccount()
]
]);
$usBankAccount = $result->paymentMethod;
$this->assertEquals('011000015', $usBankAccount->routingNumber);
$this->assertEquals('0000', $usBankAccount->last4);
$this->assertEquals('checking', $usBankAccount->accountType);
$this->assertEquals('Dan Schulman', $usBankAccount->accountHolderName);
$this->assertRegexp('/FEDERAL/', $usBankAccount->bankName);
$this->assertEquals(true, $usBankAccount->verified);
$this->assertEquals(1, count($usBankAccount->verifications));
$sale = $gateway->transaction()->sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::anotherUsBankMerchantAccount(),
'paymentMethodToken' => $usBankAccount->token,
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertTrue($sale->success);
$this->assertEquals($sale->transaction->amount, '100');
$this->assertEquals($sale->transaction->usBankAccount->token, $usBankAccount->token);
}
public function testCompliantMerchantPlaidNonce()
{
$gateway = new Braintree\Gateway([
'environment' => 'development',
'merchantId' => 'integration2_merchant_id',
'publicKey' => 'integration2_public_key',
'privateKey' => 'integration2_private_key'
]);
$sale = $gateway->transaction()->sale([
'amount' => '100.00',
'merchantAccountId' => Test\Helper::anotherUsBankMerchantAccount(),
'paymentMethodNonce' => Test\Helper::generatePlaidUsBankAccountNonce(),
'options' => [
'submitForSettlement' => true,
'storeInVault' => true
]
]);
$this->assertTrue($sale->success);
$this->assertEquals($sale->transaction->amount, '100');
}
}