def test_token_charge(self):
        token = self.token_service.get_token(TestCreditCard.valid_visa)
        charge_service = HpsCreditService(TestServicesConfig.valid_services_config)
        charge = charge_service.charge(4, 'USD', token.token_value, TestCardHolder.valid_card_holder)

        self.assertIsNotNone(charge)
        self.assertEqual('00', charge.response_code)
Пример #2
0
def charge_token(token, card_holder):
    config = HpsServicesConfig()
    config.secret_api_key = 'skapi_cert_MYl2AQAowiQAbLp5JesGKh7QFkcizOP2jcX9BrEMqQ'
    config.version_number = '0000'
    config.developer_id = '000000'

    charge_service = HpsCreditService(config)
    response = charge_service.charge(15.15, 'usd', token, card_holder)
    return response
    def test_swipe_token(self):
        swipe_data = '.11%B4012001000000016^VI TEST CREDIT^251210100000000000000000?|mc7vPHGGYh79DuD2Ys0ELhubZcP7dIsNaxQlRF243dIX5kfXEnQKaciND|+++++++JnvkN4mBa11;4012001000000016=25121010000000000000?|kON4LjKZ+tcDZcIef/W2H7oRDw|+++++++JnvkN4mBa00||/wECAQECAoFGAgEH3wEeShV78RZwb3NAc2VjdXJlZXhjaGFuZ2UubmV0TBtEt4SQvyC03zgmcS/4rnZdMpF+4mJT6EYuyDKC+WJAMG4+cSiWOGHtqwaK6edyzqosTPLavpdRat7z2dVX/SM3//TXLGGrSIayLW6Zmatbw4MT0KtBuyYaKX74E4v2L2PhItHv7m6rm2xGu2yTPmCvm9yFTouljvhF3Klx8rUAn0o0zCVAE9sl/iix+qqnTLEvgd/XXpaiYwyQoKSkkZGVX7QP'
        token = self.token_service.get_swipe_token(swipe_data)
        self.assertIsNotNone(token)

        charge_service = HpsCreditService(TestServicesConfig.valid_services_config)
        charge = charge_service.charge(3, 'USD', token.token_value, TestCardHolder.valid_card_holder)

        self.assertIsNotNone(charge)
        self.assertEqual('00', charge.response_code)
    def test_encrypted_card_token(self):
        track = '4012007060016=2512101hX3JZdqcwEOaoUry'
        ktb = '/wECAQEEAoFGAgEH3ggDTDT6jRZwb3NAc2VjdXJlZXhjaGFuZ2UubmV0MCtomwyCdnN+qr1I/SvhXbgOurdPKxkAyrmBQkzS/0UB6HWpdN1nc4IXcgB7tuVAs4fRjIlYOTIWNjf10bwciwD3m1JNoDMtvoXggaN7dLI7uuA+jYzt0gAmzgB3QqUFY0k7awOm923RJhnVaWUBJv9jL3+gvFNzZ+CiYbJH3BoArnCvWJbn/ohfnlJ6bA+GPC2fJlQkizQXbrRoF+pbcezCaY9W'
        token = self.token_service.get_track_token(track, '02', ktb)
        self.assertIsNotNone(token)

        charge_service = HpsCreditService(TestServicesConfig.valid_services_config)
        charge = charge_service.charge(2, 'USD', token.token_value, TestCardHolder.valid_card_holder)

        self.assertIsNotNone(charge)
        self.assertEqual('00', charge.response_code)
Пример #5
0
def charge_token(token, card_holder):
    config = HpsServicesConfig()
    config.secret_api_key = 'skapi_cert_MYl2AQAowiQAbLp5JesGKh7QFkcizOP2jcX9BrEMqQ'
    config.version_number = '0000'
    config.developer_id = '000000'

    charge_service = HpsCreditService(config)
    response = charge_service.charge(
        15.15,
        'usd',
        token,
        card_holder)
    return response
Пример #6
0
class Charge:
    _config = HpsServicesConfig()
    _config.secret_api_key = 'skapi_cert_MYl2AQAowiQAbLp5JesGKh7QFkcizOP2jcX9BrEMqQ'
    _config.version_number = '0000'
    _config.developer_id = '000000'

    _charge_service = HpsCreditService(_config)

    def POST(self):
        request = web.input()
        try:
            email = request['Email']

            address = HpsAddress()
            address.address = request['Address']
            address.city = request['City']
            address.state = request['State']
            address.zip = re.sub('[^0-9]', '', request['Zip'])
            address.country = 'United States'

            card_holder = HpsCardHolder()
            card_holder.first_name = request['FirstName']
            card_holder.last_name = request['LastName']
            card_holder.address = address
            card_holder.phone = re.sub('[^0-9]', '', request['PhoneNumber'])

            su_token = request['token_value']
            response = self.charge_token(su_token, card_holder)
        except KeyError:
            traceback.print_exc()
            raise web.seeother('/')
        except (HpsCreditException, HpsGatewayException):
            traceback.print_exc()
            raise web.seeother('/')
        else:
            body = '<h1>Success!</h1><p>Thank you, %s, for your order of $15.15.</p>' % card_holder.first_name
            print 'Transaction Id: %s' % response.transaction_id
            self.send_email(email, '*****@*****.**', 'Successful Charge!', body)
            raise web.seeother('/')

    def charge_token(self, token, card_holder):
        response = self._charge_service.charge(
            15.15,
            'usd',
            token,
            card_holder)
        return response

    def send_email(self, to, from_email, subject, body):
        """ Make sure to set the web.config.smtp_server option to send mail """
        message = '<html><body>%s</body?</html>' % body
        headers = ({
            'From': from_email,
            'Reply-To': from_email,
            'MIME-Version': '1.0',
            'Content-type': 'text/html; charset=ISO-8859-1'
        })
        web.sendmail(from_email, to, subject, message, headers=headers)
Пример #7
0
class GeneralTests(unittest.TestCase):
    charge_service = HpsCreditService(enable_logging=True)

    def test_charge_ampersand_in_customer_id(self):
        self.charge_service._config = TestServicesConfig.valid_services_config

        details = HpsTransactionDetails()
        details.customer_id = '&something'

        try:
            response = self.charge_service.charge('5', 'usd',
                                                  TestCreditCard.valid_visa,
                                                  None, False, None, False,
                                                  details)
            self.assertIsNotNone(response)
            self.assertEqual('00', response.response_code)
        except HpsGatewayException, e:
            self.fail('Gateway threw an error')
Пример #8
0
class DiscoverTests(unittest.TestCase):
    charge_service = HpsCreditService(TestServicesConfig.valid_services_config)

    def test_discover_charge(self):
        response = self._charge_valid_discover(50)
        self.assertEqual(response.response_code, '00')

    def test_discover_avs_response_A(self):
        response = self._charge_valid_discover(91.01)
        self.assertEqual(response.avs_result_code, 'A')

    def test_discover_avs_response_N(self):
        response = self._charge_valid_discover(91.02)
        self.assertEqual(response.avs_result_code, 'N')

    def test_discover_avs_response_R(self):
        response = self._charge_valid_discover(91.03)
        self.assertEqual(response.avs_result_code, 'R')

    def test_discover_avs_response_U(self):
        response = self._charge_valid_discover(91.05)
        self.assertEqual(response.avs_result_code, 'U')

    def test_discover_avs_response_Y(self):
        response = self._charge_valid_discover(91.06)
        self.assertEqual(response.avs_result_code, 'Y')

    def test_discover_avs_response_Z(self):
        response = self._charge_valid_discover(91.07)
        self.assertEqual(response.avs_result_code, 'Z')

    def test_discover_response_refer_card_issuer(self):
        try:
            response = self._charge_valid_discover(10.34)
        except HpsCreditException, e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return
        self.fail('No exception was thrown.')
