支付-stripe

国外三大支付paypal,braintree,stripe,有兴趣可以去了解一下他们的区别。

支付宝和paypal基本只需要发送charge信息请求交给后端做就ok了,那么stripe前端也只需要收集卡信息,拿到token给后端就ok了。

那就来说说主角stripe支付:官方文档

stripe官方说分为六步,如下图:

step1: 收集卡信息  step2 :创建customer  step3:支付金额

step4和step5:计划(月付和年付等)

step6:成功

其实相对于普遍来说 step4和step5不用考虑,所有我们就只有4步。

前端stripe支付步骤:

1:引入stripe.js(为了方便测试,简便引入stripe.js,引入axios为了测试退款请求)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>测试stripe支付demo</title>
    <script src="https://js.stripe.com/v3/"></script>
    <script src="https://cdn.bootcss.com/axios/0.16.0/axios.min.js"></script>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>

2:接下来就是按照官方文档步骤走,粘贴复制,先创建页面收集卡信息。

  <div style="width: 60%;margin: 0 auto">
      <div>stripe demo支付demo</div>
      <form action="http://xxxxxxx/test/stripe/pay.json" method="post" id="payment-form">
        <div class="form-row">
          <label for="card-element">
            Credit or debit card
          </label>
          <div id="card-element" name="token">
            <!-- A Stripe Element will be inserted here. -->
          </div>
          <div style="margin-top: 20px">
            <input placeholder="请输入费用" name="charger"> USD
          </div>
          <!-- Used to display form errors. -->
          <div id="card-errors" role="alert"></div>
        </div>

        <button style="margin-top: 20px">Submit Payment</button>
      </form>

      <div>
        <div style="margin-top: 40px">测试退款(两个都请输入)</div>
        <input style="margin-top: 20px" placeholder="请输入退款的交易单号" v-model="value">
        <div style="margin-top: 20px">
          <input placeholder="请输入退款金额" v-model="charge">
        </div>
        <div style="margin-top: 20px">
          <button @click="refund">发起退款</button>
        </div>
      </div>
    </div>

