微信支付API文档V256.docx
《微信支付API文档V256.docx》由会员分享,可在线阅读,更多相关《微信支付API文档V256.docx(25页珍藏版)》请在冰豆网上搜索。
微信支付API文档V256
微信被扫支付接口文档V2.51
微信被扫支付接口文档
(版本2.5.6)
微信被扫支付接口文档V2.52
目录
微信被扫支付接口文档............................................................................................................1
1.被扫支付介绍......................................................................................................................3
1.1交互细节.....................................................................................................................3
1.3免密额度.....................................................................................................................4
1.4接口调用方式.............................................................................................................4
1.5签名方式.....................................................................................................................5
2.API说明.................................................................................................................................6
2.1提交被扫支付API......................................................................................................6
2.2被扫订单查询API......................................................................................................9
2.3退款申请接口...........................................................................................................12
2.4退款查询接口...........................................................................................................13
2.5撤销接口...................................................................................................................15
2.6对账单接口...............................................................................................................16
2.7授权码查询OPENID接口.....................................................................................18
3.企业红包使用说明..............................................................................................................19
3.1创建批次企业红包...................................................................................................19
3.2提交支付使用企业红包...........................................................................................19
3.3查询使用企业红包金额...........................................................................................19
3.4企业红包对账单.......................................................................................................20
4.错误码列表..........................................................................................................................20
微信被扫支付接口文档V2.53
1.被扫支付介绍
1.1交互细节
根据微信被扫支付场景,设计商家支付逻辑。
(1)商户收银系统生成订单,进入微信支付流程;
(2)用户打开微信刷卡界面,收银系统扫描到用户二维码或条码(见下左图);
(3)组装支付交易需要的数据,并生成签名(签名方式见1.5节);
(4)调用微信被扫API(详见2.1节),提交支付请求;
(5)用户使用微信被扫支付未超过免密限额(详见1.3节),微信直接扣款成功,否则用户
端微信会弹出输入密码提示(见下中图),支付成功后用户微信侧会弹出交易结果(见下右
图);
->->
(6)步骤4提交请求后会同步返回支付结果。
如果需要密码验证,支付结果返回
USERPAYING(用户支付中)的状态。
当支付结果为系统错误,需要商户收银系统调用
订单查询API(详见2.2节)查询支付实际交易结果;当返回USERPAYING时等待用户输入
密码,系统可设置间隔时间(建议10秒)重新查询支付结果,直到支付成功或超时(建议
30秒);
(4)在交易状况不明晰的情况下调用撤销接口(详见2.5节),如果交易失败则关闭订单,
该单不能再支付成功;如果交易成功,则将扣款退回到用户账户。
当撤销无返回或错误
时,请再次调用。
1.2接口调用时序图
微信被扫支付接口文档V2.54
1.3免密额度
用户使用每单免密额度(用户不可调整);
每单小于300元的消费都免密;
每天10次免密刷卡限制;
大于300元的消费需要验证密码;
当天满10次免密,后续交易均验证密码,第二天自动恢复免密次数;
用户行为异常需要验证密码;
用户可以停用此功能;
1.4接口调用方式
API调用方式与说明:
采用HTTPS方式访问
提交方法为POST
提交和返回的数据格式为XML
编码为UTF-8
提交和返回数据都需要验证签名。
注意:
撤销和退款接口需要双向证书(商户证书),支付和查询不需要。
微信被扫支付接口文档V2.55
1.5签名方式
Sign签名生成方法
由于数据中携带了生成订单的详细信息,因此在微信将对数据里面的内容进行鉴权,
确定携带的信息是真实、有效、合理的。
因此,这里将定义生成sign字符串的方法。
a.对所有传入参数按照字段名的ASCII码从小到大排序(字典序)后,使用URL键
值对的格式(即key1=value1&key2=value2…)拼接成字符串string1,注意:
值为空的
参数不参与签名;
b.在string1最后拼接上key=paternerKey得到stringSignTemp字符串,并对
stringSignTemp进行md5运算,再将得到的字符串所有字符转换为大写,得到sign值
signValue。
下面定义了一段生成sign字符串的示范过程:
假设以下为package传入参数:
appid=wxd930ea5d5a258f4f
auth_code=123456
body=test
device_info=123
mch_id=1900000109
nonce_str=960f228109051b9969f76c82bde183ac
out_trade_no=1400755861
spbill_create_ip=127.0.0.1
sub_mch_id=124
total_fee=1
key=8934e7d15453e97507ef794cf7b0519d
i:
经过a过程URL键值对字典序排序后的字符串string1为:
appid=wxd930ea5d5a258f4f&auth_code=123456&body=test&device_info=123&m
ch_id=1900000109&nonce_str=960f228109051b9969f76c82bde183ac&out_trade_no=
1400755861&spbill_create_ip=127.0.0.1&sub_mch_id=124&total_fee=1
ii:
经过b过程后得到sign为:
sign
=md5(string1&key=8934e7d15453e97507ef794cf7b0519d).toUpperCase
=md5(appid=wxd930ea5d5a258f4f&auth_code=123456&body=test&device_info=1
微信被扫支付接口文档V2.56
23&mch_id=1900000109&nonce_str=960f228109051b9969f76c82bde183ac&out_trad
e_no=1400755861&spbill_create_ip=127.0.0.1&sub_mch_id=124&total_fee=1&key=893
4e7d15453e97507ef794cf7b0519d).toUpperCase()
="c380bec2bfd727a4b6845133519f3ad6".toUpperCase()
="C380BEC2BFD727A4B6845133519F3AD6"
2.API说明
2.1提交被扫支付API
URL:
具"3o_徛_体的post数据格式如:
wx2421b1c4370ec43b
[CDATA[att]]>
100000000749880164
[CDATA[交易说明]]>
1000
10000100
58ef9df15219a07d73b176b3e664d735
1404470527
127.0.0.1
1
[CDATA[F06C8D0D931B360AB6DEFB886F8E9FC5]]>
提交参数说明:
字段名变量名必
填
类型说明
公众账号IDappid是String(32)微信分配的公众账号ID
商户号mch_id是String(32)微信支付分配的商户号
子商户号sub_mch_id否String(32)微信支付分配的子商户号,受
理模式下必填
设备号device_info否String(32)终端设备号(商户自定义)
微信被扫支付接口文档V2.57
随机字符串nonce_str是String(32)随机字符串,不长于32位
签名sign是String(32)签名,签名方式详见1.5节
商品描述body是String(127)商品描述
附加数据attach否String(127)附加数据,原样返回
商户订单号out_trade_no是String(32)商户系统内部的订单号,32个
字符内、可包含字母,确保在商
户系统唯一
总金额total_fee是Int订单总金额,单位为分,只能
整数
终端IPspbill_create_ip是String(16)订单生成的机器IP
交易起始时
间
time_start否String(14)订单生成时间,格式为
yyyyMMddHHmmss,如2009
年12月25日9点10分10秒
表示为20091225091010。
时
区为GMT+8beijing。
该时间取
自商户服务器
交易结束时
间
time_expire否String(14)订单失效时间,格式为
yyyyMMddHHmmss,如2009
年12月27日9点10分10秒
表示为20091227091010。
时
区为GMT+8beijing。
该时间取
自商户服务器
商品标记goods_tag否String(32)商品标记,微信平台配置的商
品标记,用于优惠券或者满减
使用,使用说明详见第3节
授权码auth_code是String(128)扫码支付授权码,设备读取用
户微信中的条码或者二维码
信息
备注:
appid,mch_id,sub_mch_id由微信提供,device_info由商户分配,auth_code
为读取到用户的支付码。
注意:
商户的outtradeno必须全局唯一,调试和生产环境,都需要使用唯一的订单号。
注意:
当商户的同一个商户号绑定了公众号支付、被扫刷卡、APP支付也需要加标识来
区分,不能出现重复。
当发起支付返回失败时,一定要用原订单的outtradeno而不能
重新生成新的订单号发起支付,避免同一单重复支付。
返回数据:
[CDATA[SUCCESS]]>
[CDATA[OK]]>
[CDATA[wx2421b1c4370ec43b]]>
[CDATA[10000100]]>
微信被扫支付接口文档V2.58
[CDATA[1000]]>
[CDATA[LM1Bbp0WoDV5jqpP]]>
[CDATA[1DE267795ECCC5BFB90DDCA91DBBF107]]>
[CDATA[SUCCESS]]>
[CDATA[oUpF8uAPCYkD5hhiSz_M9eFoD3Cw]]>
[CDATA[N]]>
[CDATA[MICROPAY]]>
1
0
[CDATA[1]]>
[CDATA[1217752501201407033233368018]]>
_id>
[CDATA[1404470527]]>
[CDATA[att]]>
[CDATA[20140703211656]]>
格式说明:
字段名变量名必填类型说明
返回状态码return_code是String(16)SUCCESS/FAIL
此字段是通信标识,非交易标
识,交易是否成功需要查看
result_code来判断
返回信息return_msg否String(128)返回信息,如非空,为错误原因
签名失败
参数格式校验错误
以下字段在return_code为SUCCESS的时候有返回
公众账号IDappid是String(32)微信分配的公众账号ID
商户号mch_id是String(32)微信支付分配的商户号
子商户号sub_mch_id否String(32)微信支付分配的子商户号,受理
模式下必填
设备号device_info否String(32)微信支付分配的终端设备号,
随机字符串nonce_str是String(32)随机字符串,不长于32位
签名sign是String(32)签名,详细签名方法见1.5节
业务结果result_code是String(16)SUCCESS/FAIL
错误代码err_code否String(32)列表详见第3节
错误代码描述err_code_des否String(128)结果信息描述
以下字段在return_code和result_code都为SUCCESS的时候有返回
用户标识openid是String(128)用户在商户appid下的唯一标
识
是否关注公众is_subscribe是String
(1)用户是否关注公众账号,Y-关
微信被扫支付接口文档V2.59
账号注,N-未关注,仅在公众账号类
型支付有效
交易类型trade_type是String(16)JSAPI、NATIVE、MICROPAY、APP
付款银行bank_type是String(16)银行类型,采用字符串类型的银
行标识
总金额total_fee是Int订单总金额,单位为分
企业红包金额coupon_fee否Int企业红包金额<=订单总金额,订
单总金额-企业红包金额=现金
支付金额
货币种类fee_type否String(8)货币类型,符合ISO4217标准
的三位字母代码,默认人民币:
CNY
微信支付订单
号
transaction_id是String(32)微信支付订单号
商户订单号out_trade_no是String(32)商户系统的订单号,与请求一
致。
商家数据包attach否String(128)商家数据包,原样返回
支付完成时间time_end是String(14)支付完成时间,格式为
yyyyMMddhhmmss,如2009年12
月27日9点10分10秒表示为
20091227091010。
时区为
GMT+8beijing。
该时间取自微信
支付服务器
2.2被扫订单查询API
当调用扣款接口返回支付中或失败状态,需要调用查询接口查询订单实际支付状态。
当
遇到用户超过日限额需要输入密码返回“支付中”的状态,建议10秒调一次查询,调
用3次后还未成功作支付超时处理。
URL:
具体的post数据格式如:
wx2421b1c4370ec43b
10000100
6e9feef0d48ead6730ce88ecc22b34cc
1404470527
1404470527
[CDATA[E7F981D8CC798F3C290757A00583607F]]>
提交参数说明:
微信被扫支付接口文档V2.510
字段名变量名必填类型说明
公众账号IDappid是String(32)微信分配的公众账号ID
商户号mch_id是String(32)微信支付分配的商户号
子商户号sub_mch_id否String(32)微信支付分配的子商户号,受
理模式下必填
微信订单号transaction_id否String(32)微信的订单号,优先使用
商户订单号out_trade_no
是String(32)商户系统内部的订单号,
transaction_id、
out_trade_no二选一,如果
同时存在优先级:
transaction_id>
out_trade_no
随机字符串nonce_str是String(32)随机字符串,不长于32位
签名sign是String(32)签名,详细签名方法见1.5节
返回数据:
[CDATA[SUCCESS]]>
[CDATA[OK]]>
[CDATA[wxd930ea5d5a258f4f]]>
1900000109
124
123
[CDATA[960f228109051b9969f76c82bde183ac]]>
[CDATA[SUCCESS]]>
[CDATA[]]>
[CDATA[]]>