Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: Configure a payment processor for SacRT #1365

Merged
merged 2 commits into from
Apr 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
78 changes: 55 additions & 23 deletions benefits/core/migrations/0002_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,19 +89,34 @@ def load_data(app, *args, **kwargs):
-----END CERTIFICATE-----
"""

payment_processor_client_cert = PemData.objects.create(
text=os.environ.get("PAYMENT_PROCESSOR_CLIENT_CERT", dummy_cert_text),
label="Payment processor client certificate",
mst_payment_processor_client_cert = PemData.objects.create(
text=os.environ.get("MST_PAYMENT_PROCESSOR_CLIENT_CERT", dummy_cert_text),
label="MST payment processor client certificate",
)

payment_processor_client_cert_private_key = PemData.objects.create(
text=os.environ.get("PAYMENT_PROCESSOR_CLIENT_CERT_PRIVATE_KEY", client_private_key.text),
label="Payment processor client certificate private key",
mst_payment_processor_client_cert_private_key = PemData.objects.create(
text=os.environ.get("MST_PAYMENT_PROCESSOR_CLIENT_CERT_PRIVATE_KEY", client_private_key.text),
label="MST payment processor client certificate private key",
)

payment_processor_client_cert_root_ca = PemData.objects.create(
text=os.environ.get("PAYMENT_PROCESSOR_CLIENT_CERT_ROOT_CA", dummy_cert_text),
label="Payment processor client certificate root CA",
mst_payment_processor_client_cert_root_ca = PemData.objects.create(
text=os.environ.get("MST_PAYMENT_PROCESSOR_CLIENT_CERT_ROOT_CA", dummy_cert_text),
label="MST payment processor client certificate root CA",
)

sacrt_payment_processor_client_cert = PemData.objects.create(
text=os.environ.get("SACRT_PAYMENT_PROCESSOR_CLIENT_CERT", dummy_cert_text),
label="SacRT payment processor client certificate",
)

sacrt_payment_processor_client_cert_private_key = PemData.objects.create(
text=os.environ.get("SACRT_PAYMENT_PROCESSOR_CLIENT_CERT_PRIVATE_KEY", client_private_key.text),
label="SacRT payment processor client certificate private key",
)

sacrt_payment_processor_client_cert_root_ca = PemData.objects.create(
text=os.environ.get("SACRT_PAYMENT_PROCESSOR_CLIENT_CERT_ROOT_CA", dummy_cert_text),
label="SacRT payment processor client certificate root CA",
)

AuthProvider = app.get_model("core", "AuthProvider")
Expand Down Expand Up @@ -204,18 +219,35 @@ def load_data(app, *args, **kwargs):

PaymentProcessor = app.get_model("core", "PaymentProcessor")

payment_processor = PaymentProcessor.objects.create(
name=os.environ.get("PAYMENT_PROCESSOR_NAME", "Test Payment Processor"),
api_base_url=os.environ.get("PAYMENT_PROCESSOR_API_BASE_URL", "http://server:8000"),
api_access_token_endpoint=os.environ.get("PAYMENT_PROCESSOR_API_ACCESS_TOKEN_ENDPOINT", "access-token"),
api_access_token_request_key=os.environ.get("PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_KEY", "request_access"),
api_access_token_request_val=os.environ.get("PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_VAL", "REQUEST_ACCESS"),
card_tokenize_url=os.environ.get("PAYMENT_PROCESSOR_CARD_TOKENIZE_URL", "http://server:8000/static/tokenize.js"),
card_tokenize_func=os.environ.get("PAYMENT_PROCESSOR_CARD_TOKENIZE_FUNC", "tokenize"),
card_tokenize_env=os.environ.get("PAYMENT_PROCESSOR_CARD_TOKENIZE_ENV", "test"),
client_cert=payment_processor_client_cert,
client_cert_private_key=payment_processor_client_cert_private_key,
client_cert_root_ca=payment_processor_client_cert_root_ca,
mst_payment_processor = PaymentProcessor.objects.create(
name=os.environ.get("MST_PAYMENT_PROCESSOR_NAME", "Test Payment Processor"),
api_base_url=os.environ.get("MST_PAYMENT_PROCESSOR_API_BASE_URL", "http://server:8000"),
api_access_token_endpoint=os.environ.get("MST_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_ENDPOINT", "access-token"),
api_access_token_request_key=os.environ.get("MST_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_KEY", "request_access"),
api_access_token_request_val=os.environ.get("MST_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_VAL", "REQUEST_ACCESS"),
card_tokenize_url=os.environ.get("MST_PAYMENT_PROCESSOR_CARD_TOKENIZE_URL", "http://server:8000/static/tokenize.js"),
card_tokenize_func=os.environ.get("MST_PAYMENT_PROCESSOR_CARD_TOKENIZE_FUNC", "tokenize"),
card_tokenize_env=os.environ.get("MST_PAYMENT_PROCESSOR_CARD_TOKENIZE_ENV", "test"),
client_cert=mst_payment_processor_client_cert,
client_cert_private_key=mst_payment_processor_client_cert_private_key,
client_cert_root_ca=mst_payment_processor_client_cert_root_ca,
customer_endpoint="customer",
customers_endpoint="customers",
group_endpoint="group",
)

sacrt_payment_processor = PaymentProcessor.objects.create(
name=os.environ.get("SACRT_PAYMENT_PROCESSOR_NAME", "Test Payment Processor"),
api_base_url=os.environ.get("SACRT_PAYMENT_PROCESSOR_API_BASE_URL", "http://server:8000"),
api_access_token_endpoint=os.environ.get("SACRT_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_ENDPOINT", "access-token"),
api_access_token_request_key=os.environ.get("SACRT_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_KEY", "request_access"),
api_access_token_request_val=os.environ.get("SACRT_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_VAL", "REQUEST_ACCESS"),
card_tokenize_url=os.environ.get("SACRT_PAYMENT_PROCESSOR_CARD_TOKENIZE_URL", "http://server:8000/static/tokenize.js"),
card_tokenize_func=os.environ.get("SACRT_PAYMENT_PROCESSOR_CARD_TOKENIZE_FUNC", "tokenize"),
card_tokenize_env=os.environ.get("SACRT_PAYMENT_PROCESSOR_CARD_TOKENIZE_ENV", "test"),
client_cert=sacrt_payment_processor_client_cert,
client_cert_private_key=sacrt_payment_processor_client_cert_private_key,
client_cert_root_ca=sacrt_payment_processor_client_cert_root_ca,
customer_endpoint="customer",
customers_endpoint="customers",
group_endpoint="group",
Expand All @@ -240,7 +272,7 @@ def load_data(app, *args, **kwargs):
private_key=client_private_key,
public_key=client_public_key,
jws_signing_alg=os.environ.get("MST_AGENCY_JWS_SIGNING_ALG", "RS256"),
payment_processor=payment_processor,
payment_processor=mst_payment_processor,
eligibility_index_intro=_("eligibility.pages.index.p[0].mst"),
)
mst_agency.eligibility_types.set([mst_senior_type, mst_courtesy_card_type])
Expand All @@ -258,7 +290,7 @@ def load_data(app, *args, **kwargs):
private_key=client_private_key,
public_key=client_public_key,
jws_signing_alg=os.environ.get("SACRT_AGENCY_JWS_SIGNING_ALG", "RS256"),
payment_processor=payment_processor,
payment_processor=sacrt_payment_processor,
eligibility_index_intro=_("eligibility.pages.index.p[0].sacrt"),
)
sacrt_agency.eligibility_types.set([sacrt_senior_type])
Expand Down
97 changes: 54 additions & 43 deletions terraform/app_service.tf
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ resource "azurerm_linux_web_app" "main" {
"ANALYTICS_KEY" = local.is_dev ? null : "${local.secret_prefix}analytics-key)",

# Django settings
"DJANGO_ADMIN" = (local.is_prod || local.is_test) ? null : "${local.secret_prefix}django-admin)",
"DJANGO_ALLOWED_HOSTS" = "${local.secret_prefix}django-allowed-hosts)",
"DJANGO_DEBUG" = local.is_prod ? null : "${local.secret_prefix}django-debug)",
"DJANGO_LOG_LEVEL" = "${local.secret_prefix}django-log-level)",
"DJANGO_ADMIN" = (local.is_prod || local.is_test) ? null : "${local.secret_prefix}django-admin)",
"DJANGO_ALLOWED_HOSTS" = "${local.secret_prefix}django-allowed-hosts)",
"DJANGO_DEBUG" = local.is_prod ? null : "${local.secret_prefix}django-debug)",
"DJANGO_LOG_LEVEL" = "${local.secret_prefix}django-log-level)",

"DJANGO_RATE_LIMIT" = local.is_dev ? null : "${local.secret_prefix}django-rate-limit)",
"DJANGO_RATE_LIMIT_METHODS" = local.is_dev ? null : "${local.secret_prefix}django-rate-limit-methods)",
Expand All @@ -80,45 +80,56 @@ resource "azurerm_linux_web_app" "main" {
"SENTRY_ENVIRONMENT" = local.env_name,

# Environment variables for data migration
"MST_SENIOR_GROUP_ID" = "${local.secret_prefix}mst-senior-group-id)",
"MST_COURTESY_CARD_GROUP_ID" = "${local.secret_prefix}mst-courtesy-card-group-id)"
"SACRT_SENIOR_GROUP_ID" = "${local.secret_prefix}sacrt-senior-group-id)"
"CLIENT_PRIVATE_KEY" = "${local.secret_prefix}client-private-key)"
"CLIENT_PUBLIC_KEY" = "${local.secret_prefix}client-public-key)"
"SERVER_PUBLIC_KEY_URL" = "${local.secret_prefix}server-public-key-url)"
"PAYMENT_PROCESSOR_CLIENT_CERT" = "${local.secret_prefix}payment-processor-client-cert)"
"PAYMENT_PROCESSOR_CLIENT_CERT_PRIVATE_KEY" = "${local.secret_prefix}payment-processor-client-cert-private-key)"
"PAYMENT_PROCESSOR_CLIENT_CERT_ROOT_CA" = "${local.secret_prefix}payment-processor-client-cert-root-ca)"
"AUTH_PROVIDER_CLIENT_NAME" = "${local.secret_prefix}auth-provider-client-name)"
"AUTH_PROVIDER_CLIENT_ID" = "${local.secret_prefix}auth-provider-client-id)"
"AUTH_PROVIDER_AUTHORITY" = "${local.secret_prefix}auth-provider-authority)"
"AUTH_PROVIDER_SCOPE" = "${local.secret_prefix}auth-provider-scope)"
"AUTH_PROVIDER_CLAIM" = "${local.secret_prefix}auth-provider-claim)"
"MST_OAUTH_VERIFIER_NAME" = "${local.secret_prefix}mst-oauth-verifier-name)"
"COURTESY_CARD_VERIFIER" = "${local.secret_prefix}courtesy-card-verifier)"
"COURTESY_CARD_VERIFIER_API_URL" = "${local.secret_prefix}courtesy-card-verifier-api-url)"
"COURTESY_CARD_VERIFIER_API_AUTH_HEADER" = "${local.secret_prefix}courtesy-card-verifier-api-auth-header)"
"COURTESY_CARD_VERIFIER_API_AUTH_KEY" = "${local.secret_prefix}courtesy-card-verifier-api-auth-key)"
"COURTESY_CARD_VERIFIER_JWE_CEK_ENC" = "${local.secret_prefix}courtesy-card-verifier-jwe-cek-enc)"
"COURTESY_CARD_VERIFIER_JWE_ENCRYPTION_ALG" = "${local.secret_prefix}courtesy-card-verifier-jwe-encryption-alg)"
"COURTESY_CARD_VERIFIER_JWS_SIGNING_ALG" = "${local.secret_prefix}courtesy-card-verifier-jws-signing-alg)"
"SACRT_OAUTH_VERIFIER_NAME" = "${local.secret_prefix}sacrt-oauth-verifier-name)"
"PAYMENT_PROCESSOR_NAME" = "${local.secret_prefix}payment-processor-name)"
"PAYMENT_PROCESSOR_API_BASE_URL" = "${local.secret_prefix}payment-processor-api-base-url)"
"PAYMENT_PROCESSOR_API_ACCESS_TOKEN_ENDPOINT" = "${local.secret_prefix}payment-processor-api-access-token-endpoint)"
"PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_KEY" = "${local.secret_prefix}payment-processor-api-access-token-request-key)"
"PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_VAL" = "${local.secret_prefix}payment-processor-api-access-token-request-val)"
"PAYMENT_PROCESSOR_CARD_TOKENIZE_URL" = "${local.secret_prefix}payment-processor-card-tokenize-url)"
"PAYMENT_PROCESSOR_CARD_TOKENIZE_FUNC" = "${local.secret_prefix}payment-processor-card-tokenize-func)"
"PAYMENT_PROCESSOR_CARD_TOKENIZE_ENV" = "${local.secret_prefix}payment-processor-card-tokenize-env)"
"MST_AGENCY_SHORT_NAME" = "${local.secret_prefix}mst-agency-short-name)"
"MST_AGENCY_LONG_NAME" = "${local.secret_prefix}mst-agency-long-name)"
"MST_AGENCY_JWS_SIGNING_ALG" = "${local.secret_prefix}mst-agency-jws-signing-alg)"
"SACRT_AGENCY_SHORT_NAME" = "${local.secret_prefix}sacrt-agency-short-name)"
"SACRT_AGENCY_LONG_NAME" = "${local.secret_prefix}sacrt-agency-long-name)"
"SACRT_AGENCY_MERCHANT_ID" = "${local.secret_prefix}sacrt-agency-merchant-id)"
"SACRT_AGENCY_ACTIVE" = "${local.secret_prefix}sacrt-agency-active)"
"SACRT_AGENCY_JWS_SIGNING_ALG" = "${local.secret_prefix}sacrt-agency-jws-signing-alg)"
"MST_SENIOR_GROUP_ID" = "${local.secret_prefix}mst-senior-group-id)",
"MST_COURTESY_CARD_GROUP_ID" = "${local.secret_prefix}mst-courtesy-card-group-id)"
"SACRT_SENIOR_GROUP_ID" = "${local.secret_prefix}sacrt-senior-group-id)"
"CLIENT_PRIVATE_KEY" = "${local.secret_prefix}client-private-key)"
"CLIENT_PUBLIC_KEY" = "${local.secret_prefix}client-public-key)"
"SERVER_PUBLIC_KEY_URL" = "${local.secret_prefix}server-public-key-url)"
"MST_PAYMENT_PROCESSOR_CLIENT_CERT" = "${local.secret_prefix}mst-payment-processor-client-cert)"
"MST_PAYMENT_PROCESSOR_CLIENT_CERT_PRIVATE_KEY" = "${local.secret_prefix}mst-payment-processor-client-cert-private-key)"
"MST_PAYMENT_PROCESSOR_CLIENT_CERT_ROOT_CA" = "${local.secret_prefix}mst-payment-processor-client-cert-root-ca)"
"SACRT_PAYMENT_PROCESSOR_CLIENT_CERT" = "${local.secret_prefix}sacrt-payment-processor-client-cert)"
"SACRT_PAYMENT_PROCESSOR_CLIENT_CERT_PRIVATE_KEY" = "${local.secret_prefix}sacrt-payment-processor-client-cert-private-key)"
"SACRT_PAYMENT_PROCESSOR_CLIENT_CERT_ROOT_CA" = "${local.secret_prefix}sacrt-payment-processor-client-cert-root-ca)"
"AUTH_PROVIDER_CLIENT_NAME" = "${local.secret_prefix}auth-provider-client-name)"
"AUTH_PROVIDER_CLIENT_ID" = "${local.secret_prefix}auth-provider-client-id)"
"AUTH_PROVIDER_AUTHORITY" = "${local.secret_prefix}auth-provider-authority)"
"AUTH_PROVIDER_SCOPE" = "${local.secret_prefix}auth-provider-scope)"
"AUTH_PROVIDER_CLAIM" = "${local.secret_prefix}auth-provider-claim)"
"MST_OAUTH_VERIFIER_NAME" = "${local.secret_prefix}mst-oauth-verifier-name)"
"COURTESY_CARD_VERIFIER" = "${local.secret_prefix}courtesy-card-verifier)"
"COURTESY_CARD_VERIFIER_API_URL" = "${local.secret_prefix}courtesy-card-verifier-api-url)"
"COURTESY_CARD_VERIFIER_API_AUTH_HEADER" = "${local.secret_prefix}courtesy-card-verifier-api-auth-header)"
"COURTESY_CARD_VERIFIER_API_AUTH_KEY" = "${local.secret_prefix}courtesy-card-verifier-api-auth-key)"
"COURTESY_CARD_VERIFIER_JWE_CEK_ENC" = "${local.secret_prefix}courtesy-card-verifier-jwe-cek-enc)"
"COURTESY_CARD_VERIFIER_JWE_ENCRYPTION_ALG" = "${local.secret_prefix}courtesy-card-verifier-jwe-encryption-alg)"
"COURTESY_CARD_VERIFIER_JWS_SIGNING_ALG" = "${local.secret_prefix}courtesy-card-verifier-jws-signing-alg)"
"SACRT_OAUTH_VERIFIER_NAME" = "${local.secret_prefix}sacrt-oauth-verifier-name)"
"MST_PAYMENT_PROCESSOR_NAME" = "${local.secret_prefix}mst-payment-processor-name)"
"MST_PAYMENT_PROCESSOR_API_BASE_URL" = "${local.secret_prefix}mst-payment-processor-api-base-url)"
"MST_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_ENDPOINT" = "${local.secret_prefix}mst-payment-processor-api-access-token-endpoint)"
"MST_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_KEY" = "${local.secret_prefix}mst-payment-processor-api-access-token-request-key)"
"MST_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_VAL" = "${local.secret_prefix}mst-payment-processor-api-access-token-request-val)"
"MST_PAYMENT_PROCESSOR_CARD_TOKENIZE_URL" = "${local.secret_prefix}mst-payment-processor-card-tokenize-url)"
"MST_PAYMENT_PROCESSOR_CARD_TOKENIZE_FUNC" = "${local.secret_prefix}mst-payment-processor-card-tokenize-func)"
"MST_PAYMENT_PROCESSOR_CARD_TOKENIZE_ENV" = "${local.secret_prefix}mst-payment-processor-card-tokenize-env)"
"SACRT_PAYMENT_PROCESSOR_NAME" = "${local.secret_prefix}sacrt-payment-processor-name)"
"SACRT_PAYMENT_PROCESSOR_API_BASE_URL" = "${local.secret_prefix}sacrt-payment-processor-api-base-url)"
"SACRT_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_ENDPOINT" = "${local.secret_prefix}sacrt-payment-processor-api-access-token-endpoint)"
"SACRT_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_KEY" = "${local.secret_prefix}sacrt-payment-processor-api-access-token-request-key)"
"SACRT_PAYMENT_PROCESSOR_API_ACCESS_TOKEN_REQUEST_VAL" = "${local.secret_prefix}sacrt-payment-processor-api-access-token-request-val)"
"SACRT_PAYMENT_PROCESSOR_CARD_TOKENIZE_URL" = "${local.secret_prefix}sacrt-payment-processor-card-tokenize-url)"
"SACRT_PAYMENT_PROCESSOR_CARD_TOKENIZE_FUNC" = "${local.secret_prefix}sacrt-payment-processor-card-tokenize-func)"
"SACRT_PAYMENT_PROCESSOR_CARD_TOKENIZE_ENV" = "${local.secret_prefix}sacrt-payment-processor-card-tokenize-env)"
"MST_AGENCY_SHORT_NAME" = "${local.secret_prefix}mst-agency-short-name)"
"MST_AGENCY_LONG_NAME" = "${local.secret_prefix}mst-agency-long-name)"
"MST_AGENCY_JWS_SIGNING_ALG" = "${local.secret_prefix}mst-agency-jws-signing-alg)"
"SACRT_AGENCY_SHORT_NAME" = "${local.secret_prefix}sacrt-agency-short-name)"
"SACRT_AGENCY_LONG_NAME" = "${local.secret_prefix}sacrt-agency-long-name)"
"SACRT_AGENCY_MERCHANT_ID" = "${local.secret_prefix}sacrt-agency-merchant-id)"
"SACRT_AGENCY_ACTIVE" = "${local.secret_prefix}sacrt-agency-active)"
"SACRT_AGENCY_JWS_SIGNING_ALG" = "${local.secret_prefix}sacrt-agency-jws-signing-alg)"
}

lifecycle {
Expand Down