Пример #9
0
class AmexTests(unittest.TestCase):
    charge_service = HpsCreditService(
        TestServicesConfig.valid_services_config)

    def test_amex_charge(self):
        response = self._charge_valid_amex(50)
        self.assertEqual(response.response_code, "00")

    # AVS Tests
    def test_amex_avs_response_a(self):
        response = self._charge_valid_amex(90.01)
        self.assertEqual(response.avs_result_code, "A")

    def test_amex_avs_response_n(self):
        response = self._charge_valid_amex(90.02)
        self.assertEqual(response.avs_result_code, "N")

    def test_amex_avs_response_r(self):
        response = self._charge_valid_amex(90.03)
        self.assertEqual(response.avs_result_code, "R")

    def test_amex_avs_response_s(self):
        response = self._charge_valid_amex(90.04)
        self.assertEqual(response.avs_result_code, "S")

    def test_amex_avs_response_u(self):
        response = self._charge_valid_amex(90.05)
        self.assertEqual(response.avs_result_code, "U")

    def test_amex_avs_response_w(self):
        response = self._charge_valid_amex(90.06)
        self.assertEqual(response.avs_result_code, "W")

    def test_amex_avs_response_x(self):
        response = self._charge_valid_amex(90.07)
        self.assertEqual(response.avs_result_code, "X")

    def test_amex_avs_response_y(self):
        response = self._charge_valid_amex(90.08)
        self.assertEqual(response.avs_result_code, "Y")

    def test_amex_avs_response_z(self):
        response = self._charge_valid_amex(90.09)
        self.assertEqual(response.avs_result_code, "Z")

    # CVV Tests
    def test_amex_cvv_response_m(self):
        response = self._charge_valid_amex(97.01)
        self.assertEqual(response.cvv_result_code, "M")

    def test_amex_cvv_response_n(self):
        response = self._charge_valid_amex(97.02)
        self.assertEqual(response.cvv_result_code, "N")

    def test_amex_cvv_response_p(self):
        response = self._charge_valid_amex(97.03)
        self.assertEqual(response.cvv_result_code, "P")

    def test_amex_token_cvv_response_m(self):
        response = self._charge_valid_amex_token(97.01)
        self.assertEqual(response.cvv_result_code, "M")

    def test_amex_token_cvv_response_n(self):
        response = self._charge_valid_amex_token(97.02)
        self.assertEqual(response.cvv_result_code, "N")

    def test_amex_token_cvv_response_p(self):
        response = self._charge_valid_amex_token(97.03)
        self.assertEqual(response.cvv_result_code, "P")

    # Amex to Visa 2nd
    def test_amex_response_denied(self):
        try:
            self._charge_valid_amex(10.08)
        except HpsCreditException, e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")
Пример #10
0
class AmexTests(unittest.TestCase):
    charge_service = HpsCreditService(TestServicesConfig.valid_services_config)

    def test_amex_charge(self):
        response = self._charge_valid_amex(50)
        self.assertEqual(response.response_code, "00")

    # AVS Tests
    def test_amex_avs_response_a(self):
        response = self._charge_valid_amex(90.01)
        self.assertEqual(response.avs_result_code, "A")

    def test_amex_avs_response_n(self):
        response = self._charge_valid_amex(90.02)
        self.assertEqual(response.avs_result_code, "N")

    def test_amex_avs_response_r(self):
        response = self._charge_valid_amex(90.03)
        self.assertEqual(response.avs_result_code, "R")

    def test_amex_avs_response_s(self):
        response = self._charge_valid_amex(90.04)
        self.assertEqual(response.avs_result_code, "S")

    def test_amex_avs_response_u(self):
        response = self._charge_valid_amex(90.05)
        self.assertEqual(response.avs_result_code, "U")

    def test_amex_avs_response_w(self):
        response = self._charge_valid_amex(90.06)
        self.assertEqual(response.avs_result_code, "W")

    def test_amex_avs_response_x(self):
        response = self._charge_valid_amex(90.07)
        self.assertEqual(response.avs_result_code, "X")

    def test_amex_avs_response_y(self):
        response = self._charge_valid_amex(90.08)
        self.assertEqual(response.avs_result_code, "Y")

    def test_amex_avs_response_z(self):
        response = self._charge_valid_amex(90.09)
        self.assertEqual(response.avs_result_code, "Z")

    # CVV Tests
    def test_amex_cvv_response_m(self):
        response = self._charge_valid_amex(97.01)
        self.assertEqual(response.cvv_result_code, "M")

    def test_amex_cvv_response_n(self):
        response = self._charge_valid_amex(97.02)
        self.assertEqual(response.cvv_result_code, "N")

    def test_amex_cvv_response_p(self):
        response = self._charge_valid_amex(97.03)
        self.assertEqual(response.cvv_result_code, "P")

    def test_amex_token_cvv_response_m(self):
        response = self._charge_valid_amex_token(97.01)
        self.assertEqual(response.cvv_result_code, "M")

    def test_amex_token_cvv_response_n(self):
        response = self._charge_valid_amex_token(97.02)
        self.assertEqual(response.cvv_result_code, "N")

    def test_amex_token_cvv_response_p(self):
        response = self._charge_valid_amex_token(97.03)
        self.assertEqual(response.cvv_result_code, "P")

    # Amex to Visa 2nd
    def test_amex_response_denied(self):
        try:
            self._charge_valid_amex(10.08)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_card_expired(self):
        try:
            self._charge_valid_amex(10.32)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.expired_card, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_please_call(self):
        try:
            self._charge_valid_amex(10.34)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_invalid_merchant(self):
        try:
            self._charge_valid_amex(10.22)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_invalid_amount(self):
        try:
            self._charge_valid_amex(10.27)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.invalid_amount, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_no_action_taken(self):
        try:
            self._charge_valid_amex(10.14)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_number, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_invalid_cvv2(self):
        try:
            self._charge_valid_amex(10.23)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_cvc, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_message_format_error(self):
        try:
            self._charge_valid_amex(10.06)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_invalid_originator(self):
        try:
            self._charge_valid_amex(10.30)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_card_declined(self):
        try:
            self._charge_valid_amex(10.25)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_account_cancelled(self):
        try:
            self._charge_valid_amex(10.13)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_merchant_close(self):
        try:
            self._charge_valid_amex(10.12)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_amex_response_pickup_card(self):
        try:
            self._charge_valid_amex(10.04)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    # Verify, Authorize & Capture
    def test_amex_verify(self):
        response = self.charge_service.verify(TestCreditCard.valid_amex,
                                              TestCardHolder.valid_card_holder)
        self.assertEqual("00", response.response_code)

    def test_amex_authorize(self):
        response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_amex,
            TestCardHolder.valid_card_holder)
        self.assertEqual("00", response.response_code)

    def test_amex_token_authorize(self):
        response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_amex,
            TestCardHolder.valid_card_holder, True)
        self.assertEqual('0', response.token_data.token_rsp_code)
        self.assertEqual("00", response.response_code)

    def test_amex_capture(self):
        # Authorize the card.
        auth_response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_amex,
            TestCardHolder.valid_card_holder)
        self.assertEqual("00", auth_response.response_code)

        # Capture the authorization.
        capture_response = self.charge_service.capture(
            auth_response.transaction_id)
        self.assertEqual("00", capture_response.response_code)

    # Helper Method
    def _charge_valid_amex(self, amt):
        response = self.charge_service.charge(amt, "usd",
                                              TestCreditCard.valid_amex,
                                              TestCardHolder.valid_card_holder)
        if response is None:
            self.fail("Response is null.")

        return response

    def _charge_valid_amex_token(self, amt):
        token_service = HpsTokenService(
            TestServicesConfig.valid_services_config.credential_token)
        token_response = token_service.get_token(TestCreditCard.valid_amex)

        response = self.charge_service.charge(amt, 'usd',
                                              token_response.token_value,
                                              TestCardHolder.valid_card_holder)
        if response is None:
            self.fail('Response is null.')

        return response
