dana-python 2.1.9__tar.gz → 2.1.10__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 (248) hide show
  1. {dana_python-2.1.9/dana_python.egg-info → dana_python-2.1.10}/PKG-INFO +1 -1
  2. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/webhook.py +18 -0
  3. {dana_python-2.1.9 → dana_python-2.1.10/dana_python.egg-info}/PKG-INFO +1 -1
  4. {dana_python-2.1.9 → dana_python-2.1.10}/pyproject.toml +1 -1
  5. {dana_python-2.1.9 → dana_python-2.1.10}/tests/test_merchant_management_api.py +22 -1
  6. {dana_python-2.1.9 → dana_python-2.1.10}/tests/test_webhook.py +39 -0
  7. {dana_python-2.1.9 → dana_python-2.1.10}/LICENSE +0 -0
  8. {dana_python-2.1.9 → dana_python-2.1.10}/README.md +0 -0
  9. {dana_python-2.1.9 → dana_python-2.1.10}/dana/__init__.py +0 -0
  10. {dana_python-2.1.9 → dana_python-2.1.10}/dana/api_client.py +0 -0
  11. {dana_python-2.1.9 → dana_python-2.1.10}/dana/api_response.py +0 -0
  12. {dana_python-2.1.9 → dana_python-2.1.10}/dana/base/__init__.py +0 -0
  13. {dana_python-2.1.9 → dana_python-2.1.10}/dana/base/configuration.py +0 -0
  14. {dana_python-2.1.9 → dana_python-2.1.10}/dana/base/model.py +0 -0
  15. {dana_python-2.1.9 → dana_python-2.1.10}/dana/base/types.py +0 -0
  16. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/__init__.py +0 -0
  17. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/__init__.py +0 -0
  18. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/api/__init__.py +0 -0
  19. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/api/disbursement_api.py +0 -0
  20. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/enum.py +0 -0
  21. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/__init__.py +0 -0
  22. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/bank_account_inquiry_request.py +0 -0
  23. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/bank_account_inquiry_request_additional_info.py +0 -0
  24. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/bank_account_inquiry_response.py +0 -0
  25. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/bank_account_inquiry_response_additional_info.py +0 -0
  26. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/dana_account_inquiry_request.py +0 -0
  27. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/dana_account_inquiry_request_additional_info.py +0 -0
  28. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/dana_account_inquiry_response.py +0 -0
  29. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/money.py +0 -0
  30. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_bank_inquiry_status_request.py +0 -0
  31. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_bank_inquiry_status_response.py +0 -0
  32. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_bank_request.py +0 -0
  33. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_bank_request_additional_info.py +0 -0
  34. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_bank_response.py +0 -0
  35. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_dana_inquiry_status_request.py +0 -0
  36. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_dana_inquiry_status_response.py +0 -0
  37. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_dana_request.py +0 -0
  38. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_dana_request_additional_info.py +0 -0
  39. {dana_python-2.1.9 → dana_python-2.1.10}/dana/disbursement/v1/models/transfer_to_dana_response.py +0 -0
  40. {dana_python-2.1.9 → dana_python-2.1.10}/dana/exceptions.py +0 -0
  41. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/__init__.py +0 -0
  42. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/__init__.py +0 -0
  43. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/api/__init__.py +0 -0
  44. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/api/merchant_management_api.py +0 -0
  45. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/enum.py +0 -0
  46. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/__init__.py +0 -0
  47. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/address_info.py +0 -0
  48. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/asset_card_list_item.py +0 -0
  49. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/business_docs.py +0 -0
  50. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_division_request.py +0 -0
  51. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_division_request_ext_info.py +0 -0
  52. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_division_response.py +0 -0
  53. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_division_response_response.py +0 -0
  54. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_division_response_response_body.py +0 -0
  55. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_division_response_response_head.py +0 -0
  56. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_shop_request.py +0 -0
  57. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_shop_response.py +0 -0
  58. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_shop_response_response.py +0 -0
  59. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_shop_response_response_body.py +0 -0
  60. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/create_shop_response_response_head.py +0 -0
  61. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/division_resource_info.py +0 -0
  62. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/member_asset_result_info.py +0 -0
  63. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_account_info.py +0 -0
  64. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_certificate_info.py +0 -0
  65. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_contact_address.py +0 -0
  66. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_contact_email.py +0 -0
  67. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_contact_mobile_no.py +0 -0
  68. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_corporate_certificate.py +0 -0
  69. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_information.py +0 -0
  70. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/merchant_resource_information.py +0 -0
  71. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/mobile_no_info.py +0 -0
  72. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/pic_info.py +0 -0
  73. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_asset_card_list_request.py +0 -0
  74. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_asset_card_list_response.py +0 -0
  75. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_asset_card_list_response_response.py +0 -0
  76. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_asset_card_list_response_response_body.py +0 -0
  77. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_asset_card_list_response_response_head.py +0 -0
  78. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_division_request.py +0 -0
  79. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_division_response.py +0 -0
  80. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_division_response_response.py +0 -0
  81. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_division_response_response_body.py +0 -0
  82. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_division_response_response_head.py +0 -0
  83. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_info_request.py +0 -0
  84. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_info_response.py +0 -0
  85. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_info_response_response.py +0 -0
  86. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_info_response_response_body.py +0 -0
  87. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_info_response_response_head.py +0 -0
  88. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_resource_request.py +0 -0
  89. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_resource_response.py +0 -0
  90. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_resource_response_response.py +0 -0
  91. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_resource_response_response_body.py +0 -0
  92. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_merchant_resource_response_response_head.py +0 -0
  93. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_shop_request.py +0 -0
  94. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_shop_response.py +0 -0
  95. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_shop_response_response.py +0 -0
  96. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_shop_response_response_body.py +0 -0
  97. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/query_shop_response_response_head.py +0 -0
  98. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/result_info.py +0 -0
  99. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/shop_resource_info.py +0 -0
  100. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_division_request.py +0 -0
  101. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_division_response.py +0 -0
  102. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_division_response_response.py +0 -0
  103. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_division_response_response_body.py +0 -0
  104. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_division_response_response_head.py +0 -0
  105. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_shop_request.py +0 -0
  106. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_shop_response.py +0 -0
  107. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_shop_response_response.py +0 -0
  108. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/update_shop_response_response_head.py +0 -0
  109. {dana_python-2.1.9 → dana_python-2.1.10}/dana/merchant_management/v1/models/user_name.py +0 -0
  110. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/__init__.py +0 -0
  111. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/__init__.py +0 -0
  112. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/api/__init__.py +0 -0
  113. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/api/payment_gateway_api.py +0 -0
  114. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/custom_validation.py +0 -0
  115. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/enum.py +0 -0
  116. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/__init__.py +0 -0
  117. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/actor_context.py +0 -0
  118. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/amount_detail.py +0 -0
  119. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/audit_info.py +0 -0
  120. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/buyer.py +0 -0
  121. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/cancel_order_request.py +0 -0
  122. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/cancel_order_response.py +0 -0
  123. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/consult_pay_payment_info.py +0 -0
  124. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/consult_pay_request.py +0 -0
  125. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/consult_pay_request_additional_info.py +0 -0
  126. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/consult_pay_response.py +0 -0
  127. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/create_order_by_api_additional_info.py +0 -0
  128. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/create_order_by_api_request.py +0 -0
  129. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/create_order_by_redirect_additional_info.py +0 -0
  130. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/create_order_by_redirect_request.py +0 -0
  131. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/create_order_response.py +0 -0
  132. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/create_order_response_additional_info.py +0 -0
  133. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/env_info.py +0 -0
  134. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/goods.py +0 -0
  135. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/money.py +0 -0
  136. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/order_api_object.py +0 -0
  137. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/order_redirect_object.py +0 -0
  138. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/pay_option_additional_info.py +0 -0
  139. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/pay_option_detail.py +0 -0
  140. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/pay_option_info.py +0 -0
  141. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/payment_view.py +0 -0
  142. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/promo_info.py +0 -0
  143. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/query_payment_request.py +0 -0
  144. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/query_payment_response.py +0 -0
  145. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/query_payment_response_additional_info.py +0 -0
  146. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/refund_option_bill.py +0 -0
  147. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/refund_order_request.py +0 -0
  148. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/refund_order_request_additional_info.py +0 -0
  149. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/refund_order_response.py +0 -0
  150. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/seller.py +0 -0
  151. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/shipping_info.py +0 -0
  152. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/status_detail.py +0 -0
  153. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/time_detail.py +0 -0
  154. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/url_param.py +0 -0
  155. {dana_python-2.1.9 → dana_python-2.1.10}/dana/payment_gateway/v1/models/virtual_account_info.py +0 -0
  156. {dana_python-2.1.9 → dana_python-2.1.10}/dana/rest.py +0 -0
  157. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/date_validation.py +0 -0
  158. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/models.py +0 -0
  159. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/open_api_configuration.py +0 -0
  160. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/open_api_header.py +0 -0
  161. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/script.py +0 -0
  162. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/snap_configuration.py +0 -0
  163. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/snap_header.py +0 -0
  164. {dana_python-2.1.9 → dana_python-2.1.10}/dana/utils/url.py +0 -0
  165. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/__init__.py +0 -0
  166. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/finish_notify_payment_info.py +0 -0
  167. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/finish_notify_request.py +0 -0
  168. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/finish_notify_request_additional_info.py +0 -0
  169. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/finish_notify_response.py +0 -0
  170. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/money.py +0 -0
  171. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/pay_option_info.py +0 -0
  172. {dana_python-2.1.9 → dana_python-2.1.10}/dana/webhook/shop_info.py +0 -0
  173. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/__init__.py +0 -0
  174. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/__init__.py +0 -0
  175. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/api/__init__.py +0 -0
  176. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/api/widget_api.py +0 -0
  177. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/custom_validation.py +0 -0
  178. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/enum.py +0 -0
  179. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/__init__.py +0 -0
  180. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/account_info.py +0 -0
  181. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/account_unbinding_request.py +0 -0
  182. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/account_unbinding_request_additional_info.py +0 -0
  183. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/account_unbinding_response.py +0 -0
  184. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/amount_detail.py +0 -0
  185. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_ott_request.py +0 -0
  186. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_ott_request_additional_info.py +0 -0
  187. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_ott_response.py +0 -0
  188. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_ott_response_user_resources_inner.py +0 -0
  189. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_token_authorization_code_request.py +0 -0
  190. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_token_refresh_token_request.py +0 -0
  191. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_token_response.py +0 -0
  192. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_token_response_additional_info.py +0 -0
  193. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/apply_token_response_additional_info_user_info.py +0 -0
  194. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/balance_inquiry_request.py +0 -0
  195. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/balance_inquiry_request_additional_info.py +0 -0
  196. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/balance_inquiry_response.py +0 -0
  197. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/buyer.py +0 -0
  198. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/cancel_order_request.py +0 -0
  199. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/cancel_order_response.py +0 -0
  200. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/env_info.py +0 -0
  201. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/goods.py +0 -0
  202. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/international_order_info.py +0 -0
  203. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/international_order_info_exchange_rate.py +0 -0
  204. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/money.py +0 -0
  205. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/oauth2_url_data.py +0 -0
  206. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/oauth2_url_data_seamless_data.py +0 -0
  207. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/order.py +0 -0
  208. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/pay_option_detail.py +0 -0
  209. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/pay_option_detail_additional_info.py +0 -0
  210. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/pay_option_info.py +0 -0
  211. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/payment_promo_info.py +0 -0
  212. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/payment_view.py +0 -0
  213. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_payment_request.py +0 -0
  214. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_payment_response.py +0 -0
  215. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_payment_response_additional_info.py +0 -0
  216. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_user_profile_request.py +0 -0
  217. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_user_profile_response.py +0 -0
  218. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_user_profile_response_response.py +0 -0
  219. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_user_profile_response_response_body.py +0 -0
  220. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/query_user_profile_response_response_head.py +0 -0
  221. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/refund_order_request.py +0 -0
  222. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/refund_order_request_additional_info.py +0 -0
  223. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/refund_order_response.py +0 -0
  224. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/refund_promo_info.py +0 -0
  225. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/result_info.py +0 -0
  226. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/seller.py +0 -0
  227. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/service_info.py +0 -0
  228. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/shipping_info.py +0 -0
  229. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/status_detail.py +0 -0
  230. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/time_detail.py +0 -0
  231. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/url_param.py +0 -0
  232. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/user_resource_info.py +0 -0
  233. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/virtual_account_info.py +0 -0
  234. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/widget_payment_request.py +0 -0
  235. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/widget_payment_request_additional_info.py +0 -0
  236. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/models/widget_payment_response.py +0 -0
  237. {dana_python-2.1.9 → dana_python-2.1.10}/dana/widget/v1/util.py +0 -0
  238. {dana_python-2.1.9 → dana_python-2.1.10}/dana_python.egg-info/SOURCES.txt +0 -0
  239. {dana_python-2.1.9 → dana_python-2.1.10}/dana_python.egg-info/dependency_links.txt +0 -0
  240. {dana_python-2.1.9 → dana_python-2.1.10}/dana_python.egg-info/requires.txt +0 -0
  241. {dana_python-2.1.9 → dana_python-2.1.10}/dana_python.egg-info/top_level.txt +0 -0
  242. {dana_python-2.1.9 → dana_python-2.1.10}/setup.cfg +0 -0
  243. {dana_python-2.1.9 → dana_python-2.1.10}/tests/test_disbursement_api.py +0 -0
  244. {dana_python-2.1.9 → dana_python-2.1.10}/tests/test_payment_gateway_api.py +0 -0
  245. {dana_python-2.1.9 → dana_python-2.1.10}/tests/test_payment_gateway_with_automation.py +0 -0
  246. {dana_python-2.1.9 → dana_python-2.1.10}/tests/test_snap_header.py +0 -0
  247. {dana_python-2.1.9 → dana_python-2.1.10}/tests/test_widget_api.py +0 -0
  248. {dana_python-2.1.9 → dana_python-2.1.10}/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: 2.1.9
