# Setup steps for Production

## Shop Product

In the Django shop app, create new products that should be available in the shop:

- `vv-de` Price 32430 (324_3- -> 324.30 CHF), base 300 CHF + 8.1% MWSt., name & description can be anything.
  - ONLY if `COURSE_VERSICHERUNGSVERMITTLERIN_ID` exists!
- `vv-fr` Price 32430 (324_3- -> 324.30 CHF), base 300 CHF + 8.1% MWSt., name & description can be anything.
  - ONLY if `COURSE_VERSICHERUNGSVERMITTLERIN_ID_FR` exists!
- `vv-it` Price 32430 (324_3- -> 324.30 CHF), base 300 CHF + 8.1% MWSt., name & description can be anything.
  - ONLY if `COURSE_VERSICHERUNGSVERMITTLERIN_ID_IT` exists!

## Datatrans (Payment Provider)

- Set `DATATRANS_BASIC_AUTH_KEY`:
  - https://admin.sandbox.datatrans.com/MenuDispatch.jsp?main=1&sub=4
  - `echo -n "{merchantid}:{password}" | base64`

- Set `DATATRANS_HMAC_KEY`:
  - https://admin.sandbox.datatrans.com/MerchSecurAdmin.jsp

For Production:

1. Coordinate with datatrans to get production account. -> TBD!
2. Set `DATATRANS_BASIC_AUTH_KEY` and `DATATRANS_HMAC_KEY` to the production values (see above).

## OAUTH

For Production: Make sure that the following env vars are set:

### Azure B2C

- Set `OAUTH_SIGNUP_CLIENT_ID`
- Set `OAUTH_SIGNUP_CLIENT_SECRET`
- Set `OAUTH_SIGNUP_SERVER_METADATA_URL` (.well-known/openid-configuration)
- Set `OAUTH_SIGNUP_TENANT_ID`
- Set `OAUTH_SIGNUP_REDIRECT_URI` (`.../sso/login` e.g. `https://myvbv-stage.iterativ.ch/sso/login`)

### Keycloak

- Set `OAUTH_SIGNIN_CLIENT_ID`
- Set `OAUTH_SIGNIN_CLIENT_SECRET`
- Set `OAUTH_SIGNIN_SERVER_METADATA_URL` (.well-known/openid-configuration)
- Set `OAUTH_SIGNIN_REDIRECT_URI` (`.../sso/callback` e.g. `https://myvbv-stage.iterativ.ch/sso/callback`)

### Caprover (VITEx)

- Set `VITE_OAUTH_API_BASE_URL` in `caprover_deploy.sh` for `prod` environment.
  - `OAUTH_SIGNIN_SERVER_METADATA_URL` should help to find the correct value.
  - Should be the SSO Prod one from Lernnetz. -> TBD!

### send_vv_welcome_email()

- Due to lack of access to Sendgrid, never tested actually sending the email.

## Testing Payment Flow

- To get user into state for testing (e.g. test-student1@example.com so that he can buy the course):
  - Remove all existing course session users for the user.
  - Remove all existing checkout information for the user.

### Cleanup

After everything runs fine, we should be able to remove the following deprecated env vars:

1. `IT_OAUTH_TENANT_ID`
2. `IT_OAUTH_CLIENT_NAME`
3. `IT_OAUTH_CLIENT_ID`
4. `IT_OAUTH_CLIENT_SECRET`
5. `IT_OAUTH_API_BASE_URL`
6. `IT_OAUTH_LOCAL_REDIRECT_URI`
7. `IT_OAUTH_SERVER_METADATA_URL`
8. `IT_OAUTH_SCOPE`


