New Function #79
Updated by Deca Park over 1 year ago
<p>1.<strong>[Scheduler] VBank Payment Expire Scheduler</strong></p> <p style="margin-left: 40px;">1.reference<br /> - non-violent #9874-note#18<br /> 2.crontab<br /> - execute per 1 hour<br /> 3.logic<br /> 1) SELECT st_order_payment with payment_status = 'PS20' (wait deposit)<br /> a) get va_due_date<br /> b) if current datetime > va_due_date<br /> b-1) UPDATE st_order_payment<br /> - payment_status = 'PS22' (deposit expire)<br /> - mod_date / mod_user_no = NULL<br /> * define fee_payment_status value as constant</p> <p>2<strong>.[API] VBank deposit complete process (가상계좌 웹훅)</strong></p> <p style="margin-left: 40px;">1.document<br /> https://docs.tosspayments.com/guides/learn/virtual-account-webhook<br /> <br /> 2.make <strong>Webhook endpoint</strong> to receive event payload from PG<br /> 1) URL: <strong>POST {domain}/hook</strong><br /> - permitAll (don't check authentication)<br /> <br /> 3.DEPOSIT_CALLBACK Webhook event data (JSON) from PG<br /> [example]<br /> {<br /> createdAt: '2023-05-23T14:42:26.000000',<br /> secret: 'ps_Z1aOwX7K8mYpalqAGRwj8yQxzvNP',<br /> orderId: '3f9c765d-60ed-4735-8af5-ab9d1142a3e8',<br /> status: 'DONE',<br /> transactionKey: '83B3CD71DF004878066FEDCB7C21E775'<br /> }<br /> <br /> 4.process Logic<br /> 1) SELECT DB (st_order_payment)<br /> condition: order_no = {orderId param}<br /> 2) <strong>if No data OR {pg_secret} != {secret param}, SKIP<br /> - response status(200) ok</strong><br /> 3) if {pg_secret} = {secret param}<br /> a) if {status param} =<strong> 'DONE'</strong><br = 'DONE'<br /> UPDATE DB (st_order_payment)<br /> - payment_status = <strong>'PS21'</strong>, 'PS21', va_proc_date = {current date}<br /> b) if {status param} =<strong> 'WAITING_FOR_DEPOSIT'</strong><br = 'WAITING_FOR_DEPOSIT'<br /> UPDATE DB (st_order_payment)<br /> - payment_status =<strong> 'PS23'</strong>, = 'PS23', va_proc_date = {current date}<br /> 4)<strong> 4) response status(200) ok</strong></p> ok</p>