Пример #11
0
class VisaTests(unittest.TestCase):
    charge_service = HpsCreditService(TestServicesConfig.valid_services_config)

    def test_visa_should_charge(self):
        response = self._charge_valid_visa(50)
        self.assertEqual("00", response.response_code)

    def test_visa_with_details(self):
        details = HpsTransactionDetails()
        details.memo = 'memo'
        details.invoice_number = '1234'
        details.customer_id = 'customerID'

        charge = self.charge_service.charge(50, 'usd',
                                            TestCreditCard.valid_visa,
                                            TestCardHolder.valid_card_holder,
                                            False, 'descriptor', False,
                                            details)

        self.assertIsNotNone(charge)

        transaction = self.charge_service.get(charge.transaction_id)
        self.assertIsNotNone(transaction)
        self.assertEqual(transaction.memo, 'memo')
        self.assertEqual(transaction.invoice_number, '1234')
        self.assertEqual(transaction.customer_id, 'customerID')

    # AVS Tests
    def test_visa_avs_response_b(self):
        response = self._charge_valid_visa(91.01)
        self.assertEqual("B", response.avs_result_code)

    def test_visa_avs_response_c(self):
        response = self._charge_valid_visa(91.02)
        self.assertEqual("C", response.avs_result_code)

    def test_visa_avs_response_d(self):
        response = self._charge_valid_visa(91.03)
        self.assertEqual("D", response.avs_result_code)

    def test_visa_avs_response_i(self):
        response = self._charge_valid_visa(91.05)
        self.assertEqual("I", response.avs_result_code)

    def test_visa_avs_response_m(self):
        response = self._charge_valid_visa(91.06)
        self.assertEqual("M", response.avs_result_code)

    def test_visa_avs_response_p(self):
        response = self._charge_valid_visa(91.07)
        self.assertEqual("P", response.avs_result_code)

    # CVV Tests
    def test_visa_cvv_response_m(self):
        response = self._charge_valid_visa(96.01)
        self.assertEqual("M", response.cvv_result_code)

    def test_visa_cvv_response_n(self):
        response = self._charge_valid_visa(96.02)
        self.assertEqual("N", response.cvv_result_code)

    def test_visa_cvv_response_p(self):
        response = self._charge_valid_visa(96.03)
        self.assertEqual("P", response.cvv_result_code)

    def test_visa_cvv_response_s(self):
        response = self._charge_valid_visa(96.04)
        self.assertEqual("S", response.cvv_result_code)

    def test_visa_cvv_response_u(self):
        response = self._charge_valid_visa(96.05)
        self.assertEqual("U", response.cvv_result_code)

    # Visa to Visa 2nd
    # def test_visa_response_1033(self):
    #     try:
    #         self._charge_valid_visa(10.33)
    #     except HpsCreditException, e:
    #         self.assertEqual(HpsExceptionCodes.card_declined, e.code)
    #         return
    #
    #     self.fail("No exception was thrown.")

    def test_visa_response_refer_card_issuer(self):
        try:
            self._charge_valid_visa(10.34)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_invalid_merchant(self):
        try:
            self._charge_valid_visa(10.22)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_pickup_card(self):
        try:
            self._charge_valid_visa(10.04)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_do_not_honor(self):
        try:
            self._charge_valid_visa(10.25)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_invalid_transaction(self):
        try:
            self._charge_valid_visa(10.26)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_invalid_amount(self):
        try:
            self._charge_valid_visa(10.27)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.invalid_amount, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_invalid_card(self):
        try:
            self._charge_valid_visa(10.28)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_number, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_invalid_issuer(self):
        try:
            self._charge_valid_visa(10.18)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_system_error_reenter(self):
        try:
            self._charge_valid_visa(10.29)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_lost_card(self):
        try:
            self._charge_valid_visa(10.31)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_hot_card_pickup(self):
        try:
            self._charge_valid_visa(10.03)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_insufficient_funds(self):
        try:
            self._charge_valid_visa(10.08)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_no_check_amount(self):
        try:
            self._charge_valid_visa(10.16)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_no_savings_account(self):
        try:
            self._charge_valid_visa(10.17)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_expired_card(self):
        try:
            self._charge_valid_visa(10.32)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.expired_card, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_txn_not_permitted(self):
        try:
            self._charge_valid_visa(10.30)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_invalid_aquirer(self):
        try:
            self._charge_valid_visa(10.30)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_exceeds_limit(self):
        try:
            self._charge_valid_visa(10.09)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_restricted_card(self):
        try:
            self._charge_valid_visa(10.10)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_security_violation(self):
        try:
            self._charge_valid_visa(10.11)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_check_digit_err(self):
        try:
            self._charge_valid_visa(10.05)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_cvc, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_system_error(self):
        try:
            self._charge_valid_visa(10.21)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_visa_response_cvv2_mismatch(self):
        try:
            self._charge_valid_visa(10.23)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_cvc, e.code)
            return

        self.fail("No exception was thrown.")

    # Verify, Authorize & Capture
    def test_visa_verify(self):
        response = self.charge_service.verify(TestCreditCard.valid_visa,
                                              TestCardHolder.valid_card_holder)
        self.assertEqual("85", response.response_code)

    def test_visa_edit(self):
        auth_response = self.charge_service.authorize(
            50, 'usd', TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder)
        self.assertEqual('00', auth_response.response_code)

        edit_response = self.charge_service.edit(auth_response.transaction_id,
                                                 55, 5)
        self.assertEqual('00', edit_response.response_code)

    def test_visa_authorize(self):
        response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder)
        self.assertEqual("00", response.response_code)

    def test_visa_token_authorize(self):
        response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder, True)
        self.assertEqual('0', response.token_data.token_rsp_code)
        self.assertEqual("00", response.response_code)

    def test_visa_capture(self):
        # Authorize the card.
        auth_response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder)
        self.assertEqual("00", auth_response.response_code)

        # Capture the authorization.
        capture_response = self.charge_service.capture(
            auth_response.transaction_id)
        self.assertEqual("00", capture_response.response_code)

    # test CPC stuff
    def test_visa_charge_cpc_req_should_return_business(self):
        """
        Visa charge and CPC Req should return cpcIndicator 'B'.
        """
        charge_response = self.charge_service.charge(
            112.34,
            'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder,
            cpc_req=True)
        self.assertEqual('00', charge_response.response_code)
        self.assertEqual('B', charge_response.cpc_indicator)

        cpc_data = HpsCPCData()
        cpc_data.card_holder_po_number = '123456789'
        cpc_data.tax_type = HpsTaxType.sales_tax
        cpc_data.tax_amount = '15'

        edit_response = self.charge_service.cpc_edit(
            charge_response.transaction_id, cpc_data)
        self.assertEqual('00', edit_response.response_code)

    def test_visa_charge_cpc_req_should_return_corporate(self):
        """
        Visa charge and CPC Req should return cpcIndicator 'R'.
        """
        charge_response = self.charge_service.charge(
            123.45,
            'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder,
            cpc_req=True)
        self.assertEqual('00', charge_response.response_code)
        self.assertEqual('R', charge_response.cpc_indicator)

        cpc_data = HpsCPCData()
        cpc_data.card_holder_po_number = '123456789'
        cpc_data.tax_type = HpsTaxType.sales_tax
        cpc_data.tax_amount = '15'

        edit_response = self.charge_service.cpc_edit(
            charge_response.transaction_id, cpc_data)
        self.assertEqual('00', edit_response.response_code)

    def test_visa_charge_cpc_req_should_return_purchasing(self):
        """
        Visa charge and CPC Req should return cpcIndicator 'S'.
        """
        charge_response = self.charge_service.charge(
            134.56,
            'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder,
            cpc_req=True)
        self.assertEqual('00', charge_response.response_code)
        self.assertEqual('S', charge_response.cpc_indicator)

        cpc_data = HpsCPCData()
        cpc_data.card_holder_po_number = '123456789'
        cpc_data.tax_type = HpsTaxType.sales_tax
        cpc_data.tax_amount = '15'

        edit_response = self.charge_service.cpc_edit(
            charge_response.transaction_id, cpc_data)
        self.assertEqual('00', edit_response.response_code)

    def test_visa_auth_cpc_req_should_return_business(self):
        """
        Visa auth and CPC Req should return cpcIndicator 'B'.
        """
        charge_response = self.charge_service.authorize(
            112.34,
            'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder,
            cpc_req=True)
        self.assertEqual('00', charge_response.response_code)
        self.assertEqual('B', charge_response.cpc_indicator)

        cpc_data = HpsCPCData()
        cpc_data.card_holder_po_number = '123456789'
        cpc_data.tax_type = HpsTaxType.sales_tax
        cpc_data.tax_amount = '15'

        edit_response = self.charge_service.cpc_edit(
            charge_response.transaction_id, cpc_data)
        self.assertEqual('00', edit_response.response_code)

    def test_visa_auth_cpc_req_should_return_corporate(self):
        """
        Visa auth and CPC Req should return cpcIndicator 'R'.
        """
        charge_response = self.charge_service.authorize(
            123.45,
            'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder,
            cpc_req=True)
        self.assertEqual('00', charge_response.response_code)
        self.assertEqual('R', charge_response.cpc_indicator)

        cpc_data = HpsCPCData()
        cpc_data.card_holder_po_number = '123456789'
        cpc_data.tax_type = HpsTaxType.sales_tax
        cpc_data.tax_amount = '15'

        edit_response = self.charge_service.cpc_edit(
            charge_response.transaction_id, cpc_data)
        self.assertEqual('00', edit_response.response_code)

    def test_visa_auth_cpc_req_should_return_purchasing(self):
        """
        Visa auth and CPC Req should return cpcIndicator 'S'.
        """
        charge_response = self.charge_service.authorize(
            134.56,
            'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder,
            cpc_req=True)
        self.assertEqual('00', charge_response.response_code)
        self.assertEqual('S', charge_response.cpc_indicator)

        cpc_data = HpsCPCData()
        cpc_data.card_holder_po_number = '123456789'
        cpc_data.tax_type = HpsTaxType.sales_tax
        cpc_data.tax_amount = '15'

        edit_response = self.charge_service.cpc_edit(
            charge_response.transaction_id, cpc_data)
        self.assertEqual('00', edit_response.response_code)

    # Helper Methods
    def _charge_valid_visa(self, amount):
        response = self.charge_service.charge(amount, "usd",
                                              TestCreditCard.valid_visa,
                                              TestCardHolder.valid_card_holder)
        if response is None:
            self.fail("Response is None")

        return response
