PixWave是一種可擴展的高效能數位錢包微服務,旨在使用多網關架構透過PIX處理即時支付。該系統整合了多個支付網關,包括Mercado Pago和Gerencianet ,確保可靠性和無縫回退功能。透過在任何給定時刻動態選擇最可用的網關,PixWave 最大限度地減少停機時間並確保連續的支付處理。
架構具有彈性、模組化和可擴展性,使用Docker進行容器化,使用Kubernetes進行編排,使用Redis進行緩存,使用SNS進行非同步訊息傳遞,使用ELK 堆疊(Logstash、Elasticsearch、Kibana)進行集中日誌記錄和即時監控系統效能。
PixWave 遵循基於微服務的架構,其中關鍵元件(例如支付處理、用戶管理和交易監控)被解耦為獨立的服務。這種設計可以獨立擴展各個服務並對其進行維護,而不會影響整個系統。
PixWave的核心是其支付處理模組,旨在處理具有高可用性和容錯性的即時PIX交易。該系統整合了兩個主要支付網關: Mercado Pago和Gerencianet ,並採用智慧網關選擇機制。
PixWave 中的作業系統對於處理付款處理和重試等任務至關重要。透過非同步分派支付請求作業,PixWave 為使用者提供非阻塞體驗並提升整體系統回應能力。
PixWave 使用Redis進行緩存,以增強效能並減少主資料庫的負載。
Logstash和Elasticsearch用於管理集中式日誌記錄,提供對系統事件、錯誤和效能指標的即時洞察。
PixWave 使用SNS(簡單通知服務)在微服務之間進行訊息傳遞以及向外部系統發送通知。
首先,將 PixWave 儲存庫複製到本機:
git clone https://github.com/your-repository/pixwave.git
cd pixwave
將.env.example
檔案複製到.env
並配置環境變數。這些變數包括資料庫憑證、支付網關憑證(Mercado Pago 和 Gerencianet)以及其他服務的 API 金鑰:
cp .env.example .env
更新.env
檔案中的以下值:
DB_HOST
、 DB_PORT
、 DB_DATABASE
、 DB_USERNAME
、 DB_PASSWORD
– MySQL 資料庫設定。MERCADOPAGO_ACCESS_TOKEN
– Mercado Pago 存取令牌。GERENCIANET_CLIENT_ID
、 GERENCIANET_CLIENT_SECRET
、 GERENCIANET_PIX_KEY
– Gerencianet API 憑證。SNS_API_KEY
– 用於通知的 SNS API 金鑰。LOGSTASH_HOST
– Logstash 服務的主機(用於集中式日誌記錄)。執行以下命令來安裝所有必要的依賴項:
composer install
確保您的電腦上安裝了Docker 。然後,使用Docker Compose建置並運行必要的容器:
docker-compose up --build
該命令將啟動以下服務:
容器啟動並運行後,執行遷移以設定資料庫架構並播種一些初始資料:
docker exec -it laravel_app php artisan migrate --seed
產生應用程式加密金鑰,Laravel 使用該金鑰進行安全加密:
docker exec -it laravel_app php artisan key:generate
一切設定完畢後,您現在可以存取該應用程式。預設情況下,該應用程式將在http://localhost
上可用:
docker-compose up
在瀏覽器中造訪http://localhost
即可與 PixWave 系統互動。
PixWave 包含一個全面的測試套件。若要執行測試,請確保您位於 Docker 容器內或已設定本機環境。運行以下命令:
docker exec -it laravel_app php artisan test
這將執行單元和功能測試,以確保支付系統的功能,包括作業處理、網關回退和交易歷史管理。
連接埠衝突:如果遇到連接埠衝突(例如,系統上已執行 Redis 或 MySQL),請更新docker-compose.yml
檔案以變更預設連接埠對映。
權限錯誤:如果嘗試寫入日誌或儲存時出現權限問題,請透過執行以下命令確保storage/
和bootstrap/cache/
目錄可寫入:
sudo chmod -R 775 storage
sudo chmod -R 775 bootstrap/cache
容器重新啟動:如果容器重新啟動或無法執行,請檢查日誌以取得詳細的錯誤訊息:
docker-compose logs