Esempio n. 1
0
def test_refund_list_information():
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 1: create payment
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    payment_id = do_payment(payments, CARD_NON3DS_CONFIRMED, amount=300)

    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 2: create postponed refund
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ids = {
        do_refund(refunds, payment_id, generateAmount(min=1, max=10))
        for _ in range(0, 3)
    }

    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 3: fetch refunds
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    # prepare request data
    currency = TERMINAL_CURRENCY
    maxCount = 50

    # perform getting refunds list information
    response = refunds.get_refunds(request_id=str(uuid.uuid4()),
                                   currency=currency,
                                   max_count=maxCount)

    # explore response result
    assert ids.issubset({p.refund_data.id for p in response.data})
def test_change_refund_status():
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 1: create payment
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    payment_id = do_payment(payments, CARD_NON3DS_CONFIRMED, amount=300)

    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 2: create postponed refund
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    refund_id = do_refund(refunds, payment_id, generateAmount(max=100))

    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 3: change refund status
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    # prepare request data
    request = RefundUpdateRequest(
        request=ApiClient.uuid_request(),
        refund_data=RequestUpdatedTransactionData(
            status_to=RequestUpdatedTransactionData.StatusTo.REVERSE))

    # perform change refund status
    response = refunds.update_refund(refund_id, request)
    assert response is not None

    # explore response result
    data = response.refund_data
    assert data is not None
    assert data.Status.VOIDED == data.status
Esempio n. 3
0
def test_create_refund():
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 1: create payment
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    payment_id = do_payment(payments, CARD_NON3DS_CONFIRMED, amount=300)

    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 2: create refund
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    # merchant order data
    merchantOrderId = randomString(20)
    merchantDescription = fake.sentence()
    amount = generateAmount(max=100)
    currency = TERMINAL_CURRENCY

    # prepare refund request data
    request = RefundRequest(request=ApiClient.uuid_request(),
                            merchant_order=RefundRequestMerchantOrder(
                                id=merchantOrderId,
                                description=merchantDescription),
                            payment_data=RefundRequestPaymentData(payment_id),
                            refund_data=RefundRequestRefundData(
                                amount=amount, currency=currency))
    logger.info(request)

    # perform create refund
    response = refunds.create_refund(request)
    assert response is not None

    data = response.refund_data
    assert data is not None
    assert data.Status.COMPLETED == data.status
Esempio n. 4
0
def create_payment_request(pan, amount=None, preauth=False):
    customer_id = randomString(15)
    return PaymentRequest(
        request=ApiClient.uuid_request(),
        merchant_order=PaymentRequestMerchantOrder(
            id=generateMerchantOrderId(), description=fake.sentence()),
        payment_method=PAYMENT_METHOD_BANKCARD,
        payment_data=PaymentRequestPaymentData(
            currency=TERMINAL_CURRENCY,
            amount=generateAmount() if not amount else amount,
            note=fake.sentence(),
            preauth=preauth),
        card_account=PaymentRequestCardAccount(card=PaymentRequestCard(
            pan=pan,
            holder=fake.name().upper(),
            expiration=formatExpirationDate(generateCardExpiration()),
            security_code="123")),
        customer=PaymentRequestCustomer(id=customer_id,
                                        full_name=fake.name(),
                                        email=generateEmail(customer_id),
                                        birth_date=formatBirthDate(
                                            fake.profile()['birthdate']),
                                        phone=generatePhoneNumber()),
        return_urls=ReturnUrls(success_url=SUCCESS_URL,
                               decline_url=DECLINE_URL,
                               cancel_url=CANCEL_URL,
                               inprocess_url=INPROCESS_URL))
def test_create_payout():
    # merchant order data
    merchantOrderId = randomString(20)
    merchantDescription = fake.sentence()
    amount = generateAmount()
    currency = TERMINAL_CURRENCY
    note = fake.sentence()

    # card data
    cardPan = CARD_NON3DS_CONFIRMED
    cardHolder = fake.name()
    cardExpiration = formatExpirationDate(generateCardExpiration())

    # prepare request data
    request = PayoutRequest(
        request=ApiClient.uuid_request(),
        merchant_order=PayoutRequestMerchantOrder(
            id=merchantOrderId, description=merchantDescription),
        payment_method=PAYMENT_METHOD_BANKCARD,
        payout_data=PayoutRequestPayoutData(currency=currency,
                                            amount=amount,
                                            note=note),
        card_account=PayoutRequestCardAccount(recipient_info=cardHolder,
                                              card=PayoutRequestCard(
                                                  pan=cardPan,
                                                  expiration=cardExpiration)))

    logger.info(request)

    # perform create payment
    response = payouts.create_payout(request)

    # explore response result
    assert response is not None
    assert response.payout_data.Status.COMPLETED == response.payout_data.status
