velocity-python 0.0.221__tar.gz → 0.0.222__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 (157) hide show
  1. {velocity_python-0.0.221/src/velocity_python.egg-info → velocity_python-0.0.222}/PKG-INFO +1 -1
  2. {velocity_python-0.0.221 → velocity_python-0.0.222}/pyproject.toml +1 -1
  3. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/__init__.py +1 -1
  4. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/payment/stripe_adapter.py +33 -24
  5. {velocity_python-0.0.221 → velocity_python-0.0.222/src/velocity_python.egg-info}/PKG-INFO +1 -1
  6. {velocity_python-0.0.221 → velocity_python-0.0.222}/LICENSE +0 -0
  7. {velocity_python-0.0.221 → velocity_python-0.0.222}/README.md +0 -0
  8. {velocity_python-0.0.221 → velocity_python-0.0.222}/setup.cfg +0 -0
  9. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/__init__.py +0 -0
  10. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/invoices.py +0 -0
  11. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/orders.py +0 -0
  12. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/payments.py +0 -0
  13. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/purchase_orders.py +0 -0
  14. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/tests/__init__.py +0 -0
  15. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/tests/test_email_processing.py +0 -0
  16. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/tests/test_payment_profile_sorting.py +0 -0
  17. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/app/tests/test_spreadsheet_functions.py +0 -0
  18. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/__init__.py +0 -0
  19. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/amplify.py +0 -0
  20. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/amplify_build.py +0 -0
  21. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/__init__.py +0 -0
  22. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/base_handler.py +0 -0
  23. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/context.py +0 -0
  24. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/context_factory.py +0 -0
  25. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/exceptions.py +0 -0
  26. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/lambda_handler.py +0 -0
  27. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
  28. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
  29. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
  30. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/perf.py +0 -0
  31. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/response.py +0 -0
  32. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/handlers/sqs_handler.py +0 -0
  33. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/tests/__init__.py +0 -0
  34. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
  35. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
  36. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/aws/tests/test_response.py +0 -0
  37. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/__init__.py +0 -0
  38. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/__init__.py +0 -0
  39. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/column.py +0 -0
  40. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/database.py +0 -0
  41. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/decorators.py +0 -0
  42. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/engine.py +0 -0
  43. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/result.py +0 -0
  44. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/row.py +0 -0
  45. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/sequence.py +0 -0
  46. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/table.py +0 -0
  47. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/transaction.py +0 -0
  48. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/core/view.py +0 -0
  49. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/exceptions.py +0 -0
  50. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/__init__.py +0 -0
  51. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/base/__init__.py +0 -0
  52. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/base/initializer.py +0 -0
  53. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/base/operators.py +0 -0
  54. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/base/sql.py +0 -0
  55. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/base/types.py +0 -0
  56. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/mysql/__init__.py +0 -0
  57. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/mysql/operators.py +0 -0
  58. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/mysql/reserved.py +0 -0
  59. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/mysql/sql.py +0 -0
  60. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/mysql/types.py +0 -0
  61. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/postgres/__init__.py +0 -0
  62. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/postgres/operators.py +0 -0
  63. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/postgres/reserved.py +0 -0
  64. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/postgres/sql.py +0 -0
  65. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/postgres/types.py +0 -0
  66. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlite/__init__.py +0 -0
  67. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlite/operators.py +0 -0
  68. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlite/reserved.py +0 -0
  69. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlite/sql.py +0 -0
  70. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlite/types.py +0 -0
  71. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
  72. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlserver/operators.py +0 -0
  73. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
  74. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlserver/sql.py +0 -0
  75. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/sqlserver/types.py +0 -0
  76. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/servers/tablehelper.py +0 -0
  77. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/__init__.py +0 -0
  78. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/common_db_test.py +0 -0
  79. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/__init__.py +0 -0
  80. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/common.py +0 -0
  81. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_column.py +0 -0
  82. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_connections.py +0 -0
  83. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_database.py +0 -0
  84. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_engine.py +0 -0
  85. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
  86. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_imports.py +0 -0
  87. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_result.py +0 -0
  88. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_row.py +0 -0
  89. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
  90. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
  91. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
  92. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
  93. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
  94. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_table.py +0 -0
  95. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
  96. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
  97. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/sql/__init__.py +0 -0
  98. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/sql/common.py +0 -0
  99. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
  100. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
  101. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
  102. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_db_utils.py +0 -0
  103. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_postgres.py +0 -0
  104. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
  105. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
  106. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_result_caching.py +0 -0
  107. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
  108. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
  109. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
  110. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
  111. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_sql_builder.py +0 -0
  112. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_tablehelper.py +0 -0
  113. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/tests/test_view_helper.py +0 -0
  114. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/db/utils.py +0 -0
  115. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/logging.py +0 -0
  116. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/__init__.py +0 -0
  117. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/conv/__init__.py +0 -0
  118. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/conv/iconv.py +0 -0
  119. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/conv/oconv.py +0 -0
  120. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/db.py +0 -0
  121. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/export.py +0 -0
  122. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/format.py +0 -0
  123. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/mail.py +0 -0
  124. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/merge.py +0 -0
  125. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/__init__.py +0 -0
  126. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_db.py +0 -0
  127. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_fix.py +0 -0
  128. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_format.py +0 -0
  129. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_iconv.py +0 -0
  130. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_merge.py +0 -0
  131. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_oconv.py +0 -0
  132. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_original_error.py +0 -0
  133. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tests/test_timer.py +0 -0
  134. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/timer.py +0 -0
  135. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/misc/tools.py +0 -0
  136. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/payment/__init__.py +0 -0
  137. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/payment/base_adapter.py +0 -0
  138. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/payment/braintree_adapter.py +0 -0
  139. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/payment/profiles.py +0 -0
  140. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity/payment/router.py +0 -0
  141. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity_python.egg-info/SOURCES.txt +0 -0
  142. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity_python.egg-info/dependency_links.txt +0 -0
  143. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity_python.egg-info/requires.txt +0 -0
  144. {velocity_python-0.0.221 → velocity_python-0.0.222}/src/velocity_python.egg-info/top_level.txt +0 -0
  145. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_amplify_build.py +0 -0
  146. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_decorators.py +0 -0
  147. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_iconv_money_to_cents.py +0 -0
  148. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_lambda_handler.py +0 -0
  149. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_lambda_handler_auth.py +0 -0
  150. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_mixins_import.py +0 -0
  151. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_payment_braintree_adapter.py +0 -0
  152. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_payment_profiles.py +0 -0
  153. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_payment_router.py +0 -0
  154. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_payment_stripe_adapter.py +0 -0
  155. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_sys_modified_count_postgres_demo.py +0 -0
  156. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_table_alter.py +0 -0
  157. {velocity_python-0.0.221 → velocity_python-0.0.222}/tests/test_where_clause_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.0.221
