dana-python 1.1.1__tar.gz → 1.1.3__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.
Files changed (227) hide show
  1. {dana_python-1.1.1 → dana_python-1.1.3}/PKG-INFO +3 -2
  2. {dana_python-1.1.1 → dana_python-1.1.3}/README.md +2 -1
  3. dana_python-1.1.3/dana/disbursement/v1/enum.py +28 -0
  4. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_bank_inquiry_status_response.py +1 -1
  5. dana_python-1.1.3/dana/merchant_management/v1/enum.py +110 -0
  6. {dana_python-1.1.1/dana/disbursement → dana_python-1.1.3/dana/payment_gateway}/v1/enum.py +27 -53
  7. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/consult_pay_payment_info.py +3 -3
  8. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/create_order_by_api_request.py +28 -0
  9. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/create_order_by_redirect_request.py +28 -0
  10. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/refund_option_bill.py +3 -3
  11. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/enum.py +0 -27
  12. {dana_python-1.1.1 → dana_python-1.1.3}/dana_python.egg-info/PKG-INFO +3 -2
  13. {dana_python-1.1.1 → dana_python-1.1.3}/pyproject.toml +1 -1
  14. {dana_python-1.1.1 → dana_python-1.1.3}/tests/test_payment_gateway_api.py +34 -1
  15. {dana_python-1.1.1 → dana_python-1.1.3}/tests/test_payment_gateway_with_automation.py +12 -26
  16. dana_python-1.1.1/dana/merchant_management/v1/enum.py +0 -291
  17. dana_python-1.1.1/dana/payment_gateway/v1/enum.py +0 -107
  18. {dana_python-1.1.1 → dana_python-1.1.3}/LICENSE +0 -0
  19. {dana_python-1.1.1 → dana_python-1.1.3}/dana/__init__.py +0 -0
  20. {dana_python-1.1.1 → dana_python-1.1.3}/dana/api_client.py +0 -0
  21. {dana_python-1.1.1 → dana_python-1.1.3}/dana/api_response.py +0 -0
  22. {dana_python-1.1.1 → dana_python-1.1.3}/dana/base/__init__.py +0 -0
  23. {dana_python-1.1.1 → dana_python-1.1.3}/dana/base/configuration.py +0 -0
  24. {dana_python-1.1.1 → dana_python-1.1.3}/dana/base/model.py +0 -0
  25. {dana_python-1.1.1 → dana_python-1.1.3}/dana/base/types.py +0 -0
  26. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/__init__.py +0 -0
  27. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/__init__.py +0 -0
  28. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/api/__init__.py +0 -0
  29. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/api/disbursement_api.py +0 -0
  30. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/__init__.py +0 -0
  31. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/bank_account_inquiry_request.py +0 -0
  32. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/bank_account_inquiry_request_additional_info.py +0 -0
  33. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/bank_account_inquiry_response.py +0 -0
  34. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/bank_account_inquiry_response_additional_info.py +0 -0
  35. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/dana_account_inquiry_request.py +0 -0
  36. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/dana_account_inquiry_request_additional_info.py +0 -0
  37. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/dana_account_inquiry_response.py +0 -0
  38. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/money.py +0 -0
  39. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_bank_inquiry_status_request.py +0 -0
  40. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_bank_request.py +0 -0
  41. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_bank_request_additional_info.py +0 -0
  42. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_bank_response.py +0 -0
  43. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_dana_inquiry_status_request.py +0 -0
  44. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_dana_inquiry_status_response.py +0 -0
  45. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_dana_request.py +0 -0
  46. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_dana_request_additional_info.py +0 -0
  47. {dana_python-1.1.1 → dana_python-1.1.3}/dana/disbursement/v1/models/transfer_to_dana_response.py +0 -0
  48. {dana_python-1.1.1 → dana_python-1.1.3}/dana/exceptions.py +0 -0
  49. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/__init__.py +0 -0
  50. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/__init__.py +0 -0
  51. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/api/__init__.py +0 -0
  52. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/api/merchant_management_api.py +0 -0
  53. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/__init__.py +0 -0
  54. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/address_info.py +0 -0
  55. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/business_docs.py +0 -0
  56. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_division_request.py +0 -0
  57. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_division_request_ext_info.py +0 -0
  58. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_division_response.py +0 -0
  59. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_division_response_response.py +0 -0
  60. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_division_response_response_body.py +0 -0
  61. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_division_response_response_head.py +0 -0
  62. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_shop_request.py +0 -0
  63. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_shop_response.py +0 -0
  64. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_shop_response_response.py +0 -0
  65. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_shop_response_response_body.py +0 -0
  66. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/create_shop_response_response_head.py +0 -0
  67. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/division_resource_info.py +0 -0
  68. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/merchant_resource_information.py +0 -0
  69. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/mobile_no_info.py +0 -0
  70. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/pic_info.py +0 -0
  71. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_division_request.py +0 -0
  72. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_division_response.py +0 -0
  73. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_division_response_response.py +0 -0
  74. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_division_response_response_body.py +0 -0
  75. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_division_response_response_head.py +0 -0
  76. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_merchant_resource_request.py +0 -0
  77. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_merchant_resource_response.py +0 -0
  78. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_merchant_resource_response_response.py +0 -0
  79. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_merchant_resource_response_response_body.py +0 -0
  80. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_merchant_resource_response_response_head.py +0 -0
  81. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_shop_request.py +0 -0
  82. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_shop_response.py +0 -0
  83. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_shop_response_response.py +0 -0
  84. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_shop_response_response_body.py +0 -0
  85. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/query_shop_response_response_head.py +0 -0
  86. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/result_info.py +0 -0
  87. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/shop_resource_info.py +0 -0
  88. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_division_request.py +0 -0
  89. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_division_response.py +0 -0
  90. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_division_response_response.py +0 -0
  91. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_division_response_response_body.py +0 -0
  92. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_division_response_response_head.py +0 -0
  93. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_shop_request.py +0 -0
  94. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_shop_response.py +0 -0
  95. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_shop_response_response.py +0 -0
  96. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/update_shop_response_response_head.py +0 -0
  97. {dana_python-1.1.1 → dana_python-1.1.3}/dana/merchant_management/v1/models/user_name.py +0 -0
  98. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/__init__.py +0 -0
  99. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/__init__.py +0 -0
  100. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/api/__init__.py +0 -0
  101. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/api/payment_gateway_api.py +0 -0
  102. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/__init__.py +0 -0
  103. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/actor_context.py +0 -0
  104. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/amount_detail.py +0 -0
  105. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/audit_info.py +0 -0
  106. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/buyer.py +0 -0
  107. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/cancel_order_request.py +0 -0
  108. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/cancel_order_response.py +0 -0
  109. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/consult_pay_request.py +0 -0
  110. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/consult_pay_request_additional_info.py +0 -0
  111. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/consult_pay_response.py +0 -0
  112. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/create_order_by_api_additional_info.py +0 -0
  113. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/create_order_by_redirect_additional_info.py +0 -0
  114. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/create_order_response.py +0 -0
  115. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/create_order_response_additional_info.py +0 -0
  116. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/env_info.py +0 -0
  117. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/goods.py +0 -0
  118. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/money.py +0 -0
  119. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/order_api_object.py +0 -0
  120. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/order_redirect_object.py +0 -0
  121. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/pay_option_additional_info.py +0 -0
  122. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/pay_option_detail.py +0 -0
  123. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/pay_option_info.py +0 -0
  124. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/payment_view.py +0 -0
  125. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/promo_info.py +0 -0
  126. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/query_payment_request.py +0 -0
  127. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/query_payment_response.py +0 -0
  128. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/query_payment_response_additional_info.py +0 -0
  129. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/refund_order_request.py +0 -0
  130. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/refund_order_request_additional_info.py +0 -0
  131. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/refund_order_response.py +0 -0
  132. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/seller.py +0 -0
  133. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/shipping_info.py +0 -0
  134. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/status_detail.py +0 -0
  135. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/time_detail.py +0 -0
  136. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/url_param.py +0 -0
  137. {dana_python-1.1.1 → dana_python-1.1.3}/dana/payment_gateway/v1/models/virtual_account_info.py +0 -0
  138. {dana_python-1.1.1 → dana_python-1.1.3}/dana/rest.py +0 -0
  139. {dana_python-1.1.1 → dana_python-1.1.3}/dana/utils/models.py +0 -0
  140. {dana_python-1.1.1 → dana_python-1.1.3}/dana/utils/open_api_configuration.py +0 -0
  141. {dana_python-1.1.1 → dana_python-1.1.3}/dana/utils/open_api_header.py +0 -0
  142. {dana_python-1.1.1 → dana_python-1.1.3}/dana/utils/script.py +0 -0
  143. {dana_python-1.1.1 → dana_python-1.1.3}/dana/utils/snap_configuration.py +0 -0
  144. {dana_python-1.1.1 → dana_python-1.1.3}/dana/utils/snap_header.py +0 -0
  145. {dana_python-1.1.1 → dana_python-1.1.3}/dana/utils/url.py +0 -0
  146. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/__init__.py +0 -0
  147. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/finish_notify_payment_info.py +0 -0
  148. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/finish_notify_request.py +0 -0
  149. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/finish_notify_request_additional_info.py +0 -0
  150. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/finish_notify_response.py +0 -0
  151. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/money.py +0 -0
  152. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/pay_option_info.py +0 -0
  153. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/shop_info.py +0 -0
  154. {dana_python-1.1.1 → dana_python-1.1.3}/dana/webhook/webhook.py +0 -0
  155. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/__init__.py +0 -0
  156. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/__init__.py +0 -0
  157. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/api/__init__.py +0 -0
  158. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/api/widget_api.py +0 -0
  159. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/__init__.py +0 -0
  160. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/account_info.py +0 -0
  161. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/account_unbinding_request.py +0 -0
  162. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/account_unbinding_request_additional_info.py +0 -0
  163. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/account_unbinding_response.py +0 -0
  164. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/amount_detail.py +0 -0
  165. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_ott_request.py +0 -0
  166. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_ott_request_additional_info.py +0 -0
  167. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_ott_response.py +0 -0
  168. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_ott_response_user_resources_inner.py +0 -0
  169. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_token_authorization_code_request.py +0 -0
  170. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_token_refresh_token_request.py +0 -0
  171. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_token_response.py +0 -0
  172. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_token_response_additional_info.py +0 -0
  173. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/apply_token_response_additional_info_user_info.py +0 -0
  174. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/balance_inquiry_request.py +0 -0
  175. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/balance_inquiry_request_additional_info.py +0 -0
  176. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/balance_inquiry_response.py +0 -0
  177. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/buyer.py +0 -0
  178. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/cancel_order_request.py +0 -0
  179. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/cancel_order_response.py +0 -0
  180. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/env_info.py +0 -0
  181. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/goods.py +0 -0
  182. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/international_order_info.py +0 -0
  183. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/international_order_info_exchange_rate.py +0 -0
  184. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/money.py +0 -0
  185. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/oauth2_url_data.py +0 -0
  186. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/oauth2_url_data_seamless_data.py +0 -0
  187. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/order.py +0 -0
  188. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/pay_option_detail.py +0 -0
  189. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/pay_option_detail_additional_info.py +0 -0
  190. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/pay_option_info.py +0 -0
  191. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/payment_promo_info.py +0 -0
  192. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/payment_view.py +0 -0
  193. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_payment_request.py +0 -0
  194. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_payment_response.py +0 -0
  195. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_payment_response_additional_info.py +0 -0
  196. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_user_profile_request.py +0 -0
  197. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_user_profile_response.py +0 -0
  198. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_user_profile_response_response.py +0 -0
  199. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_user_profile_response_response_body.py +0 -0
  200. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/query_user_profile_response_response_head.py +0 -0
  201. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/refund_order_request.py +0 -0
  202. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/refund_order_request_additional_info.py +0 -0
  203. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/refund_order_response.py +0 -0
  204. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/refund_promo_info.py +0 -0
  205. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/result_info.py +0 -0
  206. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/seller.py +0 -0
  207. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/service_info.py +0 -0
  208. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/shipping_info.py +0 -0
  209. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/status_detail.py +0 -0
  210. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/time_detail.py +0 -0
  211. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/url_param.py +0 -0
  212. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/user_resource_info.py +0 -0
  213. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/virtual_account_info.py +0 -0
  214. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/widget_payment_request.py +0 -0
  215. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/widget_payment_request_additional_info.py +0 -0
  216. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/models/widget_payment_response.py +0 -0
  217. {dana_python-1.1.1 → dana_python-1.1.3}/dana/widget/v1/util.py +0 -0
  218. {dana_python-1.1.1 → dana_python-1.1.3}/dana_python.egg-info/SOURCES.txt +0 -0
  219. {dana_python-1.1.1 → dana_python-1.1.3}/dana_python.egg-info/dependency_links.txt +0 -0
  220. {dana_python-1.1.1 → dana_python-1.1.3}/dana_python.egg-info/requires.txt +0 -0
  221. {dana_python-1.1.1 → dana_python-1.1.3}/dana_python.egg-info/top_level.txt +0 -0
  222. {dana_python-1.1.1 → dana_python-1.1.3}/setup.cfg +0 -0
  223. {dana_python-1.1.1 → dana_python-1.1.3}/tests/test_disbursement_api.py +0 -0
  224. {dana_python-1.1.1 → dana_python-1.1.3}/tests/test_merchant_management_api.py +0 -0
  225. {dana_python-1.1.1 → dana_python-1.1.3}/tests/test_webhook.py +0 -0
  226. {dana_python-1.1.1 → dana_python-1.1.3}/tests/test_widget_api.py +0 -0
  227. {dana_python-1.1.1 → dana_python-1.1.3}/tests/test_widget_with_automation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dana-python
