2024年5月3日发(作者:)
“微信刷卡支付系统”概要设计说明书
2、【观察商户自有系统日志】30秒内,商户后台定期(建议每5秒)调微信支付查
询订单API,查询订单API返回订单状态trade_state=USERPAYING;
3、【观察商户自有系统日志】30秒后,调微信撤销订单API,撤销成功
4、登陆微信支付商户系统,确认
1)支付场景为“小额支付”
2)交易总金额为0.05元
3)订单交易状态为“已撤销”
4)商户订单号正确(与商户自有系统中的订单号完全相同)
5、更换订单号后再次发起支付,支付成功。
6、登陆商户自有系统,查看订单详情,应与结果4完全一致(名词可能略有不同)。
3.10 【必选】订单金额0.51元,模拟密码错误,返回FAIL,查单NOTPAY,再撤销
用例编号 3-2-6 【被扫-异常】订单金额0.51元,模拟密码错误,返回FAIL,查单NOTPAY,
再撤销
用例说明 验证对于支付结果异常的情况,商户侧是否做了正确的处理。
测试准备 1. 测试微信号已开通刷卡功能,零钱或银行卡余额充足
测试步骤 1、手机客户端进入“微信-我-我的钱包-刷卡-选择零钱”获取支付条码;
100
“微信刷卡支付系统”概要设计说明书
2、在收银台输入订单金额为0.51元,扫码枪扫描上图条码,完成支付;
3、登陆微信商户系统(),查询该笔订单详情;
4、登陆商户自有系统,查询该笔订单详情。对订单状态、金额等信息进行核对。
预期返回 1、微信被扫支付API返回“SYSTEM ERROR”;
101
“微信刷卡支付系统”概要设计说明书
2、【观察商户自有系统日志】30秒内,商户后台定期(建议每5秒)调微信支付查
询订单API,查询订单API返回订单状态trade_state=NOTPAY;
3、【观察商户自有系统日志】确认订单支付失败后,调微信撤销订单API,撤销成
功
4、登陆微信支付商户系统,确认
1)支付场景为“小额支付”
2)交易总金额为0.51元
3)订单交易状态为“已撤销”
4)商户订单号正确(与商户自有系统中的订单号完全相同)
5、登陆商户自有系统,查看订单详情,应与结果4完全一致(名词可能略有不同)。
3.11 【必选】订单金额0.52元,模拟余额不足,返回FAIL,查单PAYERROR,再撤销
用例编号 【被扫-异常】订单金额0.52元,模拟余额不足,返回FAIL,查单PAYERROR,再
撤销
用例说明 验证对于支付结果异常的情况,商户侧是否做了正确的处理。
测试准备 1. 测试微信号已开通刷卡功能,零钱或银行卡余额充足
测试步骤 1、手机客户端进入“微信-我-我的钱包-刷卡-选择零钱”获取支付条码;
102
“微信刷卡支付系统”概要设计说明书
2、在收银台输入订单金额为0.52元,扫码枪扫描上图条码,完成支付;
3、登陆微信商户系统(),查询该笔订单详情;
4、登陆商户自有系统,查询该笔订单详情。对订单状态、金额等信息进行核对。
预期返回 1、微信被扫支付API返回“SYSTEM ERROR”;
103
“微信刷卡支付系统”概要设计说明书
2、【观察商户自有系统日志】30秒内,商户后台定期(建议每5秒)调微信支付查
询订单API,查询订单API返回订单状态trade_state=PAYERROR;
3、【观察商户自有系统日志】确认订单支付失败后,调微信撤销订单API,撤销成
功
4、登陆微信支付商户系统,确认
1)支付场景为“小额支付”
2)交易总金额为0.52元
3)订单交易状态为“已撤销”
4)商户订单号正确(与商户自有系统中的订单号完全相同)
5、登陆商户自有系统,查看订单详情,应与结果4完全一致(名词可能略有不同)。
3.12 【可选】订单金额0.53元,支付成功,返回FAIL,对账不平
用例编号
用例说明
测试准备
测试步骤
3-2-9 【被扫-对账】订单金额0.13元,支付成功,通知失败,对账不平
验证商户对于对账不平的情况做了正确处理。该用例可选。
1. 测试微信号已开通刷卡功能,且银行卡或零钱余额充足。
1、根据用例3-2-1的步骤,支付一笔金额为0.53元的订单,支付失败。微信支付
接口返回system error;
2、登陆商户自有系统,查看该笔订单状态,确认订单状态为:
1)交易总金额为0.53元
2)订单交易状态为“已撤销”
104
“微信刷卡支付系统”概要设计说明书
3、T+1日下载对账单,查看该笔交易,确认订单状态为:
1)交易总金额为0.53元
2)订单交易状态为“支付成功”
预期返回 1、需要测试人员保证,商户自有系统有程序或人工流程,对该笔订单进行退款。
3.13 【可选】订单金额1.01元,零钱+现金券支付,支付成功
用3-2-10 【被扫-支付】订单金额1.01元,零钱+现金券支付,支付成功
例
编
号
用若商户支持企业红包的功能,则该用例为必选。
例
说
明
测
试
准
备
测1、手机客户端进入“微信-我-我的钱包-刷卡-选择零钱”获取支付条码;
试
步
骤
1. 1、测试微信号已开通刷卡功能,且微信零钱余额充足
2. 2、根据商户自助发企业红包指引,已发送1元企业红包到测试微信号卡包中
105
“微信刷卡支付系统”概要设计说明书
2、在收银台输入订单金额为1.01元,扫码枪扫描上图条码,完成支付;
3、登陆微信商户系统(),查询该笔订单详情;
4、登陆商户自有系统,查询该笔订单详情。对订单状态、金额等信息进行核对。
预1、手机客户端提示支付成功,如下图:
期
返
回
106
“微信刷卡支付系统”概要设计说明书
2、登陆微信支付商户系统(),确认:
1)支付场景为“小额支付”
2)交易总金额为1.01元
3)交易为1.00元
4)交易状态为“买家已支付”
5)商户订单号正确(与商户自有系统中的订单号完全相同)
107
“微信刷卡支付系统”概要设计说明书
3、登陆商户自有系统,查看订单详情,应与结果4完全一致(名词可能略有不同)。
3.14 【必选】订单金额1.02元,零钱+现金券支付,模拟支付网络超时,再撤销
用3-2-11 【被扫-支付】订单金额1.02元,零钱+现金券支付,支付成功
例
编
号
用验证正常的支付流程
108
“微信刷卡支付系统”概要设计说明书
例
说
明
测
试
准
备
测1、手机客户端进入“微信-我-我的钱包-刷卡-选择零钱”获取支付条码;
试
步
骤
1. 1、测试微信号已开通刷卡功能,且微信零钱余额充足
2. 2、根据商户自助发企业红包指引,已发送1元企业红包到测试微信号卡包中
109
“微信刷卡支付系统”概要设计说明书
2、在被扫调试工具页面手动输入条码(如上图120xxxxx这串数字)和金额,提交支付;
3、登陆微信商户系统(),查询该笔订单详情;
4、登陆商户自有系统,查询该笔订单详情。对订单状态、金额等信息进行核对。
预1、手机客户端提示支付成功,如下图:
期
返
回
110
“微信刷卡支付系统”概要设计说明书
2、登陆微信支付商户系统(),确认:
1)支付场景为“小额支付”
2)交易总金额为1.01元
3)交易状态为“买家已支付”
4)商户订单号正确(与商户自有系统中的订单号完全相同)
111
“微信刷卡支付系统”概要设计说明书
3、登陆商户自有系统,查看订单详情,应与结果4完全一致(名词可能略有不同)。
3.15 【可选】订单金额1.68元,性能压测,支付总是返回成功,平均响应时间800ms
用例编号 3-2-12 【被扫-支付】订单金额1.68元,性能压测,支付总是返回成功,平均响
应时间800ms
用例说明
测试准备
验证商户自有系统压力下的性能表现。
1. 测试微信号已开通刷卡功能
112
“微信刷卡支付系统”概要设计说明书
测试步骤 1、商户接入沙箱环境,签名密钥修改为” ABCDEFGHIJKLMNOPQRSTUVWXY
Z123456”
2、商户使用POS机生成一笔1.68元金额的订单(随机被扫码,订单号)
3、用手机进行支付,检查支付结果是否可以成功
4、使用压力工具生成大量1.68元金额的订单(随机被扫码,订单号,无需有效)
5、检查压力下这些订单是否都可以100%成功支付,平均响应时间是否为800ms,
每秒性能吞吐是否符合需求
预期返回 检查压力下这些订单是否都可以100%成功支付,平均响应时间是否约为800ms,
每秒吞吐是否符合业务需求。
3.16 注意:如果支付报授权码已过期,请刷新客户端的条码,重新发起支付。
113
“微信刷卡支付系统”概要设计说明书
第九章 最佳安全实践
1. 阅读对象
本文阅读对象为:商户平台日常使用者,以及商户自有系统(包括但不限于:在线购物平台、
人工收银系统、自动化智能收银系统、APP应用等)负责微信支付功能研发流程的人员(包括产品、
研发、运维等技术人员)。
2. 商务平台安全使用
对于接入了微信支付的商户们来说,请仔细阅读和遵守该最佳安全实践,将极大的提升贵公司在使
用微信支付时的安全性。我们也会持续关注商户安全性,将最新最好的实践更新于此。
对于商户平台的安全使用,我们从 申请入驻、收到开户邮件、登录商户平台、商户平台日常使用
四个方面来展开。
2.1申请入驻
a、申请入驻微信支付不会收取任何费用,谨防上当受骗。
b、提交申请资料后,需注意申请资料的保管,防止泄漏或丢失。
2.2收到开户邮件
a、 开户邮件内容中包含了帐户、初始登录密码等敏感信息,需妥善保管,防止泄漏。
2.3登录商户平台
a、首次登录请修改登录密码,密码复杂度建议大于8位字符,并且同时含有大、小写、数
字、特殊符号。
b、仔细检查域名是否为 ,防止误登录钓鱼网站导致密码等
信息的泄漏。
2.4商户平台日常使用
a、登录权限保护
114
“微信刷卡支付系统”概要设计说明书
1. ◆ 定期(至多6个月)修改登录密码。
2. ◆ 保护好注册管理员的手机设备,因为资金等敏感操作需要验证这个短信验证码。
3. ◆ 合理的划分操作员及其权限,实施最小化权限原则。
4. ◆ 离职或工作调动后员工操作权限的清理和定期回收。
5. ◆ 为每一个员工建立员工帐号,而不是多个人混用同一个帐户。
b、浏览器选择
1. ◆ 使用较新的主流浏览器并检查开启浏览器和系统的自动更新机制。
c、功能使用
1. ◆ 企业营销功能需要设置防刷级别、限领次数等安全功能,如果是调用API,建议设置访问
IP白名单等。
3. 系统开发注意事项
对于接入了微信支付的商户们来说,请仔细阅读和遵守该最佳安全实践,将极大的提升贵公司在使
用微信支付时的安全性。我们也会持续关注商户安全性,将最新最好的实践更新于此。
对于需要自行或外包开发信息系统的商户来说,有一些安全的注意事项,我们从 需求、设计、编码、
测试、部署&运维 五个方面来展开。
3.1需求
a、 商户自建营销活动需设计防刷机制。
3.2设计
a、数据采集
1. ◆ 法律禁止企业记录和存储的数据(如磁道信息、信用卡CVV码等)不能收集。
2. ◆ 客户端敏感数据必须先进行加密处理。
b、数据传输
1. ◆ 使用HTTPS确保网络传输安全性。
115
“微信刷卡支付系统”概要设计说明书
2. ◆ 禁用SSL等不安全协议和算法,建议使用TLS1.2。
3. ◆ 不要轻易的尝试设计和实现自己的加密传输算法,几乎都会存在问题。
c、数据保存
1. ◆ 敏感信息禁止出现在日志中,如确实需要,需进行脱敏处理。
2. ◆ 缓存和DB中的敏感数据需进行加密或者虚化(Hash)。
3. ◆ 密码等关键认证必须采用加盐Hash方式保存。
d、数据访问
1. ◆ 外部请求数据访问必须进行鉴权操作。
2. ◆ 对于内部的数据访问要严加控制,降低用户信息泄漏风险。
e、审计日志
1. ◆ 记录的操作日志要包括5W信息(Who、When、Why、How、What)。
f、资金处理
1. ◆ 建立对账机制,每天对系统收支数据与微信支付数据进行对账,避免资金出现问题。
2. ◆ DB或者KV需要设计数据防篡改机制。
3.3编码
a、防止参数处理不当导致的常见漏洞
1. ◆ 参考 Web漏洞检测及修复
b、防止逻辑处理不当导致的漏洞
1. ◆ 支付成功回调通知必须验证微信支付签名,避免被恶意攻击。
2. ◆ 在后台进行商户价格的判断逻辑,避免客户端篡改价格导致商户损失。
3. ◆ 避免在App或者网站页面里面出现商户APIkey或API证书等信息,防止泄漏。
c、APP开发安全注意事项
1. ◆ IOS应用安全开发参考 Apple NextPrevious Security Development Checklists
2. ◆ andriod应用安全开发参考 Andriod Security Tips
116
“微信刷卡支付系统”概要设计说明书
3.4测试
a、对输入输出参数进行专项安全测试。
b、 通过众测或自建、第三方的安全扫描机制对系统进行安全扫描并对问题进行修复。
3.5部署&运维
a、确保系统所使用商业和开源组件的版本是最新稳定版。
b、参考此份checklist进行安全配置 系统漏洞检测及修复
c、考虑系统和数据服务容灾,至少有主备机制,建议多机房多地部署。
d、建议采用各大云系统,并且启用相关的云安全防控机制。
e、如有条件,建议自建或者购买一些安全监控服务或设备。
f、设定关键指标项,进行实时数据上报和监控
g、有专门的人员来跟进安全事件的处置。
h、关注信息系统所使用框架及组件的安全信息情况。
i、按时打补丁,定期检查系统升级。
j、服务端口开启最小化原则。
k、服务器登录操作可审计。
m、内部管理运营系统必须认证登录做操作日志记录以供审计。
n、建立业务下线机制,不再使用的业务做下线操作减少被攻击面。
117
“微信刷卡支付系统”概要设计说明书
第十章 SDK下载
1. SDK下载
平台和语言 说明
JAVA
支付模式
下载【微信支付】API对应的SDK和调用示例 刷卡支付
.NET C# 【微信支付】API对应的SDK和调用示例 刷卡支付、微信内网页支付、扫码支付 下载
PHP 【微信支付】API对应的SDK和调用示例 刷卡支付、微信内网页支付、扫码支付 下载
2. 注意事项
2.1服务器SSL版本说明
由于低版本的SSL存在高危漏洞,需要确认您系统所使用的SSL版本是否需要升级,详细说明请见
公众平台SSL安全策略说明:/cgi-bin/announce?action=getannou
ncement&key=1414562353&version=11&lang=zh_CN
Java开发可以参考Oracle网站的说明:[Oracle Java disable SSL3](/t
echnetwork/java/javase/documentation/)
2.2 IPV6相关
如果您的服务器开启了IPv6支持,由于当前互联网对IPv6支持不完整,导致在DNS解析时通常会
碰到超时问题;
建议在调用支付API时,显示指定使用IPv4解析.
PHP程序使用curl调用参考代码如下:
if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4'))
{
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
118
“微信刷卡支付系统”概要设计说明书
}
2.3无法连接微信服务器,访问超时
a. 是否存在跨运营商访问的情况,详见网络超时的定位
可以ping 查询对应的解析IP
通过访问获取取口IP,也可以根据商户侧服务器的外网IP确认
b. 是否使用的阿里云主机
由于阿里云使用的BGP,需要确认解析出来的IP是否为182.254.44.159,否则需要调整DNS设
置,使用阿里本身的DNS服务器
c. 是否使用curl库访问
需要指定参数使用ipv4,具体可参考/article/
d. 确认java程序使用的HttpClient的版本是否<=4.3.4
可升级HttpClient到4.3.6版本
3. 联系我们
•
•
添加公众号“微信支付商户通”,发微信消息可以联系到我们;
发邮件到*******************;
119


发布评论