马老板,放过我的钱包吧!---微信支付&登录系列

微信登录

前期准备

  • 微信开放平台创建网站/移动应用,获取AppId,AppSecrect,并设置应用的授权回调地址
  • 注意:申请需要企业公司或者个体工商户认证,认证费用约RMB300

注意

  • appid,appsecret,code: 用户在开放平台,创建网站或移动应用即可获得。
  • appid和appsecret是 资源所有者向申请人分配的一个id和秘钥,
  • code是授权凭证,A->B 发起授权,想获取授权用户信息,那a必须携带授权码,才可以向B获取授权信息

微信OAuth2.0交互流程

OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。

1)令牌是短期的,到期会自动失效,用户自己无法修改。密码一般长期有效,用户不修改,就不会发生变化。

2)令牌可以被数据所有者撤销,会立即失效。以上例而言,屋主可以随时取消快递员的令牌。密码一般不允许被他人撤销。

3)令牌有权限范围(scope),比如只能进小区的二号门。对于网络服务来说,只读令牌就比读写令牌更安全。密码一般是完整权限。

----阮一峰的网络日志

(微信OAuth2.0授权流程图)
微信OAuth2.0授权流程图

流程摘要: 完整文档点它

  • 第一步:请求code:

  • 第二步: 获取AccessToken

    • OPEN_ACCESS_TOKEN_URL:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    • 正确返回结果:

          { 
          "access_token":"ACCESS_TOKEN", 
          "expires_in":7200, 
          "refresh_token":"REFRESH_TOKEN",
          "openid":"OPENID", 
          "scope":"SCOPE",
          "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
      }
          
          参数                       说明
      access_token            接口调用凭证
      expires_in            access_token接口调用凭证超时时间,单位(秒)
      refresh_token            用户刷新access_token
      openid                    授权用户唯一标识
      scope                    用户授权的作用域,使用逗号(,)分隔
      unionid                当且仅当该网站应用已获得该用户的userinfo授权时,才会出现该字段。
      
  • 第三步:通过AccessToken获取登陆的用户信息

微信支付

常用的第三方支付和聚合支付

第三方支付是指具备一定实力和信誉保障的独立机构,采用与各大银行签约的方式,通过与银行支付结算系统接口对接而促成交易双方进行交易的网络支付模式。

通俗的例子:

       支付宝,微信支付,百度钱包,PayPal
       拉卡拉(中国最大线下便民金融服务提供商)

优点:

       1、支付平台降低了政府、企业、事业单位直连银行的成本,满足了企业专注发展在线业务的收付要求。
       2、使用方便。对支付者而言,他所面对的是友好的界面,不必考虑背后复杂的技术操作过程

缺点:

      1、风险问题,在电子支付流程中,资金都会在第三方支付服务商处滞留即出现所谓的资金沉淀,如缺乏  有效的流动性管理,则可能存在资金安全和支付的风险
      2、电子支付经营资格的认知、保护和发展问题


聚合支付
解释:

       聚合支付是相对之前的第三方支付而言的,作为对第三方支付平台服务的拓展,第三方支 付是介于银行和商户之间的,而聚合支付是介于第三方支付和商户之间

出现的场景:

     一堆第三方支付出现,并通过大量的钱补贴线上商家使用它们的支付,导致商户收银台堆满各种POS机器,扫码设备,商户还需要去各家支付公司申请账号,结算等

解决的问题:

 聚合支付公司提供的二维码,支付多种方式支付,不再是一种,各个公司的竞争,就是支付渠道和方式的支持

微信商户平台(企业,个体工商户)

微信网站扫码支付

  • 扫码支付文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=2_2
  • appid: 公众号平台唯一标识,与开放平台appid不同!
  • appsecret:公众号的秘钥
  • mch_id:商户号,申请微信支付的时候分配的
  • key:支付交易过程生成签名的秘钥,设置路径
    微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->密钥设置
  • 接口规则: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_1

    • post方式提交
    • xml格式的协议
    • 签名算法MD5
    • 交互业务规则 先判断协议字段返回,再判断业务返回,最后判断交易状态
    • 接口交易单位为 分
    • 交易类型:JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付
    • 商户订单号规则:商户支付的订单号由商户自定义生成,仅支持使用字母、数字、中划线-、下划线_、竖线|、星号*这些英文半角字符的组合,请勿使用汉字或全角等特殊字符,微信支付要求商户订单号保持唯一性
    • 安全规范:

    • 采用微信支付扫码模式二(不依赖商户平台设置回调url)

微信支付时序图

时序图是一种UML交互图,描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;

时序图包括四个元素 对象(Object), 生命线(Lifeline), 激活(Activation), 消息(Message);

对象:时序图中的对象在交互中扮演的角色就是对象,使用矩形将对象名称包含起来, 名称下有下划线

生命线:生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象都有生命线

激活:代表时序图中对象执行一项操作的时期, 表示该对象被占用以完成某个任务,当对象处于激活时期, 生命线可以拓宽为矩形

消息:对象之间的交互是通过相互发消息来实现的,箭头上面标出消息名,一个对象可以请求(要求)另一个对象做某件事件消息从源对象指向目标对象,消息一旦发送便将控制从源对象转移到目标对象,息的阅读顺序是严格自上而下的

消息交互中的实线:请求消息,消息交互中的虚线:响应返回消息,自己调用自己的方法:反身消息

  • 统一下单接口介绍:商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按扫码、JSAPI、APP等不同场景生成交易串调起支付。
Last modification:September 3rd, 2019 at 05:34 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment