支付模式
1、
刷卡支付
刷卡支付是用户展示微信钱包内的“刷卡条码/二维码”给商户系统扫描后直接完成支付的模式。主要应用线下面对面收银的场景。
2、
扫码支付
扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。
3、
公众号支付
公众号支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。应用场景有:
- ◆ 用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付
- ◆ 用户的好友在朋友圈、聊天窗口等分享商家页面连接,用户点击链接打开商家页面,完成支付
- ◆ 将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付
4、
APP支付
APP支付又称移动端支付,是商户通过在移动端应用APP中集成开放SDK调起微信支付模块完成支付的模式。
5、
小程序支付
小程序支付,是商户在微信小程序平台内实现支付功能。
名词解释
1、
微信公众平台
微信公众平台是微信公众账号申请入口和管理后台。商户可以在公众平台提交基本资料、业务资料、财务资料申请开通微信支付功能。
平台入口:https://mp.weixin.qq.com。
2、
微信开放平台
微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。
平台入口:https://open.weixin.qq.com。
3、
微信商户平台
微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。
平台入口:https://pay.weixin.qq.com。
4、
微信企业号
微信企业号是企业号的申请入口和管理后台,商户可以在企业号提交基本资料、业务资料、财务资料申请开通微信支付功能。
企业号入口:https://qy.weixin.qq.com。
5、
微信支付系统
微信支付系统是指完成微信支付流程中涉及的API接口、后台业务处理系统、账务系统、回调通知等系统的总称。
7、
商户后台系统
商户后台系统是商户后台处理业务系统的总称,例如:商户网站、收银系统、进销存系统、发货系统、客服系统等。
8、
商户证书
商户证书是微信提供的二进制文件,商户系统发起与微信支付后台服务器通信请求的时候,作为微信支付后台识别商户真实身份的凭据。
9、
签名
商户后台和微信支付后台根据相同的密钥和算法生成一个结果,用于校验双方身份合法性。签名的算法由微信支付制定并公开,常用的签名方式有:MD5、SHA1、SHA256、HMAC等。
10、
JSAPI网页支付
JSAPI网页支付即前文说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或者用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页面,在页面内下单完成支付。
11、
支付密码
支付密码是用户开通微信支付时单独设置的密码,用于确认支付完成交易授权。该密码与微信登录密码不同。
12、
Openid
用户在小程序内的身份标识,不同小程序拥有不同的openid。商户后台系统通过登录授权、支付通知、查询订单等API可获取到用户的openid。主要用途是判断同一个用。可调用接口获取openid。
支付账户
小程序认证以后,可以在小程序后台,微信支付菜单栏,申请微信支付。
填写企业信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在线签署迁移,即完成了微信支付的申请流程.。 微信支付申请完,会发送微信支付商户号,商户平台用户名密码等信息到注册者邮箱。此邮件包含开发时需要使用的支付账户信息,见图3.1所示。
图3.1 微信审核通过邮件模板
邮件中的账户参数与接口API参数对应关系见表格3.1:
表3.1 账户参数说明
邮件中参数 | API参数名 | 详细说明 |
---|---|---|
APPID | appid | appid是微信小程序后台APP的唯一标识,在小程序后台申请小程序账号后,微信会自动分配对应的appid,用于标识该应用。可在小程序-->设置-->开发设置中查看。 |
微信支付商户号 | mch_id | 商户申请微信支付后,由微信支付分配的商户收款账号。 |
API密钥 | key | 交易过程生成签名的密钥,仅保留在商户系统和微信支付后台,不会在网络中传播。商户妥善保管该Key,切勿在网络中传输,不能在其他客户端中存储,保证key不会被泄漏。商户可根据邮件提示登录微信商户平台进行设置。也可按一下路径设置:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 |
Appsecret | secret | AppSecret是APPID对应的接口密码,用于获取接口调用凭证时使用。 |
协议规则
商户接入微信支付,调用API必须遵循以下规则:
表4.1 接口规则
传输方式 | 为保证交易安全性,采用HTTPS传输 |
---|---|
提交方式 | 采用POST方法提交 |
数据格式 | 提交和返回数据都为XML格式,根节点名为xml |
字符编码 | 统一采用UTF-8字符编码 |
签名算法 | MD5,后续会兼容SHA1、SHA256、HMAC等。 |
签名要求 | 请求和接收数据均需要校验签名,详细方法请参考安全规范-签名算法 |
证书要求 | 调用申请退款、撤销订单接口需要商户证书 |
判断逻辑 | 先判断协议字段返回,再判断业务返回,最后判断交易状态 |
参数规定
1、body字段格式要求
使用场景 | 支付模式 | 商品字段规则 | 样例 | 备注 |
---|---|---|---|---|
微信小程序 | 小程序支付 | 商家名称-销售商品类目 | 罗辑思维-图书 | 线上电商,商家名称必须为实际销售商品的商家 |
2、
交易金额
交易金额默认为人民币交易,接口中参数支付金额单位为【分】,参数值不能带小数。对账单中的交易金额单位为【元】。
外币交易的支付金额精确到币种的最小单位,参数值不能带小数点。
3、
交易类型
JSAPI--小程序支付统一下单接口trade_type的传参可参考这里
4、
货币类型
货币类型的取值列表:
CNY:人民币
5、
时间
标准北京时间,时区为东八区;如果商户的系统时间为非标准北京时间。参数值必须根据商户系统所在时区先换算成标准北京时间, 例如商户所在地为0时区的伦敦,当地时间为2014年11月11日0时0分0秒,换算成北京时间为2014年11月11日8时0分0秒。
6、
时间戳
标准北京时间,时区为东八区,自1970年1月1日 0点0分0秒以来的秒数。注意:部分系统取到的值为毫秒级,需要转换成秒(10位数字)。
7、
商户订单号
商户支付的订单号由商户自定义生成,微信支付要求商户订单号保持唯一性(建议根据当前系统时间加随机序列来生成订单号)。重新发起一笔支付要使用原订单号,避免重复支付;已支付过或已调用关单、撤销(请见后文的API列表)的订单号不能重新发起支付。
8、
银行类型
字符型银行编码 | 银行名称 |
---|---|
ICBC_DEBIT | 工商银行(借记卡) |
ICBC_CREDIT | 工商银行(信用卡) |
ABC_DEBIT | 农业银行(借记卡) |
ABC_CREDIT | 农业银行(信用卡) |
PSBC_DEBIT | 邮政储蓄银行(借记卡) |
PSBC_CREDIT | 邮政储蓄银行(信用卡) |
CCB_DEBIT | 建设银行(借记卡) |
CCB_CREDIT | 建设银行(信用卡) |
CMB_DEBIT | 招商银行(借记卡) |
CMB_CREDIT | 招商银行(信用卡) |
BOC_DEBIT | 中国银行(借记卡) |
BOC_CREDIT | 中国银行(信用卡) |
COMM_DEBIT | 交通银行(借记卡) |
SPDB_DEBIT | 浦发银行(借记卡) |
SPDB_CREDIT | 浦发银行(信用卡) |
GDB_DEBIT | 广发银行(借记卡) |
GDB_CREDIT | 广发银行(信用卡) |
CMBC_DEBIT | 民生银行(借记卡) |
CMBC_CREDIT | 民生银行(信用卡) |
PAB_DEBIT | 平安银行(借记卡) |
PAB_CREDIT | 平安银行(信用卡) |
CEB_DEBIT | 光大银行(借记卡) |
CEB_CREDIT | 光大银行(信用卡) |
CIB_DEBIT | 兴业银行(借记卡) |
CIB_CREDIT | 兴业银行(信用卡) |
CITIC_DEBIT | 中信银行(借记卡) |
CITIC_CREDIT | 中信银行(信用卡) |
BOSH_DEBIT | 上海银行(借记卡) |
BOSH_CREDIT | 上海银行(信用卡) |
CRB_DEBIT | 华润银行(借记卡) |
HZB_DEBIT | 杭州银行(借记卡) |
HZB_CREDIT | 杭州银行(信用卡) |
BSB_DEBIT | 包商银行(借记卡) |
BSB_CREDIT | 包商银行(信用卡) |
CQB_DEBIT | 重庆银行(借记卡) |
SDEB_DEBIT | 顺德农商行(借记卡) |
SZRCB_DEBIT | 深圳农商银行(借记卡) |
HRBB_DEBIT | 哈尔滨银行(借记卡) |
BOCD_DEBIT | 成都银行(借记卡) |
GDNYB_DEBIT | 南粤银行(借记卡) |
GDNYB_CREDIT | 南粤银行(信用卡) |
GZCB_DEBIT | 广州银行(借记卡) |
GZCB_CREDIT | 广州银行(信用卡) |
JSB_DEBIT | 江苏银行(借记卡) |
JSB_CREDIT | 江苏银行(信用卡) |
NBCB_DEBIT | 宁波银行(借记卡) |
NBCB_CREDIT | 宁波银行(信用卡) |
NJCB_DEBIT | 南京银行(借记卡) |
JZB_DEBIT | 晋中银行(借记卡) |
KRCB_DEBIT | 昆山农商(借记卡) |
LJB_DEBIT | 龙江银行(借记卡) |
LNNX_DEBIT | 辽宁农信(借记卡) |
LZB_DEBIT | 兰州银行(借记卡) |
WRCB_DEBIT | 无锡农商(借记卡) |
ZYB_DEBIT | 中原银行(借记卡) |
ZJRCUB_DEBIT | 浙江农信(借记卡) |
WZB_DEBIT | 温州银行(借记卡) |
XAB_DEBIT | 西安银行(借记卡) |
JXNXB_DEBIT | 江西农信(借记卡) |
NCB_DEBIT | 宁波通商银行(借记卡) |
NYCCB_DEBIT | 南阳村镇银行(借记卡) |
NMGNX_DEBIT | 内蒙古农信(借记卡) |
SXXH_DEBIT | 陕西信合(借记卡) |
SRCB_CREDIT | 上海农商银行(信用卡) |
SJB_DEBIT | 盛京银行(借记卡) |
SDRCU_DEBIT | 山东农信(借记卡) |
SRCB_DEBIT | 上海农商银行(借记卡) |
SCNX_DEBIT | 四川农信(借记卡) |
QLB_DEBIT | 齐鲁银行(借记卡) |
QDCCB_DEBIT | 青岛银行(借记卡) |
PZHCCB_DEBIT | 攀枝花银行(借记卡) |
ZJTLCB_DEBIT | 浙江泰隆银行(借记卡) |
TJBHB_DEBIT |