feat: [barobill] SOAP 동기화 서비스 신규 구축

- BarobillSoapService: PHP SoapClient 기반 SOAP 래퍼 (회원/계좌/카드/인증서)
- BarobillBankSyncService: 은행 거래내역 SOAP 조회 → DB 캐시 동기화
- BarobillCardSyncService: 카드 거래내역 SOAP 조회 → DB 캐시 동기화
- HometaxSyncService: 홈택스 세금계산서 upsert 동기화
- BarobillSyncController: 동기화/회원/인증서/잔액 API 11개 엔드포인트
- SyncBarobillDataJob: 매일 06:00/06:30 자동 동기화 스케줄러
- BarobillController.status() 보강: 실제 계좌/카드 수 표시
This commit is contained in:
김보곤
2026-03-17 13:03:24 +09:00
parent ead546e268
commit 269a17b49c
9 changed files with 1727 additions and 5 deletions

View File

@@ -20,6 +20,7 @@
use App\Http\Controllers\Api\V1\BarobillCardTransactionController;
use App\Http\Controllers\Api\V1\BarobillController;
use App\Http\Controllers\Api\V1\BarobillSettingController;
use App\Http\Controllers\Api\V1\BarobillSyncController;
use App\Http\Controllers\Api\V1\BillController;
use App\Http\Controllers\Api\V1\CalendarController;
use App\Http\Controllers\Api\V1\CardController;
@@ -286,6 +287,22 @@
Route::get('/account-link-url', [BarobillController::class, 'accountLinkUrl'])->name('v1.barobill.account-link-url');
Route::get('/card-link-url', [BarobillController::class, 'cardLinkUrl'])->name('v1.barobill.card-link-url');
Route::get('/certificate-url', [BarobillController::class, 'certificateUrl'])->name('v1.barobill.certificate-url');
// SOAP 동기화 API
Route::post('/sync/bank', [BarobillSyncController::class, 'syncBank'])->name('v1.barobill.sync.bank');
Route::post('/sync/card', [BarobillSyncController::class, 'syncCard'])->name('v1.barobill.sync.card');
Route::post('/sync/hometax', [BarobillSyncController::class, 'syncHometax'])->name('v1.barobill.sync.hometax');
// SOAP 실시간 조회 API
Route::get('/accounts', [BarobillSyncController::class, 'accounts'])->name('v1.barobill.accounts');
Route::get('/cards', [BarobillSyncController::class, 'cards'])->name('v1.barobill.cards');
Route::get('/certificate', [BarobillSyncController::class, 'certificate'])->name('v1.barobill.certificate');
Route::get('/balance', [BarobillSyncController::class, 'balance'])->name('v1.barobill.balance');
// SOAP 회원관리 API
Route::post('/members', [BarobillSyncController::class, 'registerMember'])->name('v1.barobill.members.register');
Route::put('/members', [BarobillSyncController::class, 'updateMember'])->name('v1.barobill.members.update');
Route::get('/members/status', [BarobillSyncController::class, 'memberStatus'])->name('v1.barobill.members.status');
});
// Barobill Card Transaction API (바로빌 카드 거래 - React 연동)