3
- Version: 1.1.1
3
+ Version: 1.1.3
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>
@@ -56,4 +56,5 @@ API | Description
56
56
  ------------- | -------------
57
57
  [**PaymentGatewayApi**](docs/payment_gateway/v1/PaymentGatewayApi.md) | API for doing operations in DANA Payment Gateway (Gapura)
58
58
  [**WidgetApi**](docs/widget/v1/WidgetApi.md) | API for enabling the user to make payment from merchant’s platform with redirecting to DANA’s platform
59
-
59
+ [**DisbursementApi**](docs/disbursement/v1/DisbursementApi.md) | API for doing operations in DANA Disbursement
60
+ [**MerchantManagementApi**](docs/merchant_management/v1/MerchantManagementApi.md) | API for doing operations in DANA Merchant Management
@@ -31,4 +31,5 @@ API | Description
31
31
  ------------- | -------------
32
32
  [**PaymentGatewayApi**](docs/payment_gateway/v1/PaymentGatewayApi.md) | API for doing operations in DANA Payment Gateway (Gapura)
33
33
  [**WidgetApi**](docs/widget/v1/WidgetApi.md) | API for enabling the user to make payment from merchant’s platform with redirecting to DANA’s platform
34
-
34
+ [**DisbursementApi**](docs/disbursement/v1/DisbursementApi.md) | API for doing operations in DANA Disbursement
35
+ [**MerchantManagementApi**](docs/merchant_management/v1/MerchantManagementApi.md) | API for doing operations in DANA Merchant Management
@@ -0,0 +1,28 @@
1
+ # Copyright 2025 PT Espay Debit Indonesia Koe
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ from enum import Enum
15
+ class ChargeTarget(str, Enum):
16
+ DIVISION = "DIVISION"
17
+ MERCHANT = "MERCHANT"
18
+
19
+ class LatestTransactionStatus(str, Enum):
20
+ N00 = "00"
21
+ N01 = "01"
22
+ N02 = "02"
23
+ N03 = "03"
24
+ N04 = "04"
25
+ N05 = "05"
26
+ N06 = "06"
27
+ N07 = "07"
28
+
@@ -53,7 +53,7 @@ class TransferToBankInquiryStatusResponse(BaseModel, BaseSdkModel):
53
53
  original_external_id: Optional[Annotated[str, Field(strict=True, max_length=36)]] = Field(default=None, description="Original external identifier on header message")
