Adam Grygar
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- title: On-boarding a duckling --- # Hello and welcome to KIWI.com This part will help for quicker onboarding and will guide you through some standard common processes, so you won't be lost! > *In case you find some parts missing or not up-to-date, please update this page for the next round.* ## Where to start There are multiple places, where you can get the onboarding info. This page tries to answer some basic questions and serves as a single-point entry leading to further resources. You can also investigate some older official resources: 1. [general HR guide](https://kiwicom.atlassian.net/wiki/spaces/PEOP/pages/222363937/For+Newbies) 2. [general Brno guide](https://kiwicom.atlassian.net/wiki/spaces/FI/pages/231145811/Brno) 1. or choose other office from the sidebar there 3. [general fintech guide](https://docs.google.com/document/d/16Ny1m1HDWdnAxWFBaQrkw1fQ7LFJneUVnVMhRV4QCgY/edit) 4. your team-specific guide 1. [acquiring](https://kiwi.wiki/fintech/guides/onboarding-acq) 2. [fraud](https://kiwi.wiki/fintech/guides/onboarding-fraud) 5. For engineering info see [kiwi.wiki](kiwi.wiki) and for general stuff see [kiwi confluence](https://kiwicom.atlassian.net/wiki/spaces/HR/pages/220729771/Onboarding+2.0+-+Guide) ## Basics The following sections contain notes or tribe/team specific steps and sections. If possible, section names follow the structure of the HR on-boarding guide. - Here's a list of useful contacts that you might need during your onboarding period - HR - Alžbeta Šípková -- Onboarding Specialist - Requisition people - Here's a list of useful channels that you might need during your onboarding period - `#plz-HR` -- HR stuff - `#plz-access` -- software access - `#plz-eus` -- hardware stuff - Here's how the company structure looks, how teams look, how teams communicate with each other + a list of team leaders and managers - [Fintech onboarding manual with fintech structure](https://docs.google.com/document/d/16Ny1m1HDWdnAxWFBaQrkw1fQ7LFJneUVnVMhRV4QCgY/edit) - [Kiwihub company diagram](https://performancemanager5.successfactors.eu/sf/orgchart?_s.crb=e99v5Tt1LcmPUZRkKc41p4KZPZGNidcZqHFsKL1SBxY%3d) - Here's a description of some standard processes in KIWI: - Home office - Let others in the team know that you are at home. Write "HO" into `#fintech-acquiring-standup` - How to take a vacation - To request vacation follow the checklist: 1. ask for vacation in #holidays, tag your manager 2. after getting approval fill tulip vacation request 3. mark the vacation in the calendar 4. before your vacation starts, handover your agenda, leadership of meetings and pager 5. immediately before your vacation, notify your colleagues via #fintech-acquiring-standup 6. (optional) change your name something cool like @JanOFF_till_eow - How to take a sick leave 1. Write to `#fintech-acquiring-standup` that you are sick 2. Put it into Tulip - How to communicate with other teams and team members - For each team, they have `#plz-<team>` slack channel where you can write your request - How to fill a work trip - TODO - 15five - Check-ins with your manager - One per week fill how you fell - Add discussion points for 1:1 - Tulip - Vacation tool - New request: - My attendace -> Table view -> New attendance request -> Fill out your request - How to propose changes (since every opinion matters!) - For now it's just a general discussion with your teammates or managers. No standardized tooling. - How to request access or a new hardware - [Service desk](https://kiwicom.atlassian.net/servicedesk/customer/portals) portal is for making requests - Here's an overview of company-wide roadmap and initiatives - https://docs.google.com/presentation/d/1aKQfcjaM9v-JcZIsCMfjgok_-_aGvlkxuSN17F8NAv4/edit#slide=id.p - What general meetings to attend - Ask your manager to invite you to the following meetings: - Daily stand-up - Refinement -- weekly - Review (acquiring team) -- bi-weekly - Retro (acquiring team) -- bi-weekly - Planning -- bi-weekly - 121/1:1 One should be scheduled ASAP by a manager. -- bi-weekly - Kiwi.com online briefing - How to solve conflicts and issues and work ethics - TODO (maybe some teamlead can fill this in or someone with more experience) - What workshops we have - All those events are announced either in team channels (e.g. #da-finance-bois) or in common channels. - Team tech talks, where anybody can present and share their knowledge about the project that they are most proficient in or just share some general knowledge. This helps us to progress as a team and become better engineers. - Some company wide events ## Technical info - The list of more specific tools and accesses that you might need to be able to develop properly in most of the projects is in the Technical setup part - some more specific tools will be provided in projects READMEs - Here are architecture and diagrams for kiwi and fintech - [High level diagram](https://miro.com/app/board/uXjVNFliwfg=/) - [Company-wide architecture](https://miro.com/app/board/uXjVO99-VOE=/) - [Scrooge diagrams](https://miro.com/app/board/uXjVMHvrAs4=/?share_link_id=360425330793) - [Prehistoric technical introduction video](https://drive.google.com/file/d/1hJobuXpPMLE6eFzp-25U1QU0vWx8Wexb/view?usp=drive_link) - Here's a list of channels with technical info (common and team specific) - Your tribe lead should add you to the **@fintech_devs** Slack group. - Join the following tribe channels: - #acquiring-fr-spec-devs (secret) - #alerts-fintech-acquiring - `automated messages with errors and recoveries` - #finance-releases - #finance-devs-on-calls (secret) - #fintech-devs - #fintech-private (secret) - #fintech-devs-private (secret) - #fintech-acquiring-fraud-db - #fintech-acquiring-prod-releasers - `locks for prod releases` - #fintech-acquiring-sandbox-releasers - `locks for sandbox releases` - #fintech-acquiring-standup - `post your status here (e.g. to take HO)` - #plz-fintech-acquiring - #plz-fintech-qa - #logs-finance-errors - #logs-acquiring-errors - #logs-finance-repo - #plz-platform-infra - `ask infrastructure questions (like k8s) here` - #da-finance-bois (secret) - Here's a list of teams' responsibilities (what is the purpose of the team and what projects each team manage) - Booking clients -- Kiwi.com FE - Booking backend (BBE) -- BE for booking --> Uses our services to handle payment - Acquiring - payments and all related to it, manages part of BBE. - Here's an overview of how teams are connected - TODO - What is page duty - After you have completed your probation period, request access to PagerDuty in `#plz-access` and follow [do PICI guide](https://kiwi.wiki/fintech/guides/pci-guide/). - What monitoring tools do we have - some high-level overview, maybe have some list of dashboards per team - https://kiwicom.datadoghq.com - TODO: add concrete dashboards and explanations to them - https://kiwicom.sentry.io - k9s to track deployments in real time ## How the development process look: - We are using rebase not merge ### How to contribute: 1. Firstly, take the top TODO ticket from the Jira active sprint board. 2. Move it to in progress. 3. Create a branch from main/master with your name and Jira ticket id like `grygar/FRAUD-199_add_update_order_repository` 4. Make the changes and follow conventional commits. (`pre-commit` should check it as well) 5. When ready, push the changes. 6. Create a MR `<ticket> | <MR title>` eg. `FRAUD-199 | order repository.update added` and provide a description. 7. Move the Jira ticket into Core Review and assign a reviewer in GitLab using http://wheelofnames.com/ 1. If the code is dangerous, have at least 2 approves on it 8. Wait for the approve/s 9. When you have approve/s, move the Jira ticket to ready for production or QA 10. When you have approve/s, lock sandbox in #fintech-acquiring-sandbox-releasers with `/rlock <minutes> <message>` 11. In the same way, lock production in #fintech-acquiring-prod-releasers 12. Use pipeline to deploy it on sandbox and run qaa test. 13. Monitor sandbox for 5-10 minutes in Datadog 1. If ok, release to production 2. If not ok, deploy master to sandbox, make the changes, push, and repeat 13. (optional if service has canary) deploy to canary and monitor 14. Now release to production and pray 15. Monitor production for 5-10 minutes 1. If ok, merge to main and release it from the main branch 2. If not ok, revert the production by releasing the main branch 16. Unlock locks by `/runlock` 17. Close jira ticket ## Technical setup ### Setup the computer For Windows users, to login to your computer use your Okta username and password, provided by a manager. To obtain local administrator rights, request it in [\#plz-eus](https://skypicker.slack.com/archives/C30SCQUF5) slack channel. <Callout type="warning"> In the case of remote on-boarding, you need some other computer/device, from which you can setup Okta, as you won't be able to access Windows account without it. </Callout> For Linux users, you have a free hand to use a distribution of your preference. During installation please follow [security requirements](https://confluence.kiwi.com/display/SEC/Information+Security+Requirements+for+Another+Operating+System). ### Okta For Okta it is recommended to set up at least one of the available 2FA: - Optionally with Yubikey (_Deprecated, you may get it from EUS together with laptop_). - with Google Authenticator (_Two-step verification app - found on Google Play_) - with Okta app push In the case that you're provided a Yubikey, to make it run properly you need two programs: - [YubiKey Manager](https://www.yubico.com/products/services-software/download/yubikey-manager/) - [YubiKey Personalization Tools](https://www.yubico.com/products/services-software/download/yubikey-personalization-tools/) After installation open YubiKey Personalization Tools. Make sure your YubiKey is detected (_visible information in right panel_). Go to **Settings** section, next: - in the **Output Format** section unselect **Enter**. This will prevent sending tokens in input fields when accidentally touched. - in the **Output Speed Throttling** section set **Output Character Rate** to **Slow down by 60ms**, and check **Add a short delay before sending OTP part**. This should further eliminate accidents. Check with your manager that you are in [the team okta group](https://gitlab.skypicker.com/platform/security/tf-okta-groups/-/blob/master/engineering_fintech.tf). This is usually based on your org structure settings. ### 1Password First time sign in link should be in your email. For acquiring team, ask your manager to add you to [the team vault](https://my.1password.com/vaults/details/zrymz3zeajgt77kucpv2jgmjka). ### Slack If a person is not already in the Kiwi.com workspace: - check if he logged in to the correct Slack URL: **skypicker.slack.com** - Manager has to invite the person, click on **Kiwi.com** workspace (top left in the client) → **Invite people to Kiwi.com**. Then wait for admin approval. ### VPN Installation guide for [VPN](https://kiwicom.atlassian.net/l/cp/1fhdURuw). ### PyCharm Install [PyCharm Professional](https://www.jetbrains.com/pycharm/download/). For activation use licence server: **https://jetbrains-fls.kiwi.com**. To connect you have to be connected via VPN. To be able to run debugger, you have to enable gevent support. <ImageContainer size="medium"> ![PyCharm Python debugger!](../../../images/pycharm-gevent-debugger.jpg) </ImageContainer> ### Gitlab You have to login first for an account to be created. Your manager should then set access rights to the **developer** role, for the [finance](https://gitlab.skypicker.com/finance) gitlab group. In case of an acquiring team member, your manager should set the **maintainer** role in the [In payments](https://gitlab.skypicker.com/finance/payments-in) gitlab group. You will also need to add an SSH key to your gitlab account. [Instructions for Linux](https://www.youtube.com/watch?v=iXuIp5uNnLk) / [Instructions for Windows](https://www.youtube.com/watch?v=Vmt0V6a3ppE) ### Docker, Docker Compose & Docker Registry __TODO how to make guide for how to get license for Docker Desktop__ Ask your onboarding buddy and write update the guide please. Install Docker: [Installation guide for Docker on Ubuntu](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04) [Installation guide for Docker Compose on Ubuntu](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04) [Installation guide for Docker on MacOS](https://docs.docker.com/desktop/mac/install/) - Docker Compose comes with the Docker Desktop on Mac. To download Docker images to your local machine you need to be logged in to Kiwi's docker registry. Follow the instructions [here](https://kiwi.wiki/handbook/tooling/devtools/container-registry/#how-do-i-download-docker-images-to-my-local-machine). Make sure that you request on the #plz-access channel a Docker license and access to the Dockerhub organization. For that, you will need to [create a DockerHub account](https://hub.docker.com/). #### Second option is Colima [Instalation guide for Colima](https://github.com/abiosoft/colima) ### GCP & Kubectl Please follow [the official installation guide](https://cloud.google.com/sdk/docs/install). Along with gcloud, install kubectl from the additional components (`gcloud components install kubectl`). For access to [Fintech Clusters](https://console.cloud.google.com/kubernetes/workload?project=finance-prod-23dfe20d&supportedpurview=project) ask your manager to add you to the correct org structure in KiwiHub. You then need to configure the two following clusters: - configure access to sandbox ```bash gcloud config set project finance-sandbox-1aec3594 && gcloud config set compute/zone europe-west1-b && gcloud config set container/cluster finance-sandbox && gcloud container clusters get-credentials finance-sandbox ``` - configure access to production ```bash gcloud config set project finance-prod-23dfe20d && gcloud config set compute/zone europe-west3-b && gcloud config set container/cluster finance-production && gcloud container clusters get-credentials --region=europe-west3 finance-production ``` Some useful links for diagnostics: [GCP - MemoryStore](https://kiwicom.datadoghq.com/dashboard/x5a-7pa-zgx/gcp---memorystore?from_ts=1619077094464&live=true&to_ts=1619163494464) [Databases Dashboard](https://kiwicom.datadoghq.com/dashboard/lists?q=cloudSQL) Kubens for switching kubernetes namespaces [Kubens + kubectx](https://github.com/ahmetb/kubectx) ### K9s Install [K9s](https://k9scli.io/topics/install/) for better cluster management. ### PyPi Ask for access to `pypi` in `#plz-access`, you will receive credentials in 1Password. You can use the credentials at [PyPi webpage](https://pypi.skypicker.com). **BE CAREFUL** because the password you will get will be easily visible in the `pip.conf` file, be sure not to use the password anywhere else. ### Vault Install Vault by following the instructions [here](https://learn.hashicorp.com/tutorials/vault/getting-started-install). Ask your manager to add you to the correct org structure in KiwiHub. ### Jira Ask for access to `jira` in `#plz-access`, then ask your manager or PM to add you to the project team. You can login to vault [here](https://vault.skypicker.com). ### Gitlab You have to login first for an account to be created. Your manager should then set access rights to the **developer** role, for the [finance](https://gitlab.skypicker.com/finance) gitlab group. In case of an acquiring team member, your manager should set the **maintainer** role in the [In payments](https://gitlab.skypicker.com/finance/payments-in) gitlab group. You will also need to add an SSH key to your gitlab account. [Instructions for Linux](https://www.youtube.com/watch?v=iXuIp5uNnLk) / [Instructions for Windows](https://www.youtube.com/watch?v=Vmt0V6a3ppE) ### Python For managing python version the team is using pyenv. For dependencies, we are slowly moving towards poetry. ### Datadog Access datadog via okta, developers have access by default. - [Fintech dashboards](https://kiwicom.datadoghq.com/dashboard/lists/manual/72570) ### Miro Access via okta. Check if you are in [Fintech team](https://miro.com/app/settings/team/3458764518936870958/users). ### Sentry Follow platform handbook, [Sentry - How can I start using it?](../../handbook/tooling/observability/sentry.md#how-can-i-start-using-it). Join the team #fintech-acquiring and check it [here](https://kiwicom.sentry.io/settings/teams/fintech-acquiring/members/) ### GPT-4 for company use Go to [librechat](https://librechat.skypicker.com/c/new) ### Google drive and Google mailing groups Send a request to access the `FinTech` and `Fintech devs` shared drives to **Mirka Mizeráková** ([slack](https://skypicker.slack.com/team/U03HWUA73TN)). The request to join the inpayments.dev@kiwi.com mailing group should also be sent to Mirka. In case she is offline or unavailable send a message in `#plz-eus`. ### Debug mode at kiwi.com website - [In the kiwi.wiki](https://kiwi.wiki/qa/guides/qa/test-booking/#test-booking-confirmation) you can find how to create a test booking that goes to sandbox. TL;DR: `enable_magic` query param. ### Domain knowledge Your onboarding buddy is expected to go over the following terms with you. Fill in any additional information you find useful. Outdated materials: + [payment process](https://kiwi.wiki/fintech/acquiring/payment-process/) + [payment flows](https://kiwi.wiki/fintech/acquiring/paymentflows/) Order: + identified by: + order_id + bid + unpaid + paid + cancelled Payment methods: + credit cards + Zooz + partners: + payu, credorax + Ixopay + partners + volt + APM - alternative payment method + apple pay + revolut + PayPal + AliPay + google pay + Credits + are done solely through BBE and do not show up in our services Payment: + states: + init + authorize + capture + void + refund + for APMs states like authorize and capture might be merged into one + PCI Fraud: + stage + __pre-auth__ + outcome: + authorize + authorize with 3DS + authorize with 3DS challenge + decline + __post-auth__ + approve + decline + __3DS-challenge__ + authorize + decline + liability shift + riskified, forter + no-shift: + identiq (WIP) Post-payment: + reconciliation + chargebacks + fraud reports + settlements Supporting services: + currency rates + kantox, openexchangerates + promocodes + invoices + client configuration [A podcast](https://www.acquired.fm/episodes/visa) (with transcript!) about Visa and banking industry in general, very digestible for a newbie. ### Glossary of usfeul links Those links may duplicate the ones in the previous sections, but grouped here for convenience. - [all kiwi infrastructure](https://kiwicom.atlassian.net/browse/INP-3625) - [acq infrastructure](https://miro.com/app/board/uXjVMHvrAs4=/) - [fintech wiki](https://kiwi.wiki/fintech/tribe/) - [learning basics](https://kiwi.wiki/fintech/tribe/basics/) - [how kiwi works (very legacy)](https://drive.google.com/file/d/1hJobuXpPMLE6eFzp-25U1QU0vWx8Wexb/view) - [scrooge tech description](https://docs.google.com/document/d/1J_3wpJzq45sow7z3YLBmNH6XGfRvuyXwGXZzLJ_Qju8/edit#heading=h.l110hdk1xopz) - [fintech knowledge share]([https://kiwi.zoom.us/rec/share/olJ-4qNwRdJkpXdnIwBRHKWjV4czM_UwFXWmRj20dxG_AEA129PvBv9ffZI0ayPU.gOtof__xtaIpcc_u](https://kiwi.zoom.us/rec/share/olJ-4qNwRdJkpXdnIwBRHKWjV4czM_UwFXWmRj20dxG_AEA129PvBv9ffZI0ayPU.gOtof__xtaIpcc_u)) - Passcode: !wNTKvh9 - [monitoring](https://kiwicom.datadoghq.com/dashboard/lists/manual/72570) - [PCI diagram](https://miro.com/app/board/uXjVMHsYaF8=/) - [how to start BBE](https://kiwi.wiki/booking/features/general/booking-services/#17-starting-api-servers) - [bbe introductory presentation](https://docs.google.com/presentation/d/1s5G554Y2hqP3KYViBVFd4Au_xJOjYLuRdclLTGKgopw/edit#slide=id.g29da1d1ce01_0_144) ### Q&A This section is something that we already asked, so that you don't have to :) #### Accesses > Q: can you have vault write access during the probation period A: NO! --- #### BBE > Q: how to start BBE? A: https://kiwi.wiki/booking/features/general/booking-services/#17-starting-api-servers --- > Q: is there any introductory presentation? A: https://docs.google.com/presentation/d/1s5G554Y2hqP3KYViBVFd4Au_xJOjYLuRdclLTGKgopw/edit#slide=id.g6d9253ae77_0_0 --- #### Releases > Q: how to deploy scrooge? (many other repos follow the same principle) A: several steps (requires having an unmerged and approved MR + should be tested somehow - QA or manually) 1. acquire locks in both `#fintech-acquiring-sandbox-releasers` and `#fintech-acquiring-prod-releasers` channels (50-60 minutes can be ok) 2. run the staging pipeline 3. run the QAA pipeline (may take a lot of time). this pipeline could fail, because of some flaky tests. may need to restart, all of the steps should be run as the prerequisite of the prod release 4. release the prod 5. monitor the release here: [https://kiwicom.datadoghq.com/dashboard/lists/manual/72570](https://kiwicom.datadoghq.com/dashboard/lists/manual/72570) 6. merge the branch into master (squash if needed) 7. release the locks if all is ok --- #### Tokenization > Q: what is tokenization, why is it needed and how it works A: OK, tokenization is used so that services like scrooge and scrooge ng don't deal with credit card data directly why is that a problem? because Visa and Mastercard audit our systems and if they find that we are not being extremely careful with that data, we could be expelled from the system. As in not being able to accept cards online.That said, what we can do is have a tiny environment, isolated from the rest, heavily secured, responsible for storing that data, and providing the other services with an associated token that we can work with. that's what the PICI, or PCI --- > Q: who can have access and what is required A: you won't have access yet to that service, because you need to pass some training, provide criminal records. Serious stuff --- > Q: do i understand that the flow is the following? - user wants to pay with a method that requires them to enter their card details (what are those methods btw?) - those data then are transferred from client directly to the pici service - pici service then directs those data to ... (where?) - we receive the tokenized data (scrooge recieves them?) - those data are sent to some 3rd party provider >such a system allows us to not pass sensitive information across the wire and through our servers, but just the tokenized version. is this correct? is pici self written service? is it using some 3rd party lib/service for tokenization? since 3rd party providers have to somehow decrypt/detokenize the user data A: some general answer can be provided with this diagram: [https://miro.com/app/board/uXjVMHsYaF8=/](https://miro.com/app/board/uXjVMHsYaF8=/) --- > Q: for what cases is PICI used? A: only for card payments and not any other 3rd party provider (like apple pay, gpay, etc)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully