美文网首页
uniapp中实现信用卡支付 - stripe.js

uniapp中实现信用卡支付 - stripe.js

作者: 没事走两步有事跑两步 | 来源:发表于2021-03-14 18:09 被阅读0次

准备

stripe.js

uniapp-H5-API

思路

  • 在选择支付方式的页面当选择信用卡支付时,跳转web-view到写好stripe.js的支付页面。
  • 引入wx-API和uni-API
  • <!-- 微信 JS-SDK  -->  
      <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>  
      <!-- uni 的 SDK -->
      <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js">          </script>```
    
  • 页面逻辑选择Jquery简单方便
  • 在用户点击支付后设置定时器循环查询支付是否成功
    • 成功失败分别跳转不同页面

代码

  • 动态创建<script>标签加载stripe.js
  •               let form = window.document.getElementById("formDom");
                  let script = window.document.createElement("script");
                  script.src = "https://checkout.stripe.com/checkout.js";
                  script.className = "stripe-button";
                  script.setAttribute('data-name', '*** store')
                  script.setAttribute('data-key', 'keyValue')
                  script.setAttribute('data-amount', 总金额)
                  script.setAttribute('data-description', 'yami store')
                  script.setAttribute('data-image',
                      'https://stripe.com/img/documentation/checkout/marketplace.png')
                  script.setAttribute('data-locale', 'auto')
                  script.setAttribute('data-currency', 'AUD')
                  form.appendChild(script);
              // 挂载stripe basePath
                  $.get(basePath + '/api/createCheckout', {
                      params: param
                  }, function(res) {
                      // console.log('stripe==GET', res)
                  })
    
  • 以上我们完成了stripe.js的配置,会自动生成一个支付按钮。点击按钮后他会自动走流程。

跳转

  • 接下来就是根据自己项目的业务逻辑进行跳转了。这没什么好说的,值得说的是引入uniapp-API
  • 需要监听事件UniAppJSBridgeReady
  •   document.addEventListener('UniAppJSBridgeReady', function() {
          // 至此可以使用uni的API
      })```
    
  • 需要注意的是,必须同时引入微信和uniapp两个API资源
  • 辟谣
  • 网上说使用本地static时无法加载uniapp-API,亲测可以加载。

自己写了一个解析url参数的方法分享一下

  •                   let getUrlName = (...args) => {
                      let currindex = curPath.indexOf('?')
                      let currStr = curPath.slice(currindex + 1)
                      let paramsArr = currStr.split('&')
                      let res = {}
                      if (currindex > 0) {
                          if (args.length === 0) {
                              paramsArr.map((item, index) => {
                                  let i = item.split('=')
                                  let key = i[0]
                                  res[key] = i[1]
                              })
                              return res
                          } else {
                              paramsArr.forEach((item, index) => {
                                  let i = item.split('=')
                                  let key = i[0]
                                  if (args.includes(key)) {
                                      res[key] = i[1]
                                  }
                              })
                              return res
                          }
                      } else {
                          return {
                              error: '参数错误'
                          }
                      }
                  }
    
    

总结:

  • 不难,就是遇到好多小坑。
  • 坑1: 在创建web-view时如果传入plusrequire:"none"将无法加载uniapp-API
  • 坑2: 就是上面说到的必须引入两个微信和uniapp

相关文章

网友评论

      本文标题:uniapp中实现信用卡支付 - stripe.js

      本文链接:https://www.haomeiwen.com/subject/spzqcltx.html