美文网首页微信小程序
微信小程序-微信登录,支付

微信小程序-微信登录,支付

作者: 一曲广陵散 | 来源:发表于2017-01-16 15:20 被阅读719次

    微信小程序官方文档

    概要

    开发中涉及到登录界面,因为使用原生APP账号登录在小程序中几乎不可行,所有急需开发
    使用微信登录微信小程序的接口
    

    一 涉及API(application programming interface)

    wx.login()

    调用接口获取登录凭证code, 进而换取用户登录态信息,包括
    (1)用户的唯一标识openid;
    (2)本次登录的会话密钥session_key
    用户数据的加解密通讯需要依赖会话密钥完成
    
    code说明:用户允许登录后,回调内容会带上code,有效期5分钟,
    开发者需要将code发送到服务器后台,使用code换取openid, session_key
    
    code.png

    code 换取session_key

    是一个https接口,开发者服务器使用登录凭证code获取session_key , openid
    session_key不应该在网络上传输(不要传输到客户端),
    因为session_key是对用户数据进行加密签名的密钥
    

    接口URL

    https://api.weixin.qq.com/sns/jscode2session
    ?appid=APPID
    &secret=SECRET
    &js_code=JSCODE
    &grant_type=authorization_code
    
    四个参数说明: 
    (1)appid, 小程序唯一标识
    (2)secret 小程序的app 密钥
    (3)js_code 登录时候获取的code
    (4)grant_type 授权类型,填写为 authorization_code
    
    appid_and_secret.png

    二 登录流程

    (1)客户端(小程序)获取code,传送到后台服务器
    (2)后台服务器获取code,结合appid,appsecret获取openid,session_key;
    (3)后台服务器根据openid, session_key生成唯一的tokenID,
    tokenID需要保证唯一性,设置一定时间的有效性
    (4)后台服务器生成的tokenID,需要存储于相应的数据库中
    (5)将tokenID返回到客户端(小程序),
    小程序将得到的tokenID存入本地缓存中,用于后续用户获取
    openID,session_key的凭证
    

    三 微信支付

    1 接口 wx.requestPayment()

    包含参数:
    timeStamp 当前的时间
    nonceStr  随机的字符串
    package   统一下单接口返回的prepay_id 参数值
    signType  签名算法,MD5
    paySign  签名
    

    2 支付开发文档

    2.1 基础知识-支付方式

    刷卡支付,扫码支付,公众号支付,App支付,小程序支付
    
    分别介绍:
    (1)刷卡支付: 用户展示微信钱包内的刷卡条码、
    二维码给商户系统扫描,直接完成支付的模式,
    线下面对面收银的场景
    
    (2)扫码支付:商户系统按照微信支付协议,生成支付二维码,
    用户用微信
    扫一扫完成支付的模式,适用于PC网站支付,
    实体店单品或者订单支付,媒体广告支付等等场景
    
    (3)公众号支付: 是用户在微信中打开商户的H5页面,
    商户在H5页面通过调用微信支付提供的 JSAPI 接口调用 
    微信支付模块 完成支付
    应用场景是: 用户在微信公众号内 进入商家公众号,
    打开某个主页面,完成支付
    用户的好友在朋友圈,聊天窗口等分享商家页面链接, 
    用户点击链接打开商家页面,完成支付
    将商户页面转换成二维码, 用户扫码后再微信浏览器中
    打开页面完成支付
    
    (4)App支付 :移动端支付,是商户通过在移动端应用
    App中集成开发的SDK调用微信支付模块完成支付的模式
    
    (5)小程序支付:是商户在微信小程序平台内实现支付功能
    

    2.2基础知识 - 名词解释

    (1)[微信公众平台](http://mp.weixin.qq.com):
    微信公众账号申请入口和管理后台
    商户可以在公众平台提交基本资料,业务资料,财务资料,
    申请开通微信支付功能
    
    (2)[微信开放平台](http://open.weixin.qq.com):
    商户App接入微信支付开放平台的申请入口,
    通过此平台可以申请微信App支付
    
    (3)[微信商户平台](http://pay.weixin.qq.com)
    微信支付相关的商户功能集合,包括参数配置,支付数据查询和统计,
    在线退款,代金券,立减优惠运营等功能
    
    (4)[微信企业号](http://qy.weixin.qq.com)
    企业号的申请入口和管理后台,商户可以在企业号中提交基本资料
    等资料申请开通微信支付功能
    
    (5)微信支付系统
    完成微信支付流程中涉及的API接口,后台业务处理系统,财务系统,
    回调通知系统的总称
    
    (6)[微信小程序](https://mp.weixin.qq.com/debug/wxadoc/dev/)
    微信提供给商户实现App的一种轻应用,开发起来简单易用
    
    (7)商户后台系统
    商户后台处理业务系统的总称,例如: 商户网站,收银系统,
    进销存系统,发货系统,客服系统等等
    
    (8)商户证书
    微信提供的二进制文件,商户系统发起和
    微信支付后台服务器通信请求的时候,
    作为微信支付后台识别商户真实身份的凭据
    
    (9)签名
    商户后台和微信支付后台根据相同的密钥和算法生成一个结果,
    用于校验双方身份合法性
    签名的算法由微信支付制定并公开,常用的签名方式有:
    MD5, SHA1, SHA256, HMAC等等
    
    (10)JSAPI网页支付
    公众号支付,可以在微信公众号,朋友圈,聊天会话中点击页面链接,
    或者用微信扫一扫,扫描页面地址二维码
    在微信中打开商户的HTML5页面,在页面下单,完成支付
    
    (11)支付密码
    用户开通微信支付时候,单独设置的密码,
    用于确认支付完成交易授权,与微信登录密码不相同
    
    (12)Openid
    用户在小程序内的身份标识,不同的小程序拥有不同的openid
    商户后台系统通过登录授权,支付通知,
    查询订单等API可以获取
    用户的openid,主要用途判断是否是同一个用户
    

    2.3 基础规范-协议规则

    接口规则
    传输方式    HTTPS传输
    提交方式    POST方法提交
    数据格式    提交返回数据是 XML格式, 根节点名为xml
    字符编码    UTF-8
    签名算法    MD5 后续会有其他算法
    签名要求    请求和接收数据需要校验签名
    证书要求    调用申请退款  撤销订单接口需要商户证书
    判断逻辑    先判断协议字段返回  ,再判断业务返回, 最后判断交易状态
    
    参数规定
    body字段格式要求
    字段规则 ---商家名称-销售商品类目
    样例 ---(罗辑思维-图书)
    备注 ---线上电商 ,商家名称必须为实际销售商品的商家
    
    交易金额
    默认为人民币交易,接口中参数支付金额单位为分
    参数值不能带小数, 对账单中的交易金额单位为元
    外币交易的支付金额精确到币种的最小单位,参数值不能带小数点
    
    交易类型
    JSAPI---小程序支付统一下单接口 trade_type的传参数可参考此处
    
    货币类型
    CNY:人民币
    
    时间
    标准北京时间,东八区
    
    时间戳
    标准北京时间,东八区  基础单位是秒
    
    商户订单号
    商户支付的订单号由 商户自定义生成, 微信支付要求商户订单号 保持唯一性
    建议根据系统的时间加上随机序列生成订单号
    重新发起一笔支付要使用原订单号, 避免重复支付
    已经支付过或者已经调用关闭订单, 撤销的订单号不能重新发起支付
    

    相关文章

      网友评论

      本文标题:微信小程序-微信登录,支付

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