dana-python 2.1.2__tar.gz → 2.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dana_python-2.1.2/dana_python.egg-info → dana_python-2.1.4}/PKG-INFO +1 -1
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/custom_validation.py +1 -1
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/enum.py +1 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/consult_pay_payment_info.py +3 -3
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/pay_option_detail.py +3 -3
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/pay_option_info.py +3 -3
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/snap_header.py +1 -6
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/enum.py +1 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/pay_option_info.py +3 -3
- {dana_python-2.1.2 → dana_python-2.1.4/dana_python.egg-info}/PKG-INFO +1 -1
- {dana_python-2.1.2 → dana_python-2.1.4}/pyproject.toml +1 -1
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_payment_gateway_api.py +1 -1
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_widget_with_automation.py +35 -165
- {dana_python-2.1.2 → dana_python-2.1.4}/LICENSE +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/README.md +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/api_client.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/api_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/base/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/base/configuration.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/base/model.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/base/types.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/api/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/api/disbursement_api.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/enum.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/bank_account_inquiry_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/bank_account_inquiry_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/bank_account_inquiry_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/bank_account_inquiry_response_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/dana_account_inquiry_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/dana_account_inquiry_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/dana_account_inquiry_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/money.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_bank_inquiry_status_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_bank_inquiry_status_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_bank_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_bank_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_bank_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_dana_inquiry_status_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_dana_inquiry_status_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_dana_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_dana_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_dana_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/exceptions.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/api/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/api/merchant_management_api.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/enum.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/address_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/business_docs.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_division_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_division_request_ext_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_division_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_division_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_division_response_response_body.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_division_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_shop_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_shop_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_shop_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_shop_response_response_body.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_shop_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/division_resource_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/merchant_resource_information.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/mobile_no_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/pic_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_division_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_division_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_division_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_division_response_response_body.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_division_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_merchant_resource_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_merchant_resource_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_merchant_resource_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_merchant_resource_response_response_body.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_merchant_resource_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_shop_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_shop_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_shop_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_shop_response_response_body.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_shop_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/result_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/shop_resource_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_division_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_division_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_division_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_division_response_response_body.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_division_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_shop_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_shop_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_shop_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/update_shop_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/user_name.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/api/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/api/payment_gateway_api.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/actor_context.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/amount_detail.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/audit_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/buyer.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/cancel_order_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/cancel_order_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/consult_pay_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/consult_pay_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/consult_pay_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/create_order_by_api_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/create_order_by_api_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/create_order_by_redirect_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/create_order_by_redirect_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/create_order_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/create_order_response_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/env_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/goods.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/money.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/order_api_object.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/order_redirect_object.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/pay_option_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/payment_view.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/promo_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/query_payment_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/query_payment_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/query_payment_response_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/refund_option_bill.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/refund_order_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/refund_order_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/refund_order_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/seller.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/shipping_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/status_detail.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/time_detail.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/url_param.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/virtual_account_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/rest.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/date_validation.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/models.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/open_api_configuration.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/open_api_header.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/script.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/snap_configuration.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/utils/url.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/finish_notify_payment_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/finish_notify_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/finish_notify_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/finish_notify_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/money.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/pay_option_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/shop_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/webhook/webhook.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/api/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/api/widget_api.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/custom_validation.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/__init__.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/account_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/account_unbinding_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/account_unbinding_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/account_unbinding_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/amount_detail.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_ott_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_ott_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_ott_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_ott_response_user_resources_inner.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_token_authorization_code_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_token_refresh_token_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_token_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_token_response_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/apply_token_response_additional_info_user_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/balance_inquiry_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/balance_inquiry_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/balance_inquiry_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/buyer.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/cancel_order_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/cancel_order_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/env_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/goods.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/international_order_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/international_order_info_exchange_rate.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/money.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/oauth2_url_data.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/oauth2_url_data_seamless_data.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/order.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/pay_option_detail.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/pay_option_detail_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/payment_promo_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/payment_view.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_payment_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_payment_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_payment_response_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_user_profile_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_user_profile_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_user_profile_response_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_user_profile_response_response_body.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/query_user_profile_response_response_head.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/refund_order_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/refund_order_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/refund_order_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/refund_promo_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/result_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/seller.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/service_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/shipping_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/status_detail.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/time_detail.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/url_param.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/user_resource_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/virtual_account_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/widget_payment_request.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/widget_payment_request_additional_info.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/models/widget_payment_response.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana/widget/v1/util.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana_python.egg-info/SOURCES.txt +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana_python.egg-info/dependency_links.txt +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana_python.egg-info/requires.txt +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/dana_python.egg-info/top_level.txt +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/setup.cfg +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_disbursement_api.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_merchant_management_api.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_payment_gateway_with_automation.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_snap_header.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_webhook.py +0 -0
- {dana_python-2.1.2 → dana_python-2.1.4}/tests/test_widget_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dana-python
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.4
|
|
4
4
|
Summary: API Client (SDK) for DANA APIs based on https://dashboard.dana.id/api-docs
|
|
5
5
|
Author-email: DANA Package Manager <package-manager@dana.id>
|
|
6
6
|
Maintainer-email: DANA Package Manager <package-manager@dana.id>
|
|
@@ -34,7 +34,7 @@ SANDBOX_ALLOWED_PAY_METHODS: FrozenSet[str] = frozenset({
|
|
|
34
34
|
})
|
|
35
35
|
|
|
36
36
|
SANDBOX_ALLOWED_PAY_OPTIONS: FrozenSet[str] = frozenset({
|
|
37
|
-
'CARD', 'QRIS', 'BRI', 'PANIN', 'CIMB', 'MANDIRI', 'BTPN',
|
|
37
|
+
'CARD', 'QRIS', 'BRI', 'PANIN', 'CIMB', 'MANDIRI', 'BTPN', 'BSI',
|
|
38
38
|
})
|
|
39
39
|
|
|
40
40
|
CREDIT_DEBIT_CARD_PAY_METHODS: Set[str] = {'CREDIT_CARD', 'DEBIT_CARD'}
|
|
@@ -39,6 +39,7 @@ class PayOption(str, Enum):
|
|
|
39
39
|
VIRTUAL_ACCOUNT_BCA = "VIRTUAL_ACCOUNT_BCA"
|
|
40
40
|
VIRTUAL_ACCOUNT_BNI = "VIRTUAL_ACCOUNT_BNI"
|
|
41
41
|
VIRTUAL_ACCOUNT_MANDIRI = "VIRTUAL_ACCOUNT_MANDIRI"
|
|
42
|
+
VIRTUAL_ACCOUNT_BSI_PAYMENT = "VIRTUAL_ACCOUNT_BSI_PAYMENT"
|
|
42
43
|
VIRTUAL_ACCOUNT_BRI = "VIRTUAL_ACCOUNT_BRI"
|
|
43
44
|
VIRTUAL_ACCOUNT_BTPN = "VIRTUAL_ACCOUNT_BTPN"
|
|
44
45
|
VIRTUAL_ACCOUNT_CIMB = "VIRTUAL_ACCOUNT_CIMB"
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/payment_gateway/v1/models/consult_pay_payment_info.py
RENAMED
|
@@ -48,7 +48,7 @@ class ConsultPayPaymentInfo(BaseModel, BaseSdkModel):
|
|
|
48
48
|
ConsultPayPaymentInfo
|
|
49
49
|
""" # noqa: E501
|
|
50
50
|
pay_method: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Payment method that used to payment. The enums:<br> * BALANCE - Payment method with balance<br> * COUPON - Payment method with coupon<br> * NET_BANKING - Payment method with internet banking<br> * CREDIT_CARD - Payment method with credit card<br> * DEBIT_CARD - Payment method with debit card<br> * VIRTUAL_ACCOUNT - Payment method with virtual account<br> * OTC - Payment method with OTC<br> * DIRECT_DEBIT_CREDIT_CARD - Payment method with direct debit of credit card<br> * DIRECT_DEBIT_DEBIT_CARD - Payment method with direct debit of debit card<br> * ONLINE_CREDIT - Payment method with online Credit<br> * LOAN_CREDIT - Payment method with DANA Cicil<br> * NETWORK_PAY - Payment method with e-wallet<br> * CARD - Payment method with card<br> ")
|
|
51
|
-
pay_option: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field(default=None, description="Payment option that available to used to payment, depends on the payment method. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> ")
|
|
51
|
+
pay_option: Optional[Annotated[str, Field(strict=True, max_length=128)]] = Field(default=None, description="Payment option that available to used to payment, depends on the payment method. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BSI_PAYMENT - Payment method with BSI virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> ")
|
|
52
52
|
promo_infos: Optional[List[PromoInfo]] = Field(default=None, description="Additional Information of promotion")
|
|
53
53
|
__properties: ClassVar[List[str]] = ["payMethod", "payOption", "promoInfos"]
|
|
54
54
|
|
|
@@ -67,8 +67,8 @@ class ConsultPayPaymentInfo(BaseModel, BaseSdkModel):
|
|
|
67
67
|
if not value:
|
|
68
68
|
return value
|
|
69
69
|
|
|
70
|
-
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI']):
|
|
71
|
-
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI')")
|
|
70
|
+
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI']):
|
|
71
|
+
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI')")
|
|
72
72
|
return value
|
|
73
73
|
|
|
74
74
|
model_config = ConfigDict(
|
|
@@ -49,7 +49,7 @@ class PayOptionDetail(BaseModel, BaseSdkModel):
|
|
|
49
49
|
PayOptionDetail
|
|
50
50
|
""" # noqa: E501
|
|
51
51
|
pay_method: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Payment method that used to payment. The enums:<br> * BALANCE - Payment method with balance<br> * COUPON - Payment method with coupon<br> * NET_BANKING - Payment method with internet banking<br> * CREDIT_CARD - Payment method with credit card<br> * DEBIT_CARD - Payment method with debit card<br> * VIRTUAL_ACCOUNT - Payment method with virtual account<br> * OTC - Payment method with OTC<br> * DIRECT_DEBIT_CREDIT_CARD - Payment method with direct debit of credit card<br> * DIRECT_DEBIT_DEBIT_CARD - Payment method with direct debit of debit card<br> * ONLINE_CREDIT - Payment method with online Credit<br> * LOAN_CREDIT - Payment method with DANA Cicil<br> * NETWORK_PAY - Payment method with e-wallet<br> * CARD - Payment method with card<br> ")
|
|
52
|
-
pay_option: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Payment option that available to used to payment, depends on the payment method. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> ")
|
|
52
|
+
pay_option: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Payment option that available to used to payment, depends on the payment method. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BSI_PAYMENT - Payment method with BSI virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> ")
|
|
53
53
|
trans_amount: Money = Field()
|
|
54
54
|
fee_amount: Optional[Money] = Field(default=None)
|
|
55
55
|
card_token: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, description="Token that used for payment with card")
|
|
@@ -71,8 +71,8 @@ class PayOptionDetail(BaseModel, BaseSdkModel):
|
|
|
71
71
|
"""Validates the enum"""
|
|
72
72
|
if value == "":
|
|
73
73
|
return value
|
|
74
|
-
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'NETWORK_PAY_PC_INDOMARET', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI']):
|
|
75
|
-
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'NETWORK_PAY_PC_INDOMARET', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI')")
|
|
74
|
+
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'NETWORK_PAY_PC_INDOMARET', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI']):
|
|
75
|
+
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'NETWORK_PAY_PC_INDOMARET', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI')")
|
|
76
76
|
return value
|
|
77
77
|
|
|
78
78
|
model_config = ConfigDict(
|
|
@@ -48,7 +48,7 @@ class PayOptionInfo(BaseModel, BaseSdkModel):
|
|
|
48
48
|
PayOptionInfo
|
|
49
49
|
""" # noqa: E501
|
|
50
50
|
pay_method: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Payment method name. The enums:<br> * BALANCE - Payment method with balance<br> * COUPON - Payment method with coupon<br> * NET_BANKING - Payment method with internet banking<br> * CREDIT_CARD - Payment method with credit card<br> * DEBIT_CARD - Payment method with debit card<br> * VIRTUAL_ACCOUNT - Payment method with virtual account<br> * OTC - Payment method with OTC<br> * DIRECT_DEBIT_CREDIT_CARD - Payment method with direct debit of credit card<br> * DIRECT_DEBIT_DEBIT_CARD - Payment method with direct debit of debit card<br> * ONLINE_CREDIT - Payment method with online Credit<br> * LOAN_CREDIT - Payment method with DANA Cicil<br> * NETWORK_PAY - Payment method with e-wallet * CARD - Payment method with Card ")
|
|
51
|
-
pay_option: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, description="Payment option which shows the provider of this payment. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> ")
|
|
51
|
+
pay_option: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, description="Payment option which shows the provider of this payment. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> * VIRTUAL_ACCOUNT_BSI_PAYMENT - Payment method with BSI virtual account<br> ")
|
|
52
52
|
pay_amount: Optional[Money] = Field(default=None, description="Pay amount. Contains two sub-fields:<br> 1. Value: Transaction amount, including the cents<br> 2. Currency: Currency code based on ISO<br> ")
|
|
53
53
|
trans_amount: Optional[Money] = Field(default=None, description="Trans amount. Contains two sub-fields:<br> 1. Value: Transaction amount, including the cents<br> 2. Currency: Currency code based on ISO<br> ")
|
|
54
54
|
charge_amount: Optional[Money] = Field(default=None, description="Charge amount. Contains two sub-fields:<br> 1. Value: Transaction amount, including the cents<br> 2. Currency: Currency code based on ISO<br> ")
|
|
@@ -72,8 +72,8 @@ class PayOptionInfo(BaseModel, BaseSdkModel):
|
|
|
72
72
|
if not value:
|
|
73
73
|
return value
|
|
74
74
|
|
|
75
|
-
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI']):
|
|
76
|
-
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI')")
|
|
75
|
+
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT']):
|
|
76
|
+
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT')")
|
|
77
77
|
return value
|
|
78
78
|
|
|
79
79
|
model_config = ConfigDict(
|
|
@@ -47,7 +47,7 @@ class SnapHeader:
|
|
|
47
47
|
]
|
|
48
48
|
SnapApplyTokenRuntimeHeaders: List[str] = [
|
|
49
49
|
X_TIMESTAMP, X_SIGNATURE,
|
|
50
|
-
X_CLIENT_KEY, CHANNEL_ID
|
|
50
|
+
X_CLIENT_KEY, X_PARTNER_ID, CHANNEL_ID
|
|
51
51
|
]
|
|
52
52
|
SnapApplyOTTRuntimeHeaders: List[str] = [
|
|
53
53
|
AUTHORIZATION_CUSTOMER, X_TIMESTAMP, X_SIGNATURE,
|
|
@@ -76,11 +76,6 @@ class SnapHeader:
|
|
|
76
76
|
]
|
|
77
77
|
|
|
78
78
|
if scenario == "apply_token":
|
|
79
|
-
# Remove X-PARTNER-ID as it's replaced by X-CLIENT-KEY in apply_token scenario
|
|
80
|
-
filtered_auth = [
|
|
81
|
-
auth for auth in filtered_auth
|
|
82
|
-
if auth != X_PARTNER_ID # Explicitly exclude X-PARTNER-ID
|
|
83
|
-
]
|
|
84
79
|
return list(set(filtered_auth).union(SnapHeader.SnapApplyTokenRuntimeHeaders))
|
|
85
80
|
|
|
86
81
|
elif scenario == "apply_ott" or scenario == "unbinding_account":
|
|
@@ -108,6 +108,7 @@ class PayOption(str, Enum):
|
|
|
108
108
|
VIRTUAL_ACCOUNT_CIMB = "VIRTUAL_ACCOUNT_CIMB"
|
|
109
109
|
VIRTUAL_ACCOUNT_PERMATA = "VIRTUAL_ACCOUNT_PERMATA"
|
|
110
110
|
VIRTUAL_ACCOUNT_PANI = "VIRTUAL_ACCOUNT_PANI"
|
|
111
|
+
VIRTUAL_ACCOUNT_BSI_PAYMENT = "VIRTUAL_ACCOUNT_BSI_PAYMENT"
|
|
111
112
|
|
|
112
113
|
class Type(str, Enum):
|
|
113
114
|
PAY_RETURN = "PAY_RETURN"
|
|
@@ -48,7 +48,7 @@ class PayOptionInfo(BaseModel, BaseSdkModel):
|
|
|
48
48
|
PayOptionInfo
|
|
49
49
|
""" # noqa: E501
|
|
50
50
|
pay_method: Annotated[str, Field(strict=True, max_length=64)] = Field(description="Payment method name. The enums:<br> * BALANCE - Payment method with balance<br> * COUPON - Payment method with coupon<br> * NET_BANKING - Payment method with internet banking<br> * CREDIT_CARD - Payment method with credit card<br> * DEBIT_CARD - Payment method with debit card<br> * VIRTUAL_ACCOUNT - Payment method with virtual account<br> * OTC - Payment method with OTC<br> * DIRECT_DEBIT_CREDIT_CARD - Payment method with direct debit of credit card<br> * DIRECT_DEBIT_DEBIT_CARD - Payment method with direct debit of debit card<br> * ONLINE_CREDIT - Payment method with online Credit<br> * LOAN_CREDIT - Payment method with DANA Cicil<br> * NETWORK_PAY - Payment method with e-wallet * CARD - Payment method with Card ")
|
|
51
|
-
pay_option: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, description="Payment option which shows the provider of this payment. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> ")
|
|
51
|
+
pay_option: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, description="Payment option which shows the provider of this payment. The enums:<br> * NETWORK_PAY_PG_SPAY - Payment method with ShopeePay e-wallet<br> * NETWORK_PAY_PG_OVO - Payment method with OVO e-wallet<br> * NETWORK_PAY_PG_GOPAY - Payment method with GoPay e-wallet<br> * NETWORK_PAY_PG_LINKAJA - Payment method with LinkAja e-wallet<br> * NETWORK_PAY_PG_CARD - Payment method with Card<br> * NETWORK_PAY_PC_INDOMARET - Payment method with Indomaret<br> * NETWORK_PAY_PG_QRIS - Payment method with QRIS<br> * NETWORK_PAY_PL_INDODANA - Payment method with Paylater Indodana<br> * VIRTUAL_ACCOUNT_BCA - Payment method with BCA virtual account<br> * VIRTUAL_ACCOUNT_BNI - Payment method with BNI virtual account<br> * VIRTUAL_ACCOUNT_MANDIRI - Payment method with Mandiri virtual account<br> * VIRTUAL_ACCOUNT_BRI - Payment method with BRI virtual account<br> * VIRTUAL_ACCOUNT_BTPN - Payment method with BTPN virtual account<br> * VIRTUAL_ACCOUNT_CIMB - Payment method with CIMB virtual account<br> * VIRTUAL_ACCOUNT_PERMATA - Payment method with Permata virtual account<br> * VIRTUAL_ACCOUNT_PANI - Payment method with Panin virtual account<br> * VIRTUAL_ACCOUNT_BSI_PAYMENT - Payment method with BSI virtual account<br> ")
|
|
52
52
|
pay_amount: Optional[Money] = Field(default=None, description="Pay amount. Contains two sub-fields:<br> 1. Value: Transaction amount, including the cents<br> 2. Currency: Currency code based on ISO<br> ")
|
|
53
53
|
trans_amount: Optional[Money] = Field(default=None, description="Trans amount. Contains two sub-fields:<br> 1. Value: Transaction amount, including the cents<br> 2. Currency: Currency code based on ISO<br> ")
|
|
54
54
|
charge_amount: Optional[Money] = Field(default=None, description="Charge amount. Contains two sub-fields:<br> 1. Value: Transaction amount, including the cents<br> 2. Currency: Currency code based on ISO<br> ")
|
|
@@ -70,8 +70,8 @@ class PayOptionInfo(BaseModel, BaseSdkModel):
|
|
|
70
70
|
if value is None:
|
|
71
71
|
return value
|
|
72
72
|
|
|
73
|
-
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI']):
|
|
74
|
-
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI')")
|
|
73
|
+
if value not in set(['NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT']):
|
|
74
|
+
raise ValueError("must be one of enum values ('NETWORK_PAY_PG_SPAY', 'NETWORK_PAY_PG_OVO', 'NETWORK_PAY_PG_GOPAY', 'NETWORK_PAY_PG_LINKAJA', 'NETWORK_PAY_PG_CARD', 'NETWORK_PAY_PC_INDOMARET', 'NETWORK_PAY_PG_QRIS', 'NETWORK_PAY_PL_INDODANA', 'VIRTUAL_ACCOUNT_BCA', 'VIRTUAL_ACCOUNT_BNI', 'VIRTUAL_ACCOUNT_MANDIRI', 'VIRTUAL_ACCOUNT_BRI', 'VIRTUAL_ACCOUNT_BTPN', 'VIRTUAL_ACCOUNT_CIMB', 'VIRTUAL_ACCOUNT_PERMATA', 'VIRTUAL_ACCOUNT_PANI', 'VIRTUAL_ACCOUNT_BSI_PAYMENT')")
|
|
75
75
|
return value
|
|
76
76
|
|
|
77
77
|
model_config = ConfigDict(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dana-python
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.4
|
|
4
4
|
Summary: API Client (SDK) for DANA APIs based on https://dashboard.dana.id/api-docs
|
|
5
5
|
Author-email: DANA Package Manager <package-manager@dana.id>
|
|
6
6
|
Maintainer-email: DANA Package Manager <package-manager@dana.id>
|
|
@@ -463,7 +463,7 @@ class TestPaymentGatewaySandboxPayMethodPayOptionValidation:
|
|
|
463
463
|
pytest.skip("Sandbox payMethod/payOption validation only runs in sandbox")
|
|
464
464
|
|
|
465
465
|
request = PaymentGatewayFixtures.get_create_order_by_api_request()
|
|
466
|
-
# OVO is not in allowed list (CARD, QRIS, BRI, PANIN, CIMB, MANDIRI, BTPN)
|
|
466
|
+
# OVO is not in allowed list (CARD, QRIS, BRI, PANIN, CIMB, MANDIRI, BTPN, BSI)
|
|
467
467
|
request.pay_option_details = [
|
|
468
468
|
PayOptionDetail(
|
|
469
469
|
pay_method=PayMethod.NETWORK_PAY,
|
|
@@ -65,7 +65,7 @@ class TestWidgetWithAutomation:
|
|
|
65
65
|
redirect_url='https://google.com',
|
|
66
66
|
merchant_id=merchant_id,
|
|
67
67
|
seamless_data={
|
|
68
|
-
'mobileNumber': '
|
|
68
|
+
'mobileNumber': '083811223355'
|
|
69
69
|
},
|
|
70
70
|
external_id=str(uuid.uuid4())
|
|
71
71
|
)
|
|
@@ -101,8 +101,8 @@ class TestWidgetWithAutomation:
|
|
|
101
101
|
print('Starting OAuth automation process...')
|
|
102
102
|
generated_auth_code = get_auth_code(
|
|
103
103
|
oauth_url=oauth_url,
|
|
104
|
-
phone_number='
|
|
105
|
-
pin=
|
|
104
|
+
phone_number='083811223355', # Optional: override phone number if needed
|
|
105
|
+
pin='181818'
|
|
106
106
|
)
|
|
107
107
|
|
|
108
108
|
if generated_auth_code:
|
|
@@ -208,21 +208,38 @@ class TestWidgetWithAutomation:
|
|
|
208
208
|
except Exception as e:
|
|
209
209
|
pytest.fail(f'Error during WidgetPayment execution: {e}')
|
|
210
210
|
|
|
211
|
-
# Construct full payment URL with OTT
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
211
|
+
# Construct full payment URL with OTT and automate payment.
|
|
212
|
+
# OTTs are short-lived, so we re-apply OTT on each attempt to avoid
|
|
213
|
+
# "OTT not valid" errors caused by the time taken by prior test steps.
|
|
214
|
+
from tests.web_automation import automate_payment_widget
|
|
215
|
+
max_payment_retries = 3
|
|
216
|
+
payment_success = False
|
|
217
|
+
for payment_attempt in range(1, max_payment_retries + 1):
|
|
218
|
+
try:
|
|
219
|
+
print(f'Applying fresh OTT for payment attempt {payment_attempt}...')
|
|
220
|
+
fresh_ott_response = api_instance_widget.apply_ott(apply_ott_request)
|
|
221
|
+
assert fresh_ott_response.response_code == '2004900', \
|
|
222
|
+
f'OTT failed: {fresh_ott_response.response_code}'
|
|
223
|
+
self.__class__.ott = fresh_ott_response.user_resources[0].value
|
|
217
224
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
225
|
+
payment_url = Util.generate_complete_payment_url(
|
|
226
|
+
widget_payment_response=payment_response,
|
|
227
|
+
apply_ott_response=fresh_ott_response
|
|
228
|
+
)
|
|
229
|
+
print(f"Payment URL (attempt {payment_attempt}): {payment_url}")
|
|
230
|
+
|
|
231
|
+
print("Running payment automation script...")
|
|
232
|
+
success = automate_payment_widget(payment_url)
|
|
233
|
+
if success:
|
|
234
|
+
payment_success = True
|
|
235
|
+
break
|
|
236
|
+
print(f"Payment automation returned False on attempt {payment_attempt}")
|
|
237
|
+
except Exception as e:
|
|
238
|
+
print(f"Payment attempt {payment_attempt} error: {e}")
|
|
239
|
+
if payment_attempt < max_payment_retries:
|
|
240
|
+
print(f"Retrying payment in 3 seconds...")
|
|
241
|
+
time.sleep(3)
|
|
242
|
+
assert payment_success, f"Payment automation failed after {max_payment_retries} attempts"
|
|
226
243
|
|
|
227
244
|
time.sleep(5)
|
|
228
245
|
|
|
@@ -255,154 +272,7 @@ class TestWidgetWithAutomation:
|
|
|
255
272
|
# Query User Profile
|
|
256
273
|
print("Querying user profile...")
|
|
257
274
|
query_user_profile_req = query_user_profile_request(self.__class__.binding_access_token)
|
|
258
|
-
|
|
259
|
-
print("=== QueryUserProfile Request Debug ===")
|
|
260
|
-
print(f"Request object: {query_user_profile_req}")
|
|
261
|
-
print(f"User Resources: {query_user_profile_req.user_resources}")
|
|
262
|
-
print(f"Access Token: {query_user_profile_req.access_token}")
|
|
263
|
-
print("=== End Request Debug ===")
|
|
264
|
-
|
|
265
|
-
# Add comprehensive HTTP request debugging
|
|
266
|
-
import urllib3
|
|
267
|
-
import json as json_module
|
|
268
|
-
|
|
269
|
-
# Monkey patch urllib3 to log requests and responses
|
|
270
|
-
original_urlopen = urllib3.poolmanager.PoolManager.urlopen
|
|
271
|
-
|
|
272
|
-
def debug_urlopen(self, method, url, *args, **kwargs):
|
|
273
|
-
print("\n" + "="*60)
|
|
274
|
-
print("=== PYTHON HTTP REQUEST DEBUG ===")
|
|
275
|
-
print("="*60)
|
|
276
|
-
print(f"Method: {method}")
|
|
277
|
-
print(f"URL: {url}")
|
|
278
|
-
|
|
279
|
-
# Log all headers
|
|
280
|
-
headers = kwargs.get('headers', {})
|
|
281
|
-
if headers:
|
|
282
|
-
print("HTTP Headers:")
|
|
283
|
-
for key, value in headers.items():
|
|
284
|
-
print(f" {key}: {value}")
|
|
285
|
-
|
|
286
|
-
# Log request body with detailed analysis
|
|
287
|
-
body = kwargs.get('body')
|
|
288
|
-
if body:
|
|
289
|
-
print("\nRequest Body Analysis:")
|
|
290
|
-
print(f" Body type: {type(body)}")
|
|
291
|
-
print(f" Body length: {len(body) if body else 0}")
|
|
292
|
-
|
|
293
|
-
try:
|
|
294
|
-
# Handle different body types
|
|
295
|
-
if isinstance(body, bytes):
|
|
296
|
-
body_str = body.decode('utf-8')
|
|
297
|
-
elif isinstance(body, str):
|
|
298
|
-
body_str = body
|
|
299
|
-
else:
|
|
300
|
-
body_str = str(body)
|
|
301
|
-
|
|
302
|
-
print(f" Body (literal): {repr(body_str)}")
|
|
303
|
-
|
|
304
|
-
# Try to parse and pretty print JSON
|
|
305
|
-
try:
|
|
306
|
-
parsed_json = json_module.loads(body_str)
|
|
307
|
-
print(" Body (parsed JSON):")
|
|
308
|
-
print(json_module.dumps(parsed_json, indent=4))
|
|
309
|
-
|
|
310
|
-
# Analyze DANA request structure
|
|
311
|
-
if isinstance(parsed_json, dict):
|
|
312
|
-
if 'request' in parsed_json:
|
|
313
|
-
print(" ✅ Contains 'request' wrapper")
|
|
314
|
-
request_part = parsed_json['request']
|
|
315
|
-
if 'head' in request_part:
|
|
316
|
-
head = request_part['head']
|
|
317
|
-
print(f" ✅ Head section with {len(head)} fields:")
|
|
318
|
-
for k, v in head.items():
|
|
319
|
-
if k == 'accessToken':
|
|
320
|
-
print(f" ✅ {k}: {v}")
|
|
321
|
-
else:
|
|
322
|
-
print(f" - {k}: {v}")
|
|
323
|
-
if 'body' in request_part:
|
|
324
|
-
body_part = request_part['body']
|
|
325
|
-
print(f" ✅ Body section: {body_part}")
|
|
326
|
-
if 'signature' in parsed_json:
|
|
327
|
-
sig = parsed_json['signature']
|
|
328
|
-
print(f" ✅ Signature: {sig[:50]}...")
|
|
329
|
-
else:
|
|
330
|
-
print(" ❌ Missing signature!")
|
|
331
|
-
else:
|
|
332
|
-
print(f" ❌ Unexpected structure: {list(parsed_json.keys())}")
|
|
333
|
-
|
|
334
|
-
except json_module.JSONDecodeError as e:
|
|
335
|
-
print(f" ❌ Failed to parse JSON: {e}")
|
|
336
|
-
except Exception as e:
|
|
337
|
-
print(f" ❌ Failed to process body: {e}")
|
|
338
|
-
else:
|
|
339
|
-
print(" No request body")
|
|
340
|
-
|
|
341
|
-
print("="*60)
|
|
342
|
-
|
|
343
|
-
# Make the actual request
|
|
344
|
-
response = original_urlopen(self, method, url, *args, **kwargs)
|
|
345
|
-
|
|
346
|
-
# Log response details
|
|
347
|
-
print("=== PYTHON HTTP RESPONSE DEBUG ===")
|
|
348
|
-
print("="*60)
|
|
349
|
-
print(f"Status: {response.status}")
|
|
350
|
-
print(f"Status reason: {getattr(response, 'reason', 'N/A')}")
|
|
351
|
-
|
|
352
|
-
print("Response Headers:")
|
|
353
|
-
for key, value in response.headers.items():
|
|
354
|
-
print(f" {key}: {value}")
|
|
355
|
-
|
|
356
|
-
# Read response body without consuming it for the client
|
|
357
|
-
print("\nResponse Body Analysis:")
|
|
358
|
-
try:
|
|
359
|
-
# Get response data
|
|
360
|
-
response_data = response.data
|
|
361
|
-
if isinstance(response_data, bytes):
|
|
362
|
-
response_text = response_data.decode('utf-8')
|
|
363
|
-
else:
|
|
364
|
-
response_text = str(response_data)
|
|
365
|
-
|
|
366
|
-
print(f"Response body type: {type(response_data)}")
|
|
367
|
-
print(f"Response body length: {len(response_text)}")
|
|
368
|
-
print(f"Response body (literal): {repr(response_text)}")
|
|
369
|
-
|
|
370
|
-
# Parse and analyze JSON response
|
|
371
|
-
try:
|
|
372
|
-
parsed_response = json_module.loads(response_text)
|
|
373
|
-
print("Response body (parsed JSON):")
|
|
374
|
-
print(json_module.dumps(parsed_response, indent=4))
|
|
375
|
-
|
|
376
|
-
# Analyze DANA response structure
|
|
377
|
-
if 'response' in parsed_response:
|
|
378
|
-
resp = parsed_response['response']
|
|
379
|
-
if 'body' in resp and 'resultInfo' in resp['body']:
|
|
380
|
-
result = resp['body']['resultInfo']
|
|
381
|
-
print(f"\n📊 API Result: {result.get('resultStatus', 'N/A')} - {result.get('resultCode', 'N/A')}")
|
|
382
|
-
if result.get('resultMsg'):
|
|
383
|
-
print(f"📋 Message: {result['resultMsg']}")
|
|
384
|
-
|
|
385
|
-
except json_module.JSONDecodeError:
|
|
386
|
-
print("❌ Response is not valid JSON")
|
|
387
|
-
|
|
388
|
-
except Exception as e:
|
|
389
|
-
print(f"❌ Could not read response body: {e}")
|
|
390
|
-
print(f"Response object type: {type(response)}")
|
|
391
|
-
print(f"Response attributes: {[attr for attr in dir(response) if not attr.startswith('_')]}")
|
|
392
|
-
|
|
393
|
-
print("="*60)
|
|
394
|
-
print()
|
|
395
|
-
|
|
396
|
-
return response
|
|
397
|
-
|
|
398
|
-
# Apply the monkey patch
|
|
399
|
-
urllib3.poolmanager.PoolManager.urlopen = debug_urlopen
|
|
400
|
-
|
|
401
|
-
try:
|
|
402
|
-
query_user_profile_response = api_instance_widget.query_user_profile(query_user_profile_req)
|
|
403
|
-
finally:
|
|
404
|
-
# Restore original method
|
|
405
|
-
urllib3.poolmanager.PoolManager.urlopen = original_urlopen
|
|
275
|
+
query_user_profile_response = api_instance_widget.query_user_profile(query_user_profile_req)
|
|
406
276
|
|
|
407
277
|
assert query_user_profile_response is not None
|
|
408
278
|
assert query_user_profile_response.response is not None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/bank_account_inquiry_request.py
RENAMED
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/bank_account_inquiry_response.py
RENAMED
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/dana_account_inquiry_request.py
RENAMED
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/dana_account_inquiry_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_bank_request.py
RENAMED
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_bank_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_dana_request.py
RENAMED
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/disbursement/v1/models/transfer_to_dana_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/api/merchant_management_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_shop_request.py
RENAMED
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/create_shop_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/division_resource_info.py
RENAMED
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/mobile_no_info.py
RENAMED
|
File without changes
|
|
File without changes
|
{dana_python-2.1.2 → dana_python-2.1.4}/dana/merchant_management/v1/models/query_division_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|