3
+ Version: 0.0.222
4
4
  Summary: A rapid application development library for interfacing with data storage
5
5
  Author-email: Velocity Team <info@codeclubs.org>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "velocity-python"
7
- version = "0.0.221"
7
+ version = "0.0.222"
8
8
  authors = [
9
9
  { name="Velocity Team", email="info@codeclubs.org" },
10
10
  ]
@@ -1,4 +1,4 @@
1
- __version__ = version = "0.0.221"
1
+ __version__ = version = "0.0.222"
2
2
 
3
3
  from . import aws
4
4
  from . import db
@@ -37,9 +37,9 @@ class StripeAdapter(PaymentProcessorAdapter):
37
37
  """
38
38
  super().__init__(config)
39
39
 
40
- # Set Stripe API key
41
- stripe.api_key = config.get("api_key")
42
- if not stripe.api_key:
40
+ # Store API key per-instance instead of setting global stripe.api_key
41
+ self._api_key = config.get("api_key")
42
+ if not self._api_key:
43
43
  raise ValueError("Stripe API key is required in config")
44
44
 
45
45
  self.publishable_key = config.get("publishable_key")
@@ -88,6 +88,7 @@ class StripeAdapter(PaymentProcessorAdapter):
88
88
  "email_address": email_address,
89
89
  **(customer_data.get("metadata") or {}),
90
90
  },
91
+ api_key=self._api_key,
91
92
  )
92
93
  return {
93
94
  "customer_profile_id": customer.id,
@@ -112,7 +113,7 @@ class StripeAdapter(PaymentProcessorAdapter):
112
113
  """Attach a Stripe payment method to a customer and optionally make it default."""
113
114
  payment_data = payment_data or {}
114
115
  try:
115
- payment_method = stripe.PaymentMethod.retrieve(payment_method_id)
116
+ payment_method = stripe.PaymentMethod.retrieve(payment_method_id, api_key=self._api_key)
116
117
  attached_customer = getattr(payment_method, "customer", None)
117
118
  if attached_customer and str(attached_customer) != str(customer_profile_id):
118
119
  raise ProcessorError(
@@ -123,7 +124,7 @@ class StripeAdapter(PaymentProcessorAdapter):
123
124
 
124
125
  if not attached_customer:
125
126
  payment_method = stripe.PaymentMethod.attach(
126
- payment_method_id, customer=customer_profile_id
127
+ payment_method_id, customer=customer_profile_id, api_key=self._api_key
127
128
  )
128
129
 
129
130
  if payment_data.get("set_default", True):
@@ -132,6 +133,7 @@ class StripeAdapter(PaymentProcessorAdapter):
132
133
  email=payment_data.get("email_address"),
133
134
  name=payment_data.get("name") or payment_data.get("email_address"),
134
135
  invoice_settings={"default_payment_method": payment_method.id},
136
+ api_key=self._api_key,
135
137
  )
136
138
 
137
139
  return {
@@ -157,9 +159,9 @@ class StripeAdapter(PaymentProcessorAdapter):
157
159
  ) -> Dict[str, Any]:
158
160
  """Detach a Stripe payment method from any attached customer."""
159
161
  try:
160
- payment_method = stripe.PaymentMethod.retrieve(payment_method_id)
162
+ payment_method = stripe.PaymentMethod.retrieve(payment_method_id, api_key=self._api_key)
161
163
  if getattr(payment_method, "customer", None):
162
- payment_method = stripe.PaymentMethod.detach(payment_method_id)
164
+ payment_method = stripe.PaymentMethod.detach(payment_method_id, api_key=self._api_key)
163
165
  return {
164
166
  "payment_profile_id": payment_method_id,
165
167
  "detached": True,
@@ -176,7 +178,7 @@ class StripeAdapter(PaymentProcessorAdapter):
176
178
  def delete_customer_profile(self, tx, customer_profile_id: str) -> Dict[str, Any]:
177
179
  """Delete a Stripe vaulted customer."""
178
180
  try:
179
- result = stripe.Customer.delete(customer_profile_id)
181
+ result = stripe.Customer.delete(customer_profile_id, api_key=self._api_key)
180
182
  return {
181
183
  "customer_profile_id": customer_profile_id,
182
184
  "deleted": bool(getattr(result, "deleted", False)),
@@ -229,6 +231,7 @@ class StripeAdapter(PaymentProcessorAdapter):
229
231
  "platform": "caringcent",
230
232
  "environment": self.environment,
231
233
  },
234
+ api_key=self._api_key,
232
235
  )
233
236
 
234
237
  # Store in client_payment_accounts table
@@ -295,7 +298,7 @@ class StripeAdapter(PaymentProcessorAdapter):
295
298
  Retrieve current status of a Stripe Connected Account.
296
299
  """