3
+ Version: 2.1.10
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>
@@ -220,6 +220,14 @@ class WebhookParser:
220
220
  return s.replace('\\\\"', '\\"')
221
221
  return s
222
222
 
223
+ @staticmethod
224
+ def _remove_spaces_in_json_key_names(body: str) -> str:
225
+ return re.sub(
226
+ r'(\\*)"((?:\w+\s)+\w+)(\\*)"(\s*:)',
227
+ lambda m: m.group(1) + '"' + m.group(2).replace(' ', '') + m.group(3) + '"' + m.group(4),
228
+ body
229
+ )
230
+
223
231
  @staticmethod
224
232
  def _body_forms_for_signature(request_body: str) -> list[str]:
225
233
  seen: set[str] = set()
@@ -261,6 +269,16 @@ class WebhookParser:
261
269
  if nested_processed != request_body:
262
270
  add(nested_processed)
263
271
 
272
+ key_despace = WebhookParser._remove_spaces_in_json_key_names(request_body)
273
+ if key_despace != request_body:
274
+ add(key_despace)
275
+
276
+ key_despace_collapsed = WebhookParser._remove_spaces_in_json_key_names(
277
+ WebhookParser._collapse_triple_backslash_quotes(request_body)
278
+ )
279
+ if key_despace_collapsed != request_body:
280
+ add(key_despace_collapsed)
281
+
264
282
  minified, err = WebhookParser._ensure_minified_json(request_body)