54
54
  service_code: Annotated[str, Field(strict=True, max_length=2)] = Field(description="Transaction type indicator is based on the service code of the original transaction request, value always 00")
55
55
  amount: Optional[Money] = Field(default=None, description="Amount. Contains two sub-fields:<br> 1. Value: Transaction amount, including the cents<br> 2. Currency: Currency code based on ISO ")
56
- latest_transaction_status: Annotated[str, Field(strict=True, max_length=2)] = Field(description="Status of latest transaction:<br> 00 - Success<br> 01 - Initiated<br> 02 - Paying<br> 03 - Pending<br> 04 - Refunded<br> 05 - Canceled<br> 06 - Failed<br> 07 - Not found ")
56
+ latest_transaction_status: Annotated[str, Field(strict=True, max_length=2)] = Field(description="Status of latest transaction:<br> 00 - Success<br> 01 - Initiated<br> 02 - Paying<br> 03 - Pending<br> 04 - Refunded<br> 05 - Cancelled<br> 06 - Failed<br> 07 - Not found ")
57
57
  transaction_status_desc: Optional[Annotated[str, Field(strict=True, max_length=50)]] = Field(default=None, description="Description of transaction status")
58
58
  additional_info: Optional[Dict[str, Any]] = Field(default=None, description="Additional information")