297
300
  try:
298
- account = stripe.Account.retrieve(processor_account_id)
301
+ account = stripe.Account.retrieve(processor_account_id, api_key=self._api_key)
299
302
 
300
303
  # Update database record
301
304
  payment_account = tx.table("client_payment_accounts").find_one(
@@ -360,6 +363,7 @@ class StripeAdapter(PaymentProcessorAdapter):
360
363
  refresh_url=refresh_url,
361
364
  return_url=return_url,
362
365
  type="account_onboarding",
366
+ api_key=self._api_key,
363
367
  )
364
368
 
365
369
  return account_link.url
@@ -389,19 +393,20 @@ class StripeAdapter(PaymentProcessorAdapter):
389
393
  payment_method = payment_data["payment_method"]
390
394
  processor_account_id = payment_data["processor_account_id"]
391
395
  revenue_split_percentage = payment_data["revenue_split_percentage"]
396
+ capture_method = payment_data.get("capture_method", "manual")
392
397
 
393
398
  # Calculate platform fee
394
399
  platform_fee_cents = self.calculate_platform_fee(
395
400
  amount_cents, revenue_split_percentage
396
401
  )
397
402
 
398
- # Create PaymentIntent with manual capture (pre-auth)
403
+ # Create PaymentIntent
399
404
  payment_intent = stripe.PaymentIntent.create(
400
405
  amount=amount_cents,
401
406
  currency=currency,
402
407
  payment_method=payment_method,
403
408
  payment_method_types=["card"],
404
- capture_method="manual", # KEY: Don't capture immediately
409
+ capture_method=capture_method,
405
410
  confirm=True, # Confirm immediately (authorize)
406
411
  application_fee_amount=platform_fee_cents, # Platform fee
407
412
  transfer_data={
@@ -415,18 +420,21 @@ class StripeAdapter(PaymentProcessorAdapter):
415
420
  "platform": "caringcent",
416
421
  "environment": self.environment,
417
422
  },
423
+ api_key=self._api_key,
418
424
  )
