시나리오: 저번 포스팅에서 서버를 만들어봤습니다. 이번에는 API 호출을 통해서 패스를 만들어보도록 하겠습니다.
2023.11.17 - [iOS 캐기/토이 프로젝트] - [애플월렛 패스] 참가증, 쿠폰, 티켓 같은 패스 만들어 애플월렛에 넣어보기
2024.08.12 - [iOS 캐기/토이 프로젝트] - [애플월렛 패스] 참가증, 쿠폰, 티켓같은 패스 서버 API 호출로 생성하기- 개발환경 세팅
*Required
https://github.com/twopointone/applepassgenerator
파이썬 라이브러리로 제공 중인 applepassgenerator를 사용하여 구현했습니다.
이 코드는 FastAPI 웹 애플리케이션을 사용하여 Apple Wallet에서 사용할 수 있는 디지털 패스(예: 이벤트 티켓)를 생성하는 서버 애플리케이션입니다. 그럼 코드의 각 부분에 대한 설명을 시작하겠습니다.
from applepassgenerator.client import ApplePassGeneratorClient
from fastapi import FastAPI, HTTPException
from fastapi.responses import FileResponse
from applepassgenerator.models import EventTicket
import subprocess
import os
import logging
from cryptography.hazmat.primitives.serialization import pkcs12
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
- FastAPI: FastAPI는 빠르고 효율적인 웹 프레임워크로, 이 코드는 API 서버를 만드는데 사용됩니다.
- subprocess: 외부 프로그램(예: OpenSSL)을 실행하는 데 사용됩니다.
- os: 파일 경로 및 파일 작업에 사용됩니다.
- logging: 로그를 기록하는 데 사용됩니다.
- cryptography.hazmat: 인증서와 개인 키를 다루는 데 사용됩니다.
- applepassgenerator: Apple Wallet 패스를 생성하는 데 필요한 라이브러리입니다.
app = FastAPI()
CERTIFICATE_P12 = "certificate.p12"
CERTIFICATE_PEM = "certificate.pem"
PRIVATE_KEY_PEM = "privatekey_encrypted.pem"
WWDR_PEM = "WWDR.pem"
WWDR_CER = "WWDR.cer"
CERTIFICATE_PASSWORD = "{#CERTIFICATE_PASSWORD}"
OUTPUT_PASS_NAME = "atlas_demo.pkpass"
LOGO_FILE = "logo.png"
ICON_FILE = "icon.png"
BACKGROUND_FILE = "background.png"
THUMBNAIL_FILE = "thumbnail.png"
- 이 부분은 FastAPI 애플리케이션을 초기화하고, 필요한 파일 경로 및 설정 값을 정의합니다.
- CERTIFICATE_P12: 인증서가 포함된 P12 파일 경로.
- LOGO_FILE, ICON_FILE 등은 패스에 사용될 이미지 파일 경로를 정의합니다.
logging.basicConfig(level=logging.DEBUG)
- 이 부분은 로그의 기록 수준을 설정합니다. `DEBUG` 수준으로 설정되어 있어, 자세한 로그를 기록합니다.
def convert_cer_to_pem(cer_path, pem_path):
...
- CER 형식의 인증서를 PEM 형식으로 변환하는 함수입니다. OpenSSL을 사용하여 변환합니다.
def extract_certificate_and_key(p12_path, cert_out_path, key_out_path, password):
...
- P12 파일에서 인증서와 개인 키를 추출하여 PEM 형식으로 저장합니다.
@app.get("/generate_pass")
async def generate_pass():
...
- /generate_pass 경로로 접근하면, Apple Wallet 패스를 생성합니다.
- 패스에 표시될 정보(예: `EventTicket`)를 설정하고, Apple Pass에 필요한 데이터를 추가합니다.
- 인증서와 키 파일을 추출하고, 필요한 이미지 파일을 확인한 후, 최종적으로 Apple Pass 파일(`.pkpass`)을 생성합니다.
- 생성된 패스 파일을 클라이언트에게 반환합니다.
메인 로직은 다음 포스팅에서 확인할 수 있습니다.
ref.
https://github.com/twopointone/applepassgenerator
[애플월렛 패스] 참가증, 쿠폰, 티켓같은 패스 서버 API 호출로 생성하기- 인증서 관련 작업 정리 (0) | 2024.08.13 |
---|---|
[애플월렛 패스] 참가증, 쿠폰, 티켓같은 패스 서버 API 호출로 생성하기-기능구현 (0) | 2024.08.12 |
[애플월렛 패스] 참가증, 쿠폰, 티켓같은 패스 서버 API 호출로 생성하기- 개발환경 세팅 (0) | 2024.08.12 |
[애플월렛 패스] 참가증, 쿠폰, 티켓같은 패스 만들어 애플월렛에 넣어보기 (6) | 2023.11.17 |
[애플 라이다] LiDAR를 활용한 토이프로젝트 - 01 (0) | 2023.08.18 |
댓글 영역