59
59
  __properties: ClassVar[List[str]] = ["responseCode", "responseMessage", "originalPartnerReferenceNo", "originalReferenceNo", "originalExternalId", "serviceCode", "amount", "latestTransactionStatus", "transactionStatusDesc", "additionalInfo"]
@@ -0,0 +1,110 @@
1
+ # Copyright 2025 PT Espay Debit Indonesia Koe
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ from enum import Enum
15
+ class ShopParentType(str, Enum):
16
+ MERCHANT = "MERCHANT"
17
+ DIVISION = "DIVISION"
18
+ EXTERNAL_DIVISION = "EXTERNAL_DIVISION"
19
+
20
+ class SizeType(str, Enum):
21
+ UMI = "UMI"
22
+ UKE = "UKE"
23
+ UME = "UME"
24
+ UBE = "UBE"
25
+
26
+ class Loyalty(str, Enum):
27
+ TRUE = "true"
28
+ FALSE = "false"
29
+
30
+ class BusinessEntity(str, Enum):
31
+ PT = "pt"
32
+ CV = "cv"
33
+ INDIVIDU = "individu"
34
+ USAHA_DAGANG = "usaha_dagang"
35
+ YAYASAN = "yayasan"
36
+ KOPERASI = "koperasi"
37
+
38
+ class OwnerIdType(str, Enum):
39
+ KTP = "KTP"
40
+ SIM = "SIM"
41
+ PASSPORT = "PASSPORT"
42
+ SIUP = "SIUP"
43
+ NIB = "NIB"
44
+
45
+ class ShopOwning(str, Enum):
46
+ DIRECT_OWNED = "DIRECT_OWNED"
47
+ FRANCHISED = "FRANCHISED"
48
+
49
+ class ShopIdType(str, Enum):
50
+ INNER_ID = "INNER_ID"
51
+ EXTERNAL_ID = "EXTERNAL_ID"
52
+
53
+ class ParentRoleType(str, Enum):
54
+ MERCHANT = "MERCHANT"
55
+ DIVISION = "DIVISION"
56
+ EXTERNAL_DIVISION = "EXTERNAL_DIVISION"
57
+
58
+ class DivisionType(str, Enum):
59
+ REGION = "REGION"
60
+ AREA = "AREA"
61
+ BRANCH = "BRANCH"
62
+ OUTLET = "OUTLET"
63
+ STORE = "STORE"
64
+ KIOSK = "KIOSK"
65
+ STALL = "STALL"
66
+ COUNTER = "COUNTER"
67
+ BOOTH = "BOOTH"
68
+ POINT_OF_SALE = "POINT_OF_SALE"
69
+ VENDING_MACHINE = "VENDING_MACHINE"
70
+
71
+ class GOODSSOLDTYPE(str, Enum):
72
+ DIGITAL = "DIGITAL"
73
+ PHYSICAL = "PHYSICAL"
74
+
75
+ class USERPROFILING(str, Enum):
76
+ B2B = "B2B"
77
+ B2C = "B2C"
78
+
79
+ class PgDivisionFlag(str, Enum):
80
+ TRUE = "true"
81
+ FALSE = "false"
82
+
83
+ class DivisionIdType(str, Enum):
84
+ INNER_ID = "INNER_ID"
85
+ EXTERNAL_ID = "EXTERNAL_ID"
86
+
87
+ class ResourceType(str, Enum):
88
+ MERCHANT_DEPOSIT_BALANCE = "MERCHANT_DEPOSIT_BALANCE"
89
+ MERCHANT_AVAILABLE_BALANCE = "MERCHANT_AVAILABLE_BALANCE"
90
+ MERCHANT_TOTAL_BALANCE = "MERCHANT_TOTAL_BALANCE"
91
+
92
+ class Verified(str, Enum):
93
+ TRUE = "true"
94
+ FALSE = "false"
95
+
96
+ class DocType(str, Enum):
97
+ KTP = "KTP"
98
+ SIM = "SIM"
99
+ SIUP = "SIUP"
100
+ NIB = "NIB"
101
+
102
+ class ResultStatus(str, Enum):
103
+ S = "S"
104
+ F = "F"
105
+ U = "U"
106
+
107
+ class ShopBizType(str, Enum):
108
+ ONLINE = "ONLINE"
109
+ OFFLINE = "OFFLINE"
110
+
@@ -11,44 +11,7 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
-
15
14
  from enum import Enum
