# wx-pay-2005 **Repository Path**: nevermo2013/wx-pay-2005 ## Basic Information - **Project Name**: wx-pay-2005 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-10-10 - **Last Updated**: 2021-02-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 微信开发做什么 > 仓库地址: https://gitee.com/nevermo2013/wx-vue-demo-2005 + 微信小程序开发(原生开发/uniapp) + 微信公众号网页开发 通过认证的公众号后台,添加超链接即可 - 网页授权获取用户基本信息:通过该接口,可以获取用户的基本信息(获取用户的OpenID是无需用户同意的,获取用户的基本信息则需用户同意授权登陆/投票等) - 微信JS-SDK:是开发者在网页上通过JavaScript代码使用微信原生功能的工具包,开发者可以使用它在网页上录制和播放微信语音、监听微信分享、上传手机本地图片、拍照等许多能力。 - 微信支付 + 微信公众号开发 一般是通过自定义服务器接管微信公众号官方后台,自定义交互逻辑,比如医院挂号系统等. + 文档: https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html # 微信平台 + 微信小程序 + 微信公众号 - 微信公众平台(区分小程序平台): https://mp.weixin.qq.com - 公众号 服务号注册和订阅号和小程序注册不能用同一个邮箱 - 订阅号可以个人注册,如果需要正常接入开发,需要认证(每年300). + 微信开放平台 - 区分微信开放平台: https://open.weixin.qq.com/ unicode + 微信商户平台 : https://pay.weixin.qq.com ## 服务号 + 服务号:为企业和组织提供更强大的业务服务与用户管理能力,主要偏向服务类交互(功能类似12315,114,银行,提供绑定信息,服务交互的) + 比如信用卡,银行的等,直接存在与微信朋友列表. + 主动推送通知消息,比如还有3天还款,请留意! + 一个月只能最多发送4条信息.每一条,可以添加8条文章链接. + 服务号个人是无法申请的,必须是公司或者组织. + 有更大的权限,比如微信支付. ## 订阅号 + 订阅号: 为媒体和个人提供一种新的信息传播方式,主要功能是在微信侧给用户传达资讯;(功能类似报纸杂志,提供新闻信息或娱乐趣事) + 比如: 咪蒙 , 知否 ... 个人类型的,直接存在于微信朋友列表的"订阅号"盒子里. + 新信息不会主动推送通知,需要用户点击进入订阅号查看. + 每天只能最多发送一条信息.每一条,可以添加8条文章链接. + 可以个人和公司申请. ## 微信开发文档 > 网址: https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html ### 解读 + 为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,咪蒙,知否. + 如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,此时会形成一个统一的UnionID. + 测试号申请: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login + 如果开发出问题,注意查看返回码. + 公众平台接口调用仅支持80端口。 ### 测试号配置 + 接口配置信息: - url: http://bufantec.com/wx/msg - Token: bufanxueyuan + JS接口安全域名: - bufantec.natapp1.cc - 注意用自己的穿透地址 + 体验接口权限表=>网页帐号=>网页授权获取用户基本信息 - bufantec.natapp1.cc - 注意用自己的穿透地址,不要带/或者其他任意的非域名字符 ### 微信公众号网页开发api ### 网页授权 + 测试号配置: JS接口安全域名: bufantec.natapp1.cc - 指的是自己的域名 - 配置的二十号不能加http,而且必须是80端口 ### 网页授权的两种scope的区别说明 + snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的. + 比如,指实现访问量统计. + 静默授权并自动跳转到回调页的,无需用户授权. + snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。 + 比如: 投票,砍一刀,登陆等需要获取用户openid而且获取用户名还有头像等信息. + 这种授权需要用户手动同意,并且由于用户同意过,所以无须关注. + 后台api: snsapi_userinfo通过code交换access_token /wx/user/getUserInfo - 参数: appid - 参数: code ## 内网穿透 + natapp https://natapp.cn/ + 购买免费隧道 + 本地配置config.ini(参照教程) ## oAuth2.0 阮一峰 + http://www.ruanyifeng.com/blog/2019/04/oauth_design.html ## 公众号开发注意事项(重要!!!) + 本地启动必须是80端口 + 必须通过内外网穿透(或者直接有备案域名) + 如果出现访问超时(chunk-venters.js),可以尝试类似npm run wx 这里的配置. + 公众号的测试号 api=> 网页授权 => xxx.natapp1.cc + 不支持hash模式,改为history模式 ## 网页用户授权相关自定义后台api使用说明 > 注意使用前提. 如果希望用不凡君的后台实现微信公众号开发,就必须注册appId/secret. > 不凡君的后台已经实现了与微信服务器的对接,所以需要首先把不凡君的后台配置到微信测试账号(正式账号)的白名单.并且验证通过. + 配置验证服务器 - URL: http://bufantec.com/wx/msg 不凡君后台通过这个请求实现了对微信服务器对接的认证. - Token: bufanxueyuan + 前提: 注册 : http://bufantec.com/wx/developer/register?appId=xxxx&appSecret=xxxx - 可以重复注册,相同的appId会被覆盖. - 类型: get - 参数: appId 必须 - 参数: appSecret 必须 + 查看已注册列表: http://bufantec.com/wx/developer/list + 查看明细: http://bufantec.com/wx/developer/detail?appId=xxx - 参数: appId + snsapi_base通过code交换access_token: /wx/user/getAccessTokenBase - 参数: appid - 参数: code - 当前api 有问题 带调试 + snsapi_userinfo通过code交换access_token /wx/user/getUserInfo - 参数: appid - 参数: code ## jssdk使用说明 + 绑定JS接口安全域名 xxxxx.natapp1.cc 注意: 不要添加http,而且必须是你的自定义域名地址 + public/index.html 全局引入 jssdk的库 http://res.wx.qq.com/open/js/jweixin-1.6.0.js + 通过config接口注入权限验证配置 后台开发注意!! + 后台签名api: /wx/user/getAccessToken?appId=xxx - 参数: appId (注意: 必须先在不凡后台注册) + 错误编码: https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Global_Return_Code.html ### jssdk特别注意 + 确认config正确通过。 + 如果是在页面加载好时就调用了JSAPI,则必须写在wx.ready的回调中。 + 重点!!! 确认config的jsApiList参数包含了这个JSAPI。 ## 步骤 + 申请微信公众号测试号,并且关注 + 申请natapp账号 + 配置微信公众号测试号 - 接口配置信息 URL http://bufantec.com/wx/msg Token bufanxueyuan - JS接口安全域名 xxx.natapp1.cc 注意:这是自己的回调域名 - 体验接口权限表 => 网页帐号 => 网页授权获取用户基本信息 => 修改 => xxx.natapp1.cc + 利用接口在地址栏拼接url 把自己的appId和appSecret注册到 bufantec 后台 - 接口地址: http://bufantec.com/wx/developer/register?appId=xxxx&appSecret=xxxx + vue-create-xx 创建项目 + 写代码 实现 或用用户基本信息 + 写代码 实现 调用微信jssdk ## auth2.0认证 + http://www.ruanyifeng.com/blog/2019/04/oauth_design.html ## 加密相关 > 开发中,一般会遇到的3种加密方式. ### 对称加密 >采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常用的单向加密算法: + DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; + 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高; + AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、512位密钥的加密; + Blowfish ### 非对称加密 > 公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。可以还原内容. + RSA (MIT 1978三个数学教授联合发明的算法,RSA是三个人的名字首字母) - 原理,基于大数的质因数分解非常困难,但是如果用两个质因数求积非常简单. - 比如分解 1024位(byte) 二进制的数 - 破解: 暴力计算破解. 量子计算机(谷歌). + ECC(椭圆曲线加密算法) ### 离散哈希/不可逆加密 > 不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。 + MD5 新用户注册,密码加密,防数据库泄露 + SHA-1 美国国家安全局设计 比如微信jssdk认证签名 + sha256 美国国家安全局设计改进设计 典型用途 区块链 ## 微信支付相关 ### 前提 + 必须是认证的服务号 + 必须绑定商户平台 + 文档: https://pay.weixin.qq.com/wiki/doc/api/index.html ### 支付场景 + jssdk 支付 微信客户端打开商家网页的支付形式 + h5支付 微信外网页 打开直接微信支付 + native支付 微信app内部扫一扫调用 + 扫码支付 ### 支付api + jssdk支付api /wx/pay/paySign - 参数: openId + 获取openId的api /wx/user/getOpenId - 参数 code - 参数 appid + h5页面支付 /wx/pay/wap2 - 参数: 无