Esempio n. 6
0
def test_create_payment_gateway_mode_with_3ds():
    # merchant order data
    merchantOrderId = randomString(20)
    merchantDescription = fake.sentence()
    amount = generateAmount()
    currency = TERMINAL_CURRENCY
    note = fake.sentence()

    # card data
    cardPan = CARD_3DS_CONFIRMED
    cardHolder = fake.name().upper()
    cardExpiration = formatExpirationDate(generateCardExpiration())
    securityCode = "100"

    # customer data
    customerId = randomString(15)
    customerFullname = fake.name()
    customerBirthdate = formatBirthDate(fake.profile()['birthdate'])
    customerEmail = generateEmail(customerId)
    customerPhoneNumber = generatePhoneNumber()

    # prepare request data
    request = PaymentRequest(
        request=ApiClient.uuid_request(),
        merchant_order=PaymentRequestMerchantOrder(
            id=merchantOrderId, description=merchantDescription),
        payment_method=PAYMENT_METHOD_BANKCARD,
        card_account=PaymentRequestCardAccount(
            card=PaymentRequestCard(pan=cardPan,
                                    holder=cardHolder,
                                    expiration=cardExpiration,
                                    security_code=securityCode)),
        payment_data=PaymentRequestPaymentData(currency=currency,
                                               amount=amount,
                                               note=note),
        customer=PaymentRequestCustomer(id=customerId,
                                        full_name=customerFullname,
                                        email=customerEmail,
                                        birth_date=customerBirthdate,
                                        phone=customerPhoneNumber),
        return_urls=ReturnUrls(success_url=SUCCESS_URL,
                               decline_url=DECLINE_URL,
                               cancel_url=CANCEL_URL,
                               inprocess_url=INPROCESS_URL))

    logger.info(request)

    # perform api call
    response = payments.create_payment(request)

    # Emulate customer behaviour performing GET request to redirect url
    do_get(response.redirect_url)

    # explore response result
    payment = fetch_payment_by_merchant_order_id(payments, merchantOrderId)
    logger.info(payment)

    data = payment.payment_data
    assert data.Status.IN_PROGRESS == data.status
def test_create_payment_gateway_mode():
    # merchant order data
    merchantOrderId = randomString(20)
    merchantDescription = fake.sentence()
    amount = generateAmount()
    currency = TERMINAL_CURRENCY
    initiator = "cit"

    # card data
    cardPan = CARD_NON3DS_CONFIRMED
    cardHolder = fake.name().upper()
    cardExpiration = formatExpirationDate(generateCardExpiration())
    securityCode = "100"

    # customer data
    customerId = randomString(15)
    customerEmail = generateEmail(customerId)

    # prepare request data
    request = RecurringCreationRequest(
        request=ApiClient.uuid_request(),
        merchant_order=PaymentRequestMerchantOrder(
            id=merchantOrderId, description=merchantDescription),
        payment_method=PAYMENT_METHOD_BANKCARD,
        card_account=PaymentRequestCardAccount(
            card=PaymentRequestCard(pan=cardPan,
                                    holder=cardHolder,
                                    expiration=cardExpiration,
                                    security_code=securityCode)),
        customer=PaymentRequestCustomer(id=customerId, email=customerEmail),
        recurring_data=RecurringRequestRecurringData(initiator=initiator,
                                                     currency=currency,
                                                     amount=amount),
        return_urls=ReturnUrls(success_url=SUCCESS_URL,
                               decline_url=DECLINE_URL,
                               cancel_url=CANCEL_URL,
                               inprocess_url=INPROCESS_URL))

    logger.info(request)

    response = recurrings.create_recurring(request)
    logger.info(response)

    # get redirect url
    redirect_url = response.redirect_url
    assert redirect_url is not None

    # Emulate customer behaviour performing GET request to redirect url
    do_get(response.redirect_url)

    # explore response result
    recurring = fetch_recurring(recurrings, merchantOrderId)
    assert recurring is not None
    logger.info(recurring)

    data = recurring.recurring_data
    assert data is not None
    assert data.Status.COMPLETED == data.status
Esempio n. 8
0
def create_recurring_plan_request():
    return RecurringPlanRequest(
        request=ApiClient.uuid_request(),
        plan_data=RecurringPlanRequestPlanData(
            currency=TERMINAL_CURRENCY,
            amount=generateAmount(10, 300),
            interval=randomBetween(1, 52),
            name=randomString(15),
            period=RecurringPlanRequestPlanData.Period.WEEK))
Esempio n. 9
0
def create_payout_request(pan):
    return PayoutRequest(
        request=ApiClient.uuid_request(),
        merchant_order=PayoutRequestMerchantOrder(id=randomString(20),
                                                  description=fake.sentence()),
        payment_method=PAYMENT_METHOD_BANKCARD,
        payout_data=PayoutRequestPayoutData(currency=TERMINAL_CURRENCY,
                                            amount=generateAmount(),
                                            note=fake.sentence()),
        card_account=PayoutRequestCardAccount(
            recipient_info=fake.name(),
            card=PayoutRequestCard(pan=pan,
                                   expiration=formatExpirationDate(
                                       generateCardExpiration()))))
