SnapPay Developer Documents
用户体验升级补丁验收报告及确认单
前言
本次用户体验升级补丁主要围绕“OpenAPI的h5Pay接口,同一商户多次使用同一订单号进行重复下单”及“订单超时后自动关闭订单”进行相关开发及测试验证。
1.开发修复方案
开发修复方案文档中包含:修复点说明、代码(服务、分支、模块、class)及功能流程图等,具体参照表1所示:
序号 | 修复点(修复方案) | 修复方案【附件链接】 |
1 | h5Pay订单号重复 | |
2 | 订单超时 |
表1 开发修复方案文档
2.OS环境影响
由于OS环境配置等因素,本次修复验证不会进行“银联二维码”、“securePay通道”、“【USD】微信、支付宝”的相关交易验证,具体原因如下所示:
银联二维码(原因):OS环境通道参数有问题。
SecurePay通道(原因):本次修复的代码提交qr-invoice分支,而securePay交易只要部署securePay分支;目前,未将securePay分支合并到qr-invoice分支,故不测试securePay通道交易)”。
【USD】微信、支付宝(原因):(沙箱)支付宝及微信在OS环境无法进行交易。
【提示】如需进行“银联二维码”、“securePay通道”、“【USD】微信、支付宝”的相关交易验证,请提供可测环境。
由于SnapPay内部的“qr_invoice子系统”在调用的“OpenApi_h5Pay”接口时,h5Pay请求参数中未指定“effective_minutes字段值”。因此"POS端qr_invoice"的真正有效期按照“支付通道转接模板中的‘expirde_time’配置参数为准(即参数模板中带有“effective_minutes字段”,则按照指定的“effective_minutes字段值”进行相关订单超时逻辑处理;若参数模板中不带“effective_minutes字段”,则以“24小时(1440分钟)”进行相关订单超时逻辑处理)。”
3.测试范围
本次修复验证的测试范围涉及到“h5Pay订单号重复”及“订单号超时”两部分,具体的测试范围及相应的测试场景执行参照表2所示:
序号 | 修改点 | 测试范围 | 备注 |
1 | h5Pay订单验重 | 1.(OpenAPI) h5Pay【(CAD/USD)微信、支付宝;银联二维码】交易及退款 2.(OpenAPI) h5Pay【Securepay】交易及退款 | 1.本次修复验证只做“CAD下的支付宝、微信”相关交易。 2.POS端(QR_Invoice)下单请求的“effcitve_minuites=1440(即1440为固定值)”不能进行指定的effcitve_minuites的自定义设置,故采用POS主扫进行“POS端订单有效期(即以“通道”)”验证。 |
2 | 订单超时 | 1.(OpenAPI) h5Pay/QrcodePay带/不带“effective_minutes字段”进行相关“订单超时验证”。 2.POS主扫(微信、支付宝)进行相关“订单超时验证”。 |
说明 本次修复验证不会进行“银联二维码”、“securePay通道”、“【USD】微信、支付宝”的相关交易验证,具体原因如下所示:
银联二维码(原因):OS环境通道参数有问题。
SecurePay通道(原因):本次修复的代码提交qr-invoice分支,而securePay交易只要部署securePay分支;目前,未将securePay分支合并到qr-invoice分支,故不测试securePay通道交易)”。
【USD】微信、支付宝(原因):(沙箱)支付宝及微信在OS环境无法进行交易。
4.测试执行及记录
4.1 h5Pay订单重复
4.1.1 ok 交易
1. 同一订单号在同一商户下交易
场景1:同一订单号(H5test202009010001)在同一商户下连续下单,response会报“商户订单号重复”。 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“微信”举例进行下述场景操作,“支付宝、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=H5test202009010001,payment_method =WECHATPAY”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“微信”扫描“h5Pay二维码”及成功支付操作。 前提条件 只有成功执行完【step1、2】后,才能进行后续操作。 step3 保持“h5Pay接口”的请求参数(即“out_order_no=H5test202009010001,payment_method =WECHATPAY”等信息)与【step1的请求参数】一致,并发送请求。 step4 查看【step3】操作后返回的response信息中是否出现“("code":"E055567","msg":"The order number of the merchant is repeated. Please change the order number and try again")”等信息。 | 微信 A.【步骤1、2操作后】:
B.【步骤1、2、3、4操作后】:
{"code":"E055567", "data":[],"msg":"The order number of the merchant is repeated. Please change the order number and try again"} ------------------------ 支付宝 A.【步骤1、2操作后】:
B.【步骤1、2、3、4操作后】:
{"code":"E055567", "data":[],"msg":"The order number of the merchant is repeated. Please change the order number and try again"} -------------------- 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此 场景验证条件) |
2. 同一订单号在不同商户下交易
场景2:同一订单号(H5test202009010002)在不同商户下下单,response会报“商户订单号重复”。 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“微信”举例进行下述场景操作,“支付宝、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=H5test202009010002,payment_method =WECHATPAY”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“微信”扫描“h5Pay二维码”及成功支付操作。 step3 商户(小李钢笔 902000307934)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=H5test202009010002,payment_method =WECHATPAY”等信息并发送请求。 step4 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“微信”扫描“h5Pay二维码”及成功支付操作。 | 微信 A.【步骤1、2操作后】:
B.【步骤3、4操作后】:
----------------------- 支付宝 A.【步骤1、2操作后】:
B.【步骤3、4操作后】:
---------------------- 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此 场景验证条件) |
4.1.2 退款
1.同一订单号在同一商户下交易
场景3:同一订单号(H5test202009010001)在同一商户下进行“退款”操作 【说明】只要用户能成功退款即可 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“微信”举例进行下述场景操作,“支付宝、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的orderrefund接口",对“out_order_no=H5test202009010001“进行“退款”操作 step2 查看【step1】操作后,用户是否收到“退款信息”。 | 微信 A.【步骤1、2操作后】:
----------------------------------- 支付宝
---------------------- 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此 场景验证条件) |
2. 同一订单号在不同商户下交易
场景4:同一订单号(H5test202009010002)在不同商户下进行“退款”操作 | |||
操作步骤 | 备注 | 测试结果(通过) | |
step1 商户(小李桌面 902000307553)使用"OpenAPI的orderrefund接口",对“out_order_no=H5test202009010002“进行“退款”操作 step2 查看【step1】操作后,用户是否收到“退款信息”。 前提条件 只有成功执行完【step1、2】后,才能进行后续操作。 step3 商户(小李钢笔 902000307934)使用"OpenAPI的orderrefund接口",对“out_order_no=H5test202009010002“进行“退款”操作 step4 查看【step4】操作后,用户是否收到“退款信息”。 | 微信: A.【步骤1、2操作后】:
B.【步骤3、4操作后】:
-------------------- 支付宝: A.【步骤1、2操作后】:
B.【步骤3、4操作后】:
----------------- 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此 场景验证条件) |
4.2 订单超时逻辑优化
4.2.1 订单有效时间配置
本次“订单有效时间修复”中,OMP的支付通道的“参数配置(通道方转接模板)”需添加“expired_time字段”。如果,下单请求中带了“有效时间字段”,则优先走“下单有效时间流程”;如果,下单接口没有带“有效时间字段”,则取“支付通道配置中expired_time的设置逻辑流程”;如果,“支付通道没有配置expired_time字段”,则“走默认24小时有效期流程”。
订到有效时间取值优先级:下单请求(有效时间字段)> 通道转接模板(expired_time)> 默认24小时。具体的“订单超时逻辑流程”参见图2.1.1所示:
图2.1.1 订单超时逻辑流程
对于OMP的支付通道的“参数配置(通道方转接模板)"配置参见图2.1.2所示:
图2.1.2 OMP的支付通道的“参数配置(通道方转接模板)"
本次修复验证中,因为只做“支付宝、微信”交易,因此需要给“WechatPay-Instore-CAD、AliPay-Instore-CAD”支付通道配置的“通道方转接参数”新增“expired_time参数(测试统一配置为:10min)”。
【说明】(真正)订单有效期=订单创建时间+expired_time+1mins(延时查询),举例:“订单创建时间【北京时间,16:00:00】+expirde_time(10分钟)+1mins(系统设定的“延时查询”)”得出“(真正)订单有效期=16:11:00”。
4.2.2 OpenAPI接口交易
本次OpenAPI会选取“h5pay及qrpay”接口进行“微信、支付宝”的交易下单操作。
1. h5pay交易(下单请求带“effective_minutes字段”)
场景5: 超过“订单有效期”(前提:下单请求带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否“过期后输入支付密码进行实际支付操作”。 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“微信”举例进行下述场景操作,“支付宝、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=H5test202009020011,payment_method =WECHATPAY,effective_minutes=5”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“微信”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭微信的密码键盘)。 step3 (订单有效期5mins内) 查看“out_order_no=H5test202009020011”在平台上的“交易状态” step4 (超过订单有效期5mins,即在6mins) 查看“out_order_no=H5test202009020011”在平台上的“交易状态”是否为“交易关闭”;“在微信的密码键盘上输入支付密码是否能够支付成功” | 微信: A.【步骤1、2、3操作后】:
B.【步骤4操作后】:
-------------------- 支付宝: A.(略写步骤1、2、3) 【步骤4操作后】:
------------------------------ 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此 场景验证条件) |
场景6:临近“订单有效期”进行支付(前提:下单请求带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否"在快过期的前2秒输入支付密码进行实际支付操作”。 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“支付宝”举例进行下述场景操作,“微信、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=H5test202009020012,payment_method =ALIPAY,effective_minutes=5”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“支付宝”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭支付宝的密码键盘)。 step3 (订单有效期5mins内) 查看“out_order_no=H5test202009020012”在平台上的“交易状态” step4 (在4分58秒) 用户在支付宝的密码键盘上输入支付密码(说明:请手快点操作,受网络等因素限制,用户可能支付成功,也可能支付失败) step5 (超过订单有效期5mins,即在6mins) 查看“out_order_no=H5test202009020012”在平台上的“交易状态”是否为“交易关闭”;“在支付宝的密码键盘上输入支付密码是否能够支付成功” | 支付宝: A.【步骤1、2、3操作后】:
B.【步骤4、5操作后】:
-------------------------------------- 微信: A.(略写步骤1、2、3) 【步骤4、5操作后】:
------------------------------ 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此场景验证条件) |
2. h5pay交易(下单请求不带“effective_minutes字段”)
前提条件: h5Pay交易下单请求中不带“effective_minutes字段”,并且"AliPay-Instore-CAD(WeChatPay-Instore-CAD)"支付通道"通道转接模板"中设置“expired_time=10(即此时的订单有效期为10mins)”。
场景7: 超过“订单有效期”(前提:下单请求不带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否“过期后输入支付密码进行实际支付操作”。 【说明】此时的订单有效期为10min | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“微信”举例进行下述场景操作,“支付宝、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=H5test202009040003,payment_method =WECHATPAY”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“微信”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭微信的密码键盘)。 step3 (订单有效期10mins内) 查看“out_order_no=H5test202009040003”在平台上的“交易状态” step4 (超过订单有效期10mins,即在11mins) 查看“out_order_no=H5test202009040003”在平台上的“交易状态”是否为“交易关闭”;“在微信的密码键盘上输入支付密码是否能够支付成功” | 微信: A.【步骤1、2、3操作后】:
B.【步骤4操作后】:
-------------------- 支付宝: A.(略写步骤1、2、3) 【步骤4操作后】:
------------------------------ 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此场景验证条件) |
场景8:临近“订单有效期”进行支付(前提:下单请求不带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否"在快过期的前2秒输入支付密码进行实际支付操作”。 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“支付宝”举例进行下述场景操作,“微信、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=H5test202009040006,payment_method =ALIPAY”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“支付宝”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭支付宝的密码键盘)。 step3 (订单有效期10mins内) 查看“out_order_no=H5test202009020012”在平台上的“交易状态” step4 (在9分58秒) 用户在支付宝的密码键盘上输入支付密码(说明:请手快点操作,受网络等因素限制,用户可能支付成功,也可能支付失败) step5 (超过订单有效期10mins,即在11mins) 查看“out_order_no=H5test202009020012”在平台上的“交易状态”是否为“交易关闭”;“在支付宝的密码键盘上输入支付密码是否能够支付成功” | 支付宝: A.【步骤1、2、3操作后】:
B.【步骤4、5操作后】:
-------------------------------------- 微信: A.(略写步骤1、2、3) 【步骤4、5操作后】:
------------------------------ 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此场景验证条件) |
3. qrcodePay交易(下单请求带“effective_minutes字段”)
前提条件: qrPay交易下单请求中带“effective_minutes字段”,并且"AliPay-Instore-CAD(WeChatPay-Instore-CAD)"支付通道"通道转接模板"中设置“expired_time=10(即此时的订单有效期为10mins)”。
场景9:超过“订单有效期”进行支付 (前提:下单请求带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否“过期后输入支付密码进行实际支付操作”。 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“支付宝”举例进行下述场景操作,“微信、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的qrcodePay接口",其中输入“out_order_no=Qrtest202009040005,payment_method =ALIPAY,,effective_minutes=5”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“支付宝”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭支付宝的密码键盘)。 step3 (订单有效期5mins内) 查看“out_order_no=Qrtest202009040005”在平台上的“交易状态” step4 (超过订单有效期5mins,即在6mins) 查看“out_order_no=Qrtest202009040005”在平台上的“交易状态”是否为“交易关闭”;“在支付宝的密码键盘上输入支付密码是否能够支付成功” | 支付宝: A.【步骤1、2、3操作后】:
B.【步骤4操作后】:
-------------------- 微信: A.(略写步骤1、2、3) 【步骤4操作后】:
------------------------------ 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此场景验证条件) |
场景10:临近“订单有效期”进行支付 (前提:下单请求带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否"在快过期的前2秒输入支付密码进行实际支付操作”。 | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“支付宝”举例进行下述场景操作,“微信、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的qrcodePay接口",其中输入“out_order_no=Qrtest202009040007,payment_method =ALIPAY,effective_minutes=5”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“支付宝”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭支付宝的密码键盘)。 step3 (订单有效期5mins内) 查看“out_order_no=Qrtest202009040007”在平台上的“交易状态” step4 (在4分58秒) 用户在支付宝的密码键盘上输入支付密码(说明:请手快点操作,受网络等因素限制,用户可能支付成功,也可能支付失败) step5 (超过订单有效期5mins,即在6mins) 查看“out_order_no=Qrtest202009040007”在平台上的“交易状态”是否为“交易关闭”;“在支付宝的密码键盘上输入支付密码是否能够支付成功” | 支付宝 A.【步骤1、2、3操作后】:
B.【步骤4、5操作后】:
-------------------- 微信 A.(略写步骤1、2、3) 【步骤4、5操作后】:
------------------------------ 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此场景验证条件) |
4. qrcodePay交易(下单请求不带“effective_minutes字段”)
前提条件: qrPay交易下单请求中不带“effective_minutes字段”,并且"AliPay-Instore-CAD(WeChatPay-Instore-CAD)"支付通道"通道转接模板"中设置“expired_time=10(即此时的订单有效期为10mins)”。
场景11:超过“订单有效期”进行支付 (前提:下单请求带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否“过期后输入支付密码进行实际支付操作”。 【说明】此时的订单有效期为10min | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“支付宝”举例进行下述场景操作,“微信、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=Qrtest202009020001,payment_method =ALIPAY”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“支付宝”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭支付宝的密码键盘)。 step3 (订单有效期10mins内) 查看“out_order_no=Qrtest202009020001”在平台上的“交易状态” step4 (超过订单有效期10mins,即在11mins) 查看“out_order_no=Qrtest202009020001”在平台上的“交易状态”是否为“交易关闭”;“在支付宝的密码键盘上输入支付密码是否能够支付成功” | 支付宝: A.【步骤1、2、3操作后】:
B.【步骤4操作后】:
-------------------- 微信: A.(略写步骤1、2、3) 【步骤4操作后】:
------------------------------ 银联二维码:OS环境不具备此场景验证条件 |
| |
| |||
(OS环境不具备此场景验证条件) |
场景12:临近“订单有效期”进行支付 (前提:下单请求带“effective_minutes字段”) 查看“交易状态是否变为‘交易关闭’”及用户能否"在快过期的前2秒输入支付密码进行实际支付操作”。 【说明】此时的订单有效期为10min | |||
操作步骤 | 备注 | 测试结果(通过) | |
说明 下面以“支付宝”举例进行下述场景操作,“微信、银联二维码”同理进行操作。 step1 商户(小李桌面 902000307553)使用"OpenAPI的h5Pay接口",其中输入“out_order_no=Qrtest202009020003,payment_method =ALIPAY,effective_minutes=5”等信息并发送请求。 step2 由【step1】接口response中的“h5pay_url字段”生成对应的“二维码”,并使用“支付宝”扫描“h5Pay二维码”及(订单有效期内)不进行支付操作(此时不关闭支付宝的密码键盘)。 step3 (订单有效期10mins内) 查看“out_order_no=Qrtest202009020003”在平台上的“交易状态” step4 (在9分58秒) 用户在支付宝的密码键盘上输入支付密码(说明:请手快点操作,受网络等因素限制) step5 (超过订单有效期10mins,即在11mins) 查看“out_order_no=Qrtest202009020003”在平台上的“交易状态”是否为“交易关闭”;“在支付宝的密码键盘上输入支付密码是否能够支付成功” | 支付宝 A.【步骤1、2、3操作后】:
B.【步骤4、5操作后】:
-------------------- 微信 A.(略写步骤1、2、3) 【步骤4、5操作后】: |
Copyright reserved for SnapPay Inc 2019.