Product info shouldnt be credential2
Refactor checkum, PayuPaisa was reversing udf fields
Slip down user_defined method
PayU status should be based off status from param, checksum should be handled by acknowledge
to_s discount as it can be nil on returns
Fix PayuInPaisa module tests
Remove super arguments
Sanitize field values before generating the form fields
Move payu in test credentials to fixtures
Adds stripe key to allowed options in generate_options
Fix JSON ParserError typo in Bitpay
Merge pull request #928 from jnormore/master

Adds stripe key to allowed options in generate_options
Paymill: Fix authorizations

In May 2013, Paymill added some response codes:
https://blog.paymill.com/new-response-codes/

And there's now a way to trigger declines and other errors using their
test gateway.

This commit now accounts for the fact that a decline may have 4XX HTPP
status code or it may have a 200 status code.  Success in Paymill means
that it's a 200 status code && the response_code within the body is
20000.  Except for the Void operation.  In that case, just a 200
status code is sufficient since the body doesn't include a
response_code.

The Purchase operation returns a 4XX for a failure but the Authorize
returns a 200 for a failure.  Now when an authorize fails on the Paymill
side, Active Merchant once again reports that transaction as having
failed.

This commit also fills the response with the appropriate response
message based on the response_code since the body doesn't include the
text.  This ActiveMerchant adapter now handles the response description
mapping to give end users a better idea of what went wrong.

Closes #923.
Braintree Blue: Allow specifying credit card token

This makes it possible to use an explicit card token, rather than
Braintree automatically generating it. If no token is passed it
continues to be generated automatically.

Also exposes the credit card token in the response.
Braintree Blue: Allow specifying the customer id

This allows specifying a customer id when storing a credit card rather
than having one generated automatically.
Braintree Blue: Scrub invalid emails and zips

Braintree is strict with emails and zips, which can cause unexpected
failures. This simply substitutes nil if a known-bad email or zip is
passed in so that the transaction doesn't fail due to the "bad" input.

This also improves the remote tests, including giving more guidance on
tests that require further configuration before they'll pass.
Fix Ipay88 requery
Braintree Blue: Return :credit_card_token

Having the token at the top level of the params hash when applicable
means much less digging around in the internals of how Braintree
structures their results.
Braintree Blue: Allow unstoring just a credit card

Unfortunately the Braintree implementation of store/unstore/update was
originally made very customer-centric where ActiveMerchant is credit
card centric. This means that #unstore expects a customer id rather than
a credit card token. To at least allow unstoring a card only, this
allows passing a credit card token for removal; the customer id must be
passed as nil for it to work, though.
Braintree Blue: Add cards to existing customers

When calling #store with an explicit customer id it's useful to add the
card to the customer with the id if it exists vs. dying with an error.