265
283
  if err:
266
284
  if not forms:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dana-python
3
- Version: 2.1.9
3
+ Version: 2.1.10
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>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dana-python"
3
- version = "2.1.9"
3
+ version = "2.1.10"
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"
@@ -39,7 +39,8 @@ class TestMerchantManagementApi:
39
39
  """Test class for Merchant Management API endpoints"""
40
40
  def test_create_shop_and_query_shop_success(self, api_instance_merchant_management: MerchantManagementApi, create_shop_request: CreateShopRequest, query_shop_request: QueryShopRequest):
41
41
  """Should successfully create a shop and return success response"""
42
-
42
+ pytest.skip("Temporarily skipped")
43
+
43
44
  # Act
44
45
  api_response = api_instance_merchant_management.create_shop(create_shop_request)
45
46
 
@@ -87,6 +88,26 @@ class TestMerchantManagementApi:
87
88
  assert hasattr(query_shop_response.response.body, 'shop_resource_info')
88
89
  assert query_shop_response.response.body.shop_resource_info is not None
89
90
 
91
+ def test_query_shop_success(self, api_instance_merchant_management: MerchantManagementApi, query_shop_request: QueryShopRequest):
92
+ """Should successfully query a shop using a static shop ID"""
93
+ query_shop_request.shop_id = "216660000003429526679"
94
+
95
+ query_shop_response = api_instance_merchant_management.query_shop(query_shop_request)
96
+ print(f"Raw query shop response: {query_shop_response}")
97
+
98
+ assert query_shop_response is not None
99
+ assert hasattr(query_shop_response, 'response')
100
+ assert hasattr(query_shop_response.response, 'body')
101
+ assert hasattr(query_shop_response.response.body, 'result_info')
102
+
103
+ query_result_info = query_shop_response.response.body.result_info
104
+ assert query_result_info.result_status is not None
105
+ assert query_result_info.result_code is not None
106
+
107
+ if query_result_info.result_code == "SUCCESS":
108
+ assert hasattr(query_shop_response.response.body, 'shop_resource_info')
109
+ assert query_shop_response.response.body.shop_resource_info is not None
110
+
90
111
  def test_query_merchant_resource_success(self, api_instance_merchant_management: MerchantManagementApi, query_merchant_resource_request: QueryMerchantResourceRequest):
