威富通统一小额支付接口文档V1.3
- 格式:pdf
- 大小:386.18 KB
- 文档页数:24
威富通统一小额支付接口文档文档版本:1.3接口版本:2.0目录1引言 (3)1.1文档概述 (3)1.2阅读对象 (3)1.3业务术语 (3)2方案概述 (4)2.1行业背景 (4)2.2业务实现流程 (4)2.2.1小额支付业务 (4)3数据格式 (5)3.1提交数据 (5)3.2XML数据格式 (6)4数字签名 (7)4.1签名原始串 (7)4.2签名算法 (8)5小额支付接口 (9)5.1小额支付接口 (9)5.1.1业务功能 (9)5.1.2交互模式 (9)5.1.3请求参数列表 (9)5.1.4返回结果 (10)5.2冲正接口 (12)5.2.1业务功能 (12)5.2.2交互模式 (12)5.2.3请求参数列表 (13)5.2.4返回结果................................................................................................................错误!未定义书签。
6查询退款接口 (14)6.1订单查询接口 (14)6.1.1业务功能 (14)6.1.2交互模式 (14)6.1.3请求参数列表 (14)6.1.4返回结果 (15)6.2退款接口 (17)6.2.1业务功能 (17)6.2.2交互模式 (17)6.2.3请求参数列表 (18)6.2.4返回结果 (18)6.3退款查询接口 (19)6.3.1请求参数列表 (19)6.3.2返回结果 (20)7注意事项 (21)1引言1.1文档概述本文件描述威富通针对线下O2O手机支付行业提供的支付解决方案。
供内部相关开发和技术支持人员与商户平台服务方技术人员使用。
文档分别从交互模式、签名、接口、注意事项等方面详细介绍了威富通的工作方式和开发过程,可以帮助开发人员快速入门并掌握开发技能,同时也可以作为日后接口参数以及参数类型的速查手册。
1.2阅读对象供威富通开发人员与商户平台服务方技术或业务人员参考和查询。
1.3业务术语术语示例说明商户号7551000001商户平台的账号,只用于记账密钥9d101c97133837e13dde2d32a5054abb为保证通讯不被篡改,威富通与商户之间约定的32位字符串,算签名sign时使用金额1000金额,默认为RMB,以分为单位。
1000表示RMB10.002方案概述2.1行业背景扫码支付,是基于微信,手机qq,支付宝钱包客户端提供的支付服务功能。
同时向商户提供销售经营分析、账户和资金管理的功能支持。
用户通过扫描二维码、反扫二维码等多种方式调起支付模块完成支付。
2.2业务实现流程2.2.1小额支付业务使用场景:(1)用户打开小额刷卡界面,商家扫描到用户二维码或条码后发起支付,通过Post生成订单的必要信息调用威富通API。
API返回XML格式的数据,返回调用结果。
支付成功后微信|手机qq|支付宝钱包会提示用户交易结果,如下图:(2)在步骤1中,如果用户使用小额已支付金额超过日限额(详细说明见下文),会提示用户输入密码。
(3)当步骤1未返回未成功或支付中状态,可以主动调用查单接口查询支付状态。
(4)在交易状况不明晰的情况下调用冲正接口,如果交易成功,取消扣款,如果交易失败则关闭订单。
接口调用时序图:用户使用小额支付的免密额度以微信,手机qq,支付宝钱包实时的额度限制为准3数据格式3.1提交数据采用HTTPS标准的POST协议,为了保证接收方接收数据正确,传输数据必须签名。
<xml><service>unified.trade.micropay</service><attach><![CDATA[att]]></attach><body><![CDATA[支付测试]]></body><device_info>1000</device_info><mch_id>10000100</mch_id><nonce_str>adf880d5c8986bd0deb6423c92c9d948</nonce_str><out_trade_no>1406046836</out_trade_no><spbill_create_ip>127.0.0.1</spbill_create_ip><total_fee>1</total_fee><sign><![CDATA[F53145E553092CE52E4CAA4D2B49A91C]]></sign></xml3.2XML数据格式采用标准XML协议,所有参数只存在一级节点中,不采用多级节点嵌套。
协议级错误返回:<xml><status>500</status><message><![CDATA[SYSERR]]></message></xml>正确返回数据:<xml><status>0</status><message><![CDATA[OK]]></message><appid><![CDATA[wx2421b1c4370ec43b]]></appid><mch_id><![CDATA[10000100]]></mch_id><device_info><![CDATA[1000]]></device_info><nonce_str><![CDATA[FvYSnPuFFPkAr77M]]></nonce_str><sign><![CDATA[63238039D6E43634297CF2A6EB5F3B72]]></sign><result_code>0</result_code><openid><![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]></openid><is_subscribe><![CDATA[Y]]></is_subscribe><trade_type><![CDATA[MICROPAY]]></trade_type><bank_type><![CDATA[CCB_CREDIT]]></bank_type><total_fee>1</total_fee><coupon_fee>0</coupon_fee><fee_type><![CDATA[CNY]]></fee_type><transaction_id><![CDATA[1008450740201407220000058756]]></transaction_id> <out_trade_no><![CDATA[1406033828]]></out_trade_no><attach><![CDATA[att]]></attach><time_end><![CDATA[20140722160655]]></time_end></xml>业务级错误返回:<xml><status>0</status><message><![CDATA[OK]]></message><appid><![CDATA[wx2421b1c4370ec43b]]></appid><mch_id><![CDATA[10000100]]></mch_id><device_info><![CDATA[1000]]></device_info><nonce_str><![CDATA[sthBJ9QyUG6vkrjJ]]></nonce_str><sign><![CDATA[6277A96D7875D4FF23AA7B6A4C3046AB]]></sign><result_code>1</result_code><err_code><![CDATA[AUTHCODE_EXPIRE]]></err_code><err_code_des><![CDATA[二维码已过期,请刷新再试]]></err_code_des></xml一般有返回有status参数,0表示调用成功;非0表示调用失败。
4数字签名为了保证数据传输过程中的数据真实性和完整性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。
数字签名有两个步骤,先按一定规则拼接要签名的原始串,再选择具体的算法和密钥计算出签名结果。
一般失败的结果不签名。
4.1签名原始串无论是请求还是应答,签名原始串按以下方式组装成字符串:1、除sign字段外,所有参数按照字段名的ascii码从小到大排序后使用QueryString的格式(即key1=value1&key2=value2…)拼接而成,空值不传递,不参与签名组串。
2、签名原始串中,字段名和字段值都采用原始值,不进行URL Encode。
3、威富通返回的应答或通知消息可能会由于升级增加参数,请验证应答签名时注意允许这种情况。
举例:调用某个接口,接口有如下字段:<xml><body><![CDATA[测试支付]]></body><mch_create_ip><![CDATA[127.0.0.1]]></mch_create_ip><mch_id><![CDATA[001075552110006]]></mch_id><nonce_str><![CDATA[1409196838]]></nonce_str><notify_url><![CDATA[http://227.0.0.1:9001/javak/sds?123&23=3]]></notify_url> <out_trade_no><![CDATA[141903606228]]></out_trade_no><service><![CDATA[unified.trade.micropay]]></service><sign><![CDATA[83684D9546F261997EFF2ECFAC372583]]></sign><total_fee><![CDATA[1]]></total_fee></xml>正确的签名字段排序为:body=测试支付&mch_create_ip=127.0.0.1&mch_id=001075552110006&nonce_str=1409196838¬ify_url=http://227.0.0.1:9001/javak/sds?123&23=3&out_trade_no=141903606228&service=pay. weixin.scancode&total_fee=14.2签名算法目前暂只支持MD5签名MD5签名MD5是一种摘要生成算法,通过在签名原始串后加上商户通信密钥的内容,进行MD5运算,形成的摘要字符串即为签名结果。