Пример #12
0
class DiscoverTests(unittest.TestCase):
    charge_service = HpsCreditService(TestServicesConfig.valid_services_config)

    def test_discover_charge(self):
        response = self._charge_valid_discover(50)
        self.assertEqual(response.response_code, '00')

    def test_discover_avs_response_A(self):
        response = self._charge_valid_discover(91.01)
        self.assertEqual(response.avs_result_code, 'A')

    def test_discover_avs_response_N(self):
        response = self._charge_valid_discover(91.02)
        self.assertEqual(response.avs_result_code, 'N')

    def test_discover_avs_response_R(self):
        response = self._charge_valid_discover(91.03)
        self.assertEqual(response.avs_result_code, 'R')

    def test_discover_avs_response_U(self):
        response = self._charge_valid_discover(91.05)
        self.assertEqual(response.avs_result_code, 'U')

    def test_discover_avs_response_Y(self):
        response = self._charge_valid_discover(91.06)
        self.assertEqual(response.avs_result_code, 'Y')

    def test_discover_avs_response_Z(self):
        response = self._charge_valid_discover(91.07)
        self.assertEqual(response.avs_result_code, 'Z')

    def test_discover_response_refer_card_issuer(self):
        try:
            response = self._charge_valid_discover(10.34)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return
        self.fail('No exception was thrown.')

    def test_discover_response_invalid_merchant(self):
        try:
            response = self._charge_valid_discover(10.22)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_pickup_card(self):
        try:
            response = self._charge_valid_discover(10.04)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_do_not_honor(self):
        try:
            response = self._charge_valid_discover(10.25)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_invalid_transaction(self):
        try:
            response = self._charge_valid_discover(10.26)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_invalid_amount(self):
        try:
            response = self._charge_valid_discover(10.27)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.invalid_amount, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_invalid_card(self):
        try:
            response = self._charge_valid_discover(10.28)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_number, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_invalid_issuer(self):
        try:
            response = self._charge_valid_discover(10.18)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_system_error_reenter(self):
        try:
            response = self._charge_valid_discover(10.29)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_message_format_error(self):
        try:
            response = self._charge_valid_discover(10.06)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_lost_card(self):
        try:
            response = self._charge_valid_discover(10.31)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_insufficient_funds(self):
        try:
            response = self._charge_valid_discover(10.08)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_no_savings_account(self):
        try:
            response = self._charge_valid_discover(10.17)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_expired_card(self):
        try:
            response = self._charge_valid_discover(10.32)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.expired_card, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_no_card_record(self):
        try:
            response = self._charge_valid_discover(10.24)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_txn_not_permitted(self):
        try:
            response = self._charge_valid_discover(10.20)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_invalid_aquirer(self):
        try:
            response = self._charge_valid_discover(10.30)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_exceeds_limit(self):
        try:
            response = self._charge_valid_discover(10.09)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_restricted_card(self):
        try:
            response = self._charge_valid_discover(10.10)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_security_violation(self):
        try:
            response = self._charge_valid_discover(10.19)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_exceeds_freq_limits(self):
        try:
            response = self._charge_valid_discover(10.11)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_no_to_account(self):
        try:
            response = self._charge_valid_discover(10.13)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_invalid_account(self):
        try:
            response = self._charge_valid_discover(10.14)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_number, e.code)
            return

        self.fail('No exception was thrown.')

    def test_discover_response_system_error(self):
        try:
            response = self._charge_valid_discover(10.21)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail('No exception was thrown.')

    # Verify, Authorize & Capture
    def test_discover_verify(self):
        response = self.charge_service.verify(TestCreditCard.valid_discover,
                                              TestCardHolder.valid_card_holder)
        self.assertEqual('85', response.response_code)

    def test_discover_authorize(self):
        response = self.charge_service.authorize(
            50, 'usd', TestCreditCard.valid_discover,
            TestCardHolder.valid_card_holder)
        self.assertEqual('00', response.response_code)

    def test_discover_token_authorization(self):
        response = self.charge_service.authorize(
            50, 'usd', TestCreditCard.valid_discover,
            TestCardHolder.valid_card_holder, True)
        self.assertEqual('0', response.token_data.token_rsp_code)
        self.assertEqual('00', response.response_code)

    def test_discover_capture(self):
        # Authorize the card.
        authResponse = self.charge_service.authorize(
            50, 'usd', TestCreditCard.valid_discover,
            TestCardHolder.valid_card_holder)
        self.assertEqual('00', authResponse.response_code)

        # Capture the authorization.
        captureResponse = self.charge_service.capture(
            authResponse.transaction_id)
        self.assertEqual('00', captureResponse.response_code)

    def _charge_valid_discover(self, amt):
        response = self.charge_service.charge(amt, 'usd',
                                              TestCreditCard.valid_discover,
                                              TestCardHolder.valid_card_holder)
        if response is None:
            self.fail('Response is null.')
        return response
