Example #1
0
def test_create():
    transaction.create(transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    default_recipient_id = transaction_dictionary.DEFAULT_RECIPIENT
    recipient.update_recipient(default_recipient_id,
                               recipient_dictionary.UPDATE_RECIPIENT)
    _bulk_anticipation = bulk_anticipation.create(
        default_recipient_id, bulk_anticipation_dictionary.BULK_ANTICIPATION)
    assert _bulk_anticipation['id'] is not None
Example #2
0
def test_refund_transaction(retry):
    trx_boleto = transaction.create(transaction_dictionary.BOLETO_TRANSACTION)
    transaction.pay_boleto(trx_boleto['id'], transaction_dictionary.PAY_BOLETO)
    trx_credit_card = transaction.create(transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    refund_transaction = transaction.refund(trx_credit_card['id'], transaction_dictionary.REFUNDED_OR_CAPTURE_TRANSACTION)
    search_params = {'id': str(refund_transaction['id'])}
    refunded_transaction = retry(lambda: transaction.find_by(search_params))
    assert 'refunded' == refunded_transaction[0]['status']
Example #3
0
def test_find_all():
    transaction.create(transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    default_recipient_id = transaction_dictionary.DEFAULT_RECIPIENT
    recipient.update_recipient(default_recipient_id,
                               recipient_dictionary.UPDATE_RECIPIENT)
    _bulk_anticipation = bulk_anticipation.create(
        default_recipient_id, bulk_anticipation_dictionary.BULK_ANTICIPATION)
    all_bulk_anticipations = bulk_anticipation.find_all(default_recipient_id)
    assert all_bulk_anticipations[0]['id'] == _bulk_anticipation['id']
Example #4
0
def test_confirm():
    transaction.create(transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    default_recipient_id = transaction_dictionary.DEFAULT_RECIPIENT
    recipient.update_recipient(default_recipient_id,
                               recipient_dictionary.UPDATE_RECIPIENT)
    _bulk_anticipation = bulk_anticipation.create(
        default_recipient_id, bulk_anticipation_dictionary.BULK_ANTICIPATION)
    confirm_bulk_anticipation = bulk_anticipation.confirm(
        default_recipient_id, _bulk_anticipation['id'])
    assert confirm_bulk_anticipation['status'] == 'pending'
def test_refunds():
    trx = transaction.create(
        transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    transaction.refund(trx['id'],
                       transaction_dictionary.REFUNDED_OR_CAPTURE_TRANSACTION)
    refunds = refund.refunds()
    assert refunds[0]['status'] == 'refunded'
Example #6
0
def test_find_specific_payable():
    trx = transaction.create(
        transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    all_payables = transaction.payables(trx['id'])
    specific_payable = transaction.specific_payable(trx['id'],
                                                    all_payables[0]['id'])
    assert specific_payable['id'] is not None
Example #7
0
def test_create_transfer():
    boleto = transaction.create(transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE)
    transaction.pay_boleto(boleto['id'], transaction_dictionary.PAY_BOLETO)
    transfer_dictionary.TRANSFER['recipient_id'] = \
        transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE['split_rules'][0]['recipient_id']
    _transfer = transfer.create(transfer_dictionary.TRANSFER)
    assert _transfer['id'] is not None
Example #8
0
def one_click_buy(payment_item_config_slug: PagarmeItemConfig, user):
    """
    Create Transaction
    https://docs.pagar.me/reference#criar-transacao
    """
    item = get_payment_item(payment_item_config_slug)
    form_config = item.default_config
    profile = get_user_payment_profile(user)
    domain = settings.ALLOWED_HOSTS[0]
    notification_path = reverse('django_pagarme:notification',
                                kwargs={'slug': item.slug})
    postback_url = f'https://{domain}{notification_path}'
    payment_data = {
        'amount': item.price,
        'card_id': profile.card_id,
        'payment_method': 'credit_card',
        'postback_url': postback_url,
        'async': False,
        'installments': form_config.max_installments,
        'soft_descriptor': 'pythopro',
        'capture': True,
        'customer': profile.to_customer_api_dict(),
        'billing': profile.to_billing_dict(),
        'items': [item.to_dict()]
    }

    return transaction.create(payment_data)
Example #9
0
def test_find_by():
    trx = transaction.create(
        transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    time.sleep(1)
    search_params = {'id': trx['id']}
    find_trx = transaction.find_by(search_params)
    assert trx['id'] == find_trx[0]['id']
Example #10
0
def test_find_all_postbacks(retry):
    _transaction = transaction.create(transaction_dictionary.BOLETO_TRANSACTION)
    transaction.pay_boleto(_transaction['id'], transaction_dictionary.PAY_BOLETO)
    search_params = {'id': _transaction['id']}
    _transaction_paid = retry(lambda: transaction.find_by(search_params))
    _postbacks = transaction.postbacks(_transaction_paid[0]['id'])
    assert _postbacks[0]['model_id'] == str(_transaction_paid[0]['id'])
Example #11
0
def test_specific_postback(retry):
    _transaction = transaction.create(transaction_dictionary.BOLETO_TRANSACTION)
    transaction.pay_boleto(_transaction['id'], transaction_dictionary.PAY_BOLETO)
    search_params = {'id': _transaction['id']}
    transaction_paid = retry(lambda: transaction.find_by(search_params))
    postbacks = transaction.postbacks(transaction_paid[0]['id'])
    specific_postback = transaction.specific_postback(transaction_paid[0]['id'], postbacks[0]['id'])
    assert specific_postback['id'] == postbacks[0]['id']
Example #12
0
def test_postbacks_redeliver(retry):
    _transaction = transaction.create(transaction_dictionary.BOLETO_TRANSACTION)
    transaction.pay_boleto(_transaction['id'], transaction_dictionary.PAY_BOLETO)
    search_params = {'id': _transaction['id']}
    _transaction_paid = retry(lambda: transaction.find_by(search_params))
    _postbacks = transaction.postbacks(_transaction_paid[0]['id'])
    redeliver = transaction.postback_redeliver(_transaction_paid[0]['id'], _postbacks[0]['id'])
    assert redeliver['status'] == 'pending_retry'
def test_recipient_balance_operation():
    boleto = transaction.create(transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE)
    transaction.pay_boleto(boleto['id'], transaction_dictionary.PAY_BOLETO)
    transfer_dictionary.TRANSFER['recipient_id'] = \
        transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE['split_rules'][0]['recipient_id']
    _transfer = transfer.create(transfer_dictionary.TRANSFER)
    recipient_balance_operation = recipient.recipient_balance_operation(_transfer['source_id'])
    assert recipient_balance_operation[0]['movement_object']['source_id'] == _transfer['source_id']
def test_find_all():
    boleto = transaction.create(
        transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE)
    transaction.pay_boleto(boleto['id'], transaction_dictionary.PAY_BOLETO)
    transfer_dictionary.TRANSFER['recipient_id'] = \
        transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE['split_rules'][0]['recipient_id']
    transfer.create(transfer_dictionary.TRANSFER)
    balance_operations = balance_operation.find_all()
    assert balance_operations is not None
Example #15
0
def test_find_by():
    boleto = transaction.create(transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE)
    transaction.pay_boleto(boleto['id'], transaction_dictionary.PAY_BOLETO)
    transfer_dictionary.TRANSFER['recipient_id'] = \
        transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE['split_rules'][0]['recipient_id']
    _transfer = transfer.create(transfer_dictionary.TRANSFER)
    search_params = {'id': str(_transfer['id'])}
    find_transfer = transfer.find_by(search_params)
    assert _transfer['id'] == find_transfer[0]['id']
Example #16
0
def test_find_by():
    boleto = transaction.create(
        transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE)
    transaction.pay_boleto(boleto['id'], transaction_dictionary.PAY_BOLETO)
    transfer_dictionary.TRANSFER['recipient_id'] = \
        transaction_dictionary.BOLETO_TRANSACTION_SPLIT_RULE_PERCENTAGE['split_rules'][0]['recipient_id']
    transfer.create(transfer_dictionary.TRANSFER)
    find_all = balance_operation.find_all()
    search_params = {'id': find_all[0]['id']}
    find_balance_operation = balance_operation.find_by(search_params)
    assert find_balance_operation[0]['id'] == find_all[0]['id']
Example #17
0
def test_find_all_transaction_payables():
    trx = transaction.create(
        transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    all_payables = transaction.payables(trx['id'])
    assert all_payables is not None
Example #18
0
def test_error_request():
    error = transaction.create(transaction_dictionary.INVALID_REQUEST)
    assert error[0]['type'] == 'invalid_parameter'
Example #19
0
def test_find_all_transaction_operations():
    trx = transaction.create(
        transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    all_operations = transaction.operations(trx['id'])
    assert all_operations[0]['id'] is not None
Example #20
0
def test_create_transaction_with_split_rule_amount():
    trx = transaction.create(
        transaction_dictionary.
        VALID_CREDIT_CARD_TRANSACTION_WITH_SPLIT_RULE_AMOUNT)
    assert trx['split_rules'] is not None
Example #21
0
def test_create_transaction_with_split_rule_percentage():
    trx = transaction.create(
        transaction_dictionary.
        VALID_CREDIT_CARD_TRANSACTION_WITH_SPLIT_RULE_PERCENTAGE)
    assert trx['split_rules'] is not None
Example #22
0
def test_capture_transaction():
    trx = transaction.create(
        transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION_CAPTURE_FALSE)
    capture_transaction = transaction.capture(
        trx['id'], transaction_dictionary.REFUNDED_OR_CAPTURE_TRANSACTION)
    assert 'paid' == capture_transaction['status']
Example #23
0
def test_create_transaction():
    trx = transaction.create(
        transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    assert trx['id'] is not None
Example #24
0
def test_pay_boleto():
    trx = transaction.create(transaction_dictionary.BOLETO_TRANSACTION)
    pay_transaction = transaction.pay_boleto(trx['id'],
                                             transaction_dictionary.PAY_BOLETO)
    assert 'paid' == pay_transaction['status']
def test_find_by_id():
    trx = transaction.create(transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    time.sleep(3)
    found_trx = transaction.find_by_id(trx['id'])
    assert trx['id'] == found_trx['id']
Example #26
0
 def pay(self, card_index=0):
     self.client.validate_customer()
     self.client.validate_cards()
     self.validate_recipient()
     if not hasattr(self.client, 'address'):
         raise ValidationError('The user address is required')
     if not self.paid:
         billing_fields = [
             'zipcode', 'street', 'street_number', 'state', 'city',
             'neighborhood'
         ]
         address = model_to_dict(instance=self.client.address,
                                 fields=billing_fields)
         address['zipcode'] = re.sub('[^0-9]', '', address.get('zipcode'))
         default_recipient = pagarme.recipient.default_recipient()
         recipient_status = 'live' if settings.PRODUCTION else 'test'
         comission = settings.PLATFORM_COMMISSION or 0
         customer = {
             'external_id': str(self.client.uuid),
             'name': self.client.full_name,
             'email': self.client.email,
             'country': 'br',
             'type': 'individual',
             'phone_numbers': self.client.customer['phone_numbers'],
             'documents': [{
                 'type': 'cpf',
                 'number': self.client.unmasked_cpf
             }],
         }
         data = {
             'amount':
             int(self.value * 100),
             'card_id':
             self.client.cards[card_index]['id'],
             'customer':
             customer,
             'payment_method':
             'credit_card',
             'async':
             False,
             'postback_url':
             self.postback_url,
             'soft_descriptor':
             settings.PAYMENT_DESCRIPTION,
             'billing': {
                 'name': self.client.full_name,
                 'address': {
                     **address, 'country': 'br'
                 }
             },
             'items': [{
                 'id': str(self.job.uuid),
                 'title': self.job.proposal.description,
                 'unit_price': int(self.value * 100),
                 'quantity': 1,
                 'tangible': False,
                 'category': 'Services',
                 'date': self.job.start_datetime.date().isoformat()
             }],
             'metadata': {
                 'payment': str(self.uuid),
                 'job': str(self.job.uuid),
                 'professional': self.professional.user.full_name,
                 'client': self.client.full_name,
             },
             'split_rules': [
                 {
                     'recipient_id':
                     default_recipient.get(recipient_status),
                     'charge_processing_fee': True,
                     'percentage': comission,
                     'charge_remainder_fee': True,
                 },
                 {
                     'recipient_id': self.professional.recipient['id'],
                     'charge_processing_fee': False,
                     'percentage': (100 - (comission)),
                     'charge_remainder_fee': False,
                 },
             ]
         }
         self.__transaction = transaction.create(data)
         if self.__transaction.get('status', None) == 'paid':
             self.paid = True
             self.pagarme_id = self.__transaction.get('id')
             self.save(update_fields=['paid', 'pagarme_id'])
     return self.transaction
Example #27
0
def test_error_request():
    with pytest.raises(Exception) as PagarMeException:
        transaction.create(transaction_dictionary.INVALID_REQUEST)
    assert 'valor' in str(PagarMeException.value)
Example #28
0
def test_find_by(retry):
    trx = transaction.create(transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    search_params = {'id': trx['id']}
    find_trx = retry(lambda: transaction.find_by(search_params))
    assert trx['id'] == find_trx[0]['id']
Example #29
0
def test_find_by_id(retry):
    trx = transaction.create(transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)
    found_trx = retry(lambda: transaction.find_by_id(trx['id']))
    assert trx['id'] == found_trx['id']
Example #30
0
from pagarme import transaction
from tests.resources.dictionaries import transaction_dictionary

TRANSACTION = transaction.create(
    transaction_dictionary.VALID_CREDIT_CARD_TRANSACTION)

PAYABLES = transaction.payables(TRANSACTION['id'])