Skip to content

Commit

Permalink
25595 - Add More Payment Error Handling to Create/Update Org (#3265)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jxio authored Feb 18, 2025
1 parent 3b3b83b commit 83879c7
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 9 deletions.
12 changes: 10 additions & 2 deletions auth-api/src/auth_api/resources/v1/org.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,11 @@ def post_organization():
return response, status
response, status = OrgService.create_org(request_json, user.identifier).as_dict(), HTTPStatus.CREATED
except BusinessException as exception:
response, status = {"code": exception.code, "message": exception.message}, exception.status_code
response, status = {
"code": exception.code,
"message": exception.message,
"detail": exception.detail,
}, exception.status_code
return response, status


Expand Down Expand Up @@ -196,7 +200,11 @@ def put_organization(org_id):
else:
response, status = {"message": "The requested organization could not be found."}, HTTPStatus.NOT_FOUND
except BusinessException as exception:
response, status = {"code": exception.code, "message": exception.message}, exception.status_code
response, status = {
"code": exception.code,
"message": exception.message,
"detail": exception.detail,
}, exception.status_code
return response, status


Expand Down
16 changes: 13 additions & 3 deletions auth-api/src/auth_api/services/org.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,10 +270,20 @@ def _create_payment_settings(

except HTTPError as http_error:
error_payload = http_error.response.json()
error_code = error_payload.get("error", Error.PAYMENT_ACCOUNT_UPSERT_FAILED)
error_message = error_payload.get("error_description", "")
error_code = next(
(error_payload[key] for key in ["error", "code"] if key in error_payload),
Error.PAYMENT_ACCOUNT_UPSERT_FAILED,
)
error_details = next(
(
error_payload[key]
for key in ["error_description", "message", "description", "type"]
if key in error_payload
),
"",
)
logger.error(f"Account create payment Error: {http_error}")
raise BusinessException(error_code, error_message)
raise BusinessException(error_code, error_details)

@staticmethod
def _build_payment_request(org_model: OrgModel, payment_info: dict, payment_method: str, mailing_address, **kwargs):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ import {
} from '@/models/Organization'
import { computed, defineComponent, onBeforeUnmount, onMounted, reactive, ref, toRefs, watch } from '@vue/composition-api'
import { BcolProfile } from '@/models/bcol'
import CommonUtils from '@/util/common-util'
import LaunchDarklyService from 'sbc-common-components/src/services/launchdarkly.services'
import ModalDialog from '@/components/auth/common/ModalDialog.vue'
import PaymentMethods from '@/components/auth/common/PaymentMethods.vue'
Expand Down Expand Up @@ -419,6 +420,8 @@ export default defineComponent({
return { isValid, createRequestBody }
}
const formatText = CommonUtils.formatSnakeCaseToTitle
async function save () {
state.isBtnSaved = false
state.isLoading = true
Expand Down Expand Up @@ -473,11 +476,13 @@ export default defineComponent({
state.errorTitle = 'Error'
switch (error.response.status) {
case 409:
state.errorText = error.response.data.message?.detail || error.response.data.message
break
case 400:
state.errorText = error.response.data.message?.detail || error.response.data.message
state.errorTitle = error.response.data.message?.title || 'Error'
state.errorText = `${formatText(error.response.data.code)}<br>` +
`${formatText(error.response.data.message?.detail) || formatText(error.response.data.detail) || ''}`.trim()
state.errorTitle = formatText(error.response.data.message?.title) ||
formatText(error.response.data.message) ||
'Error'
break
default:
state.errorText = 'An error occurred while attempting to create/update your account.'
Expand Down
9 changes: 9 additions & 0 deletions auth-web/src/util/common-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,4 +383,13 @@ export default class CommonUtils {
arrayToSearch.length > 0 ? arrayToSearch[0] : undefined
)
}

static formatSnakeCaseToTitle (text: string): string {
if (!text) return ''
if (!text.includes('_')) return text
return text
.toLowerCase()
.replace(/_/g, ' ')
.replace(/\b\w/g, (char) => char.toUpperCase())
}
}

0 comments on commit 83879c7

Please sign in to comment.