Пример #13
0
class MasterCardTests(unittest.TestCase):

    charge_service = HpsCreditService(TestServicesConfig.valid_services_config)

    def test_mastercard_charge(self):
        response = self._charge_valid_mastercard(50)
        self.assertEqual(response.response_code, "00")

    def test_visa_with_details(self):
        details = HpsTransactionDetails()
        details.memo = 'memo'
        details.invoice_number = '1234'
        details.customer_id = 'customerID'

        charge = self.charge_service.charge(50, 'usd',
                                            TestCreditCard.valid_mastercard,
                                            TestCardHolder.valid_card_holder,
                                            False, 'descriptor', False,
                                            details)

        self.assertIsNotNone(charge)

        transaction = self.charge_service.get(charge.transaction_id)
        self.assertIsNotNone(transaction)
        self.assertEquals(transaction.memo, 'memo')
        self.assertEquals(transaction.invoice_number, '1234')
        self.assertEquals(transaction.customer_id, 'customerID')

    # AVS Tests
    def test_mastercard_avs_response_A(self):
        response = self._charge_valid_mastercard(90.01)
        self.assertEqual(response.avs_result_code, "A")

    def test_mastercard_avs_response_N(self):
        response = self._charge_valid_mastercard(90.02)
        self.assertEqual(response.avs_result_code, "N")

    def test_mastercard_avs_response_R(self):
        response = self._charge_valid_mastercard(90.03)
        self.assertEqual(response.avs_result_code, "R")

    def test_mastercard_avs_response_S(self):
        response = self._charge_valid_mastercard(90.04)
        self.assertEqual(response.avs_result_code, "S")

    def test_mastercard_avs_response_U(self):
        response = self._charge_valid_mastercard(90.05)
        self.assertEqual(response.avs_result_code, "U")

    def test_mastercard_avs_response_W(self):
        response = self._charge_valid_mastercard(90.06)
        self.assertEqual(response.avs_result_code, "W")

    def test_mastercard_avs_response_X(self):
        response = self._charge_valid_mastercard(90.07)
        self.assertEqual(response.avs_result_code, "X")

    def test_mastercard_avs_response_Y(self):
        response = self._charge_valid_mastercard(90.08)
        self.assertEqual(response.avs_result_code, "Y")

    def test_mastercard_avs_response_Z(self):
        response = self._charge_valid_mastercard(90.09)
        self.assertEqual(response.avs_result_code, "Z")

    # CVV Tests
    def test_mastercard_cvv_response_M(self):
        response = self._charge_valid_mastercard(95.01)
        self.assertEqual(response.cvv_result_code, "M")

    def test_mastercard_cvv_response_N(self):
        response = self._charge_valid_mastercard(95.02)
        self.assertEqual(response.cvv_result_code, "N")

    def test_mastercard_cvv_response_P(self):
        response = self._charge_valid_mastercard(95.03)
        self.assertEqual(response.cvv_result_code, "P")

    def test_mastercard_cvv_response_U(self):
        response = self._charge_valid_mastercard(95.04)
        self.assertEqual(response.cvv_result_code, "U")

    # mastercard responses
    def test_mastercard_response_refer_card_issuer(self):
        try:
            response = self._charge_valid_mastercard(10.34)
        except HpsCreditException, e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")
class MasterCardTests(unittest.TestCase):

    charge_service = HpsCreditService(TestServicesConfig.valid_services_config)

    def test_mastercard_charge(self):
        response = self._charge_valid_mastercard(50)
        self.assertEqual(response.response_code, "00")

    def test_visa_with_details(self):
        details = HpsTransactionDetails()
        details.memo = 'memo'
        details.invoice_number = '1234'
        details.customer_id = 'customerID'

        charge = self.charge_service.charge(50, 'usd',
                                            TestCreditCard.valid_mastercard,
                                            TestCardHolder.valid_card_holder,
                                            False, 'descriptor', False,
                                            details)

        self.assertIsNotNone(charge)

        transaction = self.charge_service.get(charge.transaction_id)
        self.assertIsNotNone(transaction)
        self.assertEqual(transaction.memo, 'memo')
        self.assertEqual(transaction.invoice_number, '1234')
        self.assertEqual(transaction.customer_id, 'customerID')

    # AVS Tests
    def test_mastercard_avs_response_A(self):
        response = self._charge_valid_mastercard(90.01)
        self.assertEqual(response.avs_result_code, "A")

    def test_mastercard_avs_response_N(self):
        response = self._charge_valid_mastercard(90.02)
        self.assertEqual(response.avs_result_code, "N")

    def test_mastercard_avs_response_R(self):
        response = self._charge_valid_mastercard(90.03)
        self.assertEqual(response.avs_result_code, "R")

    def test_mastercard_avs_response_S(self):
        response = self._charge_valid_mastercard(90.04)
        self.assertEqual(response.avs_result_code, "S")

    def test_mastercard_avs_response_U(self):
        response = self._charge_valid_mastercard(90.05)
        self.assertEqual(response.avs_result_code, "U")

    def test_mastercard_avs_response_W(self):
        response = self._charge_valid_mastercard(90.06)
        self.assertEqual(response.avs_result_code, "W")

    def test_mastercard_avs_response_X(self):
        response = self._charge_valid_mastercard(90.07)
        self.assertEqual(response.avs_result_code, "X")

    def test_mastercard_avs_response_Y(self):
        response = self._charge_valid_mastercard(90.08)
        self.assertEqual(response.avs_result_code, "Y")

    def test_mastercard_avs_response_Z(self):
        response = self._charge_valid_mastercard(90.09)
        self.assertEqual(response.avs_result_code, "Z")

    # CVV Tests
    def test_mastercard_cvv_response_M(self):
        response = self._charge_valid_mastercard(95.01)
        self.assertEqual(response.cvv_result_code, "M")

    def test_mastercard_cvv_response_N(self):
        response = self._charge_valid_mastercard(95.02)
        self.assertEqual(response.cvv_result_code, "N")

    def test_mastercard_cvv_response_P(self):
        response = self._charge_valid_mastercard(95.03)
        self.assertEqual(response.cvv_result_code, "P")

    def test_mastercard_cvv_response_U(self):
        response = self._charge_valid_mastercard(95.04)
        self.assertEqual(response.cvv_result_code, "U")

    # mastercard responses
    def test_mastercard_response_refer_card_issuer(self):
        try:
            response = self._charge_valid_mastercard(10.34)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_term_id_error(self):
        try:
            response = self._charge_valid_mastercard(10.22)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_invalid_merchant(self):
        try:
            response = self._charge_valid_mastercard(10.01)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_do_not_honor(self):
        try:
            response = self._charge_valid_mastercard(10.25)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_invalid_transaction(self):
        try:
            response = self._charge_valid_mastercard(10.26)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_invalid_amount(self):
        try:
            response = self._charge_valid_mastercard(10.27)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.invalid_amount, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_invalid_card(self):
        try:
            response = self._charge_valid_mastercard(10.28)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_number, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_invalid_issuer(self):
        try:
            response = self._charge_valid_mastercard(10.18)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_lost_card(self):
        try:
            response = self._charge_valid_mastercard(10.31)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_hold_call(self):
        try:
            response = self._charge_valid_mastercard(10.03)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_decline(self):
        try:
            response = self._charge_valid_mastercard(10.08)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_expired_card(self):
        try:
            response = self._charge_valid_mastercard(10.32)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.expired_card, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_exceeds_limit(self):
        try:
            response = self._charge_valid_mastercard(10.09)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_restricted_card(self):
        try:
            response = self._charge_valid_mastercard(10.10)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_security_violation(self):
        try:
            response = self._charge_valid_mastercard(10.19)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_exceeds_freq_limit(self):
        try:
            response = self._charge_valid_mastercard(10.11)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_card_no_error(self):
        try:
            response = self._charge_valid_mastercard(10.14)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.incorrect_number, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_invalid_account(self):
        try:
            response = self._charge_valid_mastercard(10.06)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    def test_mastercard_response_system_error(self):
        try:
            response = self._charge_valid_mastercard(10.21)
        except HpsCreditException as e:
            self.assertEqual(HpsExceptionCodes.processing_error, e.code)
            return

        self.fail("No exception was thrown.")

    # Verify, Authorize, Refund & Capture
    def test_mastercard_verify(self):
        response = self.charge_service.verify(TestCreditCard.valid_mastercard,
                                              TestCardHolder.valid_card_holder)
        self.assertEqual("85", response.response_code)

    def test_mastercard_authorize(self):
        response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_mastercard,
            TestCardHolder.valid_card_holder)
        self.assertEqual("00", response.response_code)

    def test_mastercard_token_authorize(self):
        response = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_mastercard,
            TestCardHolder.valid_card_holder, True)
        self.assertEqual('0', response.token_data.token_rsp_code)
        self.assertEqual("00", response.response_code)

    def test_mastercard_refund(self):
        chargeResponse = self.charge_service.charge(
            25, "usd", TestCreditCard.valid_mastercard,
            TestCardHolder.cert_holder_short_zip_no_street)
        refundResponse = self.charge_service.refund(
            25, "usd", chargeResponse.transaction_id)
        self.assertEqual(refundResponse.response_code, '00')

    def test_mastercard_capture(self):
        # Authorize the card.
        authResponse = self.charge_service.authorize(
            50, "usd", TestCreditCard.valid_mastercard,
            TestCardHolder.valid_card_holder)
        self.assertEqual("00", authResponse.response_code)
        # Capture the authorization.
        captureResponse = self.charge_service.capture(
            authResponse.transaction_id)
        self.assertEqual("00", captureResponse.response_code)

    def _charge_valid_mastercard(self, amt):
        response = self.charge_service.charge(amt, "usd",
                                              TestCreditCard.valid_mastercard,
                                              TestCardHolder.valid_card_holder)
        if response is None:
            self.fail("Response is null.")
        return response