16
-
17
- class LatestTransactionStatus(str, Enum):
18
- 00 = "00"
19
- 01 = "01"
20
- 02 = "02"
21
- 03 = "03"
22
- 04 = "04"
23
- 05 = "05"
24
- 06 = "06"
25
- 07 = "07"
26
-
27
- class LatestTransactionStatus(str, Enum):
28
- 00 = "00"
29
- 01 = "01"
30
- 02 = "02"
31
- 03 = "03"
32
- 04 = "04"
33
- 05 = "05"
34
- 06 = "06"
35
- 07 = "07"
36
-
37
- class SourcePlatform(str, Enum):
38
- IPG = "IPG"
39
-
40
- class TerminalType(str, Enum):
41
- APP = "APP"
42
- WEB = "WEB"
43
- WAP = "WAP"
44
- SYSTEM = "SYSTEM"
45
-
46
- class OrderTerminalType(str, Enum):
47
- APP = "APP"
48
- WEB = "WEB"
49
- WAP = "WAP"
50
- SYSTEM = "SYSTEM"
51
-
52
15
  class PayMethod(str, Enum):
53
16
  BALANCE = "BALANCE"
54
17
  COUPON = "COUPON"
@@ -64,19 +27,6 @@ class PayMethod(str, Enum):
64
27
  NETWORK_PAY = "NETWORK_PAY"
65
28
  CARD = "CARD"
66
29
 
67
- class PayMethod(str, Enum):
68
- BALANCE = "BALANCE"
69
- COUPON = "COUPON"
70
- NET_BANKING = "NET_BANKING"
71
- CREDIT_CARD = "CREDIT_CARD"
72
- DEBIT_CARD = "DEBIT_CARD"
73
- VIRTUAL_ACCOUNT = "VIRTUAL_ACCOUNT"
74
- OTC = "OTC"
75
- DIRECT_DEBIT_CREDIT_CARD = "DIRECT_DEBIT_CREDIT_CARD"
76
- DIRECT_DEBIT_DEBIT_CARD = "DIRECT_DEBIT_DEBIT_CARD"
77
- ONLINE_CREDIT = "ONLINE_CREDIT"
78
- LOAN_CREDIT = "LOAN_CREDIT"
79
-
80
30
  class PayOption(str, Enum):
81
31
  NETWORK_PAY_PG_SPAY = "NETWORK_PAY_PG_SPAY"
82
32
  NETWORK_PAY_PG_OVO = "NETWORK_PAY_PG_OVO"
@@ -91,9 +41,13 @@ class PayOption(str, Enum):
91
41
  VIRTUAL_ACCOUNT_CIMB = "VIRTUAL_ACCOUNT_CIMB"
92
42
  VIRTUAL_ACCOUNT_PERMATA = "VIRTUAL_ACCOUNT_PERMATA"
93
43
 
94
- class Type(str, Enum):
95
- PAY_RETURN = "PAY_RETURN"
96
- NOTIFICATION = "NOTIFICATION"
44
+ class AcquirementStatus(str, Enum):
45
+ INIT = "INIT"
46
+ SUCCESS = "SUCCESS"
47
+ CLOSED = "CLOSED"
48
+ PAYING = "PAYING"
49
+ MERCHANT_ACCEPT = "MERCHANT_ACCEPT"
50
+ CANCELLED = "CANCELLED"
97
51
 
98
52
  class ActorType(str, Enum):
99
53
  USER = "USER"
@@ -101,3 +55,23 @@ class ActorType(str, Enum):
101
55
  MERCHANT_OPERATOR = "MERCHANT_OPERATOR"
102
56
  BACK_OFFICE = "BACK_OFFICE"
103
57
  SYSTEM = "SYSTEM"
58
+
59
+ class SourcePlatform(str, Enum):
60
+ IPG = "IPG"
61
+
62
+ class TerminalType(str, Enum):
63
+ APP = "APP"
64
+ WEB = "WEB"
65
+ WAP = "WAP"
66
+ SYSTEM = "SYSTEM"
67
+
68
+ class OrderTerminalType(str, Enum):
69
+ APP = "APP"
70
+ WEB = "WEB"
71
+ WAP = "WAP"
72
+ SYSTEM = "SYSTEM"
73
+
74
+ class Type(str, Enum):
75
+ PAY_RETURN = "PAY_RETURN"
76
+ NOTIFICATION = "NOTIFICATION"
77
+
@@ -46,7 +46,7 @@ class ConsultPayPaymentInfo(BaseModel, BaseSdkModel):
46
46
  """
47
47
  ConsultPayPaymentInfo
48
48
  """ # noqa: E501
49
- 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> ")
49
+ 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> ")
50
50
  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> * 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> ")
51
51
  promo_infos: Optional[List[PromoInfo]] = Field(default=None, description="Additional Information of promotion")
52
52
  __properties: ClassVar[List[str]] = ["payMethod", "payOption", "promoInfos"]
@@ -56,8 +56,8 @@ class ConsultPayPaymentInfo(BaseModel, BaseSdkModel):
56
56
  """Validates the enum"""
57
57
  if value == "":
58
58
  return value
59
- if value not in set(['BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT', 'NETWORK_PAY']):
60
- raise ValueError("must be one of enum values ('BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT', 'NETWORK_PAY')")
59
+ if value not in set(['BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT', 'NETWORK_PAY', 'CARD']):
60
+ raise ValueError("must be one of enum values ('BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT', 'NETWORK_PAY', 'CARD')")
61
61
  return value