91
112
  """Should successfully query merchant resource and return balance information"""
92
113
 
@@ -273,3 +273,42 @@ class TestWebhookParser:
273
273
  assert result.amount.currency == "IDR"
274
274
  assert result.latest_transaction_status == "00"
275
275
  assert result.transaction_status_desc == "SUCCESS"
276
+
277
+ def test_production_qris_spaced_key_in_body(self):
278
+ """QRIS webhook body containing spaces inside JSON key names (e.g. 'c urrency', 'q rInfoCacheIndex').
279
+ Tests that the spaced-key normalisation strips the spaces before signature verification."""
280
+ public_key = os.getenv("WEBHOOK_PUBLIC_KEY")
281
+
282
+ webhook_http_method = "POST"
283
+ webhook_relative_url = "/v2/dana/callback-qris"
284
+
285
+ webhook_body_str = r'{"amount":{"currency":"IDR","value":"1000.00"},"originalReferenceNo":"20260615111212800100166774003221871","merchantId":"216620040007047069653","latestTransactionStatus":"00","addi tionalInfo":{"shopInfo":{"externalShopId":"a9ab9ac5","shopName":"PT REKA MIKRO MOBILITAS","shopId":"216660000003346861448","shopAddress":"{\"address1\":\"a9ab9ac5\",\"address2\":\"a9ab9ac5\",\"area\":\"Abiansemal\",\"city\":\"Kab. Badung\",\"contactAddressId\":\"120100000003577990444\",\"contactAddressType\":\"OFFICE_ADD\",\"country\":\"Indonesia\",\"defaultAddress\":false,\"province\":\"Bali\",\"verified\":true,\"zipcode\":\"80351\"}"},"tipsAmount":{"amount":"0.0","centFactor":"100","cent":"0","currencyValue":"360","currency":"IDR","currencyCode":"IDR"},"extendInfo":"{\"payment_scene\":\"C_SCAN_B\",\"QR_TYPE\":\"QR_DYNAMIC\",\"externalShopId\":\"a9ab9ac5\",\"osType\":\"android\",\"sourcePlatform\":\"MAIN_APP\",\"billNumber\":\"TRX20260615cd1772\"}","paymentInfo":{"payOptionInfos":[{"transAmount":{"currency":"IDR","value":"1000.00"},"payAmount":{"currency":"IDR","value":"1000.00"},"payMethod":"BALANCE","chargeAmount":{"currency":"IDR","value":"0.00"},"extendInfo":"{}","payOptionBillExtendInfo":"{}"}],"cashierRequestId":"413d8c580ebb8c5aaff235ddc14e7274","paidTime":"2026-06-15T10:56:17+07:00","payRequestExtendInfo":"{\"payment_scene\":\"C_SCAN_B\",\"supportNewCashierFlow\":\"false\",\"EMVCO_CODE_INFO\":\"{\\\"acquiringBankName\\\":\\\"DANA\\\",\\\"additionalInfo\\\":{\\\"billNumber\\\":\\\"TRX20260615cd1772\\\",\\\"terminalLabel\\\":\\\"MER2026042717424830271473\\\"},\\\"countryCode\\\":\\\"ID\\\",\\\"creditAccountInfos\\\":[],\\\"extendInfo\\\":{},\\\"externalSerialNo\\\":\\\"774003221871\\\",\\\"gpnMerchantId\\\":\\\"216660000003346861448-a9ab9ac5\\\",\\\"instId\\\":\\\"DANA\\\",\\\"merchantCity\\\":\\\"Kab. Badung\\\",\\\"merchantNameLocation\\\":\\\"PT REKA MIKRO MOBILITAS\\\",\\\"merchantPan\\\":\\\"936009150002729888\\\",\\\"merchantPanLuhn\\\":\\\"9360091500027298882\\\",\\\"merchantType\\\":\\\"PSO\\\",\\\"onUs\\\":true,\\\"postalCode\\\":\\\"80351\\\",\\\"q rInfoCacheIndex\\\":\\\"MO_EMVCO_PARSE_CACHEGZ009D65D35EC9C4444699D3EE332B431E35danabizpluginGZ001781495773115\\\",\\\"trxCode\\\":\\\"Payment Credit\\\",\\\"trxFeeAmount\\\":{\\\"amount\\\":0.00,\\\"cent\\\":0,\\\"centFactor\\\":100,\\\"currency\\\":\\\"IDR\\\",\\\"currencyCode\\\":\\\"IDR\\\",\\\"currencyValue\\\":\\\"360\\\"}}\",\"isClientSupportFaceAuth\":\"false\",\"callbackClientVersion\":\"2.1\",\"passThroughToPromotion\":\"{\\\"ORDER_TITLE\\\":\\\"Pay to PT REKA MIKRO MOBILITAS\\\",\\\"gpnMerchantId\\\":\\\"216660000003346861448-a9ab9ac5\\\",\\\"CLIENT_ID\\\":\\\"2026042717424830271473\\\",\\\"SHOP_INFO\\\":\\\"{\\\\\\\"externalShopId\\\\\\\":\\\\\\\"a9ab9ac5\\\\\\\",\\\\\\\"mccCodes\\\\\\\":[\\\\\\\"4789\\\\\\\"],\\\\\\\"shopAddress\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"address1\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"a9ab9ac5\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"address2\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"a9ab9ac5\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"area\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"Abiansemal\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"city\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"Kab. Badung\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"contactAddressId\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"120100000003577990444\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"contactAddressType\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"OFFICE_ADD\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"country\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"Indonesia\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"defaultAddress\\\\\\\\\\\\\\\":false,\\\\\\\\\\\\\\\"province\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"Bali\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"verified\\\\\\\\\\\\\\\":true,\\\\\\\\\\\\\\\"zipcode\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"80351\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"shopId\\\\\\\":\\\\\\\"216660000003346861448\\\\\\\",\\\\\\\"shopName\\\\\\\":\\\\\\\"PT REKA MIKRO MOBILITAS\\\\\\\"}\\\"}\",\"orderStatus\":\"INIT\",\"SERVICE_INFO\":\"null\",\"isFrictionless\":\"false\",\"passToFluxnet\":\"{\\\"onUs\\\":\\\"true\\\",\\\"merchantName\\\":\\\"PT REKA MIKRO MOBILITAS\\\"}\",\"CHARGE_USER_FEE_INFO\":\"[]\",\"merchantCategoryCode\":\"4789\",\"externalShopId\":\"a9ab9ac5\",\"merchantCategoryName\":\"TRANSPORTATION SERVICES (NOT ELSEWHERE CLASSIFIED)\",\"needAmlCheck\":\"false\",\"billNumber\":\"TRX20260615cd1772\",\"passThroughToRisk\":\"{\\\"isModifySmartpay\\\":\\\"false\\\",\\\"passkeys\\\":\\\"false\\\",\\\"isPasskeysSupported\\\":\\\"false\\\",\\\"isSupportWAOtp\\\":\\\"true\\\",\\\"isFrictionless\\\":\\\"false\\\",\\\"payerTypingChallenge\\\":\\\"false\\\"}\",\"SUPPORT_FRICTIONLESS\":\"false\"}","extendInfo":"{\"topupAndPay\":\"false\",\"paymentStatus\":\"SUCCESS\"}"}},"externalStoreID":"a9ab9ac5","originalPartnerReferenceNo":"TRX20260615cd1772","finishedTime":"2026-06-15T10:56:17+07:00","createdTime":"2026-06-15T10:56:13+07:00","transactionStatusDesc":"SUCCESS"}'
286
+
287
+ x_timestamp = "2026-06-15T11:09:00+07:00"
288
+ signature = "ZR3ZYxx2MDn5qocjcLxu7eEzJxOQ7NpYryG19/sSS1CdjeBQuedw2G9zc9BjMuNQiMFXscxCqQqNbKl64r2x2Dur51FVReFlUUKUw0WiZNQr+EqN/A+3Vk8lJ74SeBErd8IflKO6KZ1zt97Ab0YSxlCJ0GH8fVwSiqZINbtbMq4gEuYu0n0mJ2zc2/gn4weyKIctosmL3ygm0VU+gUmU1+zopt1K4Q0umRiW3LqwLNC96Tk1iYFVsJuCu+8KcHYT88DPhwXdTjwrXydIqIF3oyqpMHyBRAX1za7Q6z5Zsv8or3glwWNexfmNBg9GiwpKjHWPIrGqtbj1zo3KbRvFCQ=="
289
+
290
+ headers = {
291
+ "Channel-Id": "DANA",
292
+ "Charset": "UTF-8",
293
+ "Content-Type": "application/json",
294
+ "User-Agent": "Jakarta Commons-HttpClient/3.1",
295
+ "X-Partner-Id": "2026042717424830271473",
296
+ "X-Signature": signature,
297
+ "X-Timestamp": x_timestamp,
298
+ }
299
+
300
+ parser = WebhookParser(public_key=public_key)
301
+ result = parser.parse_webhook(
302
+ http_method=webhook_http_method,
303
+ relative_path_url=webhook_relative_url,
304
+ headers=headers,
305
+ body=webhook_body_str,
306
+ )
307
+
308
+ assert result is not None
309
+ assert result.original_partner_reference_no == "TRX20260615cd1772"
310
+ assert result.original_reference_no == "20260615111212800100166774003221871"
311
+ assert result.merchant_id == "216620040007047069653"
312
+ assert result.amount.value == "1000.00"
313
+ assert result.latest_transaction_status == "00"
314
+ assert result.transaction_status_desc == "SUCCESS"
File without changes
File without changes
File without changes