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
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
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
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
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))
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()))))
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
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
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
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