Project

General

Profile

New Function #79

Updated by Deca Park about 1 year ago

<p>1.<strong>[Scheduler] <p>1.[Scheduler] VBank Payment Expire Scheduler</strong></p> Scheduler</p> 

 <p style="margin-left: 40px;">1.reference<br 40px;">0.reference<br /> 
 &nbsp; -&nbsp;non-violent #9874-note#18<br /> 
 2.crontab<br 1.crontab<br /> 
 &nbsp; - execute per 1 hour<br /> 
 3.logic<br 2.logic<br /> 
 &nbsp; 1) SELECT st_order_payment with payment_status = &#39;PS20&#39; (wait deposit)<br /> 
 &nbsp; &nbsp; a) get va_due_date<br /> 
 &nbsp; &nbsp; b) if current datetime &gt; va_due_date<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp;b-1) UPDATE st_order_payment<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- payment_status = &#39;PS22&#39; (deposit expire)<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- mod_date / mod_user_no = NULL<br /> 
 &nbsp; &nbsp;* 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 /> 
 &nbsp; https://docs.tosspayments.com/guides/learn/virtual-account-webhook<br /> 
 <br /> 
 2.make web hook endpoint to receive event payload from PG<br /> 
 &nbsp; 1) URL: {domain}/hook<br /> 
 &nbsp; &nbsp; - permitAll (don&#39;t check authentication)<br /> 
 <br /> 
 3.DEPOSIT_CALLBACK event payload data (JSON) from PG<br /> 
 &nbsp; &nbsp; [example]<br /> 
 &nbsp; &nbsp; {<br /> 
 &nbsp;&nbsp; &nbsp; &nbsp;createdAt: &#39;2023-05-23T14:42:26.000000&#39;,<br /> 
 &nbsp;&nbsp; &nbsp; &nbsp;secret: &#39;ps_Z1aOwX7K8mYpalqAGRwj8yQxzvNP&#39;,<br /> 
 &nbsp;&nbsp; &nbsp; &nbsp;orderId: &#39;3f9c765d-60ed-4735-8af5-ab9d1142a3e8&#39;,<br /> 
 &nbsp;&nbsp; &nbsp; &nbsp;status: &#39;DONE&#39;,<br /> 
 &nbsp;&nbsp; &nbsp; &nbsp;transactionKey: &#39;83B3CD71DF004878066FEDCB7C21E775&#39;<br /> 
 &nbsp;&nbsp; &nbsp;}<br /> 
 <br /> 
 4.process Logic<br /> 
 &nbsp; 1) SELECT DB (st_order_payment)<br /> 
 &nbsp; &nbsp; &nbsp; condition: order_no = {orderId param}<br /> 
 &nbsp; 2) <strong>if No data OR {pg_secret} != {secret param}, SKIP<br /> 
 &nbsp; &nbsp; &nbsp; - response status(200) ok</strong><br /> 
 &nbsp; 3) if {pg_secret} = {secret param}<br /> 
 &nbsp; &nbsp; &nbsp;a) if {status param} = &#39;DONE&#39;<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; UPDATE DB (st_order_payment)<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - payment_status = &#39;PS21&#39;, va_proc_date = {current date}<br /> 
 &nbsp; &nbsp; &nbsp;b) if {status param} = &#39;WAITING_FOR_DEPOSIT&#39;<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; UPDATE DB (st_order_payment)<br /> 
 &nbsp; &nbsp; &nbsp; &nbsp; - payment_status = &#39;PS23&#39;, va_proc_date = {current date}<br /> 
 &nbsp; 4) response status(200) ok</p> constant&nbsp;</p> 

Back