@cocreate/stripe
Version:
A simple stripe component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.
246 lines (218 loc) • 16.4 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CoCreate-api Documentation | CoCreateJS </title>
<link rel="icon" type="image/png" sizes="32x32" href="https://cocreate.app/images/favicon.ico">
<meta name="description" content="A simple HTML5 and pure javascript component. Easy configuration using HTML5 attributes or Javscript api and highly styleable." />
<meta name="keywords" content="helper classes, utility classes, css framework, css library, inline style classes" />
<meta name="robots" content="index,follow" />
<meta property="og:image" content="https://cdn.cocreate.app/docs/stripe.png">
<!-- CoCreate CSS -->
<link rel="stylesheet" href="" type="text/css"/>
<link rel="stylesheet" href="/docs/index.css" array="files" object="60888216117c640e7596303f" key="src" type="text/css" save="true"/>
<link rel="manifest" href="/manifest.webmanifest" />
</head>
<body>
<nav class="nav display:flex align-items:center left:0px background:whitesmoke padding-top:10px padding-bottom:10px" content_id="content" scroll="sticky-nav,hide-nav" scroll-up="10" scroll-down="10" array="files" object="60395ef42b3ac232657040fd" key="src">
</nav>
<sidenav id="menuL" class="position:fixed top:0px left:0px overflow:hidden background:whitesmoke height:100vh width:0px width:300px@xl" resizable resize-query="[content_id='content']" resize-property="margin-left" resize-value="width">
<menu array="files" object="603717b07de7fb350ae9fec8" key="src"></menu>
<div resize="right"></div>
</sidenav>
<main class="padding-top:15px padding:15px@lg@xl" content_id="content" id="cocreate-api">
<div class="display:flex flex-wrap:wrap justify-content:space-between position:relative margin:10px">
<div class="display:flex align-items:center">
<h2>CoCreate-api</h2>
</div>
<div class="display:flex align-items:center font-size:20px position:absolute right:0 padding:5px background:white">
<div class="display:flex align-items:center transition:0.3s padding-left:10px" share-network="true" share-text="Enter decription here" share-title="testing im a title" share-height="600" share-width="700" share-media="https://cdn.cocreate.app/docs/stripe.png" hover="display:block!important" hover-query=".social-networks">
<div class="display:none social-networks">
<a class="margin-right:15px" share-network="twitter" title="Share on twitter"><i src="/assets/svg/twitter.svg"></i></a>
<a class="margin-right:15px" share-network="facebook" title="Share on Facebook"><i src="/assets/svg/facebook.svg"></i></a>
<a class="margin-right:15px" share-network="instagram" title="Share on instagram"><i src="/assets/svg/instagram.svg"></i></a>
</div>
<a class="margin-right:15px" share-network="share" title="Share on share"><i src="/assets/svg/share-alt.svg"></i></a>
</div>
<a href="https://github.com/CoCreate-app/CoCreate-api" target="_blank" class="margin-right:15px"><i src="/assets/svg/github.svg"></i></a>
</div>
</div>
<h1 class="max-width:500px margin:20px_10px line-height:1.5 font-size:16px font-weight:100">In this section we will use cocreate-api to create a customer and send dynamic data from the frontEnt to the Websocket.</h1>
<div id="api-section" class="display:flex flex-wrap:wrap">
<div class="flex-grow:1 width:400px width:300px@xs padding:0px_10px margin-top:60px">
<div id="stripe-install" class="border-bottom:1px_solid_lightgrey" scroll scroll-intersect="color:dodgerblue" scroll-query="#stripe-install-section">
<span class="display:flex align-items:center width:fit-content" hover="display:block!important" hover-query="[href='#stripe-install']">
<h2 class="padding:5px_0px">Install</h2>
<a class="margin-left:10px display:none" href="#stripe-install"><i src="/assets/svg/link.svg"></i></a>
</span>
</div>
<pre><code class="language-bash">npm i @cocreate/api</code></pre>
<p class="padding:10px_0px line-height:1.5">Or you can use cdn link:</p>
<pre><code class="language-html"><script>https://cdn.cocreate.app/stripe/latest/CoCreate-api.min.js</script></code></pre>
<div id="stripe-usage" class="margin-top:80px border-bottom:1px_solid_lightgrey" scroll scroll-intersect="color:dodgerblue" scroll-query="#stripe-usage-section">
<span class="display:flex align-items:center width:fit-content" hover="display:block!important" hover-query="[href='#stripe-usage']">
<h2 class="padding:5px_0px">Usage</h2>
<a class="margin-left:10px display:none" href="#stripe-usage"><i src="/assets/svg/link.svg"></i></a>
</span>
</div>
<div class="">
<p class="padding:10px_0px line-height:1.5">According to the usage of the official documentation of stripe <a href="https://stripe.com/docs/api/customers/list" target="_blank" >LIST_CUSTOMER</a> </p>
<div class="flex-grow:1 min-width:300px width:100%">
<pre>
<code class="language-js">
Name-file : index-connect.html
<form realtime="true" id="customer-form" array="modules">
<button class='listCustomersBtn'>Click getList</button>
</form>
</code>
</pre>
</div>
<p class="padding:10px_0px line-height:1.5">The code, used for the front-end custom classAs can be seen, we only edit the parameter of the class where the css selector for the trigger buttons is registered <b>classBtns</b></p>
<div class="flex-grow:1 min-width:300px width:100%">
<pre>
<code class="language-js">
Name-file = Cocreate-stripe.js
var CocreateStripeAPi = function() {
...........
this.classBtns = ['.listCustomersBtn']
...........
}
</code>
</pre>
</div>
<p class="padding:10px_0px line-height:1.5">Only, we will show the interesting parts of the code, since in the index we show the general configuration of the websocket endpoint</p>
<div class="flex-grow:1 min-width:300px width:100%">
<pre>
<code class="language-js">
Name-file = Cocreate-stripe.js
........
switch (type) {
	case '.listCustomersBtn':
	const customers = await stripe.customers.list({limit: 3,});
utils.send_response(that.wsManager,socket,{"type":type,"response":customers},send_response)
break;
}
........
</code>
</pre>
</div>
<p class="padding:10px_0px line-height:1.5">If you have done everything right you will have an answer similar to this</p>
<p class="padding:10px_0px line-height:1.5"><img src="img/list_customer1.png"></p>
<p class="padding:10px_0px line-height:1.5">But now we need to handle this result in our custom front-end class</p>
<div class="flex-grow:1 min-width:300px width:100%">
<pre>
<code class="language-js">
Name-file = Cocreate-stripe.js
var CocreateStripeAPi = function() {
...........
this.setResult = function(data) {
if (typeof(data["type"]) != 'undefined'){
let type = data["type"];
switch(type){
case '.listCustomersBtn':
console.log(".listCustomersBtn frontEnd", data)
break;
}
}
}
...........
} </code>
</pre>
</div>
<p class="padding:10px_0px line-height:1.5">For this case we will use a template, which will be filled with the data obtained by the webSocket using CocreateRender</p>
<div class="flex-grow:1 min-width:300px width:100%">
<pre>
<code class="language-js">
<div template_id="abc1" array="render_test">
<div class="template card card margin:10px "
value="{{render2.data._id}}"
template_id="abc1"
render="render2.data">
<div class="display:flex justify-content:space-between align-items:center width:100%">
<div class="display:flex">
<div class="display:flex align-items:center">
<span class="icon status font-size:20px margin-right:10px"></span>
</div>
<div class="display:flex align-items:center flex-wrap:wrap">
<h3 class="margin-right:10px" value="{{render2.data.id}}">ID</h3>
<span class="margin-right:10px" value="{{render2.data.email}}">email</span>
</div>
</div>
</div>
</div>
</div>
</code>
</pre>
</div>
<p class="padding:10px_0px line-height:1.5">To capture the data that the webocket responds to, we must override the setResult method, here all the responses from a specific endpoint will arrive for this specific example, our enpoint is stripe, and our typeRequest is listCustomersBtn</p>
<div class="flex-grow:1 min-width:300px width:100%">
<pre>
<code class="language-js">
this.setResult = function(data) {
if (typeof(data["type"]) != 'undefined'){
let type = data["type"];
switch(type){
case '.listCustomersBtn':
CoCreate.render.data('[template=abc1]',{
render2: {
data: data.response.data
}
});//end Render
break;
}
}
}
</code>
</pre>
</div>
<p class="padding:10px_0px line-height:1.5">In the following image we see the result of the template on the left, and on the right the result that the websocket responds to the frontEnd</p>
<p class="padding:10px_0px line-height:1.5"><img src="img/list_customer3.png"></p>
<p class="padding:10px_0px line-height:1.5">Here we list the methods that can be overridden of the cocreate-api class, to control the data according to the life cycle</p>
<p class="padding:10px_0px line-height:1.5">
<ul>
<li>preview_validate_btn(btn,event) : Ideal for front-end validations, false should be returned in case the client's input does not comply with its validation logic</li>
<li>setResult(data) : We use this method to manipulate the data once it reaches the frontEnd</li>
<li>manipulateDataToSend(btn,data) : all methods are optional, this method is only used in case you want to manipulate the data or change the format of a variable before sending it the websocket</li>
</ul>
</p>
</div>
</div>
<div class="flex-grow:1 width:300px padding:0px_10px margin-top:60px border-bottom:1px_solid_lightgrey">
<!-- SandBox -->
<div id="stripe-demo" class="border-bottom:1px_solid_lightgrey" scroll scroll-intersect="color:dodgerblue" scroll-query="#stripe-demo-section">
<span class="display:flex align-items:center width:fit-content" hover="display:block!important" hover-query="[href='#stripe-demo']">
<h2 class="padding:5px_0px">Demo</h2>
<a class="margin-left:10px display:none" href="#stripe-demo"><i src="/assets/svg/link.svg"></i></a>
</span>
</div>
<div class="position:sticky top:0 padding:15px_0px height:100vh">
<!-- SandBox -->
<div class="display:flex flex-direction:column position:relative overflow:hidden card border-radius:2px width:auto height:600px margin-top:20px" id="playground">
<div id="demo-code" resizable class="position:relative height:50%">
<textarea type="code" lang="html" array="demos" object="" key="demo" save="false" id="demo" input-query=".demopreview" input-attribute="value" input-events="input, onload" class="height:100% width:100% outline:none border:none resize:none padding:5px"></textarea>
<div resize="bottom" class="background:lightgrey"></div>
</div>
<div id="demo-preview" class="position:relative overflow:auto background-color:white">
<div class="demopreview padding:20px"></div>
</div>
<div class="font-size:20px position:absolute top:10px right:10px opacity:0.6">
<a class="margin-right:10px" id="eye" show="#eye-slash" hide="#eye, #demo-preview" toggle="code-height" toggle-query="#demo-code"><i class="height:18px" src="/assets/svg/eye.svg"></i></a>
<a class="margin-right:10px" hidden id="eye-slash" show="#eye, #demo-preview" hide="#eye-slash" toggle="code-height" toggle-query="#demo-code"><i src="/assets/svg/eye-slash.svg"></i></a>
<a class="margin-right:10px" id="code" show="#code-slash" hide="#code, #demo-code"><i src="/assets/svg/code.svg"></i></a>
<a class="margin-right:10px" hidden id="code-slash" show="#code, #demo-code" hide="#code-slash"><i class="height:18px" src="/assets/svg/code.svg"></i></a>
<a class="margin-right:5px" fullscreen fullscreen-query="#playground"></a>
</div>
</div>
<!-- End SandBox -->
</div>
</div>
</div>
<button href="https://github.com/CoCreate-app/CoCreate-stripe/tree/master/docs/index.html?message=docs%3A%20describe%20your%20change..." target="_blank" class="position:fixed bottom:15px right:15px padding:15px background:dodgerblue color:#fff font-size:1.5rem grow-hover border-radius:50% border-width:0 box-shadow:0px_2px_10px_0px_rgba(0,_0,_0,_0.4)">
<i src="/assets/svg/pencil-alt.svg"></i>
</button>
</main>
<script src="https://CoCreate.app/dist/CoCreate.js"></script>
</body>
</html>