'Construct parameters that could be returned from CyberSource
to our payment callback.
Some values can be overridden to simulate different test scenarios,
but most are fake values captured from interactions with
a CyberSource test account.
Args:
order_id (string or int): The ID of the `Order` model.
order_amount (string): The cost of the order.
paid_amount (string): The amount the user paid using CyberSource.
Keyword Args:
decision (string): Whether the payment was accepted or rejected or declined.
signature (string): If provided, use this value instead of calculating the signature.
card_numer (string): If provided, use this value instead of the default credit card number.
first_name (string): If provided, the first name of the user.
Returns:
dict'

def _signed_callback_params(self, order_id, order_amount, paid_amount, decision='ACCEPT', signature=None, card_number='xxxxxxxxxxxx1111', first_name='John'):

    signed_field_names = ['transaction_id', 'decision', 'req_access_key', 'req_profile_id', 'req_transaction_uuid', 'req_transaction_type', 'req_reference_number', 'req_amount', 'req_currency', 'req_locale', 'req_payment_method', 'req_override_custom_receipt_page', 'req_bill_to_forename', 'req_bill_to_surname', 'req_bill_to_email', 'req_bill_to_address_line1', 'req_bill_to_address_city', 'req_bill_to_address_state', 'req_bill_to_address_country', 'req_bill_to_address_postal_code', 'req_card_number', 'req_card_type', 'req_card_expiry_date', 'message', 'reason_code', 'auth_avs_code', 'auth_avs_code_raw', 'auth_response', 'auth_amount', 'auth_code', 'auth_trans_ref_no', 'auth_time', 'bill_trans_ref_no', 'signed_field_names', 'signed_date_time']
    if (decision in self.FAILED_DECISIONS):
        signed_field_names.remove('auth_amount')
    params = {'decision': decision, 'req_reference_number': str(order_id), 'req_amount': order_amount, 'auth_amount': paid_amount, 'req_card_number': card_number, 'utf8': u'\u2713', 'req_bill_to_address_country': 'US', 'auth_avs_code': 'X', 'req_card_expiry_date': '01-2018', 'bill_trans_ref_no': '85080648RYI23S6I', 'req_bill_to_address_state': 'MA', 'signed_field_names': ','.join(signed_field_names), 'req_payment_method': 'card', 'req_transaction_type': 'sale', 'auth_code': '888888', 'req_locale': 'en', 'reason_code': '100', 'req_bill_to_address_postal_code': '02139', 'req_bill_to_address_line1': '123    Fake    Street', 'req_card_type': '001', 'req_bill_to_address_city': 'Boston', 'signed_date_time': '2014-08-18T14:07:10Z', 'req_currency': 'usd', 'auth_avs_code_raw': 'I1', 'transaction_id': '4083708299660176195663', 'auth_time': '2014-08-18T140710Z', 'message': 'Request    was    processed    successfully.', 'auth_response': '100', 'req_profile_id': '0000001', 'req_transaction_uuid': 'ddd9935b82dd403f9aa4ba6ecf021b1f', 'auth_trans_ref_no': '85080648RYI23S6I', 'req_bill_to_surname': 'Doe', 'req_bill_to_forename': first_name, 'req_bill_to_email': 'john@example.com', 'req_override_custom_receipt_page': 'http://localhost:8000/shoppingcart/postpay_callback/', 'req_access_key': 'abcd12345'}
    if (decision in self.FAILED_DECISIONS):
        del params['auth_amount']
    params['signature'] = (signature if (signature is not None) else self._signature(params))
    return params
