# 一、微信支付
# 支付方式
付款码支付
付款码支付是指用户展示微信钱包内的“付款码”给商户系统扫描后直接完成支付,适用于线下场所面对面收银的场景,例如商超、便利店、餐饮、医院、学校、电影院和旅游景区等具有明确经营地址的实体场所。
JSAPI支付
JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。
应用场景有:
线下场所:调用接口生成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付;
公众号场景:用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付;
PC网站场景:在网站中展示二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付;
小程序支付
小程序支付是指商户通过调用微信支付小程序支付接口,在微信小程序平台内实现支付功能;用户打开商家助手小程序下单,输入支付密码并完成支付后,返回商家小程序。
Native支付
Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站、实体店单品或订单、媒体广告支付等场景。
与JSAPI支付-PC网站使用相比,该方式扫码二维码后直接付款,金额已明确。
APP支付
APP支付是指商户通过在移动端应用APP中集成开放SDK调起微信支付模块来完成支付。适用于在移动端APP中集成微信支付功能的场景。
刷脸支付
刷脸支付是指用户在刷脸设备前通过摄像头刷脸、识别身份后进行的一种支付方式,安全便捷。适用于线下实体场所的收银场景,如商超、餐饮、便利店、医院、学校等。
# 申请费用
申请接入微信支付不收取任何申请费用;
商户交易按费率收取服务费,一般与商家选择的经营类目有关,为0.6%-1%不等;
商户类目对应资质、费率、结算周期详情,请点击这里 (opens new window)。
支付工具 | 服务名称 | 费率 | 结算周期 |
---|---|---|---|
微信支付 | 单笔费率 | 0.6% | T+1 |
# 二、PC网站接入微信支付
微信支付支持完成域名ICP备案的网站接入支付功能。PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信“扫一扫”来完成支付。
# 支付产品介绍
相关支付产品:JSAPI支付、Native支付
JSAPI支付
JSAPI支付:商家张贴收款码物料,用户打开扫一扫,扫码后输入金额,完成付款;开发文档 (opens new window)
Native支付
Native支付:商家在系统中按微信支付协议生成支付二维码,用户扫码拉起微信收银台,确认并完成付款。开发文档 (opens new window)
# 接入申请
- 注册公众号,获取开发者ID(APPID);
- 注册商户号,获取商户号ID、API密钥、商户API证书;
# 注册公众号
# 注册商户号
申请材料准备:
注册之后商户号与公众号进行绑定。
# 开发
# 引入支付参数
# 微信支付相关参数
# 商户号
wxpay.mch-id=1558950191
# 商户API证书序列号
wxpay.mch-serial-no=34345964330B66427E0D3D28826C4993C77E631F
# 商户私钥文件
wxpay.private-key-path=apiclient_key.pem
# APIv3密钥
wxpay.api-v3-key=UDuLFDcmy5Eb6o0nTNZdu6ek4DDh4K8B
# APPID
wxpay.appid=wx74862e0dfcf69954
# 微信服务器地址
wxpay.domain=https://api.mch.weixin.qq.com
# 接收结果通知地址
wxpay.notify-domain=https://7d92-115-171-63-135.ngrok.io
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Configuration
@PropertySource("classpath:wxpay.properties") //读取配置文件
@ConfigurationProperties(prefix="wxpay") //读取wxpay节点
@Data //使用set方法将wxpay节点中的值填充到当前类的属性中
public class WxPayProperties {
// 商户号
private String mchId;
// 商户API证书序列号
private String mchSerialNo;
// 商户私钥文件
private String privateKeyPath;
// APIv3密钥
private String apiV3Key;
// APPID
private String appid;
// 微信服务器地址
private String domain;
// 接收结果通知地址
private String notifyDomain;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28