419
425
 
420
- # Calculate expiration (Stripe holds for 7 days)
426
+ # Calculate expiration (Stripe holds for 7 days for manual capture)
421
427
  expires_at = datetime.now(timezone.utc) + timedelta(days=7)
422
428
 
429
+ # Determine status based on capture method
430
+ if capture_method == "automatic":
431
+ status = "captured" if payment_intent.status == "succeeded" else "failed"
432
+ else:
433
+ status = "authorized" if payment_intent.status == "requires_capture" else "failed"
434
+
423
435
  return {
424
436
  "processor_transaction_id": payment_intent.id,
425
- "status": (
426
- "authorized"
427
- if payment_intent.status == "requires_capture"
428
- else "failed"
429
- ),
437
+ "status": status,
430
438
  "amount": payment_intent.amount,
431
439
  "currency": payment_intent.currency,
432
440
  "authorization_code": payment_intent.id, # Stripe uses PaymentIntent ID
@@ -499,6 +507,7 @@ class StripeAdapter(PaymentProcessorAdapter):
499
507
  "environment": self.environment,
500
508
  **(payment_data.get("metadata") or {}),
501
509
  },
510
+ api_key=self._api_key,
502
511
  )
503
512
 
504
513
  charge_id = getattr(payment_intent, "latest_charge", None)
@@ -555,10 +564,10 @@ class StripeAdapter(PaymentProcessorAdapter):
555
564
  # Capture the PaymentIntent
556
565
  if amount:
557
566
  payment_intent = stripe.PaymentIntent.capture(
558
- processor_transaction_id, amount_to_capture=amount
567
+ processor_transaction_id, amount_to_capture=amount, api_key=self._api_key
559
568
  )
560
569
  else:
561
- payment_intent = stripe.PaymentIntent.capture(processor_transaction_id)
570
+ payment_intent = stripe.PaymentIntent.capture(processor_transaction_id, api_key=self._api_key)
562
571
 
563
572
  # Get charge details (for charge ID)
564
573
  charge = (
@@ -606,7 +615,7 @@ class StripeAdapter(PaymentProcessorAdapter):
606
615
  """
607
616
  try:
608
617
  payment_intent = stripe.PaymentIntent.cancel(
609
- processor_transaction_id, cancellation_reason=reason
618
+ processor_transaction_id, cancellation_reason=reason, api_key=self._api_key
610
619
  )
611
620
 
612
621
  return {
@@ -654,10 +663,10 @@ class StripeAdapter(PaymentProcessorAdapter):
654
663
  if reason:
655
664
  refund_params["reason"] = reason
656
665
 
657
- refund = stripe.Refund.create(**refund_params)
666
+ refund = stripe.Refund.create(**refund_params, api_key=self._api_key)
658
667
 
659
668
  # Calculate proportional fee refund
660
- original_charge = stripe.Charge.retrieve(processor_charge_id)
669
+ original_charge = stripe.Charge.retrieve(processor_charge_id, api_key=self._api_key)
661
670
  original_amount = original_charge.amount
662
671
  original_fee = original_charge.application_fee_amount or 0
663
672
 
@@ -694,12 +703,12 @@ class StripeAdapter(PaymentProcessorAdapter):
694
703
  """
695
704
  Validate that Stripe configuration is complete.
696
705
  """
697
- if not stripe.api_key:
706
+ if not self._api_key:
698
707
  return False
699
708
 
700
709
  try:
701
710
  # Test API key by retrieving account
702
- stripe.Account.retrieve()
711
+ stripe.Account.retrieve(api_key=self._api_key)
703
712
  return True
704
713
  except stripe.error.StripeError:
705
714
  return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.0.221
3
+ Version: 0.0.222
4
4
  Summary: A rapid application development library for interfacing with data storage
5
5
  Author-email: Velocity Team <info@codeclubs.org>
6
6
  License-Expression: MIT