diff --git a/externals/balanced-php/.gitignore b/externals/balanced-php/.gitignore deleted file mode 100644 index dc4e206783..0000000000 --- a/externals/balanced-php/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# composer -.buildpath -composer.lock -composer.phar -vendor -*~ -*# -# phar -*.phar - -# eclipse-pdt -.settings -.project -*.iml diff --git a/externals/balanced-php/.travis.yml b/externals/balanced-php/.travis.yml deleted file mode 100644 index 9448540876..0000000000 --- a/externals/balanced-php/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: php -before_script: - - curl -s http://getcomposer.org/installer | php - - php composer.phar install -script: phpunit --bootstrap vendor/autoload.php --exclude-group suite tests/ -php: - - 5.3 - - 5.4 diff --git a/externals/balanced-php/LICENSE b/externals/balanced-php/LICENSE deleted file mode 100644 index 5e0cd0dff2..0000000000 --- a/externals/balanced-php/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Balanced - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/externals/balanced-php/README.md b/externals/balanced-php/README.md deleted file mode 100644 index 8da0373331..0000000000 --- a/externals/balanced-php/README.md +++ /dev/null @@ -1,156 +0,0 @@ -# Balanced - -Online Marketplace Payments - -[![Build Status](https://secure.travis-ci.org/balanced/balanced-php.png)](http://travis-ci.org/balanced/balanced-php) - -The design of this library was heavily influenced by [Httpful](https://github.com/nategood/httpful). - -## Requirements - -- [PHP](http://www.php.net) >= 5.3 **with** [cURL](http://www.php.net/manual/en/curl.installation.php) -- [RESTful](https://github.com/bninja/restful) >= 0.1 -- [Httpful](https://github.com/nategood/httpful) >= 0.1 - -## Issues - -Please use appropriately tagged github [issues](https://github.com/balanced/balanced-php/issues) to request features or report bugs. - -## Installation - -You can install using [composer](#composer), a [phar](#phar) package or from [source](#source). Note that Balanced is [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) compliant: - -### Composer - -If you don't have Composer [install](http://getcomposer.org/doc/00-intro.md#installation) it: - - $ curl -s https://getcomposer.org/installer | php - -Add this to your `composer.json`: - - { - "require": { - "balanced/balanced": "*" - } - } - -Refresh your dependencies: - - $ php composer.phar update - - -Then make sure to `require` the autoloader and initialize all: - - composer.json - - php composer.phar install - - curl https://raw.github.com/balanced/balanced-php/master/example/example.php > example.php - - php example.php - - curl https://raw.github.com/balanced/balanced-php/master/example/buyer-example.php > buyer-example.php - - php -S 127.0.0.1:9321 buyer-example.php - # now open a browser and go to http://127.0.0.1:9321/ to view how to tokenize cards and add to a buyer - -## Usage - -See https://www.balancedpayments.com/docs/overview?language=php for tutorials and documentation. - -## Testing - - $ phpunit --bootstrap vendor/autoload.php tests/ - -Or if you'd like to skip network calls: - - $ phpunit --exclude-group suite --bootstrap vendor/autoload.php tests/ - -## Publishing - -1. Ensure that **all** [tests](#testing) pass -2. Increment minor `VERSION` in `src/Balanced/Settings` and `composer.json` (`git commit -am 'v{VERSION} release'`) -3. Tag it (`git tag -a v{VERSION} -m 'v{VERSION} release'`) -4. Push the tag (`git push --tag`) -5. [Packagist](http://packagist.org/packages/balanced/balanced) will see the new tag and take it from there -6. Build (`build-phar`) and upload a [phar](http://php.net/manual/en/book.phar.php) file - -## Contributing - -1. Fork it -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Write your code **and [tests](#testing)** -4. Ensure all tests still pass (`phpunit --bootstrap vendor/autoload.php tests/`) -5. Commit your changes (`git commit -am 'Add some feature'`) -6. Push to the branch (`git push origin my-new-feature`) -7. Create new pull request - -## Contributors - -* [Jacob Rus](https://github.com/jrus) -* [Leon Smith](https://github.com/leonsmith) -* [Matt Drollette](https://github.com/MDrollette) -* [You](https://github.com/balanced/balanced-php/issues)! diff --git a/externals/balanced-php/bootstrap.php b/externals/balanced-php/bootstrap.php deleted file mode 100644 index cb127980a2..0000000000 --- a/externals/balanced-php/bootstrap.php +++ /dev/null @@ -1,4 +0,0 @@ -setStub($stub); -exit_unless($phar, "Unable to create a phar. Make sure you have phar.readonly=0 set in your ini file."); -$phar->buildFromDirectory(dirname($source_dir)); -echo "[ OK ]\n"; - -echo "Renaming Phar... "; -$phar_versioned_name = 'balanced-' . \Balanced\Settings::VERSION . '.phar'; -$phar_versioned_path = $base_dir . '/' . $phar_versioned_name; -rename($phar_path, $phar_versioned_path); -echo "[ OK ]\n"; \ No newline at end of file diff --git a/externals/balanced-php/composer.json b/externals/balanced-php/composer.json deleted file mode 100644 index 9cb9660b3b..0000000000 --- a/externals/balanced-php/composer.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "balanced/balanced", - "description": "Client for Balanced API", - "homepage": "http://github.com/balanced/balanced-php", - "license": "MIT", - "keywords": ["payments", "api"], - "version": "0.7.1", - "authors": [ - { - "name": "Balanced", - "email": "dev@balancedpayments.com", - "homepage": "http://www.balancedpayments.com" - } - ], - "require": { - "nategood/httpful": "*", - "bninja/restful": "*" - }, - "autoload": { - "psr-0": { - "Balanced": "src/" - } - } -} diff --git a/externals/balanced-php/example/bank-account-debits.php b/externals/balanced-php/example/bank-account-debits.php deleted file mode 100644 index 0149e58d23..0000000000 --- a/externals/balanced-php/example/bank-account-debits.php +++ /dev/null @@ -1,54 +0,0 @@ -save(); -Balanced\Settings::$api_key = $key->secret; -$marketplace = new Balanced\Marketplace(); -$marketplace->save(); - -// create a bank account -$bank_account = $marketplace->createBankAccount("Jack Q Merchant", - "123123123", - "123123123" -); -$buyer = $marketplace->createAccount("buyer@example.org"); -$buyer->addBankAccount($bank_account); - -print("you can't debit from a bank account until you verify it\n"); -try { - $buyer->debit(100); -} catch (Exception $e) { - printf("Debit failed, %s\n", $e->getMessage()); -} - -// authenticate -$verification = $bank_account->verify(); - -try { - $verification->confirm(1, 2); -} catch (Balanced\Errors\BankAccountVerificationFailure $e) { - printf('Authentication error , %s\n', $e->getMessage()); - print("PROTIP: for TEST bank accounts the valid amount is always 1 and 1\n"); - -} - -$verification->confirm(1, 1); - -$debit = $buyer->debit(100); -printf("debited the bank account %s for %d cents\n", - $debit->source->uri, - $debit->amount -); -print("and there you have it"); - -?> diff --git a/externals/balanced-php/example/buyer-example.php b/externals/balanced-php/example/buyer-example.php deleted file mode 100644 index 20b38ef5ca..0000000000 --- a/externals/balanced-php/example/buyer-example.php +++ /dev/null @@ -1,157 +0,0 @@ -uri; - return; - } catch (Balanced\Errors\Error $e) { - echo $e->getMessage(); - return; - } - } -} - -function create_buyer($email_address, $card_uri) { - $marketplace = Balanced\Marketplace::mine(); - try { - # new buyer - $buyer = $marketplace->createBuyer( - $email_address, - $card_uri); - } - catch (Balanced\Errors\DuplicateAccountEmailAddress $e) { - # oops, account for $email_address already exists so just add the card - $buyer = Balanced\Account::get($e->extras->account_uri); - $buyer->addCard($card_uri); - } - return $buyer; -} - -?> - - - - - - -

Balanced Sample - Collect Credit Card Information

