本文阅读对象:小程序集成微信支付涉及的技术构架师,研制工程师,测试工程师,系统运维工程师。
支付产品1、
付款码支付
付款码支付是用户展示微信皮夹内的“刷卡条形码/二维码”给商户系统扫描后直接完成支付的模式。主要应用线下边旁边收银的场景。
2、
支付
支付是商户系统按微信支付合同生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。
3、
JSAPI支付
JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI插口调起微信支付模块完成支付。应用场景有:
◆用户在微信公众帐号内步入店家公众号,打开某个主页面,完成支付
◆用户的好友在同学圈、聊天窗口等分享店家页面联接,用户点击链接打开店家页面,完成支付
◆将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付
4、
APP支付
APP支付又称联通端支付,是商户通过在联通端应用APP中集成开放SDK调起微信支付模块完成支付的模式。
5、
H5支付
H5支付主要是在手机、ipad等联通设备中通过浏览器来唤醒微信支付的支付产品。
6、
小程序支付
小程序支付是专门被定义使用在小程序中的支付产品。目前在小程序中能且只能使用小程序支付的方法来唤醒微信支付。
名词解释1、
微信公众平台
微信公众平台是微信公众帐号申请入口和管理后台。商户可以在公众平台递交基本资料、业务资料、财务资料申请开通微信支付功能。
平台入口:。
2、
微信开放平台
微信开放平台是商户APP接入微信支付开放插口的申请入口,通过此平台可申请微信APP支付。
平台入口:。
3、
微信商户平台
微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退货、代金券或立减让利营运等功能。
平台入口:。
4、
微信企业号
微信企业号是企业号的申请入口和管理后台,商户可以在企业号递交基本资料、业务资料、财务资料申请开通微信支付功能。
企业号入口:。
5、
微信支付系统
微信支付系统是指完成微信支付流程中涉及的API插口、后台业务处理系统、账务系统、回调通知等系统的统称。
6、
微信小程序
微信小程序是微信提供给商户实现APP的一种轻应用,开发上去简单,易用。
入口:。
7、
商户后台系统
商户后台系统是商户后台处理业务系统的统称,比如:商户网站、收银系统、进销存系统、发货系统、客服系统等。
8、
商户证书
商户证书是微信提供的二补码文件,商户系统发起与微信支付后台服务器通讯恳求的时侯,作为微信支付后台辨识商户真实身分的凭据。
9、
签名
商户后台和微信支付后台按照相同的秘钥和算法生成一个结果,用于校准双方身分合法性。签名的算法由微信支付拟定并公开,常用的签名形式有:MD5、SHA1、、HMAC等。
10、
JSAPI网页支付
JSAPI网页支付即前文说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或则用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页面,在页面内下单完成支付。
11、
支付密码
支付密码是用户开通微信支付时单独设置的密码,用于确认支付完成交易授权。该密码与微信登陆密码不同。
12、
用户在小程序内的身分标示,不同小程序拥有不同的。商户后台系统通过登陆授权、支付通知、查询订单等API可获取到用户的。主要用途是判定同一个用。可调用插口获取。
支付帐户
小程序认证之后,可以在小程序后台,微信支付菜单栏,申请微信支付。
商户在微信公众平台或开放平台递交微信支付申请,微信支付工作人员初审资料无误后开通相应的微信支付权限。微信支付申请初审通过后,商户在申请资料填写的邮箱中缴纳到由微信支付小助手发送的电邮,此短信包含开发时须要使用的支付帐户信息,见图3.1所示。
图3.1微信初审通过短信模板
短信中的帐户参数与插口API参数对应关系见表格3.1:
表3.1帐户参数说明
电邮中参数API参数名详尽说明
APPID
appid
appid是微信小程序后台APP的惟一标示,在小程序后台申请小程序帐号后,微信会手动分配对应的appid,用于标示该应用。可在小程序-->设置-->开发设置中查看。
微信支付商户号
商户申请微信支付后,由微信支付分配的商户收款帐号。
API秘钥
key
交易过程生成签名的秘钥,仅保留在商户系统和微信支付后台,不会在网路中传播。商户妥善保管该Key,请勿在网路中传输,不能在其他顾客端中储存,保证key不会被泄露。商户可依照电邮提示登陆微信商户平台进行设置。也可按以下路径设置:微信商户平台()-->帐户设置-->API安全-->秘钥设置
是APPID对应的插口密码,用于获取插口调用账簿时使用。
合同规则
商户接入微信支付,调用API必须遵守以下规则:
表4.1插口规则
传输方法
为保证交易安全性,采用HTTPS传输
递交方法
采用POST方式递交
数据格式
递交和返回数据都为XML格式,根节点名为xml
字符编码
统一采用UTF-8字符编码
签名算法
MD5,后续会兼容SHA1、、HMAC等。
签名要求
恳求和接收数据均须要校准签名,详尽方式请参考安全规范-签名算法
证书要求
调用申请退票、撤销订单插口须要商户证书
判定逻辑
先判别合同数组返回,再判定业务返回,最后判定交易状态
参数规定1、交易金额
交易金额默认为人民币交易,插口中参数支付金额单位为【分】,参数值不能带小数。对帐单中的交易金额单位为【元】。
外币交易的支付金额精确到币种的最小单位,参数值不能带小数点。
2、交易类型
JSAPI--JSAPI支付(或小程序支付)、--支付、APP--app支付,MWEB--H5支付,不同决定了调起支付的形式,请依照支付产品正确上传
--付款码支付,付款码支付有单独的支付插口,所以插口不须要上传,该数组在对帐单中会出现
3、货币类型
货币类型的取值列表:
CNY:人民币
4、时间
标准广州时间,时区为东八区;假如商户的系统时间为非标准广州时间。参数值必须依照商户系统所在时区先换算成标准广州时间,比如商户所在地为0时区的巴黎,当地时间为2014年11月11日0时0分0秒微信订单系统,换算成上海时间为2014年11月11日8时0分0秒。
5、时间戳
标准广州时间,时区为东八区,自1970年1月1日0点0分0秒以来的秒数。注意:部份系统取到的值为微秒级,须要转换成秒(10位数字)。
6、商户订单号
商户支付的订单号由商户自定义生成,仅支持使用字母、数字、中划线-、下划线_、竖线|、星号*这种英语全角字符的组合,切勿使用汉字或半角等特殊字符。微信支付要求商户订单号保持惟一性(建议按照当前系统时间加随机序列来世成订单号)。重新发起一笔支付要使用原订单号,防止重复支付;已支付过或已调用关单、撤销(请见后文的API列表)的订单号不能重新发起支付。
7、body数组格式使用场景支付模式商品数组规则样例备注
PC网站
扫码支付
浏览器打开的网站主页title名-商品概述
腾讯冲值中心-QQ会员冲值
微信浏览器
公众号支付
店家名称-销售商品类目
腾讯-游戏
线上电商,店家名称必须为实际销售商品的店家
分店扫码
公众号支付
菜名-销售商品类目
小张南山店-商场
线下店面支付
分店扫码
扫码支付
菜名-销售商品类目
小张南山店-商场
线下店面支付
分店刷卡
刷卡支付
菜名-销售商品类目
小张南山店-商场
线下店面支付
第三方手机浏览器
H5支付
浏览器打开的联通网页的主页title名-商品概述
腾讯冲值中心-QQ会员冲值
第三方APP
APP支付
应用市场上的APP名子-商品概述
天天爱去除-游戏冲值
1、签名算法
(签名校准工具)
签名生成的通用步骤如下:
第一步,设所有发送或则接收到的数据为集合M,将集合M内非空参数值的参数根据参数名ASCII码从小到大排序(字典序),使用URL通配符对的格式(即key1=&key2=…)拼接成字符串。
非常注意以下重要规则:
◆参数名ASCII码从小到大排序(字典序);
◆如果参数的值为空不参与签名;
◆参数名分辨大小写;
◆验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校准。
◆微信插口可能降低数组,验证签名时必须支持降低的扩充数组
第二步,在最后拼接上key得到字符串,并对进行MD5运算,再将得到的字符串所有字符转换为小写,得到sign值。
◆key设置路径:微信商户平台()-->帐户设置-->API安全-->秘钥设置
举例:
假定传送的参数如下:
appid:
:
:1000
body:test
:
第一步:对参数根据key=value的格式,并根据参数名ASCII字典序排序如下:
="appid=&body=test&=1000&=&=";
第二步:拼接API秘钥:
=+"&key="//注:key为商户平台设置的秘钥key
sign=MD5().()=""//注:MD5签名形式
sign=("",,key).()="ACD6"//注:HMAC-签名形式
最终得到最终发送的数据:
1000
test
2、生成随机数算法
微信支付API插口合同中包含数组,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。
3、API证书
(1)获取API证书(哪些是api证书?怎么升级?)
微信支付插口中,涉及资金回滚的插口会使用到API证书,包括退货、撤销插口。店家在申请微信支付成功后,收到的相应电邮后,可以根据指引下载API证书,也可以根据以下路径下载:微信商户平台()-->帐户中心-->帐户设置-->API安全。证书文件说明如下:
证书附件描述使用场景备注
格式
(.p12、
包含了公钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您拿来标示和划分您的身分
撤消、退款申请API中调用
上可以直接双击导出系统,导出过程中会提示输入证书密码,证书密码默认为您的商户ID(如:)
以下两个证书在PHP环境中使用:
证书附件描述使用场景备注
证书pem格式
(.pem)
从.p12中导入证书部份的文件,为pem格式,请妥善保管不要泄露和被别人复制
PHP等不能直接使用p12文件,而须要使用pem,为了便捷您使用,已为您直接提供
您也可以使用命令来自己导入:---.p12-.pem
证书秘钥pem格式
(.pem)
从.pem中导入秘钥部份的文件,为pem格式,请妥善保管不要泄露和被别人复制
PHP等不能直接使用p12文件,而须要使用pem,为了便捷您使用,已为您直接提供
您也可以使用命令来自己导入:--.p12-.pem
(2)使用API证书
(3)API证书安全
1.证书文件不能放到web服务器虚拟目录微信订单系统,应置于有访问权限控制的目录中,避免被别人下载;
2.建议将证书文件名改为复杂且不容易猜想的文件名;
3.商户服务器要做好病毒和木马防护工作,不被非法侵入者泄露证书文件。
4、商户反弹API安全
在普通的网路环境下,HTTP恳求存在DNS绑架、运营商插入广告、数据被泄露,正常数据被更改等安全风险。商户反弹插口使用HTTPS合同可以保证数据传输的安全性。所以微信支付建议商户提供给微信支付的各类反弹采用HTTPS合同。请参考:HTTPS搭建手册。
免责声明:部分文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快为您处理。