62
62
 
63
63
  @field_validator('pay_option')
@@ -71,6 +71,34 @@ class CreateOrderByApiRequest(BaseModel, BaseSdkModel):
71
71
  raise ValueError(r"must validate the regular expression /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+07:00$/")
72
72
  return value
73
73
 
74
+ @field_validator('valid_up_to')
75
+ def valid_up_to_validate_date_range(cls, value):
76
+ """Validates that date is not more than one week in the future"""
77
+ import datetime
78
+
79
+ if value is None:
80
+ return value
81
+
82
+ try:
83
+ jakarta_tz = datetime.timezone(datetime.timedelta(hours=7))
84
+
85
+ current_date = datetime.datetime.now(jakarta_tz)
86
+
87
+ max_date = current_date + datetime.timedelta(days=7)
88
+
89
+ date_part = value[:-6]
90
+ input_date = datetime.datetime.fromisoformat(date_part).replace(tzinfo=jakarta_tz)
91
+
92
+ if input_date > max_date:
93
+ raise ValueError('Date cannot be more than one week in the future')
94
+
95
+ return value
96
+
97
+ except ValueError as e:
98
+ if 'week' in str(e):
99
+ raise
100
+ raise ValueError('Invalid date format. Expected format: YYYY-MM-DDTHH:mm:ss+07:00')
101
+
74
102
  model_config = ConfigDict(
75
103
  populate_by_name=True,
76
104
  validate_assignment=True,
@@ -69,6 +69,34 @@ class CreateOrderByRedirectRequest(BaseModel, BaseSdkModel):
69
69
  raise ValueError(r"must validate the regular expression /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+07:00$/")
70
70
  return value
71
71
 
72
+ @field_validator('valid_up_to')
73
+ def valid_up_to_validate_date_range(cls, value):
74
+ """Validates that date is not more than one week in the future"""
75
+ import datetime
76
+
77
+ if value is None:
78
+ return value
79
+
80
+ try:
81
+ jakarta_tz = datetime.timezone(datetime.timedelta(hours=7))
82
+
83
+ current_date = datetime.datetime.now(jakarta_tz)
84
+
85
+ max_date = current_date + datetime.timedelta(days=7)
86
+
87
+ date_part = value[:-6]
88
+ input_date = datetime.datetime.fromisoformat(date_part).replace(tzinfo=jakarta_tz)
89
+
90
+ if input_date > max_date:
91
+ raise ValueError('Date cannot be more than one week in the future')
92
+
93
+ return value
94
+
95
+ except ValueError as e:
96
+ if 'week' in str(e):
97
+ raise
98
+ raise ValueError('Invalid date format. Expected format: YYYY-MM-DDTHH:mm:ss+07:00')
99
+
72
100
  model_config = ConfigDict(
73
101
  populate_by_name=True,
74
102
  validate_assignment=True,
@@ -46,7 +46,7 @@ class RefundOptionBill(BaseModel, BaseSdkModel):
46
46
  """
47
47
  RefundOptionBill
48
48
  """ # noqa: E501
49
- pay_method: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, 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> ")
49
+ pay_method: Optional[Annotated[str, Field(strict=True, max_length=64)]] = Field(default=None, 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<br> * CARD - Payment method with card<br> ")
50
50
  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> ")
51
51
  __properties: ClassVar[List[str]] = ["payMethod", "transAmount"]
52
52
 
@@ -56,8 +56,8 @@ class RefundOptionBill(BaseModel, BaseSdkModel):
56
56
  if not value:
57
57
  return value
58
58
 
59
- if value not in set(['BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT']):
60
- raise ValueError("must be one of enum values ('BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT')")
59
+ if value not in set(['BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT', 'NETWORK_PAY', 'CARD']):
60
+ raise ValueError("must be one of enum values ('BALANCE', 'COUPON', 'NET_BANKING', 'CREDIT_CARD', 'DEBIT_CARD', 'VIRTUAL_ACCOUNT', 'OTC', 'DIRECT_DEBIT_CREDIT_CARD', 'DIRECT_DEBIT_DEBIT_CARD', 'ONLINE_CREDIT', 'LOAN_CREDIT', 'NETWORK_PAY', 'CARD')")
61
61
  return value
62
62
 
63
63
  model_config = ConfigDict(
@@ -11,9 +11,7 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
-
15
14
  from enum import Enum
16
-
17
15
  class ServiceType(str, Enum):
18
16
  PARKING = "PARKING"
19
17
  INVESTMENT = "INVESTMENT"
@@ -29,12 +27,6 @@ class PromoType(str, Enum):
29
27
  VOUCHER = "VOUCHER"
30
28
  POINT = "POINT"
31
29
 
32
- class PromoType(str, Enum):
33
- CASH_BACK = "CASH_BACK"
34
- DISCOUNT = "DISCOUNT"
35
- VOUCHER = "VOUCHER"
36
- POINT = "POINT"
37
-
38
30
  class AcquirementStatus(str, Enum):
39
31
  INIT = "INIT"
40
32
  SUCCESS = "SUCCESS"
@@ -90,19 +82,6 @@ class PayMethod(str, Enum):
90
82
  NETWORK_PAY = "NETWORK_PAY"
91
83
  CARD = "CARD"
92
84
 
93
- class PayMethod(str, Enum):
94
- BALANCE = "BALANCE"
95
- COUPON = "COUPON"
96
- NET_BANKING = "NET_BANKING"
97
- CREDIT_CARD = "CREDIT_CARD"
98
- DEBIT_CARD = "DEBIT_CARD"
99
- VIRTUAL_ACCOUNT = "VIRTUAL_ACCOUNT"
100
- OTC = "OTC"
101
- DIRECT_DEBIT_CREDIT_CARD = "DIRECT_DEBIT_CREDIT_CARD"
102
- DIRECT_DEBIT_DEBIT_CARD = "DIRECT_DEBIT_DEBIT_CARD"
103
- ONLINE_CREDIT = "ONLINE_CREDIT"
104
- LOAN_CREDIT = "LOAN_CREDIT"
105
-
106
85
  class PayOption(str, Enum):
107
86
  NETWORK_PAY_PG_SPAY = "NETWORK_PAY_PG_SPAY"
108
87
  NETWORK_PAY_PG_OVO = "NETWORK_PAY_PG_OVO"
@@ -121,9 +100,3 @@ class Type(str, Enum):
121
100
  PAY_RETURN = "PAY_RETURN"
122
101
  NOTIFICATION = "NOTIFICATION"
123
102
 
124
- class ActorType(str, Enum):
125
- USER = "USER"
126
- MERCHANT = "MERCHANT"
127
- MERCHANT_OPERATOR = "MERCHANT_OPERATOR"
128
- BACK_OFFICE = "BACK_OFFICE"
129
- SYSTEM = "SYSTEM"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dana-python
3
- Version: 1.1.1
3
+ Version: 1.1.3
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>
@@ -56,4 +56,5 @@ API | Description
56
56
  ------------- | -------------
57
57
  [**PaymentGatewayApi**](docs/payment_gateway/v1/PaymentGatewayApi.md) | API for doing operations in DANA Payment Gateway (Gapura)
58
58
  [**WidgetApi**](docs/widget/v1/WidgetApi.md) | API for enabling the user to make payment from merchant’s platform with redirecting to DANA’s platform
59
-
59
+ [**DisbursementApi**](docs/disbursement/v1/DisbursementApi.md) | API for doing operations in DANA Disbursement
60
+ [**MerchantManagementApi**](docs/merchant_management/v1/MerchantManagementApi.md) | API for doing operations in DANA Merchant Management
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dana-python"
3
- version = "1.1.1"
3
+ version = "1.1.3"
4
4
  readme = "README.md"
5
5
  description = "API Client (SDK) for DANA APIs based on https://dashboard.dana.id/api-docs"
6
6
  license = "Apache-2.0"
@@ -19,7 +19,7 @@ from dana.rest import ApiException
19
19
  from dana.webhook import WebhookParser
20
20
  from dana.utils.snap_header import SnapHeader
21
21
  # Import fixtures directly from their modules to avoid circular imports
22
- from tests.fixtures.api_client import api_instance_payment_gateway
22
+ from tests.fixtures.api_client import api_instance_payment_gateway, api_instance_payment_gateway_with_key_path
23
23
  from tests.fixtures.payment_gateway import consult_pay_request, create_order_by_api_request, query_payment_request, cancel_order_request, refund_order_request, webhook_key_pair
24
24
 
25
25
 
@@ -49,6 +49,13 @@ class TestPaymentGatewayApi:
49
49
 
50
50
  assert hasattr(api_response_query_payment, 'response_code')
51
51
  assert hasattr(api_response_query_payment, 'response_message')
52
+
53
+ def test_create_order_with_private_key_path(self, api_instance_payment_gateway_with_key_path: PaymentGatewayApi, create_order_by_api_request: CreateOrderByApiRequest):
54
+ """Should successfully create an order using private key file path instead of key string"""
55
+ api_response = api_instance_payment_gateway_with_key_path.create_order(create_order_by_api_request)
56
+
57
+ assert api_response.response_code == '2005400'
58
+ assert api_response.response_message == 'Successful'
52
59
 
53
60
  def test_cancel_order_success(self, api_instance_payment_gateway: PaymentGatewayApi, create_order_by_api_request: CreateOrderByApiRequest, cancel_order_request: CancelOrderRequest):
54
61
  """Should successfully cancel an order and return success response code"""
@@ -64,4 +71,30 @@ class TestPaymentGatewayApi:
64
71
  assert api_response_cancel.response_code == '2005700'
65
72
  assert api_response_cancel.response_message == 'Success'
66
73
  assert api_response_cancel.original_partner_reference_no == cancel_order_request.original_partner_reference_no
74
+
75
+ def test_create_order_with_valid_up_to_outside_range(self, api_instance_payment_gateway: PaymentGatewayApi):
76
+ """Should reject an order with valid_up_to more than one week in the future"""
77
+
78
+ # Import required modules
79
+ from datetime import datetime, timedelta, timezone
80
+ import pytest
81
+ import json
82
+ from tests.fixtures.payment_gateway import PaymentGatewayFixtures
83
+
84
+ # Get a base request from the fixtures
85
+ base_request = PaymentGatewayFixtures.get_create_order_by_api_request()
86
+
87
+ # Set valid_up_to to 8 days in the future (outside of allowed range)
88
+ jakarta_tz = timezone(timedelta(hours=7))
89
+ beyond_one_week = (datetime.now(jakarta_tz) + timedelta(days=8)).strftime("%Y-%m-%dT%H:%M:%S+07:00")
90
+
91
+ # Try to create an order with this invalid date
92
+ # The API should reject it with a specific error code
93
+ with pytest.raises(ValueError) as excinfo:
94
+ # Create a modified request with the invalid valid_up_to date
95
+ base_request.valid_up_to = beyond_one_week
96
+
97
+ # Check the error message contains expected text about the date range
98
+ error_msg = str(excinfo.value)
99
+ assert "week" in error_msg.lower() or "future" in error_msg.lower()
67
100
 
@@ -22,6 +22,7 @@ from dana.payment_gateway.v1.api import PaymentGatewayApi
22
22
  from dana.payment_gateway.v1.models import (
23
23
  ConsultPayRequest,
24
24
  CreateOrderByApiRequest,
25
+ CreateOrderByRedirectRequest,
25
26
  QueryPaymentRequest,
26
27
  CancelOrderRequest,
27
28
  RefundOrderRequest,
@@ -33,6 +34,7 @@ from tests.fixtures.payment_gateway import (
33
34
  consult_pay_request,
34
35
  create_order_by_api_request,
35
36
  create_order_by_api_paid_request,
37
+ create_order_by_redirect_request,
36
38
  query_payment_request,
37
39
  cancel_order_request,
38
40
  refund_order_request
@@ -43,7 +45,7 @@ from tests.web_automation import automate_payment_payment_gateway
43
45
  class TestPaymentGatewayWithAutomation:
44
46
  """Test class for Payment Gateway API endpoints with browser automation"""
45
47
 
46
- def test_refund_order_with_automation(self, api_instance_payment_gateway: PaymentGatewayApi):
48
+ def test_complete_scenario(self, api_instance_payment_gateway: PaymentGatewayApi, create_order_by_redirect_request: CreateOrderByRedirectRequest):
47
49
  """Test RefundOrder operation with web automation
48
50
 
49
51
  This test does the following:
@@ -57,26 +59,14 @@ class TestPaymentGatewayWithAutomation:
57
59
  if not merchant_id:
58
60
  pytest.skip("Skipping test: No API client credentials")
59
61
 
60
- # Generate a unique partner reference number with timestamp and random
61
- timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
62
- random_suffix = str(uuid.uuid4())[:8]
63
- partner_ref_no = f"PY-AUTO-{timestamp}-{random_suffix}"
64
-
65
- # Get create order request from fixtures and update with unique reference number
66
- create_order_request = create_order_by_api_paid_request()
67
- create_order_request.partner_reference_no = partner_ref_no
68
- create_order_request.merchant_id = merchant_id
69
-
70
- print(f"Creating order for payment and refund test with partner ref: {partner_ref_no}")
71
-
72
62
  try:
73
63
  # Execute the create order API call
74
- resp_create_order = api_instance_payment_gateway.create_order(create_order_request)
64
+ resp_create_order = api_instance_payment_gateway.create_order(create_order_by_redirect_request)
75
65
 
76
66
  # Assertions for create order response
77
67
  assert resp_create_order is not None
78
68
  assert resp_create_order.web_redirect_url is not None
79
- assert resp_create_order.partner_reference_no == partner_ref_no
69
+ assert resp_create_order.partner_reference_no == create_order_by_redirect_request.partner_reference_no
80
70
  assert resp_create_order.reference_no is not None
81
71
 
82
72
  # Store the reference number for refund
@@ -107,8 +97,8 @@ class TestPaymentGatewayWithAutomation:
107
97
 
108
98
  # Get query payment request from fixtures
109
99
  query_request = QueryPaymentRequest(
110
- original_partner_reference_no=partner_ref_no,
111
- service_code="00",
100
+ original_partner_reference_no=create_order_by_redirect_request.partner_reference_no,
101
+ service_code="54",
112
102
  merchant_id=merchant_id
113
103
  )
114
104
 
@@ -156,13 +146,12 @@ class TestPaymentGatewayWithAutomation:
156
146
 
157
147
  # Create refund order request
158
148
  refund_request = RefundOrderRequest(
159
- original_partner_reference_no=partner_ref_no,
160
- original_reference_no=ref_no,
149
+ original_partner_reference_no=create_order_by_redirect_request.partner_reference_no,
161
150
  merchant_id=merchant_id,
162
- partner_refund_no=f"REFUND-{timestamp}-{random_suffix}",
151
+ partner_refund_no=str(uuid.uuid4()),
163
152
  refund_amount=Money(
164
- value=create_order_request.order_amount.value,
165
- currency=create_order_request.order_amount.currency
153
+ value=create_order_by_redirect_request.amount.value,
154
+ currency=create_order_by_redirect_request.amount.currency
166
155
  ),
167
156
  reason="Python SDK Automation Test Refund"
168
157
  )
@@ -174,9 +163,6 @@ class TestPaymentGatewayWithAutomation:
174
163
  # Add assertions for successful refund response
175
164
  assert resp_refund_order is not None
176
165
 
177
- if hasattr(resp_refund_order, 'original_partner_reference_no'):
178
- assert resp_refund_order.original_partner_reference_no == partner_ref_no
179
-
180
166
  assert resp_refund_order.response_code is not None
181
167
 
182
168
  if resp_refund_order.response_code:
@@ -193,6 +179,6 @@ class TestPaymentGatewayWithAutomation:
193
179
  else:
194
180
  pytest.fail(f"Refund request failed with unexpected error: {e}")
195
181
  else:
196
- pytest.skip("Payment automation was not successful, skipping refund test")
182
+ pytest.fail("Payment automation was not successful")
197
183
  except Exception as e:
198
184
  pytest.fail(f"Test failed: {e}")