-
-
-
-
- - -
-
- - -
-
- - / -
-
- - -
- -
-
-
-
- - - - - diff --git a/externals/balanced-php/example/composer.json b/externals/balanced-php/example/composer.json deleted file mode 100644 index 58b9453ab1..0000000000 --- a/externals/balanced-php/example/composer.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "require": { - "balanced/balanced": "*" - } -} diff --git a/externals/balanced-php/example/debit-example.php b/externals/balanced-php/example/debit-example.php deleted file mode 100644 index e8993e11a5..0000000000 --- a/externals/balanced-php/example/debit-example.php +++ /dev/null @@ -1,42 +0,0 @@ -cards->create(array( - "card_number" => "5105105105105100", - "expiration_month" => "12", - "expiration_year" => "2015" -)); -print "our card: " . $card->uri . "\n"; - -print "create a **buyer** account with that card\n"; -$buyer = $marketplace->createBuyer(null, $card->uri); -print "our buyer account: " . $buyer->uri . "\n"; - -print "debit our buyer, let's say $15\n"; -try { - $debit = $buyer->debit(1500); - print "our buyer debit: " . $debit->uri . "\n"; -} -catch (Balanced\Errors\Declined $e) { - print "oh no, the processor declined the debit!\n"; -} -catch (Balanced\Errors\NoFundingSource $e) { - print "oh no, the buyer has not active funding sources!\n"; -} -catch (Balanced\Errors\CannotDebit $e) { - print "oh no, the buyer has no debitable funding sources!\n"; -} - -print "and there you have it 8)\n"; - -?> \ No newline at end of file diff --git a/externals/balanced-php/example/events-and-callbacks.php b/externals/balanced-php/example/events-and-callbacks.php deleted file mode 100644 index 9127c53f41..0000000000 --- a/externals/balanced-php/example/events-and-callbacks.php +++ /dev/null @@ -1,59 +0,0 @@ -save(); -Balanced\Settings::$api_key = $key->secret; -$marketplace = new Balanced\Marketplace(); -$marketplace->save(); - -// let"s create a requestb.in -$ch = curl_init("http://requestb.in/api/v1/bins"); -curl_setopt($ch, CURLOPT_POST, true); -curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); -curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-Type: application/json', - 'Content-Length: ' . 0) -); -$result = json_decode(curl_exec($ch)); -$bin_name = $result->name; -$callback_url = "http://requestb.in/" . $bin_name; -$requests_url = "http://requestb.in/api/v1/bins/" . $bin_name . "/requests"; - -printf("let's create a callback\n"); -$marketplace->createCallback($callback_url); - -printf("let's create a card and associate it with a new account\n"); -$card = $marketplace->cards->create(array( - "card_number" => "5105105105105100", - "expiration_month" => "12", - "expiration_year" => "2015" -)); -$buyer = $marketplace->createBuyer("buyer@example.org", $card->uri); - -printf("generate a debit (which implicitly creates and captures a hold)\n"); -$buyer->debit(100); - -foreach ($marketplace->events as $event) { - printf("this was a %s event, it occurred at %s\n", - $event->type, - $event->occurred_at - ); -} - -printf("ok, let's check with requestb.in to see if our callbacks fired at %s\n", $callback_url); -printf("we received callbacks, you can view them at http://requestb.in/%s?inspect\n", - $bin_name -); - -?> diff --git a/externals/balanced-php/example/example.php b/externals/balanced-php/example/example.php deleted file mode 100644 index 6f0c81dd4a..0000000000 --- a/externals/balanced-php/example/example.php +++ /dev/null @@ -1,120 +0,0 @@ -save(); -print "Our secret is " . $key->secret . "\n"; - -print "configure with our secret " . $key->secret . "\n"; -Balanced\Settings::$api_key = $key->secret; - -print "create our marketplace"; -$marketplace = new Balanced\Marketplace(); -$marketplace->save(); - -if (Balanced\Merchant::me() == null) { - throw new Exception("Balanced\Merchant::me() should not be null"); -} - -print "What's my merchant? Easy: Balanced\Merchant::me(): " . Balanced\Merchant::me()->uri . "\n"; - -if (Balanced\Marketplace::mine() == null) { - throw new Exception("Balanced\Marketplace::mine() should never be null"); -} - -print "What's my marketplace? Easy: Balanced\Marketplace::mine(): " .Balanced\Marketplace::mine()->uri . "\n"; - -print "My marketplace's name is " . $marketplace->name . "\n"; -print "Changing it to TestFooey\n"; -$marketplace->name = "TestFooey"; -$marketplace->save(); -print "My marketplace name is now " . $marketplace->name . "\n"; - -if ($marketplace->name != "TestFooey") { - throw new Exception("Marketplace name is NOT TestFooey"); -} - -print "Cool, let's create a card\n"; -$card = $marketplace->cards->create(array( - "card_number" => "5105105105105100", - "expiration_month" => "12", - "expiration_year" => "2015" -)); - -print "Our card: " . $card->uri . "\n"; - -print "Create out **buyer** account\n"; -$buyer = $marketplace->createBuyer("buyer@example.org", $card->uri); -print "our buyer account: " . $buyer->uri . "\n"; - -print "hold some amount of funds on the buyer, let's say $15\n"; -$the_hold = $buyer->hold(1500); - -print "ok, no more holds! let's capture it (for the full amount)\n"; -$debit = $the_hold->capture(); - -print "hmm, ho much money do i have in escrow? it should equal the debit amount\n"; -$marketplace = Balanced\Marketplace::mine(); -if ($marketplace->in_escrow != 1500) { - throw new Exception("1500 is not in escrow! This is wrong"); -} -print "I have " . $marketplace->in_escrow . " in escrow!\n"; - -print "Cool. now let me refund the full amount"; -$refund = $debit->refund(); - -print "ok, we have a merchant that's signing up, let's create an account for them first, let's create their bank account\n"; - -$bank_account = $marketplace->createBankAccount("Jack Q Merchant", - "123123123", /* account_number */ - "123123123" /* bank_code (routing number is USA)*/ - ); - -$identity = array( - "type" => "person", - "name" => "Billy Jones", - "street_address" => "801 High St", - "postal_code" => "94301", - "country" => "USA", - "dob" => "1979-02", - "phone_number" => "+16505551234" -); - -$merchant = $marketplace->createMerchant('merchant@example.org', - $identity, - $bank_account->uri -); - -print "our buyer is interested in buying something for $130\n"; -$another_debit = $buyer->debit(13000, "MARKETPLACE.COM"); - -print "let's credit our merchant $110\n"; -$credit = $merchant->credit(11000, "Buyer purchase something on Marketplace.com"); - -print "let's assume the marketplace charges 15%, so it earned $20\n"; -$mp_credit = $marketplace->owner_account->credit(2000, - "Commission from MARKETPLACE.COM"); - -print "ok, let's invalidate the card used so it cannot be used again\n"; -$card->is_valid = false; -$card->save(); - -print "how do we look up an existing object from the URI?\n"; -$the_buyer = Balanced\Account::get($buyer->uri); -print "we got the buyer " . $the_buyer->email_address . "\n"; - -$the_debit = Balanced\Debit::get($debit->uri); -print "we got the debit: " . $the_debit->uri . "\n"; - -$the_credit = Balanced\Credit::get($credit->uri); -print "we got the credit: " . $the_credit->uri . "\n"; - -print "and there you have it :)\n"; - -?> \ No newline at end of file diff --git a/externals/balanced-php/example/iterate-example.php b/externals/balanced-php/example/iterate-example.php deleted file mode 100644 index 1b79931aa0..0000000000 --- a/externals/balanced-php/example/iterate-example.php +++ /dev/null @@ -1,71 +0,0 @@ -save(); -Balanced\Settings::$api_key = $key->secret; -$marketplace = new Balanced\Marketplace(); -$marketplace->save(); - -$card = $marketplace->cards->create(array( - "card_number" => "5105105105105100", - "expiration_month" => "12", - "expiration_year" => "2015" - )); - -$buyer = $marketplace->createBuyer("buyer@example.com", $card->uri); - -$debit = $buyer->debit(1500); -$debit->refund(100); -$debit->refund(100); -$debit->refund(100); - -echo $debit->refunds->total() . " refunds" . "\n"; - -$total = 0; - -foreach ($debit->refunds as $r) { - $total += $r->amount; - print "refund = " . $r->amount . "\n"; -} - -print $total . "\n"; - -# bigger pagination example - -print "Create 60 **buyer** with cards accounts\n"; - -for ($i = 0; $i < 60; $i++) { - $card = $marketplace->cards->create(array( - "card_number" => "5105105105105100", - "expiration_month" => "12", - "expiration_year" => "2015" - )); - $buyer = $marketplace->createBuyer("buyer" . $i . "@example.org", $card->uri); - print '.'; -} - -print "\n"; - -$cards = $marketplace->cards; - -print $cards->total() . " cards in Marketplace\n"; - -foreach ($cards as $c) { - print "card " . $c->uri . "\n"; -} - -# let's iterate through cards for just a single account - -foreach ($buyer->cards as $c) { - print "buyer's card " . $c->uri . "\n"; -} - -print "and there you have it :)\n"; - - -?> diff --git a/externals/balanced-php/example/test-composer.php b/externals/balanced-php/example/test-composer.php deleted file mode 100644 index 26ed0c77b3..0000000000 --- a/externals/balanced-php/example/test-composer.php +++ /dev/null @@ -1,14 +0,0 @@ - - * print \Balanced\Settings::$api_key == null; - * $api_key = new \Balanced\APIKey(); - * $api_key = api_key->save(); - * $secret = $api_key->secret; - * print $secret; - * - * - * Then save the returned secret (we don't store it) and configure the client - * to use it: - * - * - * \Balanced\Settings::$api_key = 'my-api-key-secret'; - * - * - * You can later add another api key if you'd like to rotate or expire old - * ones: - * - * - * $api_key = new \Balanced\APIKey(); - * $api_key = api_key->save(); - * $new_secret = $api_key->secret; - * print $new_secret; - * - * \Balanced\Settings::$api_key = $new_secret; - * - * \Balanced\APIKey::query() - * ->sort(\Balanced\APIKey::f->created_at->desc()) - * ->first() - * ->delete(); - * - */ -class APIKey extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('api_keys', 'id', '/v1'); - self::$_registry->add(get_called_class()); - } -} diff --git a/externals/balanced-php/src/Balanced/Account.php b/externals/balanced-php/src/Balanced/Account.php deleted file mode 100644 index d09f89e044..0000000000 --- a/externals/balanced-php/src/Balanced/Account.php +++ /dev/null @@ -1,217 +0,0 @@ -createBuyer or - * Balanced\Marketplace->createMerchant. - * - * - * $marketplace = \Balanced\Marketplace::mine(); - * - * $card = $marketplace->cards->create(array( - * 'street_address' => $street_address, - * 'city' => 'Jollywood', - * 'region' => 'CA', - * 'postal_code' => '90210', - * 'name' => 'Captain Chunk', - * 'card_number' => '4111111111111111', - * 'expiration_month' => 7, - * 'expiration_year' => 2015 - * )); - * - * $buyer = $marketplace->createBuyer( - * 'buyer@example.com', - * $card->uri, - * array( - * 'my_id' => '1212121', - * ) - * ); - * - * - * @see Balanced\Marketplace->createBuyer - * @see Balanced\Marketplace->createMerchant - */ -class Account extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('accounts', 'id'); - self::$_registry->add(get_called_class()); - } - - /** - * Credit the account. - * - * @param int amount Amount to credit the account in USD pennies. - * @param string description Optional description of the credit. - * @param array[string]string meta Optional metadata to associate with the credit. - * @param mixed destination Optional URI of a funding destination (i.e. \Balanced\BankAccount) associated with this account to credit. If not specified the funding destination most recently added to the account is used. - * @param string appears_on_statement_as Optional description of the credit as it will appears on the customer's billing statement. - * - * @return \Balanced\Credit - */ - public function credit( - $amount, - $description = null, - $meta = null, - $destination = null, - $appears_on_statement_as = null) - { - if ($destination == null) - $destination_uri = null; - else - $destination_uri = is_string($destination) ? $destination : $destination->uri; - return $this->credits->create(array( - 'amount' => $amount, - 'description' => $description, - 'meta' => $meta, - 'destination_uri' => $destination_uri, - 'appears_on_statement_as' => $appears_on_statement_as - )); - } - - /** - * Debit the account. - * - * @param int amount Amount to debit the account in USD pennies. - * @param string appears_on_statement_as Optional description of the debit as it will appears on the customer's billing statement. - * @param string description Optional description of the debit. - * @param array[string]string meta Optional metadata to associate with the debit. - * @param mixed Optional funding source (i.e. \Balanced\Card) or URI of a funding source associated with this account to debit. If not specified the funding source most recently added to the account is used. - * - * @return \Balanced\Debit - */ - public function debit( - $amount, - $appears_on_statement_as = null, - $description = null, - $meta = null, - $source = null, - $on_behalf_of = null) - { - if ($source == null) { - $source_uri = null; - } else if (is_string($source)) { - $source_uri = $source; - } else { - $source_uri = $source->uri; - } - - if ($on_behalf_of == null) { - $on_behalf_of_uri = null; - } else if (is_string($on_behalf_of)) { - $on_behalf_of_uri = $on_behalf_of; - } else { - $on_behalf_of_uri = $on_behalf_of->uri; - } - - if (isset($this->uri) && $on_behalf_of_uri == $this->uri) - throw new \InvalidArgumentException( - 'The on_behalf_of parameter MAY NOT be the same account as the account you are debiting!' - ); - - return $this->debits->create(array( - 'amount' => $amount, - 'description' => $description, - 'meta' => $meta, - 'source_uri' => $source_uri, - 'on_behalf_of_uri' => $on_behalf_of_uri, - 'appears_on_statement_as' => $appears_on_statement_as - )); - } - - /** - * Create a hold (i.e. a guaranteed pending debit) for account funds. You - * can later capture or void. A hold is associated with a account funding - * source (i.e. \Balanced\Card). If you don't specify the source then the - * current primary funding source for the account is used. - * - * @param int amount Amount of the hold in USD pennies. - * @param string Optional description Description of the hold. - * @param string Optional URI referencing the card to use for the hold. - * @param array[string]string meta Optional metadata to associate with the hold. - * - * @return \Balanced\Hold - */ - public function hold( - $amount, - $description = null, - $source_uri = null, - $meta = null) - { - return $this->holds->create(array( - 'amount' => $amount, - 'description' => $description, - 'source_uri' => $source_uri, - 'meta' => $meta - )); - } - - /** - * Creates or associates a created card with the account. The default - * funding source for the account will be this card. - * - * @see \Balanced\Marketplace->createCard - * - * @param mixed card \Balanced\Card or URI referencing a card to associate with the account. Alternatively it can be an associative array describing a card to create and associate with the account. - * - * @return \Balanced\Account - */ - public function addCard($card) - { - if (is_string($card)) - $this->card_uri = $card; - else if (is_array($card)) - $this->card = $card; - else - $this->card_uri = $card->uri; - return $this->save(); - } - - /** - * Creates or associates a created bank account with the account. The - * new default funding destination for the account will be this bank account. - * - * @see \Balanced\Marketplace->createBankAccount - * - * @param mixed bank_account \Balanced\BankAccount or URI for a bank account to associate with the account. Alternatively it can be an associative array describing a bank account to create and associate with the account. - * - * @return \Balanced\Account - */ - public function addBankAccount($bank_account) - { - if (is_string($bank_account)) - $this->bank_account_uri = $bank_account; - else if (is_array($bank_account)) - $this->bank_account = $bank_account; - else - $this->bank_account_uri = $bank_account->uri; - return $this->save(); - } - - /** - * Promotes a role-less or buyer account to a merchant. - * - * @see Balanced\Marketplace::createMerchant - * - * @param mixed merchant Associative array describing the merchants identity or a URI referencing a created merchant. - * - * @return \Balanced\Account - */ - public function promoteToMerchant($merchant) - { - if (is_string($merchant)) - $this->merchant_uri = $merchant; - else - $this->merchant = $merchant; - return $this->save(); - } -} diff --git a/externals/balanced-php/src/Balanced/BankAccount.php b/externals/balanced-php/src/Balanced/BankAccount.php deleted file mode 100644 index 3d920c6308..0000000000 --- a/externals/balanced-php/src/Balanced/BankAccount.php +++ /dev/null @@ -1,127 +0,0 @@ - - * $marketplace = \Balanced\Marketplace::mine(); - * - * $bank_account = $marketplace->bank_accounts->create(array( - * 'name' => 'name', - * 'account_number' => '11223344', - * 'bank_code' => '1313123', - * )); - * - * $account = $marketplace - * ->accounts - * ->query() - * ->filter(Account::f->email_address->eq('merchant@example.com')) - * ->one(); - * $account->addBankAccount($bank_account->uri); - * - */ -class BankAccount extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('bank_accounts', 'id', '/v1'); - self::$_registry->add(get_called_class()); - } - - /** - * Credit a bank account. - * - * @param int amount Amount to credit in USD pennies. - * @param string description Optional description of the credit. - * @param string appears_on_statement_as Optional description of the credit as it will appears on the customer's billing statement. - * - * @return \Balanced\Credit - * - * - * $bank_account = new \Balanced\BankAccount(array( - * 'account_number' => '12341234', - * 'name' => 'Fit Finlay', - * 'bank_code' => '325182797', - * 'type' => 'checking', - * )); - * - * $credit = $bank_account->credit(123, 'something descriptive'); - * - */ - public function credit( - $amount, - $description = null, - $meta = null, - $appears_on_statement_as = null) - { - if (!property_exists($this, 'account') || $this->account == null) { - $credit = $this->credits->create(array( - 'amount' => $amount, - 'description' => $description, - )); - } else { - $credit = $this->account->credit( - $amount, - $description, - $meta, - $this->uri, - $appears_on_statement_as - ); - } - return $credit; - } - - public function verify() - { - $response = self::getClient()->post( - $this->verifications_uri, null - ); - $verification = new BankAccountVerification(); - $verification->_objectify($response->body); - return $verification; - } -} - -/** - * Represents an verification for a bank account which is a pre-requisite if - * you want to create debits using the associated bank account. The side-effect - * of creating a verification is that 2 random amounts will be deposited into - * the account which must then be confirmed via the confirm method to ensure - * that you have access to the bank account in question. - * - * You can create these via Balanced\Marketplace::bank_accounts::verify. - * - * - * $marketplace = \Balanced\Marketplace::mine(); - * - * $bank_account = $marketplace->bank_accounts->create(array( - * 'name' => 'name', - * 'account_number' => '11223344', - * 'bank_code' => '1313123', - * )); - * - * $verification = $bank_account->verify(); - * - */ -class BankAccountVerification extends Resource { - - public function confirm($amount1, $amount2) { - $this->amount_1 = $amount1; - $this->amount_2 = $amount2; - $this->save(); - return $this; - } -} diff --git a/externals/balanced-php/src/Balanced/Bootstrap.php b/externals/balanced-php/src/Balanced/Bootstrap.php deleted file mode 100644 index 7fed7b7025..0000000000 --- a/externals/balanced-php/src/Balanced/Bootstrap.php +++ /dev/null @@ -1,79 +0,0 @@ -createCallback. - * - */ -class Callback extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('callbacks', 'id'); - self::$_registry->add(get_called_class()); - } -} diff --git a/externals/balanced-php/src/Balanced/Card.php b/externals/balanced-php/src/Balanced/Card.php deleted file mode 100644 index 57351ee185..0000000000 --- a/externals/balanced-php/src/Balanced/Card.php +++ /dev/null @@ -1,61 +0,0 @@ - - * $marketplace = \Balanced\Marketplace::mine(); - * - * $card = $marketplace->cards->create(array( - * 'name' => 'name', - * 'account_number' => '11223344', - * 'bank_code' => '1313123' - * )); - * - * $account = $marketplace - * ->accounts - * ->query() - * ->filter(Account::f->email_address->eq('buyer@example.com')) - * ->one(); - * $account->addCard($card->uri); - * - */ -class Card extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('cards', 'id', '/v1'); - self::$_registry->add(get_called_class()); - } - - public function debit( - $amount, - $appears_on_statement_as = null, - $description = null, - $meta = null, - $source = null) - { - if ($this->account == null) { - throw new \UnexpectedValueException('Card is not associated with an account.'); - } - return $this->account->debit( - $amount, - $appears_on_statement_as, - $description, - $meta, - $this->uri); - } -} diff --git a/externals/balanced-php/src/Balanced/Credit.php b/externals/balanced-php/src/Balanced/Credit.php deleted file mode 100644 index 67d97d1bd0..0000000000 --- a/externals/balanced-php/src/Balanced/Credit.php +++ /dev/null @@ -1,75 +0,0 @@ - - * $marketplace = \Balanced\Marketplace::mine(); - * - * $account = $marketplace - * ->accounts - * ->query() - * ->filter(Account::f->email_address->eq('merchant@example.com')) - * ->one(); - * - * $credit = $account->credit( - * 100, - * 'how it ' - * array( - * 'my_id': '112233' - * ) - * ); - * - */ -class Credit extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('credits', 'id', '/v1'); - self::$_registry->add(get_called_class()); - } - - /** - * Credit an unstored bank account. - * - * @param int amount Amount to credit in USD pennies. - * @param string description Optional description of the credit. - * @param mixed bank_account Associative array describing a bank account to credit. The bank account will *not* be stored. - * - * @return \Balanced\Credit - * - * - * $credit = \Balanced\Credit::bankAccount( - * 123, - * array( - * 'account_number' => '12341234', - * 'name' => 'Fit Finlay', - * 'bank_code' => '325182797', - * 'type' => 'checking', - * ), - * 'something descriptive'); - * - */ - public static function bankAccount( - $amount, - $bank_account, - $description = null) - { - $credit = new Credit(array( - 'amount' => $amount, - 'bank_account' => $bank_account, - 'description' => $description - )); - $credit->save(); - return $credit; - } -} diff --git a/externals/balanced-php/src/Balanced/Debit.php b/externals/balanced-php/src/Balanced/Debit.php deleted file mode 100644 index d1e87e4f65..0000000000 --- a/externals/balanced-php/src/Balanced/Debit.php +++ /dev/null @@ -1,64 +0,0 @@ - - * $marketplace = \Balanced\Marketplace::mine(); - * - * $account = $marketplace - * ->accounts - * ->query() - * ->filter(Account::f->email_address->eq('buyer@example.com')) - * ->one(); - * - * $debit = $account->debit( - * 100, - * 'how it appears on the statement', - * 'a description', - * array( - * 'my_id': '443322' - * ) - * ); - * - */ -class Debit extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('debits', 'id'); - self::$_registry->add(get_called_class()); - } - - /** - * Create a refund for this debit. You can create multiple refunds for a - * debit but the total amount of the refunds must be less than the debit - * amount. - * - * @param int amount Optional amount of the refund in USD pennies. If unspecified then the full debit amount is used. - * @param string description Optional description of the refund. - * @param array[string]string meta Optional metadata to associate with the refund. - * - * @return \Balanced\Refund - */ - public function refund( - $amount = null, - $description = null, - $meta = null) - { - return $this->refunds->create(array( - 'amount' => $amount, - 'description' => $description, - 'meta' => $meta - )); - } -} diff --git a/externals/balanced-php/src/Balanced/Errors.php b/externals/balanced-php/src/Balanced/Errors.php deleted file mode 100644 index 363bd84f97..0000000000 --- a/externals/balanced-php/src/Balanced/Errors.php +++ /dev/null @@ -1,135 +0,0 @@ -add(get_called_class()); - } -} diff --git a/externals/balanced-php/src/Balanced/Hold.php b/externals/balanced-php/src/Balanced/Hold.php deleted file mode 100644 index ce286b8346..0000000000 --- a/externals/balanced-php/src/Balanced/Hold.php +++ /dev/null @@ -1,77 +0,0 @@ - - * $marketplace = \Balanced\Marketplace::mine(); - * - * $account = $marketplace - * ->accounts - * ->query() - * ->filter(Account::f->email_address->eq('buyer@example.com')) - * ->one(); - * - * $hold = $account->hold( - * 100, - * 'a description', - * null, - * array( - * 'my_id': '1293712837' - * ) - * ); - * - * $debit = $hold->capture(); - * - */ -class Hold extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('holds', 'id'); - self::$_registry->add(get_called_class()); - } - - /** - ** Voids a pending hold. This releases the held funds. Once voided a hold - * is not longer pending can cannot be re-captured or re-voided. - * - * @return \Balanced\Hold - */ - public function void() - { - $this->is_void = true; - return $this->save(); - } - - /** - * Captures a pending hold. This results in a debit. Once captured a hold - * is not longer pending can cannot be re-captured or re-voided. - * - * @param int amount Optional Portion of the pending hold to capture. If not specified the full amount associated with the hold is captured. - * - * @return \Balanced\Debit - */ - public function capture($amount = null) - { - $this->debit = $this->account->debits->create(array( - 'hold_uri' => $this->uri, - 'amount' => $amount, - )); - return $this->debit; - } -} diff --git a/externals/balanced-php/src/Balanced/Marketplace.php b/externals/balanced-php/src/Balanced/Marketplace.php deleted file mode 100644 index bf31353374..0000000000 --- a/externals/balanced-php/src/Balanced/Marketplace.php +++ /dev/null @@ -1,325 +0,0 @@ - - * $api_key = new \Balanced\APIKey(); - * $api_key->save(); - * $secret = $api_key->secret // better save this somewhere - * print $secret; - * \Balanced\Settings::$api_key = $secret; - * - * $marketplace = new \Balanced\Marketplace(); - * $marketplace->save(); - * var_dump($marketplace); - * - * - * Each api key is uniquely associated with an api key so once you've created a - * marketplace: - * - * - * \Balanced\Settings::$api_key = $secret; - * $marketplace = \Balanced\Marketplace::mine(); // this is the marketplace associated with $secret - * - */ -class Marketplace extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('marketplaces', 'id', '/v1'); - self::$_registry->add(get_called_class()); - } - - /** - * Get the marketplace associated with the currently configured - * \Balanced\Settings::$api_key. - * - * @throws \RESTful\Exceptions\NoResultFound - * @return \Balanced\Marketplace - */ - public static function mine() - { - return self::query()->one(); - } - - /** - * Create a card. These can later be associated with an account using - * \Balanced\Account->addCard or \Balanced\Marketplace->createBuyer. - * - * @param string street_address Street address. Use null if there is no address for the card. - * @param string city City. Use null if there is no address for the card. - * @param string postal_code Postal code. Use null if there is no address for the card. - * @param string name Name as it appears on the card. - * @param string card_number Card number. - * @param string security_code Card security code. Use null if it is no available. - * @param int expiration_month Expiration month. - * @param int expiration_year Expiration year. - * - * @return \Balanced\Card - */ - public function createCard( - $street_address, - $city, - $region, - $postal_code, - $name, - $card_number, - $security_code, - $expiration_month, - $expiration_year) - { - if ($region != null && strlen($region) > 0) { - trigger_error("The region parameter will be deprecated in the next minor version of balanced-php", E_USER_NOTICE); - } - - return $this->cards->create(array( - 'street_address' => $street_address, - 'city' => $city, - 'region' => $region, - 'postal_code' => $postal_code, - 'name' => $name, - 'card_number' => $card_number, - 'security_code' => $security_code, - 'expiration_month' => $expiration_month, - 'expiration_year' => $expiration_year - )); - } - - /** - * Create a bank account. These can later be associated with an account - * using \Balanced\Account->addBankAccount. - * - * @param string name Name of the account holder. - * @param string account_number Account number. - * @param string routing_number Bank code or routing number. - * @param string type checking or savings - * @param array meta Single level mapping from string keys to string values. - * - * @return \Balanced\BankAccount - */ - public function createBankAccount( - $name, - $account_number, - $routing_number, - $type, - $meta = null - ) - { - return $this->bank_accounts->create(array( - 'name' => $name, - 'account_number' => $account_number, - 'routing_number' => $routing_number, - 'type' => $type, - 'meta' => $meta - )); - } - - /** - * Create a role-less account. You can later turn this into a buyer by - * adding a funding source (e.g a card) or a merchant using - * \Balanced\Account->promoteToMerchant. - * - * @param string email_address Optional email address. There can only be one account with this email address. - * @param array[string]string meta Optional metadata to associate with the account. - * - * @return \Balanced\Account - */ - public function createAccount($email_address = null, $meta = null) - { - return $this->accounts->create(array( - 'email_address' => $email_address, - 'meta' => $meta, - )); - } - - /** - * Find or create a role-less account by email address. You can later turn - * this into a buyer by adding a funding source (e.g a card) or a merchant - * using \Balanced\Account->promoteToMerchant. - * - * @param string email_address Email address. There can only be one account with this email address. - * - * @return \Balanced\Account - */ - function findOrCreateAccountByEmailAddress($email_address) - { - $marketplace = Marketplace::mine(); - try { - $account = $this->accounts->create(array( - 'email_address' => $email_address - )); - } - catch (Errors\DuplicateAccountEmailAddress $e) { - $account = Account::get($e->extras->account_uri); - } - return $account; - } - - /** - * Create a buyer account. - * - * @param string email_address Optional email address. There can only be one account with this email address. - * @param string card_uri URI referencing a card to associate with the account. - * @param array[string]string meta Optional metadata to associate with the account. - * @param string name Optional name of the account. - * - * @return \Balanced\Account - */ - public function createBuyer($email_address, $card_uri, $meta = null, $name = null) - { - return $this->accounts->create(array( - 'email_address' => $email_address, - 'card_uri' => $card_uri, - 'meta' => $meta, - 'name' => $name - )); - } - - /** - * Create a merchant account. - * - * Unlike buyers the identity of a merchant must be established before - * the account can function as a merchant (i.e. be credited). A merchant - * can be either a person or a business. Either way that information is - * represented as an associative array and passed as the merchant parameter - * when creating the merchant account. - * - * For a person the array looks like this: - * - * - * array( - * 'type' => 'person', - * 'name' => 'William James', - * 'tax_id' => '393-48-3992', - * 'street_address' => '167 West 74th Street', - * 'postal_code' => '10023', - * 'dob' => '1842-01-01', - * 'phone_number' => '+16505551234', - * 'country_code' => 'USA' - * ) - * - * - * For a business the array looks like this: - * - * - * array( - * 'type' => 'business', - * 'name' => 'Levain Bakery', - * 'tax_id' => '253912384', - * 'street_address' => '167 West 74th Street', - * 'postal_code' => '10023', - * 'phone_number' => '+16505551234', - * 'country_code' => 'USA', - * 'person' => array( - * 'name' => 'William James', - * 'tax_id' => '393483992', - * 'street_address' => '167 West 74th Street', - * 'postal_code' => '10023', - * 'dob' => '1842-01-01', - * 'phone_number' => '+16505551234', - * 'country_code' => 'USA', - * ) - * ) - * - * - * In some cases the identity of the merchant, person or business, cannot - * be verified in which case a \Balanced\Exceptions\HTTPError is thrown: - * - * - * $identity = array( - * 'type' => 'business', - * 'name' => 'Levain Bakery', - * 'tax_id' => '253912384', - * 'street_address' => '167 West 74th Street', - * 'postal_code' => '10023', - * 'phone_number' => '+16505551234', - * 'country_code' => 'USA', - * 'person' => array( - * 'name' => 'William James', - * 'tax_id' => '393483992', - * 'street_address' => '167 West 74th Street', - * 'postal_code' => '10023', - * 'dob' => '1842-01-01', - * 'phone_number' => '+16505551234', - * 'country_code' => 'USA', - * ), - * ); - * - * try { - * $merchant = \Balanced\Marketplace::mine()->createMerchant( - * 'merchant@example.com', - * $identity, - * ); - * catch (\Balanced\Exceptions\HTTPError $e) { - * if ($e->code != 300) { - * throw $e; - * } - * print e->response->header['Location'] // this is where merchant must signup - * } - * - * - * Once the merchant has completed signup you can use the resulting URI to - * create an account for them on your marketplace: - * - * - * $merchant = self::$marketplace->createMerchant( - * 'merchant@example.com', - * null, - * null, - * $merchant_uri - * ); - * - * - * @param string email_address Optional email address. There can only be one account with this email address. - * @param array[string]mixed merchant Associative array describing the merchants identity. - * @param string $bank_account_uri Optional URI referencing a bank account to associate with this account. - * @param string $merchant_uri URI of a merchant created via the redirection sign-up flow. - * @param string $name Optional name of the merchant. - * @param array[string]string meta Optional metadata to associate with the account. - * - * @return \Balanced\Account - */ - public function createMerchant( - $email_address = null, - $merchant = null, - $bank_account_uri = null, - $merchant_uri = null, - $name = null, - $meta = null) - { - return $this->accounts->create(array( - 'email_address' => $email_address, - 'merchant' => $merchant, - 'merchant_uri' => $merchant_uri, - 'bank_account_uri' => $bank_account_uri, - 'name' => $name, - 'meta' => $meta, - )); - } - - /* - * Create a callback. - * - * @param string url URL of callback. - */ - public function createCallback( - $url - ) - { - return $this->callbacks->create(array( - 'url' => $url - )); - } -} diff --git a/externals/balanced-php/src/Balanced/Merchant.php b/externals/balanced-php/src/Balanced/Merchant.php deleted file mode 100644 index 7848215bea..0000000000 --- a/externals/balanced-php/src/Balanced/Merchant.php +++ /dev/null @@ -1,51 +0,0 @@ -add(get_called_class()); - } - - /** - * Return the merchant identity associated with the current - * Balanced\Settings::$api_key. If you are not authenticated (i.e. - * ) then Balanced\Exceptions\NoResult - * will be thrown. - * - * - * $merchant = \Balanced\Merchant::me(); - * $owner_account = \Balanced\Marketplace::mine()->owner_account; - * assert($merchant->id == $owner_account->merchant->id); - * - * - * @throws \RESTful\Exceptions\NoResultFound - * @return \Balanced\Merchant - */ - public static function me() - { - return self::query()->one(); - } -} diff --git a/externals/balanced-php/src/Balanced/Refund.php b/externals/balanced-php/src/Balanced/Refund.php deleted file mode 100644 index e4e1c033fb..0000000000 --- a/externals/balanced-php/src/Balanced/Refund.php +++ /dev/null @@ -1,50 +0,0 @@ - - * $marketplace = \Balanced\Marketplace::mine(); - * - * $account = $marketplace - * ->accounts - * ->query() - * ->filter(Account::f->email_address->eq('buyer@example.com')) - * ->one(); - * - * $debit = $account->debit( - * 100, - * 'how it appears on the statement', - * 'a description', - * array( - * 'my_id': '443322' - * ) - * ); - * - * $debit->refund( - * 99, - * 'some description', - * array( - * 'my_id': '123123' - * ) - * ); - * - */ -class Refund extends Resource -{ - protected static $_uri_spec = null; - - public static function init() - { - self::$_uri_spec = new URISpec('refunds', 'id'); - self::$_registry->add(get_called_class()); - } -} - diff --git a/externals/balanced-php/src/Balanced/Resource.php b/externals/balanced-php/src/Balanced/Resource.php deleted file mode 100644 index 0cbc304516..0000000000 --- a/externals/balanced-php/src/Balanced/Resource.php +++ /dev/null @@ -1,48 +0,0 @@ -body, 'category_code') && - array_key_exists($response->body->category_code, Error::$codes)) - $error = new Error::$codes[$response->body->category_code]($response); - else - $error = new HTTPError($response); - return $error; - } - - public static function getClient() - { - $class = get_called_class(); - return $class::$_client; - } - - public static function getRegistry() - { - $class = get_called_class(); - return $class::$_registry; - } - - public static function getURISpec() - { - $class = get_called_class(); - return $class::$_uri_spec; - } -} diff --git a/externals/balanced-php/src/Balanced/Settings.php b/externals/balanced-php/src/Balanced/Settings.php deleted file mode 100644 index e4fc3a9ab3..0000000000 --- a/externals/balanced-php/src/Balanced/Settings.php +++ /dev/null @@ -1,43 +0,0 @@ - - * \Balanced\Settngs::api_key = 'my-api-key-secret'; - * - * - * or all at once: - * - * - * \Balanced\Settngs::configure( - * 'https://api.balancedpayments.com', - * 'my-api-key-secret' - * ); - * - */ -class Settings -{ - const VERSION = '0.7.1'; - - public static $url_root = 'https://api.balancedpayments.com', - $api_key = null, - $agent = 'balanced-php', - $version = Settings::VERSION; - - /** - * Configure all settings. - * - * @param string url_root The root (schema://hostname[:port]) to use when constructing api URLs. - * @param string api_key The api key secret to use for authenticating when talking to the api. If null then api usage is limited to uauthenticated endpoints. - */ - public static function configure($url_root, $api_key) - { - self::$url_root= $url_root; - self::$api_key = $api_key; - } -} diff --git a/externals/balanced-php/tests/Balanced/ResourceTest.php b/externals/balanced-php/tests/Balanced/ResourceTest.php deleted file mode 100644 index 4888934f12..0000000000 --- a/externals/balanced-php/tests/Balanced/ResourceTest.php +++ /dev/null @@ -1,614 +0,0 @@ -expectOutputString(''); - $result = Resource::getRegistry()->match('/v1/api_keys'); - return; - $expected = array( - 'collection' => true, - 'class' => 'Balanced\APIKey', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/api_keys/1234'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\APIKey', - 'ids' => array('id' => '1234'), - ); - $this->assertEquals($expected, $result); - } -} - -class MarketplaceTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/marketplaces'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Marketplace', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/marketplaces/1122'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Marketplace', - 'ids' => array('id' => '1122'), - ); - $this->assertEquals($expected, $result); - } - - function testCreateCard() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Card', 'some/uri', null) - ); - - $collection->expects($this->once()) - ->method('create') - ->with(array( - 'street_address' => '123 Fake Street', - 'city' => 'Jollywood', - 'region' => '', - 'postal_code' => '90210', - 'name' => 'khalkhalash', - 'card_number' => '4112344112344113', - 'security_code' => '123', - 'expiration_month' => 12, - 'expiration_year' => 2013, - )); - - $marketplace = new Marketplace(array('cards' => $collection)); - $marketplace->createCard( - '123 Fake Street', - 'Jollywood', - '', - '90210', - 'khalkhalash', - '4112344112344113', - '123', - 12, - 2013); - } - - function testCreateBankAccount() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\BankAccount', 'some/uri', null) - ); - - $collection->expects($this->once()) - ->method('create') - ->with(array( - 'name' => 'Homer Jay', - 'account_number' => '112233a', - 'routing_number' => '121042882', - 'type' => 'savings', - 'meta' => null - )); - - $marketplace = new Marketplace(array('bank_accounts' => $collection)); - $marketplace->createBankAccount( - 'Homer Jay', - '112233a', - '121042882', - 'savings'); - } - - function testCreateAccount() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Account', 'some/uri', null) - ); - - $collection->expects($this->once()) - ->method('create') - ->with(array( - 'email_address' => 'role-less@example.com', - 'meta' => array('test#' => 'test_d') - )); - - $marketplace = new Marketplace(array('accounts' => $collection)); - $marketplace->createAccount( - 'role-less@example.com', - array('test#' => 'test_d') - ); - } - - function testCreateBuyer() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Account', 'some/uri', null) - ); - - $collection->expects($this->once()) - ->method('create') - ->with(array( - 'email_address' => 'buyer@example.com', - 'card_uri' => '/some/card/uri', - 'meta' => array('test#' => 'test_d'), - 'name' => 'Buy Er' - )); - - $marketplace = new Marketplace(array('accounts' => $collection)); - $marketplace->createBuyer( - 'buyer@example.com', - '/some/card/uri', - array('test#' => 'test_d'), - 'Buy Er' - ); - } -} - -class AccountTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/accounts'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Account', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/accounts/0099'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Account', - 'ids' => array('id' => '0099'), - ); - $this->assertEquals($expected, $result); - } - - function testCredit() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Credit', 'some/uri', null) - ); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'amount' => 101, - 'description' => 'something sweet', - 'meta' => null, - 'destination_uri' => null, - 'appears_on_statement_as' => null - )); - - $account = new Account(array('credits' => $collection)); - $account->credit(101, 'something sweet'); - } - - function testDebit() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Debit', 'some/uri', null) - ); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'amount' => 9911, - 'description' => 'something tangy', - 'appears_on_statement_as' => 'BAL*TANG', - 'meta' => null, - 'source_uri' => null, - 'on_behalf_of_uri' => null, - )); - - $account = new Account(array('debits' => $collection)); - $account->debit(9911, 'BAL*TANG', 'something tangy'); - } - - function testHold() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Hold', 'some/uri', null) - ); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'amount' => 1243, - 'description' => 'something crispy', - 'source_uri' => '/some/card/uri', - 'meta' => array('test#' => 'test_d') - )); - - $account = new Account(array('holds' => $collection)); - $account->hold( - 1243, - 'something crispy', - '/some/card/uri', - array('test#' => 'test_d') - ); - } - - function testAddCard() - { - $account = $this->getMock( - '\Balanced\Account', - array('save') - ); - - $account - ->expects($this->once()) - ->method('save') - ->with(); - - $account->addCard('/my/new/card/121212'); - $this->assertEquals($account->card_uri, '/my/new/card/121212'); - } - - function testAddBankAccount() - { - $account = $this->getMock( - '\Balanced\Account', - array('save') - ); - - $account - ->expects($this->once()) - ->method('save') - ->with(); - - $account->addBankAccount('/my/new/bank_account/121212'); - $this->assertEquals($account->bank_account_uri, '/my/new/bank_account/121212'); - } - - function testPromotToMerchant() - { - $account = $this->getMock( - '\Balanced\Account', - array('save') - ); - - $account - ->expects($this->once()) - ->method('save') - ->with(); - - $merchant = array( - 'type' => 'person', - 'name' => 'William James', - 'tax_id' => '393-48-3992', - 'street_address' => '167 West 74th Street', - 'postal_code' => '10023', - 'dob' => '1842-01-01', - 'phone_number' => '+16505551234', - 'country_code' => 'USA' - ); - - $account->promoteToMerchant($merchant); - $this->assertEquals($account->merchant, $merchant); - } -} - -class HoldTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/holds'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Hold', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/holds/112233'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Hold', - 'ids' => array('id' => '112233'), - ); - $this->assertEquals($expected, $result); - } - - function testVoid() - { - $hold = $this->getMock( - '\Balanced\Hold', - array('save') - ); - - $hold - ->expects($this->once()) - ->method('save') - ->with(); - - $hold->void(); - $this->assertTrue($hold->is_void); - } - - function testCapture() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Debit', 'some/uri', null) - ); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'hold_uri' => 'some/hold/uri', - 'amount' => 2211, - )); - - $account = new Account(array('debits' => $collection)); - - $hold = new Hold(array('uri' => 'some/hold/uri', 'account' => $account)); - - $hold->capture(2211); - } -} - -class CreditTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/credits'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Credit', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/credits/9988'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Credit', - 'ids' => array('id' => '9988'), - ); - $this->assertEquals($expected, $result); - } -} - -class DebitTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/debits'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Debit', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/debits/4545'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Debit', - 'ids' => array('id' => '4545'), - ); - $this->assertEquals($expected, $result); - } - - function testRefund() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Refund', 'some/uri', null) - ); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'amount' => 5645, - 'description' => null, - 'meta' => array('test#' => 'test_d') - )); - - $debit = new Debit(array('refunds' => $collection)); - - $debit->refund(5645, null, array('test#' => 'test_d')); - } -} - -class RefundTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/refunds'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Refund', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/refunds/1287'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Refund', - 'ids' => array('id' => '1287'), - ); - $this->assertEquals($expected, $result); - } -} - -class BankAccountTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/bank_accounts'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\BankAccount', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/bank_accounts/887766'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\BankAccount', - 'ids' => array('id' => '887766'), - ); - $this->assertEquals($expected, $result); - } - - function testCreditAccount() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Credit', 'some/uri', null) - ); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'amount' => 101, - 'description' => 'something super sweet', - 'meta' => null, - 'destination_uri' => '/some/other/uri', - 'appears_on_statement_as' => null - )); - - $account = new Account(array('credits' => $collection)); - $bank_account = new BankAccount(array('uri' => '/some/other/uri', 'account' => $account)); - - $bank_account->credit(101, 'something super sweet'); - } - - function testCreditAccountless() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Credit', 'some/uri', null) - ); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'amount' => 101, - 'description' => 'something super sweet', - )); - $bank_account = new BankAccount(array( - 'uri' => '/some/other/uri', - 'account' => null, - 'credits' => $collection, - )); - - $bank_account->credit(101, 'something super sweet'); - } -} - -class CardTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/cards'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Card', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/cards/136asd6713'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Card', - 'ids' => array('id' => '136asd6713'), - ); - $this->assertEquals($expected, $result); - } - - function testDebit() - { - $collection = $this->getMock( - '\RESTful\Collection', - array('create'), - array('\Balanced\Debit', 'some/uri', null) - ); - - $account = new Account(array('debits' => $collection)); - $card = new Card(array('uri' => '/some/uri', 'account' => $account )); - - $collection - ->expects($this->once()) - ->method('create') - ->with(array( - 'amount' => 9911, - 'description' => 'something tangy', - 'appears_on_statement_as' => 'BAL*TANG', - 'meta' => null, - 'source_uri' => '/some/uri', - 'on_behalf_of_uri' => null, - )); - - $card->debit(9911, 'BAL*TANG', 'something tangy'); - } - - /** - * @expectedException \UnexpectedValueException - */ - function testNotAssociatedDebit() - { - $card = new Card(array('uri' => '/some/uri', 'account' => null )); - $card->debit(9911, 'BAL*TANG', 'something tangy'); - } -} - - -class MerchantTest extends \PHPUnit_Framework_TestCase -{ - function testRegistry() - { - $result = Resource::getRegistry()->match('/v1/merchants'); - $expected = array( - 'collection' => true, - 'class' => 'Balanced\Merchant', - ); - $this->assertEquals($expected, $result); - $result = Resource::getRegistry()->match('/v1/merchants/136asd6713'); - $expected = array( - 'collection' => false, - 'class' => 'Balanced\Merchant', - 'ids' => array('id' => '136asd6713'), - ); - $this->assertEquals($expected, $result); - } -} diff --git a/externals/balanced-php/tests/Balanced/SuiteTest.php b/externals/balanced-php/tests/Balanced/SuiteTest.php deleted file mode 100644 index 9c324b912d..0000000000 --- a/externals/balanced-php/tests/Balanced/SuiteTest.php +++ /dev/null @@ -1,798 +0,0 @@ - - *
  • $BALANCED_URL_ROOT If set applies to \Balanced\Settings::$url_root. - *
  • $BALANCED_API_KEY If set applies to \Balanced\Settings::$api_key. - * - */ -class SuiteTest extends \PHPUnit_Framework_TestCase -{ - static $key, - $marketplace, - $email_counter = 0; - - static function _createBuyer($email_address = null, $card = null) - { - if ($email_address == null) - $email_address = sprintf('m+%d@poundpay.com', self::$email_counter++); - if ($card == null) - $card = self::_createCard(); - return self::$marketplace->createBuyer( - $email_address, - $card->uri, - array('test#' => 'test_d'), - 'Hobo Joe' - ); - } - - static function _createCard($account = null) - { - $card = self::$marketplace->createCard( - '123 Fake Street', - 'Jollywood', - null, - '90210', - 'khalkhalash', - '4112344112344113', - null, - 12, - 2013); - if ($account != null) { - $account->addCard($card); - $card = Card::get($card->uri); - } - return $card; - } - - static function _createBankAccount($account = null) - { - $bank_account = self::$marketplace->createBankAccount( - 'Homer Jay', - '112233a', - '121042882', - 'checking' - ); - if ($account != null) { - $account->addBankAccount($bank_account); - $bank_account = $account->bank_accounts[0]; - } - return $bank_account; - } - - public static function _createPersonMerchant($email_address = null, $bank_account = null) - { - if ($email_address == null) - $email_address = sprintf('m+%d@poundpay.com', self::$email_counter++); - if ($bank_account == null) - $bank_account = self::_createBankAccount(); - $merchant = array( - 'type' => 'person', - 'name' => 'William James', - 'tax_id' => '393-48-3992', - 'street_address' => '167 West 74th Street', - 'postal_code' => '10023', - 'dob' => '1842-01-01', - 'phone_number' => '+16505551234', - 'country_code' => 'USA' - ); - return self::$marketplace->createMerchant( - $email_address, - $merchant, - $bank_account->uri - ); - } - - public static function _createBusinessMerchant($email_address = null, $bank_account = null) - { - if ($email_address == null) - $email_address = sprintf('m+%d@poundpay.com', self::$email_counter++); - if ($bank_account == null) - $bank_account = self::_createBankAccount(); - $merchant = array( - 'type' => 'business', - 'name' => 'Levain Bakery', - 'tax_id' => '253912384', - 'street_address' => '167 West 74th Street', - 'postal_code' => '10023', - 'phone_number' => '+16505551234', - 'country_code' => 'USA', - 'person' => array( - 'name' => 'William James', - 'tax_id' => '393483992', - 'street_address' => '167 West 74th Street', - 'postal_code' => '10023', - 'dob' => '1842-01-01', - 'phone_number' => '+16505551234', - 'country_code' => 'USA', - ), - ); - return self::$marketplace->createMerchant( - $email_address, - $merchant, - $bank_account->uri - ); - } - - public static function setUpBeforeClass() - { - // url root - $url_root = getenv('BALANCED_URL_ROOT'); - if ($url_root != '') { - Settings::$url_root = $url_root; - } - else - Settings::$url_root = 'https://api.balancedpayments.com'; - - // api key - $api_key = getenv('BALANCED_API_KEY'); - if ($api_key != '') { - Settings::$api_key = $api_key; - } - else { - self::$key = new APIKey(); - self::$key->save(); - Settings::$api_key = self::$key->secret; - } - - // marketplace - try { - self::$marketplace = Marketplace::mine(); - } - catch(\RESTful\Exceptions\NoResultFound $e) { - self::$marketplace = new Marketplace(); - self::$marketplace->save(); - } - } - - function testMarketplaceMine() - { - $marketplace = Marketplace::mine(); - $this->assertEquals($this::$marketplace->id, $marketplace->id); - } - - /** - * @expectedException \RESTful\Exceptions\HTTPError - */ - function testAnotherMarketplace() - { - $marketplace = new Marketplace(); - $marketplace->save(); - } - - /** - * @expectedException \RESTful\Exceptions\HTTPError - */ - function testDuplicateEmailAddress() - { - self::_createBuyer('dupe@poundpay.com'); - self::_createBuyer('dupe@poundpay.com'); - } - - function testIndexMarketplace() - { - $marketplaces = Marketplace::query()->all(); - $this->assertEquals(count($marketplaces), 1); - } - - function testCreateBuyer() - { - self::_createBuyer(); - } - - function testCreateAccountWithoutEmailAddress() - { - self::$marketplace->createAccount(); - } - - function testFindOrCreateAccountByEmailAddress() - { - $account1 = self::$marketplace->createAccount('foc@example.com'); - $account2 = self::$marketplace->findOrCreateAccountByEmailAddress('foc@example.com'); - $this->assertEquals($account2->id, $account2->id); - $account3 = self::$marketplace->findOrCreateAccountByEmailAddress('foc2@example.com'); - $this->assertNotEquals($account3->id, $account1->id); - } - - function testGetBuyer() - { - $buyer1 = self::_createBuyer(); - $buyer2 = Account::get($buyer1->uri); - $this->assertEquals($buyer1->id, $buyer2->id); - } - - - function testMe() - { - $marketplace = Marketplace::mine(); - $merchant = Merchant::me(); - $this->assertEquals($marketplace->id, $merchant->marketplace->id); - } - - function testDebitAndRefundBuyer() - { - $buyer = self::_createBuyer(); - $debit = $buyer->debit( - 1000, - 'Softie', - 'something i bought', - array('hi' => 'bye') - ); - $refund = $debit->refund(100); - } - - /** - * @expectedException \RESTful\Exceptions\HTTPError - */ - function testDebitZero() - { - $buyer = self::_createBuyer(); - $debit = $buyer->debit( - 0, - 'Softie', - 'something i bought' - ); - } - - function testMultipleRefunds() - { - $buyer = self::_createBuyer(); - $debit = $buyer->debit( - 1500, - 'Softie', - 'something tart', - array('hi' => 'bye')); - $refunds = array( - $debit->refund(100), - $debit->refund(100), - $debit->refund(100), - $debit->refund(100)); - $expected_refund_ids = array_map( - function($x) { - return $x->id; - }, $refunds); - sort($expected_refund_ids); - $this->assertEquals($debit->refunds->total(), 4); - - // itemization - $total = 0; - $refund_ids = array(); - foreach ($debit->refunds as $refund) { - $total += $refund->amount; - array_push($refund_ids, $refund->id); - } - sort($refund_ids); - $this->assertEquals($total, 400); - $this->assertEquals($expected_refund_ids, $refund_ids); - - // pagination - $total = 0; - $refund_ids = array(); - foreach ($debit->refunds->paginate() as $page) { - foreach ($page->items as $refund) { - $total += $refund->amount; - array_push($refund_ids, $refund->id); - } - } - sort($refund_ids); - $this->assertEquals($total, 400); - $this->assertEquals($expected_refund_ids, $refund_ids); - } - - function testDebitSource() - { - $buyer = self::_createBuyer(); - $card1 = self::_createCard($buyer); - $card2 = self::_createCard($buyer); - - $credit = $buyer->debit( - 1000, - 'Softie', - 'something i bought' - ); - $this->assertEquals($credit->source->id, $card2->id); - - $credit = $buyer->debit( - 1000, - 'Softie', - 'something i bought', - null, - $card1 - ); - $this->assertEquals($credit->source->id, $card1->id); - } - - function testDebitOnBehalfOf() - { - $buyer = self::_createBuyer(); - $merchant = self::$marketplace->createAccount(null); - $card1 = self::_createCard($buyer); - - $debit = $buyer->debit(1000, null, null, null, null, $merchant); - $this->assertEquals($debit->amount, 1000); - // for now just test the debit succeeds. - // TODO: once the on_behalf_of actually shows up on the response, test it. - } - - /** - * @expectedException \InvalidArgumentException - */ - function testDebitOnBehalfOfFailsForBuyer() - { - $buyer = self::_createBuyer(); - $card1 = self::_createCard($buyer); - $debit = $buyer->debit(1000, null, null, null, null, $buyer); - } - - function testCreateAndVoidHold() - { - $buyer = self::_createBuyer(); - $hold = $buyer->hold(1000); - $this->assertEquals($hold->is_void, false); - $hold->void(); - $this->assertEquals($hold->is_void, true); - } - - function testCreateAndCaptureHold() - { - $buyer = self::_createBuyer(); - $hold = $buyer->hold(1000); - $debit = $hold->capture(909); - $this->assertEquals($debit->account->id, $buyer->id); - $this->assertEquals($debit->hold->id, $hold->id); - $this->assertEquals($hold->debit->id, $debit->id); - } - - function testCreatePersonMerchant() - { - $merchant = self::_createPersonMerchant(); - } - - function testCreateBusinessMerchant() - { - $merchant = self::_createBusinessMerchant(); - } - - /** - * @expectedException \RESTful\Exceptions\HTTPError - */ - function testCreditRequiresNonZeroAmount() - { - $buyer = self::_createBuyer(); - $buyer->debit( - 1000, - 'Softie', - 'something i bought' - ); - $merchant = self::_createBusinessMerchant(); - $merchant->credit(0); - } - - /** - * @expectedException \RESTful\Exceptions\HTTPError - */ - function testCreditMoreThanEscrowBalanceFails() - { - $buyer = self::_createBuyer(); - $buyer->credit( - 1000, - 'something i bought', - null, - null, - 'Softie' - ); - $merchant = self::_createBusinessMerchant(); - $merchant->credit(self::$marketplace->in_escrow + 1); - } - - function testCreditDestiation() - { - $buyer = self::_createBuyer(); - $buyer->debit(3000); # NOTE: build up escrow balance to credit - - $merchant = self::_createPersonMerchant(); - $bank_account1 = self::_createBankAccount($merchant); - $bank_account2 = self::_createBankAccount($merchant); - - $credit = $merchant->credit( - 1000, - 'something i sold', - null, - null, - 'Softie' - ); - $this->assertEquals($credit->destination->id, $bank_account2->id); - - $credit = $merchant->credit( - 1000, - 'something i sold', - null, - $bank_account1, - 'Softie' - ); - $this->assertEquals($credit->destination->id, $bank_account1->id); - } - - function testAssociateCard() - { - $merchant = self::_createPersonMerchant(); - $card = self::_createCard(); - $merchant->addCard($card->uri); - } - - function testAssociateBankAccount() - { - $merchant = self::_createPersonMerchant(); - $bank_account = self::_createBankAccount(); - $merchant->addBankAccount($bank_account->uri); - } - - function testCardMasking() - { - $card = self::$marketplace->createCard( - '123 Fake Street', - 'Jollywood', - null, - '90210', - 'khalkhalash', - '4112344112344113', - '123', - 12, - 2013); - $this->assertEquals($card->last_four, '4113'); - $this->assertFalse(property_exists($card, 'number')); - } - - function testBankAccountMasking() - { - $bank_account = self::$marketplace->createBankAccount( - 'Homer Jay', - '112233a', - '121042882', - 'checking' - ); - $this->assertEquals($bank_account->last_four, '233a'); - $this->assertEquals($bank_account->account_number, 'xxx233a'); - } - - function testFilteringAndSorting() - { - $buyer = self::_createBuyer(); - $debit1 = $buyer->debit(1122, null, null, array('tag' => '1')); - $debit2 = $buyer->debit(3322, null, null, array('tag' => '1')); - $debit3 = $buyer->debit(2211, null, null, array('tag' => '2')); - - $getId = function($o) { - return $o->id; - }; - - $debits = ( - self::$marketplace->debits->query() - ->filter(Debit::$f->meta->tag->eq('1')) - ->sort(Debit::$f->created_at->asc()) - ->all()); - $debit_ids = array_map($getId, $debits); - $this->assertEquals($debit_ids, array($debit1->id, $debit2->id)); - - $debits = ( - self::$marketplace->debits->query() - ->filter(Debit::$f->meta->tag->eq('2')) - ->all()); - $debit_ids = array_map($getId, $debits); - $this->assertEquals($debit_ids, array($debit3->id)); - - $debits = ( - self::$marketplace->debits->query() - ->filter(Debit::$f->meta->contains('tag')) - ->sort(Debit::$f->created_at->asc()) - ->all()); - $debit_ids = array_map($getId, $debits); - $this->assertEquals($debit_ids, array($debit1->id, $debit2->id, $debit3->id)); - - $debits = ( - self::$marketplace->debits->query() - ->filter(Debit::$f->meta->contains('tag')) - ->sort(Debit::$f->amount->desc()) - ->all()); - $debit_ids = array_map($getId, $debits); - $this->assertEquals($debit_ids, array($debit2->id, $debit3->id, $debit1->id)); - } - - function testMerchantIdentityFailure() - { - // NOTE: postal_code == '99999' && region == 'EX' triggers identity failure - $identity = array( - 'type' => 'business', - 'name' => 'Levain Bakery', - 'tax_id' => '253912384', - 'street_address' => '167 West 74th Street', - 'postal_code' => '99999', - 'region' => 'EX', - 'phone_number' => '+16505551234', - 'country_code' => 'USA', - 'person' => array( - 'name' => 'William James', - 'tax_id' => '393483992', - 'street_address' => '167 West 74th Street', - 'postal_code' => '99999', - 'region' => 'EX', - 'dob' => '1842-01-01', - 'phone_number' => '+16505551234', - 'country_code' => 'USA', - ), - ); - - try { - self::$marketplace->createMerchant( - sprintf('m+%d@poundpay.com', self::$email_counter++), - $identity); - } - catch(\RESTful\Exceptions\HTTPError $e) { - $this->assertEquals($e->response->code, 300); - $expected = sprintf('https://www.balancedpayments.com/marketplaces/%s/kyc', self::$marketplace->id); - $this->assertEquals($e->redirect_uri, $expected); - $this->assertEquals($e->response->headers['Location'], $expected); - return; - } - $this->fail('Expected exception HTTPError not raised.'); - } - - function testInternationalCard() - { - $payload = array( - 'card_number' => '4111111111111111', - 'city' => '\xe9\x83\xbd\xe7\x95\x99\xe5\xb8\x82', - 'country_code' => 'JPN', - 'expiration_month' => 12, - 'expiration_year' => 2014, - 'name' => 'Johnny Fresh', - 'postal_code' => '4020054', - 'street_address' => '\xe7\x94\xb0\xe5\x8e\x9f\xef\xbc\x93\xe3\x83\xbc\xef\xbc\x98\xe3\x83\xbc\xef\xbc\x91' - ); - $card = self::$marketplace->cards->create($payload); - $this->assertEquals($card->street_address, $payload['street_address']); - } - - /** - * @expectedException \RESTful\Exceptions\NoResultFound - */ - function testAccountWithEmailAddressNotFound() - { - self::$marketplace->accounts->query() - ->filter(Account::$f->email_address->eq('unlikely@address.com')) - ->one(); - } - - function testDebitACard() - { - $buyer = self::_createBuyer(); - $card = self::_createCard($buyer); - $debit = $card->debit( - 1000, - 'Softie', - 'something i bought', - array('hi' => 'bye')); - $this->assertEquals($debit->source->uri, $card->uri); - } - - /** - * @expectedException \UnexpectedValueException - */ - function testDebitAnUnassociatedCard() - { - $card = self::_createCard(); - $card->debit(1000, 'Softie'); - } - - function testCreditABankAccount() - { - $buyer = self::_createBuyer(); - $buyer->debit(101); # NOTE: build up escrow balance to credit - - $merchant = self::_createPersonMerchant(); - $bank_account = self::_createBankAccount($merchant); - $credit = $bank_account->credit(55, 'something sour'); - $this->assertEquals($credit->destination->uri, $bank_account->uri); - } - - function testQuery() - { - $buyer = self::_createBuyer(); - $tag = '123123123123'; - $debit1 = $buyer->debit(1122, null, null, array('tag' => $tag)); - $debit2 = $buyer->debit(3322, null, null, array('tag' => $tag)); - $debit3 = $buyer->debit(2211, null, null, array('tag' => $tag)); - $expected_debit_ids = array($debit1->id, $debit2->id, $debit3->id); - - $query = ( - self::$marketplace->debits->query() - ->filter(Debit::$f->meta->tag->eq($tag)) - ->sort(Debit::$f->created_at->asc()) - ->limit(1)); - - $this->assertEquals($query->total(), 3); - - $debit_ids = array(); - foreach ($query as $debits) { - array_push($debit_ids, $debits->id); - } - $this->assertEquals($debit_ids, $expected_debit_ids); - - $debit_ids = array($query[0]->id, $query[1]->id, $query[2]->id); - $this->assertEquals($debit_ids, $expected_debit_ids); - } - - function testBuyerPromoteToMerchant() - { - $merchant = array( - 'type' => 'person', - 'name' => 'William James', - 'tax_id' => '393-48-3992', - 'street_address' => '167 West 74th Street', - 'postal_code' => '10023', - 'dob' => '1842-01-01', - 'phone_number' => '+16505551234', - 'country_code' => 'USA' - ); - $buyer = self::_createBuyer(); - $buyer->promoteToMerchant($merchant); - } - - function testCreditAccountlessBankAccount() - { - $buyer = self::_createBuyer(); - $buyer->debit(101); # NOTE: build up escrow balance to credit - - $bank_account = self::_createBankAccount(); - $credit = $bank_account->credit(55, 'something sour'); - $this->assertEquals($credit->bank_account->id, $bank_account->id); - $bank_account = $bank_account->get($bank_account->id); - $this->assertEquals($bank_account->credits->total(), 1); - } - - function testCreditUnstoredBankAccount() - { - $buyer = self::_createBuyer(); - $buyer->debit(101); # NOTE: build up escrow balance to credit - - $credit = Credit::bankAccount( - 55, - array( - 'name' => 'Homer Jay', - 'account_number' => '112233a', - 'routing_number' => '121042882', - 'type' => 'checking', - ), - 'something sour'); - $this->assertFalse(property_exists($credit->bank_account, 'uri')); - $this->assertFalse(property_exists($credit->bank_account, 'id')); - $this->assertEquals($credit->bank_account->name, 'Homer Jay'); - $this->assertEquals($credit->bank_account->account_number, 'xxx233a'); - $this->assertEquals($credit->bank_account->type, 'checking'); - } - - function testDeleteBankAccount() - { - $buyer = self::_createBuyer(); - $buyer->debit(101); # NOTE: build up escrow balance to credit - - $bank_account = self::_createBankAccount(); - $credit = $bank_account->credit(55, 'something sour'); - $this->assertTrue(property_exists($credit->bank_account, 'uri')); - $this->assertTrue(property_exists($credit->bank_account, 'id')); - $bank_account = BankAccount::get($bank_account->id); - $bank_account->delete(); - $credit = Credit::get($credit->uri); - $this->assertFalse(property_exists($credit->bank_account, 'uri')); - $this->assertFalse(property_exists($credit->bank_account, 'id')); - } - - function testGetBankAccounById() - { - $bank_account = self::_createBankAccount(); - $bank_account_2 = BankAccount::get($bank_account->id); - $this->assertEquals($bank_account_2->id, $bank_account->id); - } - - /** - * @expectedException \Balanced\Errors\InsufficientFunds - */ - function testInsufficientFunds() - { - $marketplace = Marketplace::get(self::$marketplace->uri); - $amount = $marketplace->in_escrow + 100; - $credit = Credit::bankAccount( - $amount, - array( - 'name' => 'Homer Jay', - 'account_number' => '112233a', - 'routing_number' => '121042882', - 'type' => 'checking', - ), - 'something sour'); - } - - function testCreateCallback() { - $callback = self::$marketplace->createCallback( - 'http://example.com/php' - ); - $this->assertEquals($callback->url, 'http://example.com/php'); - } - - /** - * @expectedException \Balanced\Errors\BankAccountVerificationFailure - */ - function testBankAccountVerificationFailure() { - $bank_account = self::_createBankAccount(); - $buyer = self::_createBuyer(); - $buyer->addBankAccount($bank_account); - $verification = $bank_account->verify(); - $verification->confirm(1, 2); - } - - /** - * @expectedException \Balanced\Errors\BankAccountVerificationFailure - */ - function testBankAccountVerificationDuplicate() { - $bank_account = self::_createBankAccount(); - $buyer = self::_createBuyer(); - $buyer->addBankAccount($bank_account); - $bank_account->verify(); - $bank_account->verify(); - } - - function testBankAccountVerificationSuccess() { - $bank_account = self::_createBankAccount(); - $buyer = self::_createBuyer(); - $buyer->addBankAccount($bank_account); - $verification = $bank_account->verify(); - $verification->confirm(1, 1); - - // this will fail if the bank account is not verified - $debit = $buyer->debit( - 1000, - 'Softie', - 'something i bought', - array('hi' => 'bye'), - $bank_account - ); - $this->assertTrue(strpos($debit->source->uri, 'bank_account') > 0); - } - - function testEvents() { - $prev_num_events = Marketplace::mine()->events->total(); - $account = self::_createBuyer(); - $account->debit(123); - $cur_num_events = Marketplace::mine()->events->total(); - $count = 0; - while ($cur_num_events == $prev_num_events && $count < 10) { - printf("waiting for events - %d, %d == %d\n", $count + 1, $cur_num_events, $prev_num_events); - sleep(2); // 2 seconds - $cur_num_events = Marketplace::mine()->events->total(); - $count += 1; - } - $this->assertTrue($cur_num_events > $prev_num_events); - } -} diff --git a/externals/balanced-php/tests/phpunit.xml b/externals/balanced-php/tests/phpunit.xml deleted file mode 100644 index 2f42baf208..0000000000 --- a/externals/balanced-php/tests/phpunit.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - . - - - - - diff --git a/resources/celerity/map.php b/resources/celerity/map.php index b9252b65b2..8c26c0a6d3 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -44,7 +44,7 @@ return array( 'rsrc/css/application/config/config-welcome.css' => '6abd79be', 'rsrc/css/application/config/setup-issue.css' => '22270af2', 'rsrc/css/application/config/unhandled-exception.css' => '37d4f9a2', - 'rsrc/css/application/conpherence/durable-column.css' => '8c951609', + 'rsrc/css/application/conpherence/durable-column.css' => '1f5c64e8', 'rsrc/css/application/conpherence/menu.css' => 'c6ac5299', 'rsrc/css/application/conpherence/message-pane.css' => '5930260a', 'rsrc/css/application/conpherence/notification.css' => '04a6e10a', @@ -404,7 +404,6 @@ return array( 'rsrc/js/application/phame/phame-post-preview.js' => 'be807912', 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => '9c2623f4', 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'e58bf807', - 'rsrc/js/application/phortune/behavior-balanced-payment-form.js' => 'b2c03e60', 'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => '3f5d6dbf', 'rsrc/js/application/phortune/behavior-test-payment-form.js' => 'fc91ab6c', 'rsrc/js/application/phortune/phortune-credit-card-form.js' => '2290aeef', @@ -514,7 +513,7 @@ return array( 'changeset-view-manager' => '88be0133', 'config-options-css' => '7fedf08b', 'config-welcome-css' => '6abd79be', - 'conpherence-durable-column-view' => '8c951609', + 'conpherence-durable-column-view' => '1f5c64e8', 'conpherence-menu-css' => 'c6ac5299', 'conpherence-message-pane-css' => '5930260a', 'conpherence-notification-css' => '04a6e10a', @@ -554,7 +553,6 @@ return array( 'javelin-behavior-aphront-more' => 'a80d0378', 'javelin-behavior-audio-source' => '59b251eb', 'javelin-behavior-audit-preview' => 'd835b03a', - 'javelin-behavior-balanced-payment-form' => 'b2c03e60', 'javelin-behavior-boards-dropdown' => '0ec56e1d', 'javelin-behavior-choose-control' => '6153c708', 'javelin-behavior-config-reorder-fields' => '14a827de', @@ -1670,11 +1668,6 @@ return array( 'javelin-uri', 'javelin-request', ), - 'b2c03e60' => array( - 'javelin-behavior', - 'javelin-dom', - 'phortune-credit-card-form', - ), 'b3a4b884' => array( 'javelin-behavior', 'phabricator-prefab', diff --git a/resources/sprite/login_1x/Balanced.png b/resources/sprite/login_1x/Balanced.png deleted file mode 100644 index a6d57e6a48..0000000000 Binary files a/resources/sprite/login_1x/Balanced.png and /dev/null differ diff --git a/resources/sprite/login_2x/Balanced.png b/resources/sprite/login_2x/Balanced.png deleted file mode 100644 index ff894bfa5d..0000000000 Binary files a/resources/sprite/login_2x/Balanced.png and /dev/null differ diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index b6f18aee6c..32407404a3 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2779,7 +2779,6 @@ phutil_register_library_map(array( 'PhortuneAccountTransaction' => 'applications/phortune/storage/PhortuneAccountTransaction.php', 'PhortuneAccountTransactionQuery' => 'applications/phortune/query/PhortuneAccountTransactionQuery.php', 'PhortuneAccountViewController' => 'applications/phortune/controller/PhortuneAccountViewController.php', - 'PhortuneBalancedPaymentProvider' => 'applications/phortune/provider/PhortuneBalancedPaymentProvider.php', 'PhortuneCart' => 'applications/phortune/storage/PhortuneCart.php', 'PhortuneCartAcceptController' => 'applications/phortune/controller/PhortuneCartAcceptController.php', 'PhortuneCartCancelController' => 'applications/phortune/controller/PhortuneCartCancelController.php', @@ -6176,7 +6175,6 @@ phutil_register_library_map(array( 'PhortuneAccountTransaction' => 'PhabricatorApplicationTransaction', 'PhortuneAccountTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 'PhortuneAccountViewController' => 'PhortuneController', - 'PhortuneBalancedPaymentProvider' => 'PhortunePaymentProvider', 'PhortuneCart' => array( 'PhortuneDAO', 'PhabricatorApplicationTransactionInterface', diff --git a/src/applications/phortune/provider/PhortuneBalancedPaymentProvider.php b/src/applications/phortune/provider/PhortuneBalancedPaymentProvider.php deleted file mode 100644 index 87ab157716..0000000000 --- a/src/applications/phortune/provider/PhortuneBalancedPaymentProvider.php +++ /dev/null @@ -1,370 +0,0 @@ -getSecretKey()); - } - - public function getName() { - return pht('Balanced Payments'); - } - - public function getConfigureName() { - return pht('Add Balanced Payments Account'); - } - - public function getConfigureDescription() { - return pht( - 'Allows you to accept credit or debit card payments with a '. - 'balancedpayments.com account.'); - } - - public function getConfigureProvidesDescription() { - return pht( - 'This merchant accepts credit and debit cards via Balanced Payments.'); - } - - public function getConfigureInstructions() { - return pht( - "To configure Balacned, register or log in to an existing account on ". - "[[https://balancedpayments.com | balancedpayments.com]]. Once logged ". - "in:\n\n". - " - Choose a marketplace.\n". - " - Find the **Marketplace ID** in {nav My Marketplace > Settings} and ". - " copy it into the field above.\n". - " - On the same screen, under **API keys**, choose **Add a key**, then ". - " **Show key secret**. Copy the value into the field above.\n\n". - "You can either use a test marketplace to add this provider in test ". - "mode, or use a live marketplace to accept live payments."); - } - - public function getAllConfigurableProperties() { - return array( - self::BALANCED_MARKETPLACE_ID, - self::BALANCED_SECRET_KEY, - ); - } - - public function getAllConfigurableSecretProperties() { - return array( - self::BALANCED_SECRET_KEY, - ); - } - - public function processEditForm( - AphrontRequest $request, - array $values) { - - $errors = array(); - $issues = array(); - - if (!strlen($values[self::BALANCED_MARKETPLACE_ID])) { - $errors[] = pht('Balanced Marketplace ID is required.'); - $issues[self::BALANCED_MARKETPLACE_ID] = pht('Required'); - } - - if (!strlen($values[self::BALANCED_SECRET_KEY])) { - $errors[] = pht('Balanced Secret Key is required.'); - $issues[self::BALANCED_SECRET_KEY] = pht('Required'); - } - - return array($errors, $issues, $values); - } - - public function extendEditForm( - AphrontRequest $request, - AphrontFormView $form, - array $values, - array $issues) { - - $form - ->appendChild( - id(new AphrontFormTextControl()) - ->setName(self::BALANCED_MARKETPLACE_ID) - ->setValue($values[self::BALANCED_MARKETPLACE_ID]) - ->setError(idx($issues, self::BALANCED_MARKETPLACE_ID, true)) - ->setLabel(pht('Balanced Marketplace ID'))) - ->appendChild( - id(new AphrontFormTextControl()) - ->setName(self::BALANCED_SECRET_KEY) - ->setValue($values[self::BALANCED_SECRET_KEY]) - ->setError(idx($issues, self::BALANCED_SECRET_KEY, true)) - ->setLabel(pht('Balanced Secret Key'))); - - } - - public function canRunConfigurationTest() { - return true; - } - - public function runConfigurationTest() { - $this->loadBalancedAPILibraries(); - - // TODO: This only tests that the secret key is correct. It's not clear - // how to test that the marketplace is correct. - - try { - Balanced\Settings::$api_key = $this->getSecretKey(); - Balanced\APIKey::query()->first(); - } catch (RESTful\Exceptions\HTTPError $error) { - // NOTE: This exception doesn't print anything meaningful if it escapes - // to top level. Replace it with something slightly readable. - throw new Exception($error->response->body->description); - } - } - - public function getPaymentMethodDescription() { - return pht('Add Credit or Debit Card'); - } - - public function getPaymentMethodIcon() { - return 'Balanced'; - } - - public function getPaymentMethodProviderDescription() { - return pht('Processed by Balanced'); - } - - public function getDefaultPaymentMethodDisplayName( - PhortunePaymentMethod $method) { - return pht('Credit/Debit Card'); - } - - protected function executeCharge( - PhortunePaymentMethod $method, - PhortuneCharge $charge) { - $this->loadBalancedAPILibraries(); - - $price = $charge->getAmountAsCurrency(); - - // Build the string which will appear on the credit card statement. - $charge_as = new PhutilURI(PhabricatorEnv::getProductionURI('/')); - $charge_as = $charge_as->getDomain(); - $charge_as = id(new PhutilUTF8StringTruncator()) - ->setMaximumBytes(22) - ->setTerminator('') - ->truncateString($charge_as); - - try { - Balanced\Settings::$api_key = $this->getSecretKey(); - $card = Balanced\Card::get($method->getMetadataValue('balanced.cardURI')); - $debit = $card->debit($price->getValueInUSDCents(), $charge_as); - } catch (RESTful\Exceptions\HTTPError $error) { - // NOTE: This exception doesn't print anything meaningful if it escapes - // to top level. Replace it with something slightly readable. - throw new Exception($error->response->body->description); - } - - $expect_status = 'succeeded'; - if ($debit->status !== $expect_status) { - throw new Exception( - pht( - 'Debit failed, expected "%s", got "%s".', - $expect_status, - $debit->status)); - } - - $charge->setMetadataValue('balanced.debitURI', $debit->uri); - $charge->save(); - } - - protected function executeRefund( - PhortuneCharge $charge, - PhortuneCharge $refund) { - $this->loadBalancedAPILibraries(); - - $debit_uri = $charge->getMetadataValue('balanced.debitURI'); - if (!$debit_uri) { - throw new Exception(pht('No Balanced debit URI!')); - } - - $refund_cents = $refund - ->getAmountAsCurrency() - ->negate() - ->getValueInUSDCents(); - - $params = array( - 'amount' => $refund_cents, - ); - - try { - Balanced\Settings::$api_key = $this->getSecretKey(); - $balanced_debit = Balanced\Debit::get($debit_uri); - $balanced_refund = $balanced_debit->refunds->create($params); - } catch (RESTful\Exceptions\HTTPError $error) { - throw new Exception($error->response->body->description); - } - - $refund->setMetadataValue('balanced.refundURI', $balanced_refund->uri); - $refund->save(); - } - - public function updateCharge(PhortuneCharge $charge) { - $this->loadBalancedAPILibraries(); - - $debit_uri = $charge->getMetadataValue('balanced.debitURI'); - if (!$debit_uri) { - throw new Exception(pht('No Balanced debit URI!')); - } - - try { - Balanced\Settings::$api_key = $this->getSecretKey(); - $balanced_debit = Balanced\Debit::get($debit_uri); - } catch (RESTful\Exceptions\HTTPError $error) { - throw new Exception($error->response->body->description); - } - - // TODO: Deal with disputes / chargebacks / surprising refunds. - } - - private function getMarketplaceID() { - return $this - ->getProviderConfig() - ->getMetadataValue(self::BALANCED_MARKETPLACE_ID); - } - - private function getSecretKey() { - return $this - ->getProviderConfig() - ->getMetadataValue(self::BALANCED_SECRET_KEY); - } - - private function getMarketplaceURI() { - return '/v1/marketplaces/'.$this->getMarketplaceID(); - } - - -/* -( Adding Payment Methods )--------------------------------------------- */ - - - public function canCreatePaymentMethods() { - return true; - } - - public function validateCreatePaymentMethodToken(array $token) { - return isset($token['balancedMarketplaceURI']); - } - - - /** - * @phutil-external-symbol class Balanced\Card - * @phutil-external-symbol class Balanced\Debit - * @phutil-external-symbol class Balanced\Settings - * @phutil-external-symbol class Balanced\Marketplace - * @phutil-external-symbol class Balanced\APIKey - * @phutil-external-symbol class RESTful\Exceptions\HTTPError - */ - public function createPaymentMethodFromRequest( - AphrontRequest $request, - PhortunePaymentMethod $method, - array $token) { - $this->loadBalancedAPILibraries(); - - $errors = array(); - - $account_phid = $method->getAccountPHID(); - $author_phid = $method->getAuthorPHID(); - $description = $account_phid.':'.$author_phid; - - try { - Balanced\Settings::$api_key = $this->getSecretKey(); - - $card = Balanced\Card::get($token['balancedMarketplaceURI']); - - $buyer = Balanced\Marketplace::mine()->createBuyer( - null, - $card->uri, - array( - 'description' => $description, - )); - - } catch (RESTful\Exceptions\HTTPError $error) { - // NOTE: This exception doesn't print anything meaningful if it escapes - // to top level. Replace it with something slightly readable. - throw new Exception($error->response->body->description); - } - - $method - ->setBrand($card->brand) - ->setLastFourDigits($card->last_four) - ->setExpires($card->expiration_year, $card->expiration_month) - ->setMetadata( - array( - 'type' => 'balanced.account', - 'balanced.accountURI' => $buyer->uri, - 'balanced.cardURI' => $card->uri, - )); - - return $errors; - } - - public function renderCreatePaymentMethodForm( - AphrontRequest $request, - array $errors) { - - $ccform = id(new PhortuneCreditCardForm()) - ->setUser($request->getUser()) - ->setErrors($errors) - ->addScript('https://js.balancedpayments.com/v1/balanced.js'); - - Javelin::initBehavior( - 'balanced-payment-form', - array( - 'balancedMarketplaceURI' => $this->getMarketplaceURI(), - 'formID' => $ccform->getFormID(), - )); - - return $ccform->buildForm(); - } - - private function getBalancedShortErrorCode($error_code) { - $prefix = 'cc:balanced:'; - if (strncmp($error_code, $prefix, strlen($prefix))) { - return null; - } - return substr($error_code, strlen($prefix)); - } - - public function translateCreatePaymentMethodErrorCode($error_code) { - $short_code = $this->getBalancedShortErrorCode($error_code); - - if ($short_code) { - static $map = array( - ); - - if (isset($map[$short_code])) { - return $map[$short_code]; - } - } - - return $error_code; - } - - public function getCreatePaymentMethodErrorMessage($error_code) { - $short_code = $this->getBalancedShortErrorCode($error_code); - if (!$short_code) { - return null; - } - - switch ($short_code) { - - default: - break; - } - - - return null; - } - - private function loadBalancedAPILibraries() { - $root = dirname(phutil_get_library_root('phabricator')); - require_once $root.'/externals/httpful/bootstrap.php'; - require_once $root.'/externals/restful/bootstrap.php'; - require_once $root.'/externals/balanced-php/bootstrap.php'; - } - -} diff --git a/webroot/rsrc/js/application/phortune/behavior-balanced-payment-form.js b/webroot/rsrc/js/application/phortune/behavior-balanced-payment-form.js deleted file mode 100644 index 2549d7a0b7..0000000000 --- a/webroot/rsrc/js/application/phortune/behavior-balanced-payment-form.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @provides javelin-behavior-balanced-payment-form - * @requires javelin-behavior - * javelin-dom - * phortune-credit-card-form - */ - -JX.behavior('balanced-payment-form', function(config) { - balanced.init(config.balancedMarketplaceURI); - - function onsubmit(card_data) { - var errors = []; - - if (!balanced.card.isCardNumberValid(card_data.number)) { - errors.push('cc:invalid:number'); - } - - if (!balanced.card.isSecurityCodeValid(card_data.number, card_data.cvc)) { - errors.push('cc:invalid:cvc'); - } - - if (!balanced.card.isExpiryValid(card_data.month, card_data.year)) { - errors.push('cc:invalid:expiry'); - } - - if (errors.length) { - ccform.submitForm(errors); - return; - } - - var data = { - card_number: card_data.number, - security_code: card_data.cvc, - expiration_month: card_data.month, - expiration_year: card_data.year - }; - - balanced.card.create(data, onresponse); - } - - function onresponse(response) { - var token = null; - var errors = []; - - if (response.error) { - errors = ['cc:balanced:error:' + response.error.type]; - } else if (response.status != 201) { - errors = ['cc:balanced:http:' + response.status]; - } else { - token = response.data.uri; - } - - ccform.submitForm(errors, {balancedMarketplaceURI: token}); - } - - var ccform = new JX.PhortuneCreditCardForm(JX.$(config.formID), onsubmit); -});