class Certification(unittest.TestCase):
    client = HpsCreditService(TestServicesConfig.valid_services_config)

    # CREDIT SALE
    def test_credit_sale_visa(self):
        self.client.charge(10.00, "USD", TestCreditCard.valid_visa,
                           TestCardHolder.cert_holder_long_zip)

    def test_credit_sale_mastercard(self):
        self.client.charge(11.00, "USD", TestCreditCard.valid_mastercard,
                           TestCardHolder.cert_holder_short_zip)

    def test_credit_sale_discover(self):
        self.client.charge(12.00, "USD", TestCreditCard.valid_discover,
                           TestCardHolder.cert_holder_long_zip_no_street)

    def test_credit_sale_amex(self):
        self.client.charge(13.00, "USD", TestCreditCard.valid_amex,
                           TestCardHolder.cert_holder_short_zip_no_street)

    # CREDIT AUTH & CAPTURE
    def test_credit_auth_visa(self):
        response = self.client.authorize(15.00, "USD",
                                         TestCreditCard.valid_visa,
                                         TestCardHolder.cert_holder_long_zip)
        self.client.capture(response.transaction_id)

    def test_credit_auth_mastercard(self):
        response = self.client.authorize(16.00, "USD",
                                         TestCreditCard.valid_mastercard,
                                         TestCardHolder.cert_holder_short_zip)
        self.client.capture(response.transaction_id)

    def test_credit_auth_discover(self):
        response = self.client.authorize(
            17.00, "USD", TestCreditCard.valid_discover,
            TestCardHolder.cert_holder_long_zip_no_street)
        self.client.capture(response.transaction_id)

    def test_credit_auth_amex(self):
        response = self.client.authorize(
            18.00, "USD", TestCreditCard.valid_amex,
            TestCardHolder.cert_holder_short_zip_no_street)
        self.client.capture(response.transaction_id)

    # CREDIT ACCOUNT VERIFY
    def test_credit_account_verify_visa(self):
        self.client.verify(TestCreditCard.valid_visa_no_cvv)

    def test_credit_account_verify_mastercard(self):
        self.client.verify(TestCreditCard.valid_mastercard_no_cvv)

    def test_credit_account_verify_discover(self):
        self.client.verify(TestCreditCard.valid_discover_no_cvv)

    # CREDIT REVERSAL
    def test_credit_reversal_visa(self):
        response = self.client.authorize(60.00, "USD",
                                         TestCreditCard.valid_visa_no_cvv)
        self.client.capture(response.transaction_id)
        self.client.reverse(response.transaction_id, 60, "USD")

    def test_credit_reversal_mastercard(self):
        response = self.client.authorize(
            61.00, "USD", TestCreditCard.valid_mastercard_no_cvv)
        self.client.capture(response.transaction_id)
        self.client.reverse(response.transaction_id, 61, "USD")

    def test_credit_reversal_discover(self):
        response = self.client.authorize(62.00, "USD",
                                         TestCreditCard.valid_discover_no_cvv)
        self.client.capture(response.transaction_id)
        self.client.reverse(response.transaction_id, 62, "USD")

    def test_credit_reversal_amex(self):
        response = self.client.authorize(63.00, "USD",
                                         TestCreditCard.valid_amex_no_cvv)
        self.client.capture(response.transaction_id)
        self.client.reverse(response.transaction_id, 63, "USD")

    # CREDIT RETURN
    def test_credit_return_visa(self):
        response = self.client.charge(50.00, "USD",
                                      TestCreditCard.valid_visa_no_cvv)
        self.client.refund(50, "USD", response.transaction_id)

    def test_credit_return_mastercard(self):
        response = self.client.charge(51.00, "USD",
                                      TestCreditCard.valid_mastercard_no_cvv)
        self.client.refund(51, "USD", response.transaction_id)

    def test_credit_return_discover(self):
        response = self.client.charge(52.00, "USD",
                                      TestCreditCard.valid_discover_no_cvv)
        self.client.refund(52, "USD", response.transaction_id)

    def test_credit_return_amex(self):
        response = self.client.charge(53.00, "USD",
                                      TestCreditCard.valid_amex_no_cvv)
        self.client.refund(53, "USD", response.transaction_id)
