37 lines
No EOL
13 KiB
XML
37 lines
No EOL
13 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="692px" preserveAspectRatio="none" style="width:626px;height:692px;background:#FFFFFF;" version="1.1" viewBox="0 0 626 692" width="626px" zoomAndPan="magnify"><defs><filter height="300%" id="fozv35fmdzu27" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fozv35fmdzu27)" height="281.75" style="stroke:#000000;stroke-width:2.0;" width="602" x="10" y="309.3516"/><rect fill="#FFFFFF" filter="url(#fozv35fmdzu27)" height="118.2422" style="stroke:#000000;stroke-width:2.0;" width="319.5" x="282.5" y="392.2832"/><rect fill="#FFFFFF" height="73.5762" style="stroke:none;stroke-width:1.0;" width="602" x="10" y="517.5254"/><line style="stroke:#A80036;stroke-width:1.0;" x1="49" x2="49" y1="88.4883" y2="274.3516"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="49" x2="49" y1="274.3516" y2="302.3516"/><line style="stroke:#A80036;stroke-width:1.0;" x1="49" x2="49" y1="302.3516" y2="608.1016"/><line style="stroke:#A80036;stroke-width:1.0;" x1="194" x2="194" y1="88.4883" y2="274.3516"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="194" x2="194" y1="274.3516" y2="302.3516"/><line style="stroke:#A80036;stroke-width:1.0;" x1="194" x2="194" y1="302.3516" y2="608.1016"/><line style="stroke:#A80036;stroke-width:1.0;" x1="357.5" x2="357.5" y1="88.4883" y2="274.3516"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="357.5" x2="357.5" y1="274.3516" y2="302.3516"/><line style="stroke:#A80036;stroke-width:1.0;" x1="357.5" x2="357.5" y1="302.3516" y2="608.1016"/><line style="stroke:#A80036;stroke-width:1.0;" x1="559" x2="559" y1="88.4883" y2="274.3516"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="559" x2="559" y1="274.3516" y2="302.3516"/><line style="stroke:#A80036;stroke-width:1.0;" x1="559" x2="559" y1="302.3516" y2="608.1016"/><rect fill="#FEFECE" filter="url(#fozv35fmdzu27)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="54" x="20" y="53"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="40" x="27" y="73.5352">Stripe</text><rect fill="#FEFECE" filter="url(#fozv35fmdzu27)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="54" x="20" y="607.1016"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="40" x="27" y="627.6367">Stripe</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="40" x="171" y="85.5352">Client</text><ellipse cx="194" cy="15" fill="#FEFECE" filter="url(#fozv35fmdzu27)" rx="8" ry="8" style="stroke:#A80036;stroke-width:2.0;"/><path d="M194,23 L194,50 M181,31 L207,31 M194,50 L181,65 M194,50 L207,65 " fill="none" filter="url(#fozv35fmdzu27)" style="stroke:#A80036;stroke-width:2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="40" x="171" y="620.6367">Client</text><ellipse cx="194" cy="633.5898" fill="#FEFECE" filter="url(#fozv35fmdzu27)" rx="8" ry="8" style="stroke:#A80036;stroke-width:2.0;"/><path d="M194,641.5898 L194,668.5898 M181,649.5898 L207,649.5898 M194,668.5898 L181,683.5898 M194,668.5898 L207,683.5898 " fill="none" filter="url(#fozv35fmdzu27)" style="stroke:#A80036;stroke-width:2.0;"/><rect fill="#FEFECE" filter="url(#fozv35fmdzu27)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="127" x="292.5" y="53"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="113" x="299.5" y="73.5352">stripe-payments</text><rect fill="#FEFECE" filter="url(#fozv35fmdzu27)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="127" x="292.5" y="607.1016"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="113" x="299.5" y="627.6367">stripe-payments</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="526" y="85.5352">Tracking</text><path d="M541,36 C541,26 559,26 559,26 C559,26 577,26 577,36 L577,62 C577,72 559,72 559,72 C559,72 541,72 541,62 L541,36 " fill="#FEFECE" filter="url(#fozv35fmdzu27)" style="stroke:#000000;stroke-width:1.5;"/><path d="M541,36 C541,46 559,46 559,46 C559,46 577,46 577,36 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60" x="526" y="620.6367">Tracking</text><path d="M541,633.5898 C541,623.5898 559,623.5898 559,623.5898 C559,623.5898 577,623.5898 577,633.5898 L577,659.5898 C577,669.5898 559,669.5898 559,669.5898 C559,669.5898 541,669.5898 541,659.5898 L541,633.5898 " fill="#FEFECE" filter="url(#fozv35fmdzu27)" style="stroke:#000000;stroke-width:1.5;"/><path d="M541,633.5898 C541,643.5898 559,643.5898 559,643.5898 C559,643.5898 577,643.5898 577,633.5898 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><polygon fill="#A80036" points="346,115.7988,356,119.7988,346,123.7988,350,119.7988" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="194" x2="352" y1="119.7988" y2="119.7988"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="105" x="201" y="115.0566">Initiate purchase</text><polygon fill="#A80036" points="547,145.1094,557,149.1094,547,153.1094,551,149.1094" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="358" x2="553" y1="149.1094" y2="149.1094"/><text fill="#0000FF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="365" y="144.3672">Store incomplete purchase</text><polygon fill="#A80036" points="60,174.4199,50,178.4199,60,182.4199,56,178.4199" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="54" x2="357" y1="178.4199" y2="178.4199"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="139" x="66" y="173.6777">Create payment intent</text><polygon fill="#A80036" points="547,203.7305,557,207.7305,547,211.7305,551,207.7305" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="358" x2="553" y1="207.7305" y2="207.7305"/><text fill="#0000FF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="164" x="365" y="202.9883">Store incomplete payment</text><polygon fill="#A80036" points="205,233.041,195,237.041,205,241.041,201,237.041" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="199" x2="357" y1="237.041" y2="237.041"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="140" x="211" y="232.2988">Return payment intent</text><polygon fill="#A80036" points="60,262.3516,50,266.3516,60,270.3516,56,266.3516" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="54" x2="193" y1="266.3516" y2="266.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121" x="66" y="261.6094">Complete purchase</text><path d="M10,309.3516 L72,309.3516 L72,316.3516 L62,326.3516 L10,326.3516 L10,309.3516 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="281.75" style="stroke:#000000;stroke-width:2.0;" width="602" x="10" y="309.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17" x="25" y="322.9199">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="51" x="87" y="321.9863">[Success]</text><polygon fill="#A80036" points="346,343.9727,356,347.9727,346,351.9727,350,347.9727" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="49" x2="352" y1="347.9727" y2="347.9727"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="168" x="56" y="343.2305">payment_intent.succeeded</text><polygon fill="#A80036" points="547,373.2832,557,377.2832,547,381.2832,551,377.2832" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="358" x2="553" y1="377.2832" y2="377.2832"/><text fill="#008000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="70" x="365" y="372.541">Store event</text><path d="M282.5,392.2832 L344.5,392.2832 L344.5,399.2832 L334.5,409.2832 L282.5,409.2832 L282.5,392.2832 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.0;"/><rect fill="none" height="118.2422" style="stroke:#000000;stroke-width:2.0;" width="319.5" x="282.5" y="392.2832"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17" x="297.5" y="405.8516">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="172" x="359.5" y="404.918">[Event not previously handled]</text><polygon fill="#A80036" points="547,426.9043,557,430.9043,547,434.9043,551,430.9043" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="358" x2="553" y1="430.9043" y2="430.9043"/><text fill="#0000FF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="177" x="365" y="426.1621">Mark payment as succeeded</text><line style="stroke:#A80036;stroke-width:1.0;" x1="358" x2="400" y1="460.2148" y2="460.2148"/><line style="stroke:#A80036;stroke-width:1.0;" x1="400" x2="400" y1="460.2148" y2="473.2148"/><line style="stroke:#A80036;stroke-width:1.0;" x1="359" x2="400" y1="473.2148" y2="473.2148"/><polygon fill="#A80036" points="369,469.2148,359,473.2148,369,477.2148,365,473.2148" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="97" x="365" y="455.4727">Fulfill purchase</text><polygon fill="#A80036" points="547,498.5254,557,502.5254,547,506.5254,551,502.5254" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="358" x2="553" y1="502.5254" y2="502.5254"/><text fill="#0000FF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="163" x="365" y="497.7832">Mark purchase as fulfilled</text><line style="stroke:#000000;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="10" x2="612" y1="518.5254" y2="518.5254"/><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="46" x="15" y="529.1602">[Failure]</text><polygon fill="#A80036" points="346,549.791,356,553.791,346,557.791,350,553.791" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="49" x2="352" y1="553.791" y2="553.791"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="198" x="56" y="549.0488">payment_intent.payment_failed</text><polygon fill="#A80036" points="547,579.1016,557,583.1016,547,587.1016,551,583.1016" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="358" x2="553" y1="583.1016" y2="583.1016"/><text fill="#008000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="70" x="365" y="578.3594">Store event</text><!--MD5=[176981090f34ddfd3eb7516e48f27bf6]
|
|
@startuml
|
|
participant Stripe
|
|
actor Client
|
|
participant "stripe-payments" as Backend
|
|
database Tracking
|
|
|
|
Client -> Backend: Initiate purchase
|
|
Backend -> Tracking : <font color="blue">Store incomplete purchase</font>
|
|
Backend -> Stripe : Create payment intent
|
|
Backend -> Tracking : <font color="blue">Store incomplete payment</font>
|
|
Backend -> Client : Return payment intent
|
|
Client -> Stripe : Complete purchase
|
|
...
|
|
alt Success
|
|
Stripe - - -> Backend : payment_intent.succeeded
|
|
Backend -> Tracking : <font color="green">Store event</font>
|
|
alt Event not previously handled
|
|
Backend -> Tracking : <font color="blue">Mark payment as succeeded</font>
|
|
Backend -> Backend : Fulfill purchase
|
|
Backend -> Tracking : <font color="blue">Mark purchase as fulfilled</font>
|
|
end
|
|
else Failure
|
|
Stripe - -> Backend : payment_intent.payment_failed
|
|
Backend -> Tracking : <font color="green">Store event</font>
|
|
end
|
|
|
|
@enduml
|
|
|
|
PlantUML version 1.2021.10(Mon Aug 30 09:43:48 EDT 2021)
|
|
(GPL source distribution)
|
|
Java Runtime: Java(TM) SE Runtime Environment
|
|
JVM: Java HotSpot(TM) 64-Bit Server VM
|
|
Default Encoding: UTF-8
|
|
Language: en
|
|
Country: US
|
|
--></g></svg> |