3.创建stripe客户端,将stripe提供的卡页面内嵌到页面中,用于收集卡信息,然后监听form表单提交,阻止表单提交前先去给stripe交互。

     // Create a Stripe client.
        const stripe = Stripe(process.env.PUB_KEY);
        // Create an instance of Elements.
        var elements = stripe.elements();

        // Custom styling can be passed to options when creating an Element.
        // (Note that this demo uses a wider set of styles than the guide below.)
        var style = {
          base: {
            color: ‘#32325d‘,
            lineHeight: ‘18px‘,
            fontFamily: ‘"Helvetica Neue", Helvetica, sans-serif‘,
            fontSmoothing: ‘antialiased‘,
            fontSize: ‘16px‘,
            ‘::placeholder‘: {
              color: ‘#aab7c4‘
            }
          },
          invalid: {
            color: ‘#fa755a‘,
            iconColor: ‘#fa755a‘
          }
        };

        // Create an instance of the card Element.
        var card = elements.create(‘card‘, {style: style});

        // Add an instance of the card Element into the `card-element` <div>.
        card.mount(‘#card-element‘);

        var form = document.getElementById(‘payment-form‘);
        form.addEventListener(‘submit‘, function(event) {
          event.preventDefault();

          stripe.createToken(card).then(function(result) {
            if (result.error) {
              // Inform the customer that there was an error.
              var errorElement = document.getElementById(‘card-errors‘);
              errorElement.textContent = result.error.message;
            } else {
              stripeTokenHandler(result.token);
              // Send the token to your server.
            }
          });
        });

        function stripeTokenHandler(token) {
          // Insert the token ID into the form so it gets submitted to the server
          var form = document.getElementById(‘payment-form‘);
          var hiddenInput = document.createElement(‘input‘);
          hiddenInput.setAttribute(‘type‘, ‘hidden‘);
          hiddenInput.setAttribute(‘name‘, ‘stripeToken‘);
          hiddenInput.setAttribute(‘value‘, token.id);
          form.appendChild(hiddenInput);

          // Submit the form
          form.submit();
        }

一些stripe提供的样式:stripe element examples 地址

4.与stripe交互完之后,会得到stripe给你的token,你可以在写一些表单input拿到用户输入的信息和token表单提交submit一起传给服务器,后端得到token就可以创建customer了。  

这里展示下token信息:

那么我们就完成我们的任务的,接下来就是后端的工作了,注stripe支付是相当于主动拉,从信用卡主动扣款,不像支付宝是被动拉,需要用户主动发起付款支付(如转账,扫码) 

 

-----原创文章,?版权所有,转载请注明标明出处:http://www.cnblogs.com/doinbean

 

原文地址:https://www.cnblogs.com/doinbean/p/9320162.html

时间: 2024-10-11 21:59:35

支付-stripe的相关文章

API经济产业

技术大咖为我们铺好了前进道路,我们为什么还要敬而远之舍近索远呢?充分利用开源,利用API进行App有效整合. 为应用添加日志功能,Loggly; 为应用添加用户管理和身份认证模块,Stormpath; 不要把时间浪费在不必要的环节上, 面对紧张的竞争局面,我们必须充分且合理地分配资源,让自己尽可能地走在对手的前面 开源API清单 <1,认证/授权Authentication / Authorization> Stormpath—把应用中有关用户管理的部分都放心交给它好了,其功能包括:安全地存储

开发者应该了解的API技术清单

近几年,API经济纷纷崛起,无论是国外还是国内,众多厂商积极开放API.开发者很多时候是要借助这些API,才能轻松构建出一款应用,极大地提高开发效率和开发质量.文中整理了一份API服务清单,内容涵盖:监控/调试.CDN .数据库.仪表盘.支付.通信等方面! 从2011年开始,数据通过API开发出来已成为一种趋势,与此同时它也逐渐发成为企业的核心业务.据不完全统计,国外知名站点ProgrammableWeb收录的新API就达到数万个,而且还在不断增长中. 利用丰富的第三方API,开发者轻松构建出一

开发者应该了解的API技术清单!

英文原文:API-Driven Development 作为一名开发者,诚然编写代码如同作家提笔挥毫,非常有成就感与乐趣,但同时我也觉得删除代码是件不相伯仲的美事.为什么呢?因为在进行删除工作时,意味着自己找出了造成干扰的位置,意味着找到了冗余无用的代码,甚至是找到了能用更少代码实现相同功能的途径.代码越少,意味着出错的几率越低. 我的观点是:利用好第三方 API,减少自己的代码工作量,让出错的概率尽量降低.只有这样,我们才可以把更多精力放到更核心的开发工作或业务逻辑思考当中去. 我们没有想象中

【转】开发者应该了解的API技术清单

[转载贴] 作为一名开发者,诚然编写代码如同作家提笔挥毫,非常有成就感与乐趣,但同时我也觉得删除代码是件不相伯仲的美事.为什么呢?因为在进行删除工作 时,意味着自己找出了造成干扰的位置,意味着找到了冗余无用的代码,甚至是找到了能用更少代码实现相同功能的途径.代码越少,意味着出错的几率越低. 我的观点是:利用好第三方 API,减少自己的代码工作量,让出错的概率尽量降低.只有这样,我们才可以把更多精力放到更核心的开发工作或业务逻辑思考当中去. 我们没有想象中聪明 一名善于阅读和思考的程序员,想必是出

iOS-资源大全

本文由 伯乐在线 - ARIGATO 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:vsouza.欢迎加入翻译组. 这是个精心编排的列表,它包含了优秀的 iOS 框架.库.教程.XCode 插件.组件等等. 这个列表分为以下几个部分:框架( Frameworks ).组件( Components ).测试( Testing )和其他的开源项目,免费的和付费的服务.每个部分中的项目没有先后顺序,均是按照提交的先后顺序排列的. Swift 语言写成的项目会被标记为 ★ ,AppleWatch 的

Asp.net MVC集成stripe支付

1.注册Stripe账号 https://stripe.com 初始时账号是TEST模式,需要激活账号才能进入LIVE模式:点击 "Your Account" -> "Account Settings",出现如下弹出框: 如果是TEST模式,请使用Test Secret Key和Test Publishable Key,否则请使用LIVE相关的两个Key:具体如何使用,请继续往下看 2.安装Stripe 使用NuGet安装Stripe,通过搜索会找到Strip

Stripe一家神奇的支付公司

Stripe:一家成立仅仅7年但估值已达350亿美金的金融科技支付公司! KlipC前段时间参加金融科技展时统计了2019年最成功的Fintech(金融科技)公司,发现虽然每年Fintech公司都很多,但能持续盈利发展大部分都归类于:支付公司.说到支付公司在国外这几年最火的一家就是Stripe了. Stripe支付公司是由一对来自爱尔兰的天才兄弟Collison Brothers一手创办的,他们表示随着美国最大的民营金融科技公司进入小企业贷款领域,新一轮融资使其价值增加了一半以上. KlipC分

在线支付一定需要支付宝吗?

刚看了篇blog Stripe支持信用卡号码+CVC号码(不知道是什么东东,暂不讨论)形式的在线支付 说什么谁掌握了在线支付 谁就掌握了移动互联网的未来 纯粹扯淡. 本质上,货币支付的是某种信用 也许信用需要某人的实际金钱提供保障 但金钱只不过是垄断保守贪婪的政府刮税的工具而已 信用这种东西 其实不需要任何保障 只要接受者愿意接受,就没有任何问题

与Stripe跨境合作,支付宝继续向海外扩张

摘要:<华尔街日报>消息,美国在线支付公司Stripe与支付宝达成合作,方便中国支付宝用户完成海外支付,支付宝继续海外扩张之路. Stripe是一家发展迅猛的在线支付创业公司,短时间内成了知名支付平台PayPal威胁性对手,虽然PayPal仍就发展迅速,上个月还拿下了Google Play Store支付支持业务,但Stripe的发展势头依旧让人侧目.此次与支付宝达成协议是一次双赢合作,美国任何接入 Stripe 的商家在发现客户来自中国大陆时,会提供支付宝账户付款选项,这将在很大程度上降低中