微信服务号及支付功能接入详解

微信服务号及支付功能接入详解

最近在实现微信服务号支付功能,这边对接入商户资料审核及接口接入相关内容进行梳理。

旨在理清相关帐号的申请流程、整理服务开通、开发数据的配置和接入时存在的容易忽略的知识点。

本文不涉及具体接入接口的实现,如有需要可以查看 参考资料 部分获取开源的解决方案,或直接人肉接入。

一、术语定义

由于微信支付所涉及到的微信平台较多。而且,微信接入的官方文档书写的比较杂乱,在对接入流程上没有很好的说明,所以我们先对相关数据做相关阐述。

微信公众号: 是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动 。形成了一种主流的线上线下微信互动营销方式。

微信订阅号:简称订阅号,为媒体或个人提供的传播资讯的能力。

微信服务号:简称服务号,给企业或组织提供比订阅号更多的权限及高级功能,包括公众号菜单、支付能力等。

微信公众平台:申请开通服务号、订阅号、小程序功能的平台。

微信支付:是集成在微信 APP 的支付功能。

微信支付商户平台:用于管理微信支付商户信息、交易信息、资金余额的平台。

微信开放平台:为第三方移动程序提供接口,使用户可将第三方程序的内容发布给好友或分享至朋友圈,第三方内容借助微信平台获得更广泛的传播。

二、服务号与订阅号区别

微信服务号与微信订阅号区别主要有三点:

  • 推送功能上:订阅号每天可向用户推送 1 条消息,认证服务号每月可向用户推送 4 条消息。
  • 显示层级上:订阅号显示在微信对话框订阅号文件夹内,服务号直接显示在微信对话框中。
  • 接入功能上:服务号提供更多的接口对接能力,比如微信支付,更多的菜单管理功能。

三、如何选择服务号和订阅号

更多咨询传播选择订阅号,更多功能服务选择服务号。

四、微信服务号支付功能接入

4.1 微信支付相关物料准备

4.2 需要开通的权限

要实现服务号对接微信支付功能,我们需要需要到 微信公众平台 > 开发 > 接口权限 页面,开通 网页授权微信支付 权限。

4.2 微信支付参数配置

当微信支付所有涉及的帐号及权限申请通过后。需要到 微信公众平台微信支付商户平台 设置对接支付及授权的域名等相关数据的配置。

一款拥有微信支付能力的服务号产品的接入流程是:

首先,对接微信用户授权(授权:包括静默授权和非静默授权),以获取用户的 OpenID 等微信用户信息;

之后,对接微信支付功能,发起支付时需要使用微信授权获取的用户 OpenID

① 配置微信网页授权数据

  • 微信公众平台 > 开发 > 基本配置 页面的公众号开发信息里,设置开发者密钥。
  • 如果需要提供微信帐号互通的能力(网页授权时获取用户的 Union ID),需要在基本配置页面的 已绑定的微信开放平台帐号 里去设置绑定微信公众号到微信开放平台。
  • 微信公众平台 > 设置 > 公众号配置 > 功能设置标签页,设置业务域名、JS接口安全域名、网页授权域名。

② 配置支付域名数据

  • 设置 JSAPI 支付域名: 到 微信支付商户平台 > 产品中心 > 开发配置 页面的支付配置里设置公众号支付 JSAPI 支付授权目录。
  • 设置 API 安全密钥: 到 微信支付商户平台 > 账户中心 > API安全 页面的 API 密钥 设置密钥

以上,所有的这些设置完成后,基本上准备阶段的工作就完成了,接下来是接口对接的流程。

4.3 接入参数获取

  • 获取微信网页授权参数:到 微信公众平台 > 开发 > 基本配置 页面的公众号开发信息获取 开发者ID(AppID)开发者密码(AppSecret)

  • 获取支付商户参数:到 微信支付商户平台 > 产品中心 > 开发配置 页面获取支付 商户号;到 微信支付商户平台 > 账户中心 > API安全 页面的 API 密钥设置获取 API密钥。

4.4 服务号微信网页授权接入

可查阅 「微信网页授权」 文档,了解详细的授权接入流程及接口信息。

这边对微信网页授权流程做个简单梳理:

  • 1 第一步:用户同意授权,获取 code。
  • 2 第二步:通过 code 换取网页授权 access_token。
  • 3 第三步:刷新 access_token(如果需要)。
  • 4 第四步:拉取用户信息(需scope为 snsapi_userinfo)。

4.5 微信支付接入

有关微信支付的开发步骤可以查阅该文档

有关微信支付的业务流程可以查看这个文档,其中主要的交互为:

  • 1 商户业务服务器调用【统一下单API】接口,完成预下单处理
  • 2 用户支付完成后,商户业务服务器接收支付回调,详细请阅读【支付结果通知API】接口文档
  • 3 如果有需要也可以通过【查询订单】接口,有商户业务服务器主动查询订单支付状态完成业务逻辑处理

涉及到微信网页授权、微信支付的接入文档可以到 「微信网页授权」公众号支付 详细阅读,这边不过过多阐述。

五、延伸说明

前面介绍了微信服务号的微信支付功能的权限申请、开发配置及接口对接的相关知识,相信对微信服务号接入支付能力的整个流程和需要报备的材料有了大致的了解。但是接入工作依然有 许多细节需要注意,这里一并给出来希望给大家带来帮助。

5.1 网页授权域名限制

4.2 的 ① 小节 我们设置了网页授权域名,但是微信只允许设置一个授权域名。而我们在开发过程一般会有 正式服务器测试服务器 两台服务器和域名,这便限制了开发和维护处理。不过我们可以通过微信网页授权回调域名的代理转发这个解决方案来解决这个问题。

5.2 JSAPI 支付授权目录

4.2 的 ② 小节 我们设置公众号支付授权目录域名信息,假设我们的支付目录为 http://localhost/payment/wechatPay.php 那么在设置时就需要将目录设置为 http://localhost/payment/,也就是 实际的URL 地址最多比设置多一级目录 否则会报 当前页面的URL未注册 错误。

如果你使用 MVC 框架如 ThinkPHP,那么可能路径实际是 http://localhost/payment/index.php/Home/Wechat/pay 这样的 URL 地址,可以使用 反向代理路径重写 实现支持。

六、参考资料

发表评论

电子邮件地址不会被公开。 必填项已用*标注