Пример #16
0
class VisaTests(unittest.TestCase):
    charge_service = HpsCreditService(
        TestServicesConfig.valid_services_config)

    def test_visa_should_charge(self):
        response = self._charge_valid_visa(50)
        self.assertEqual("00", response.response_code)

    def test_visa_with_details(self):
        details = HpsTransactionDetails()
        details.memo = 'memo'
        details.invoice_number = '1234'
        details.customer_id = 'customerID'

        charge = self.charge_service.charge(
            50, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.valid_card_holder,
            False, 'descriptor', False,
            details)

        self.assertIsNotNone(charge)

        transaction = self.charge_service.get(charge.transaction_id)
        self.assertIsNotNone(transaction)
        self.assertEquals(transaction.memo, 'memo')
        self.assertEquals(transaction.invoice_number, '1234')
        self.assertEquals(transaction.customer_id, 'customerID')

    # AVS Tests
    def test_visa_avs_response_b(self):
        response = self._charge_valid_visa(91.01)
        self.assertEqual("B", response.avs_result_code)

    def test_visa_avs_response_c(self):
        response = self._charge_valid_visa(91.02)
        self.assertEqual("C", response.avs_result_code)

    def test_visa_avs_response_d(self):
        response = self._charge_valid_visa(91.03)
        self.assertEqual("D", response.avs_result_code)

    def test_visa_avs_response_i(self):
        response = self._charge_valid_visa(91.05)
        self.assertEqual("I", response.avs_result_code)

    def test_visa_avs_response_m(self):
        response = self._charge_valid_visa(91.06)
        self.assertEqual("M", response.avs_result_code)

    def test_visa_avs_response_p(self):
        response = self._charge_valid_visa(91.07)
        self.assertEqual("P", response.avs_result_code)

    # CVV Tests
    def test_visa_cvv_response_m(self):
        response = self._charge_valid_visa(96.01)
        self.assertEqual("M", response.cvv_result_code)

    def test_visa_cvv_response_n(self):
        response = self._charge_valid_visa(96.02)
        self.assertEqual("N", response.cvv_result_code)

    def test_visa_cvv_response_p(self):
        response = self._charge_valid_visa(96.03)
        self.assertEqual("P", response.cvv_result_code)

    def test_visa_cvv_response_s(self):
        response = self._charge_valid_visa(96.04)
        self.assertEqual("S", response.cvv_result_code)

    def test_visa_cvv_response_u(self):
        response = self._charge_valid_visa(96.05)
        self.assertEqual("U", response.cvv_result_code)

    # Visa to Visa 2nd
    # def test_visa_response_1033(self):
    #     try:
    #         self._charge_valid_visa(10.33)
    #     except HpsCreditException, e:
    #         self.assertEqual(HpsExceptionCodes.card_declined, e.code)
    #         return
    #
    #     self.fail("No exception was thrown.")

    def test_visa_response_refer_card_issuer(self):
        try:
            self._charge_valid_visa(10.34)
        except HpsCreditException, e:
            self.assertEqual(HpsExceptionCodes.card_declined, e.code)
            return

        self.fail("No exception was thrown.")
class PayPlanRecurringTests(unittest.TestCase):
    credit_service = HpsCreditService(TestServicesConfig.valid_services_config,
                                      True)
    pp_service = HpsPayPlanService(TestServicesConfig.valid_pay_plan_config,
                                   True)
    schedule = pp_service.page(1, 0).find_all_schedules({
        'scheduleStatus':
        HpsPayPlanScheduleStatus.ACTIVE,
        'scheduleIdentifier':
        'SecureSubmit'
    }).results[0]

    def test_one_time_with_card(self):
        response = self.credit_service.recurring(
            TestCreditCard.valid_visa, 10, self.schedule,
            TestCardHolder.valid_card_holder, True)
        self.assertIsNotNone(response)
        self.assertEqual('00', response.response_code)

    def test_one_time_with_token(self):
        token = self._get_token(TestCreditCard.valid_visa)
        response = self.credit_service.recurring(token, 10, self.schedule,
                                                 None, True)
        self.assertIsNotNone(response)
        self.assertEqual('00', response.response_code)

    def test_one_time_with_payment_method_key(self):
        payment_method_key = self._get_payment_method_key()
        response = self.credit_service.recurring(payment_method_key, 10,
                                                 self.schedule, None, True)
        self.assertIsNotNone(response)
        self.assertEqual('00', response.response_code)

    def test_with_card(self):
        response = self.credit_service.recurring(
            TestCreditCard.valid_visa, 10, self.schedule,
            TestCardHolder.valid_card_holder)
        self.assertIsNotNone(response)
        self.assertEqual('00', response.response_code)

    def test_with_token(self):
        token = self._get_token(TestCreditCard.valid_visa)
        response = self.credit_service.recurring(token, 10, self.schedule)
        self.assertIsNotNone(response)
        self.assertEqual('00', response.response_code)

    def test_with_payment_method_key(self):
        payment_method_key = self._get_payment_method_key()
        response = self.credit_service.recurring(payment_method_key, 10,
                                                 self.schedule)
        self.assertIsNotNone(response)
        self.assertEqual('00', response.response_code)

    def _get_token(self, card, key=None):
        if key is not None and key != '':
            self.public_key = key
        else:
            self.public_key = TestServicesConfig.valid_services_config.credential_token

        self.token_service = HpsTokenService(self.public_key)
        token_response = self.token_service.get_token(card)
        if token_response.token_value is not None:
            token = HpsTokenData()
            token.token_value = token_response.token_value
            return token
        else:
            return token_response

    def _get_payment_method_key(self):
        return self.schedule.payment_method_key