Esempio n. 10
0
def do_one_click_payment(recurrings, pan):
    request = create_recurring_request(pan=pan,
                                       currency=TERMINAL_CURRENCY,
                                       amount=generateAmount(),
                                       preauth="true")
    response = recurrings.create_recurring(request)

    redirect_url = response.redirect_url
    assert redirect_url is not None

    do_get(response.redirect_url)

    recurring = fetch_recurring(recurrings, request.merchant_order.id)
    assert recurring is not None

    return recurring.recurring_data.id
Esempio n. 11
0
def test_scheduled_subscription():
    # prepare request
    request = RecurringPlanRequest(
        request=ApiClient.uuid_request(),
        plan_data=RecurringPlanRequestPlanData(
            name=randomString(15),
            currency=TERMINAL_CURRENCY,
            amount=generateAmount(10, 300),
            interval=randomBetween(1, 52),
            period=RecurringPlanRequestPlanData.Period.WEEK,
            retries=2
        )
    )

    # perform create scheduled subscription
    response = recurrings.create_plan(request)
    assert response is not None

    assert response.plan_data is not None
    return response.plan_data.id
def test_create_payment_page_mode():
    # merchant order data
    merchantOrderId = randomString(20)
    merchantDescription = fake.sentence()
    amount = generateAmount()
    currency = TERMINAL_CURRENCY
    note = fake.sentence()

    # customer data
    customerId = randomString(15)
    customerFullname = fake.name()
    customerBirthdate = formatBirthDate(fake.profile()['birthdate'])
    customerEmail = generateEmail(customerId)
    customerPhoneNumber = generatePhoneNumber()

    # prepare request data
    request = PaymentRequest(
        request=ApiClient.uuid_request(),
        merchant_order=PaymentRequestMerchantOrder(
            id=merchantOrderId, description=merchantDescription),
        payment_method=PAYMENT_METHOD_BANKCARD,
        card_account=PaymentRequestCardAccount(),
        payment_data=PaymentRequestPaymentData(currency=currency,
                                               amount=amount,
                                               note=note),
        customer=PaymentRequestCustomer(id=customerId,
                                        full_name=customerFullname,
                                        email=customerEmail,
                                        birth_date=customerBirthdate,
                                        phone=customerPhoneNumber),
        return_urls=ReturnUrls(success_url=SUCCESS_URL,
                               decline_url=DECLINE_URL,
                               cancel_url=CANCEL_URL,
                               inprocess_url=INPROCESS_URL))

    logger.info(request)

    # perform api call
    response = payments.create_payment(request)

    assert response.redirect_url is not None
def test_create_new_plan():

    # prepare recurring plan request data
    request = RecurringPlanRequest(
        request=ApiClient.uuid_request(),
        plan_data=RecurringPlanRequestPlanData(
            currency=TERMINAL_CURRENCY,
            amount=generateAmount(10, 300),
            interval=randomBetween(1, 52),
            name=randomString(15),
            period=RecurringPlanRequestPlanData.Period.WEEK,
            retries=2))

    # perform operation
    response = recurrings.create_plan(request)

    # explore response result
    assert response is not None
    assert response.plan_data is not None

    assert response.plan_data.Status.ACTIVE == response.plan_data.status
Esempio n. 14
0
def test_refund_information():
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 1: create payment
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    payment_id = do_payment(payments, CARD_NON3DS_CONFIRMED, amount=300)

    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 2: create postponed refund
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    refund_id = do_refund(refunds, payment_id, generateAmount(max=100))

    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Phase 3: get refund information
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    # perform getting refund information
    response = refunds.get_refund(refund_id)

    # explore response result
    assert response is not None
    assert refund_id == response.refund_data.id
Esempio n. 15
0
def test_create_payment_gateway_mode():
    # merchant order data
    merchantOrderId = randomString(20)
    merchantDescription = fake.sentence()
    amount = generateAmount()
    currency = TERMINAL_CURRENCY
    initiator = "cit"

    # customer data
    customerId = randomString(15)
    customerEmail = generateEmail(customerId)

    # prepare request data
    request = RecurringCreationRequest(
        request=ApiClient.uuid_request(),
        merchant_order=PaymentRequestMerchantOrder(
            id=merchantOrderId, description=merchantDescription),
        payment_method=PAYMENT_METHOD_BANKCARD,
        card_account=PaymentRequestCardAccount(),
        customer=PaymentRequestCustomer(id=customerId, email=customerEmail),
        recurring_data=RecurringRequestRecurringData(initiator=initiator,
                                                     currency=currency,
                                                     amount=amount),
        return_urls=ReturnUrls(success_url=SUCCESS_URL,
                               decline_url=DECLINE_URL,
                               cancel_url=CANCEL_URL,
                               inprocess_url=INPROCESS_URL))

    logger.info(request)

    response = recurrings.create_recurring(request)
    logger.info(response)

    # get redirect url
    redirect_url = response.redirect_url
    assert redirect_url is not None