class BatchCertTests(unittest.TestCase):
    batch_service = HpsBatchService(TestServicesConfig.valid_services_config)
    charge_service = HpsCreditService(TestServicesConfig.valid_services_config)
    direct_marketing = HpsDirectMarketData('123456')

    def test_inline_certification(self):
        self.batch_should_close_ok()

        self.visa_should_verify_ok()
        self.mastercard_should_verify_ok()
        self.discover_should_verify_ok()
        self.amex_avs_should_verify_ok()

        # self.visa_balance_inquiry()

        self.visa_should_charge_ok()
        self.mastercard_should_charge_ok()
        self.discover_should_charge_ok()
        self.amex_should_charge_ok()
        self.jcb_should_charge_ok()

        self.visa_should_auth_ok()
        self.mastercard_should_auth_ok()
        self.discover_should_auth_ok()
        self.visa_should_capture_ok()
        self.mastercard_should_capture_ok()

        self.visa_partial_approval()
        self.discover_partial_approval()
        self.mastercard_partial_approval()

        self.visa_level_ii_no_tax_should_response_b()
        self.visa_level_ii_tax_should_response_b()
        self.visa_level_ii_exempt_should_response_r()
        self.visa_level_ii_should_response_s()
        self.mastercard_level_ii_no_tax_should_response_s()
        self.mastercard_level_ii_tax_no_po_should_response_s()
        self.mastercard_level_ii_tax_with_po_should_response_s()
        self.mastercard_level_ii_exempt_should_response_s()
        self.amex_level_ii_no_tax()
        self.amex_level_ii_tax_no_po()
        self.amex_level_ii_tax_with_po()
        self.amex_level_ii_exempt()

        self.mastercard_should_return_ok()
        self.visa_should_reverse_ok()
        self.mastercard_should_reverse_ok()

        self.batch_should_close_ok()

    def batch_should_close_ok(self):
        try:
            response = self.batch_service.close_batch()
            if response is None:
                self.fail("Response is None")
            print('batch id: {0}'.format(response.id))
            print('sequence number: {0}'.format(response.sequence_number))
        except HpsException as e:
            if e.code != HpsExceptionCodes.no_open_batch:
                self.fail("Something failed other than 'no open batch'.")

    """ card verify """

    def visa_should_verify_ok(self):
        response = self.charge_service.verify(TestCreditCard.valid_visa)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "85")

    def mastercard_should_verify_ok(self):
        response = self.charge_service.verify(TestCreditCard.valid_mastercard)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "85")

    def discover_should_verify_ok(self):
        response = self.charge_service.verify(TestCreditCard.valid_discover)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "85")

    def amex_avs_should_verify_ok(self):
        response = self.charge_service.verify(
            TestCreditCard.valid_amex,
            TestCardHolder.cert_holder_short_zip_no_street)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, '00')

    # def visa_balance_inquiry(self):
    #     response = self.charge_service.balance_inquiry(TestCreditCard.valid_visa)
    #     if response is None:
    #         self.fail("Response is None")
    #
    #     self.assertEqual(response.response_code, '00')

    """ sale (for multi use token) """

    def visa_should_charge_ok(self):
        response = self.charge_service.charge(
            17.01, "usd",
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_short_zip)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")

    def mastercard_should_charge_ok(self):
        response = self.charge_service.charge(
            17.02, "usd",
            TestCreditCard.valid_mastercard,
            TestCardHolder.cert_holder_short_zip_no_street)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")

    def discover_should_charge_ok(self):
        response = self.charge_service.charge(
            17.03, "usd",
            TestCreditCard.valid_discover,
            TestCardHolder.cert_holder_long_zip_no_street)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")

    def amex_should_charge_ok(self):
        response = self.charge_service.charge(
            17.04, "usd",
            TestCreditCard.valid_amex,
            TestCardHolder.cert_holder_short_zip)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")

    def jcb_should_charge_ok(self):
        response = self.charge_service.charge(
            17.05, "usd",
            TestCreditCard.valid_jcb,
            TestCardHolder.cert_holder_long_zip)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")

    """ authorization (delayed capture) """

    _visa_auth_txn_id = None
    _mc_auth_txn_id = None
    _discover_auth_txn_id = None

    def visa_should_auth_ok(self):
        response = self.charge_service.authorize(
            17.06, "usd",
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_short_zip)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")
        self._visa_auth_txn_id = response.transaction_id

    def mastercard_should_auth_ok(self):
        response = self.charge_service.authorize(
            17.07, "usd",
            TestCreditCard.valid_mastercard,
            TestCardHolder.cert_holder_short_zip_no_street)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")
        self._mc_auth_txn_id = response.transaction_id

    def discover_should_auth_ok(self):
        response = self.charge_service.authorize(
            17.08, "usd",
            TestCreditCard.valid_discover,
            TestCardHolder.cert_holder_long_zip_no_street)
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")
        self._discover_auth_txn_id = response.transaction_id

    def visa_should_capture_ok(self):
        response = self.charge_service.capture(
            self._visa_auth_txn_id,
            '17.06')
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

    def mastercard_should_capture_ok(self):
        response = self.charge_service.capture(
            self._mc_auth_txn_id,
            '17.07')
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

    """ partially - approved sale """

    def visa_partial_approval(self):
        response = self.charge_service.charge(
            130.00, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_short_zip_no_street,
            allow_partial_auth=True,
            direct_market_data=self.direct_marketing
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '10')
        self.assertEqual(response.authorized_amount, '110.00')

    def discover_partial_approval(self):
        response = self.charge_service.charge(
            145.00, 'usd',
            TestCreditCard.valid_discover,
            TestCardHolder.cert_holder_short_zip_no_street,
            allow_partial_auth=True,
            direct_market_data=self.direct_marketing
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '10')

    partial_auth_transaction_id = None
    def mastercard_partial_approval(self):
        response = self.charge_service.charge(
            155.00, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_short_zip_no_street,
            allow_partial_auth=True,
            direct_market_data=self.direct_marketing
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '10')
        self.assertEqual(response.authorized_amount, '100.00')
        self.partial_auth_transaction_id = response.transaction_id

    """ level II corporate purchase card """

    def visa_level_ii_no_tax_should_response_b(self):
        response = self.charge_service.charge(
            112.34, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.not_used)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def visa_level_ii_tax_should_response_b(self):
        response = self.charge_service.charge(
            111.34, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('', HpsTaxType.sales_tax, 1.0)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def visa_level_ii_exempt_should_response_r(self):
        response = self.charge_service.charge(
            123.45, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('', HpsTaxType.tax_exempt)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def visa_level_ii_should_response_s(self):
        response = self.charge_service.charge(
            133.56, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.sales_tax, 1.0)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def mastercard_level_ii_no_tax_should_response_s(self):
        response = self.charge_service.charge(
            111.06, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.not_used)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def mastercard_level_ii_tax_no_po_should_response_s(self):
        response = self.charge_service.charge(
            110.07, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('', HpsTaxType.sales_tax, 1.0)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def mastercard_level_ii_tax_with_po_should_response_s(self):
        response = self.charge_service.charge(
            110.08, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.sales_tax, 1.0)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def mastercard_level_ii_exempt_should_response_s(self):
        response = self.charge_service.charge(
            111.09, 'usd',
            TestCreditCard.valid_visa,
            TestCardHolder.cert_holder_long_zip,
            cpc_req=True
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.tax_exempt)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def amex_level_ii_no_tax(self):
        response = self.charge_service.charge(
            111.10, 'usd',
            TestCreditCard.valid_amex,
            TestCardHolder.cert_holder_short_zip_no_street,
            cpc_req=True
        )
        if response is None:
            self.fail('response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.not_used)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def amex_level_ii_tax_no_po(self):
        response = self.charge_service.charge(
            110.11, 'usd',
            TestCreditCard.valid_amex,
            TestCardHolder.cert_holder_short_zip_no_street,
            cpc_req=True
        )
        if response is None:
            self.fail('response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('', HpsTaxType.sales_tax, 1.0)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def amex_level_ii_tax_with_po(self):
        response = self.charge_service.charge(
            110.12, 'usd',
            TestCreditCard.valid_amex,
            TestCardHolder.cert_holder_short_zip_no_street,
            cpc_req=True
        )
        if response is None:
            self.fail('response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.sales_tax, 1.0)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    def amex_level_ii_exempt(self):
        response = self.charge_service.charge(
            111.13, 'usd',
            TestCreditCard.valid_amex,
            TestCardHolder.cert_holder_short_zip_no_street,
            cpc_req=True
        )
        if response is None:
            self.fail('response is None')

        self.assertEqual(response.response_code, '00')

        edit_response = self.charge_service.cpc_edit(
            response.transaction_id,
            HpsCPCData('9876543210', HpsTaxType.tax_exempt)
        )
        if edit_response is None:
            self.fail('Edit response is None')

    """ returns """

    def mastercard_should_return_ok(self):
        response = self.charge_service.refund(
            '15.15',
            'usd',
            TestCreditCard.valid_mastercard)
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')

    """ online void / reversal """

    def visa_should_reverse_ok(self):
        response = self.charge_service.reverse(
            TestCreditCard.valid_visa,
            17.01, "usd")
        if response is None:
            self.fail("Response is None")

        self.assertEqual(response.response_code, "00")

    def mastercard_should_reverse_ok(self):
        response = self.charge_service.reverse(
            self.partial_auth_transaction_id,
            100.00, 'usd'
        )
        if response is None:
            self.fail('Response is None')

        self.assertEqual(response.response_code, '00')