微信支付接口开发 微信支付app支付(ios)接口文档v.

微信支付接口开发 微信支付app支付(ios)接口文档v.

ID:15452074

大小:57.50 KB

页数:34页

时间:2018-08-03

上传者:xinshengwencai
微信支付接口开发 微信支付app支付(ios)接口文档v._第1页
微信支付接口开发 微信支付app支付(ios)接口文档v._第2页
微信支付接口开发 微信支付app支付(ios)接口文档v._第3页
微信支付接口开发 微信支付app支付(ios)接口文档v._第4页
微信支付接口开发 微信支付app支付(ios)接口文档v._第5页
资源描述:

《微信支付接口开发 微信支付app支付(ios)接口文档v.》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 微信支付接口开发微信支付APP支付(IOS)接口文档V1.7APP支付接口文档V1.7版本说明版本V1.6V1.7更改说明更新实例代码更新订单号重复说明更新时间2014-05-032014-06-181.微信支付简介1.1功能简介........................................................................................................................34 .....41.2平台帐号注册.....................................................................................................................51.2.1申请流程指引图......................................................................................................51.2.2申请接入步骤详细说明.........................................................................................51.3支付账户.............................................................................................................................62.微信APP支付接入.......................................................................................................................82.1系统架构.............................................................................................................................82.2基本交互.............................................................................................................................82.3支付功能开发介绍.............................................................................................................93.接口介绍......................................................................................................................................103.1获取access_token.....................................................................................................34 ........103.2生成预支付订单...............................................................................................................113.3订单详情(package)扩展字符串定义..........................................................................123.4支付签名(app_signature)生成方法.............................................................................143.5添加prepayid再次签名..................................................................................................153.6APP端开发说明................................................................................................................163.6.1初始化设置............................................................................................................163.6.2注册您的APPID.........................................34 ..........................................................163.6.3用服务器返回的参数调起支付............................................................................174.通知接口说明..............................................................................................................................184.1通知接口简介...................................................................................................................184.2补单机制...........................................................................................................................184.3通知接口参数...................................................................................................................184.4后台通知结果返回...........................................................................................................214.5后台通知签名方式...........................................................................................................215.API接口说明.....................................................................................34 .........................................235.1API接口简介.....................................................................................................................235.2API列表.............................................................................................................................235.2.1发货通知delivernotify..........................................................................................235.2.2订单查询orderquery............................................................................................256.常见问题和注意事项................................................................................................................276.1帮助SDK..........................................................................................................................276.2常见基本概念疑惑...........................................................................................................286.3常见错误现象及解决方法.....................................................................................34 ..........286.4常见注意事项...................................................................................................................296.5最新接口文档下载.......................................................................................................34 ....296.6联系我们...........................................................................................................................301.微信支付简介1.1功能简介微信APP支付,是基于微信客户端提供的支付服务功能。在第三方APP集成微信支付模块后即可完成商户购买支付流程。本文将全面介绍微信APP支付的技术方案。1.2平台帐号注册1.2.1申请流程指引图1.2.2申请接入步骤详细说明a.目前仅对通过微信开放平台移动应用审核的APP开放微信支付申请入口,请登录微信开放平http://www.wenku1.com台,添加移动应用,等待审核。b.在微信开放平台-管理中心,为通过审核的移动应用申请支付功能,提交相关资料;c.提交相关的资料后,等待审核,微信团队会在7个工作日给出审核结果,结果会发送到开放平台通知中心和邮箱中;邮箱是在商户在填写“企业审核资料”时设置的。通过审核后,商户将收到邮件通知,邮件中包含重要开发参数,请牢记申请时填写的邮箱地址(如上图示)。1.3支付账户商户注册微信开放平台,创建应用后可以获取到APPID和APPSecret,申请开通支付功能,提交企业以及银行账户资料,商户功能审核通过后,可以获得以下账号资料(包含财付通的商户账户)。于支付场景中的appKey值。审核通过后,在微信发送的邮件中查看。appSecret除了支付请求需要用到paySignKey,API的权限获取所需密钥Key,在使用所有公众平台API时,都需要先用它去换取access_token,然后再进行调用(详情参考文档34 API接口部分)。在开放平台中查看。partnerIdpartnerKey财付通商户身份的标识。前三项审核通过后,在财付通发送的邮件中查看。财付通商户权限密钥Key。前三项审核通过后,在财付通发送的邮件中查看。注意:appSecret、paySignKey、partnerKey是验证商户唯一性的安全标识,请妥善保管。对于appSecret和paySignKey的区别,可以这样认为:appSecret是API使用时的登录密码,会在网络中传播的;而paySignKey是在所有支付相关数据传输时用于加密并进行身份校验的密钥,仅保留在第三方后台和微信后台,不会在网络中传播,而且paySignKey仅用于支付请求。2.微信APP支付接入2.1系统架构商户接入APP支付,系统架构如上图。商户APP直接与商户后台服务器通信,涉及支付接口调用都是在商户云服务器与微信后台服务器之间通信。商户服务器生成支付订单,签名后返回给APP,再通过微信SDK提供的API调起微信支付。2.2基本交互APP支付的用户交互如下图:参看以下的交互时序图,更直观、详细讲述APP支付在各端的交互流程。2.3支付功能开发介绍开发工作分为两步,服务器端和客户端开发。商户针对不同的手机系统,开发不同的版本的APP(比如IOS、Android和WPF),在服务器端的处理,则是一致的。下面我们依次介绍服务器开发和不同移动系统终端的微信开放平台API的使用。3.接口介绍3.1获取access_tokenaccess_token对应于公众号是全局唯一的票据,每天有获取次数限制,所有API公用,正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。它的获取方式为:http请求方式:GET地址:请求参数含义:grant_type:获取access_token,此处填写client_credentialappid:第三方用户唯一凭证secret:第三方用户唯一凭证密钥,既appsecret返回结果说明:正确的Json返回示例:{“access_token”:”ACCESS_TOKEN”,”expires_in”:7200}返回参数说明:access_token:获取到的凭证(最大长度为512字节)expires_in:凭证有效时间,单位:秒。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。错误的Json返回示例:{“errcode”:40013,”errmsg”:”invalidappid”}3.2生成预支付订单获取到access_token后,通过微信开放平台接口生成预支付订单。http请求方式:POST地址:Url中的参数只包含目前微信公众平台凭证access_token,详细的订单数据放在PostData中,格式为json,示例如下: 34 {“appid”:”wxd930ea5d5a258f4f”,”traceid”:”crestxu_1398746574”,“noncestr”:”139042a4157a773f209847829d80894d”,”timestamp”:1398746574,“package”:”bank_type=WX&body=%E5%AE%89%E5%8D%93%E7%AD%BE%E5%90%8D%E6%B5%8B%E8%AF%95&fee_type=1&input_charset=UTF-8¬ify_url=http%3A%2F%2Fweixin.qq.com&out_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000109&spbill_create_ip=196.168.1.1&total_fee=1&sign=1F4D39942AEE58A0A5B47421ED4A3767”,“sign_method”:”sha1”,“app_signature”:”426f41a7594badcca405a398020c3c7c8f234 79404”}其中,各字段含义如下:appid:开放平台账户的唯一标识traceid:由开发者自定义,可用于订单的查询与跟踪,建议根据支付用户信息生成此idnoncestr:32位内的随机串,防重发package:订单详情(具体生成方法见后文3.3节)timestamp:时间戳,为自1970年1月1日00:00(时区:东八区)至当前时间的秒数app_signature:签名(具体生成方法见后文3.4节)sign_method:密方式,默认为sha1返回结果说明:正确的Json返回示例:{“prepayid”:”1101000000140429eb40476f8896f4c9”,”errcode”:0,”errmsg”:”Success”}错误的Json返回示例:{“errcode”:48001,”errmsg”:”apiunauthorized”}3.3订单详情(package)扩展字符串定义下面将定义package的所需字段列表以及签名方法。package所需字段列表transport_fee+product_fee=total_fee;product_feegoods_taginput_charset商品费用商品标记传入参数字符编码否否是字符串类型字符串类型字符串类型商品费用,单位为分。如果有值,必须保证transport_fee+product_fee=total_fee;商品标记,优惠券时可能用到;取值范围:”GBK”、”UTF-8”,默认:”GBK”package生成方法由于package中携带了生成订单的详细信息,因此在微信将对package里面的内容进行鉴权,确定package携带的信息是真实、有效、合理的。因此,这里将定义生成package字符串的方法。a.对所有传入参数按照字段名的ASCII码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1;b.在string1最后拼接上key=paternerKey得到stringSignTemp字符串,并对stringSignTemp进行md5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。!进行urlencode时要将空c.对传入参数所有键值对的value进行ur34 lencode转码(注意注意!格转化为%20而不是+)后重新拼接成字符串string2。d.将sign=signValue拼接到string2后面得到最终的package字符串。下面定义了一段生成package字符串的示范过程:假设以下为package传入参数:bank_type=WXbody=安卓签名测试fee_type=1input_charset=UTF-8notify_url=http://weixin.qq.comout_trade_no=1cdf14d1e3699d61d2334 7cf76ce1c2dcapartner=1900000109spbill_create_ip=196.168.1.1total_fee=1i:经过a过程URL键值对字典序排序后的字符串string1为:bank_type=WX&body=安卓签名测试&fee_type=1&input_charset=UTF-8¬ify_url=http://weixin.qq.com&out_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000109&spbill_create_ip=196.168.1.1&total_fee=1ii:经过b过程后得到sign为:sign=md5(string1&key=8934e7d15453e97507ef794cf7b0519d).toUpperCase=md5(bank_type=WX&body=安卓签名测试&fee_type=1&input_charset=UTF-8¬ify_url=http://weixin.qq.com&o34 ut_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000109&spbill_create_ip=196.168.1.1&total_fee=1&key=8934e7d15453e97507ef794cf7b0519d).toUpperCase()=“1f4d39942aee58a0a5b47421ed4a3767”.toUpperCase()=“1F4D39942AEE58A0A5B47421ED4A3767”iii:再对传入参数中的每一个键值对中的value进行urlencode编码后得到:bank_type=WX&body=%E5%AE%89%E5%8D%93%E7%AD%BE%E5%90%8D%E6%B5%8B%E8%AF%95&fee_type=1&input_charset=UTF-8¬ify_url=http%3A%2F%2Fweixin.qq.com&out_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000109&spbill_create_ip=196.168.1.1&total_fee=1iv:拼接上sign后得到最终package结果:bank_type=WX&body=%E5%AE%89%E5%8D%93%E7%AD%BE%E5%90%8D%E6%B5%8B%E8%AF%95&fee_type=1&input_charset=UTF-8¬ify_url=http%3A%2F%2Fweixin.qq.com&out_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000134 09&spbill_create_ip=196.168.1.1&total_fee=1&sign=1F4D39942AEE58A0A5B47421ED4A37673.4支付签名(app_signature)生成方法app_signature字段是对下订单的行为进行鉴权,只有通过了app_signature鉴权,才能继续对package鉴权并生成预支付单。这里将定义app_signature的生成规则。appid、appkeynoncestr、package、参与app_signature签名的字段包括:(即paySignkey)、timestamp以及traceid。a.对所有待签名参数按照字段名的ASCII码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。b.对string1作签名算法。具体签名算法为app_signature=SHA1(string1)。这里给出生成app_signature的具体示例如下:假设参数如下:appid=wxd930ea5d5a258f4fappkey=L8LrMq34 qeGRxST5reouB0K66CaYAWpqhAVsq7ggKkxHCOastWksvuX1uvmvQclxaHoYd3ElNBrNO2DHnnzgfVG9Qs473M3DTOZug5er46FhuGofumV8H2FVR9qkjSlC5Knoncestr=139042a4157a773f209847829d80894dpackage=bank_type=WX&body=%E5%AE%89%E5%8D%93%E7%AD%BE%E5%90%8D%E6%B5%8B%E8%AF%95&fee_type=1&input_charset=UTF-8¬ify_url=http%3A%2F%2Fweixin.qq.com&out_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000109&spbill_create_ip=196.168.1.1&total_fee=1&sign=1F4D39942AEE58A0A5B47421ED4A3767timestamp=1398746574traceid=crestxu_1398746574i:经过a过程键值对排序后得到string1为:appid=wxd930ea5d5a258f4f&appkey=L8LrMqqeGRxST5reouB0K66CaYAWpqhAVsq7ggKkxHCOastWksvuX1uvmvQclxaHoYd3ElNBrNO2DHnnzgfVG9Qs473M3DTOZug5er46FhuGofumV8H2FVR9qkjSlC5K&noncestr=139042a4157a773f209847829d80894d&package=bank_type=WX&body=%E5%AE%89%E5%8D%93%E7%AD%BE%E5%90%8D%E6%B5%8B%E8%AF%95&fee_type=1&input_charset=UTF-8¬ify_url=http%3A%2F%2Fweixin.qq.com&out_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000109&spbill_create_ip=196.168.1.1&total_fee=1&sign=1F4D39942AEE58A0A5B47421ED4A3767×tamp=1398746574&traceid=crestxu_1398746574ii:经过b过程签名后可得到:paySign=SHA1(appid=wxd930ea5d5a258f4f&appkey=L8LrMqqeGRxST5reouB0K66CaYAWpqhAVsq7ggKkxHCOastWksvuX1uvmvQclxaHoYd3ElNBrNO2DHnnzgfVG9Qs473M3DTOZug5er46FhuGofumV8H2FVR9qkjSlC5K&noncestr=139042a4157a773f209847829d80894d&package=bank_type=WX&body=%E5%AE%89%E5%8D%93%E7%AD%BE%E5%90%8D%E6%B5%8B%E8%AF%95&fee_type=1&input_charset=UTF-8¬ify_url=http%3A%2F%2Fweixin.qq.com&out_trade_no=1cdf14d1e3699d61d237cf76ce1c2dca&partner=1900000109&spbill_create_ip=196.168.1.1&total_fee=1&sign=1F4D39942AEE58A0A5B47421ED4A3767×tamp=1398746574&traceid=crestxu_1398746574)=426f41a7594badcca405a398020c3c7c8f279404注意:以上操作可通过沙箱测试验证签名的有效性,沙箱地址:http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=pay/index3.5添加prepayid再次签名获取到prepayid后,将参数appid、appkey、noncestr、package(注意:此处应置为Sign=WXPay)、partnerid、prepayid、timestamp签名后返回给APP,签名方法跟app_signature说明一致。得到参数列表如下,通过这些参数即可在客户端调起支付。{“appid”:”wxd930ea5d5a258f4f”,“noncestr”:”139042a4157a773f209847829d80894d”,”package”:”Sign=WXpay”;”partnerid”:”1900000109”“prepayid”:”1101000000140429eb40476f8896f4c9”,”sign”:”7ffecb600d7157c5aa49810d2d8f28bc2811827b”,”timestamp”:”1398746574”}3.6APP端开发说明3.6.1初始化设置在Xcode中打开项目,引入微信lib库和头文件后,设置项目属性中的URLSchemes为您的APPID,如下图所示。我们提供开发实例,请参见附件中的DEMO。API详细说明请参考:3.6.2注册您的APPIDAPI调用前,需要先向微信注册您的APP,代码如下:[WXApiregisterApp:@”wxd930ea5d5a258f4f”withDescription:@”demo2.0”];3.6.3用服务器返回的参数调起支付获取到服务器的订单参数后,以下主要代码即可调起微信支付。PayReq*request=[[[PayReqalloc]init]autorelease];request.partnerId=@”1900000109”;request.prepayId=@”1101000000140415649af9fc314aa427”,;request.package=@”Sign=WXpay”;request.nonceStr=@”a462b76e7436e98e0ed6e13c64b4fd1c”;request.timeStamp=@”1397527777”;request.sign=@”582282d72dd2b03ad892830965f428cb16e7a256”;[WXApisafeSendReq:request];返回结果3.6.4接收支付接收支付返回结果参照微信SDKSample,在WXPayEntryActivity类中实现onResp函数,处理支付结果的通知和下一步界面操作。注意由客户端返回的支付结果不能作为最终支付的可信结果,应以服务器端的支付结果通知为准。代码示例如下:-(void)onResp:(BaseResp*)resp{if([respisKindOfClass:[PayRespclass]]){PayResp*response=(PayResp*)resp;switch(response.errCode){caseWXSuccess:if(_delegate&&[_delegaterespondsToSelector:@selector(PaySuccess)]){[_delegatePaySuccess];}break;default:if(_delegate&&[_delegaterespondsToSelector:@selector(PayFail:)]){[_delegatePayFail:response.errCode];}break;}}}4.通知接口说明4.1通知接口简介用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果。商户APP可轮询后台的支付通知结果后展示。4.2补单机制对后台通知交互时,如果微信收到商户的应答不是success或超时,微信认为通知失败,微信会通过一定的策略(如30分钟共8次)定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。由于存在重新发送后台通知的情况,因此同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。微信推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回success。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。4.3通知接口参数后台通知通过请求中的notify_url进行,采用POST机制。返回通知中的参数一致,URL包含如下内容:户,只返回通知id,要求商户据此查询交易结果订单号transaction_id是String(28)交易号,28位长的数值,其中前10位为商户号,之后8位为订单产生的日期,如20090415,最后10位是流水号。商户订单号商户数据包支付完成时间out_trade_noattachtime_end是否是String(32)String(127)String(14)商户系统的订单号,与请求一致。商户数据包,原样返回,空参数不传递支付完成时间,格式为yyyyMMddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为GMT+8beijing。物流费用transport_fee否Int物流费用,单位分,默认0。如果有值,必须保证transport_fee+product_fee=total_fee物品费用product_fee否Int物品费用,单位分。如果有值,必须折扣价格discount否Int保证transport_fee+product_fee=total_fee折扣价格,单位分,如果有值,通知的total_fee+discount=请求的total_fee上文中提交过来的参数,需要校验签名,sign的签名方式与介绍一致,将生成的签名与提交过来的签名sign对比,相同则验证为微信发的消息,否则扔弃不处理。同时,在postData中还将包含xml数据。各字段定义如下:AppSignature是字段名称:签名;字段来源:对前面的其他字段与appKey按照字典序排序后,使用SHA1算法得到的结果。由商户生成后传入。IsSubscribe是用户是否关注了公众号。1为关注,0为未关注。AppSignature依然是根据3.4节支付签名(paySign)签名方式生成,参与签名的字段为:appid、appkey、timestamp、noncestr、openid、issubscribe。从以上信息可以看出,URL参数中携带订单相关信息,postData中携带该次支付的用户相关信息,这将便于商户拿到openid,以便后续提供更好的售后服务。回调实例:4.4后台通知结果返回微信后台通过notify_url通知商户,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:5.API接口说明5.1API接口简介为了更好地接入支付的整个流程,包括购买、通知、发货等,微信提供了一系列的支付相关API,以供第三方调用。5.2API列表5.2.1发货通知delivernotify为了更好地跟踪订单的情况,需要第三方在收到最终支付通知之后,调用发货通知API告知微信后台该订单的发货状态。发货时间限制:虚拟、服务类24小时内,实物类72小时内。。请在收到支付通知后,按时发货,并使用发货通知接口将相关信息同步到微信后台请在收到支付通知后,按时发货,并使用发货通知接口将相关信息同步到微信后台。若平台在规定时间内没有收到,将视作发货超时处理。API的URL为:URL中的参数只包含目前微信公众平台凭证access_token,而发货通知的真正的数据是放在PostData中的,格式为json,如下:{“appid”:”wwwwb4f85f3a797777”,“openid”:”oX99MDgNcgwnz3zFN3DNmo8uwa-w”,“transid”:”111112222233333”,“out_trade_no”:”555666uuu”,“deliver_timestamp”:”1369745073”,“deliver_status”:”1”,“deliver_msg”:”ok”,“app_signature”:”53cca9d47b883bd4a5c85a9300df3da0cb48565c”,“sign_method”:”sha1”}其中,appid是公众平台账户的AppId;openid是购买用户的OpenId,这个已经放在最终支付结果通知的PostData里了;transid是交易单号;out_trade_no是第三方订单号;deliver_timestamp是发货时间戳,这里指的是Linux时间戳;deliver_status是发货状态,1表明成功,0表明失败,失败时需要在deliver_msg填上失败原因;deliver_msg是发货状态信息,失败时可以填上UTF8编码的错误提示信息,比如“该商品已退款”;app_signature依然是根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、openid、transid、out_trade_no、deliver_timestamp、deliver_status、deliver_msg;sign_method是签名方法(不计入签名生成);微信公众平台在校验ok之后,会返回数据表明是否通知成功,例如:{“errcode”:0,”errmsg”:”ok”}如果有异常,会在errcode和errmsg描述出来,如果成功errcode就为0。5.2.2订单查询orderquery因为某一方技术的原因,可能导致商户在预期时间内都收不到最终支付通知,此时商户可以通过该API来查询订单的详细支付状态。API的URL为:URL中的参数只包含目前微信公众平台凭证access_token,而订单查询的真正数据是放在PostData中的,格式为json,如下:{“appid”:”wwwwb4f85f3a797777”,“package”:”out_trade_no=11122&partner=1900090055&sign=4e8d0df3da0c3d0df38f”,”timestamp”:”1369745073”,“app_signature”:”53cca9d47b883bd4a5c85a9300df3da0cb48565c”,“sign_method”:”sha1”}其中,appid是公众平台账户的AppId;package是查询订单的关键信息数据,包含第三方唯一订单号out_trade_no、财付通商户身份标识partner(即前文所述的partnerid)、签名sign,其中sign是对参数字典序排序并使用&联合起来,最后加上&key=partnerkey(唯一分配),进行md5运算,再转成全大写,最终得到sign,对于示例,就是:sign=md5(out_trade_no=11122&partner=1900090055&key=xxxxxx).toupper;timestamp是linux时间戳;app_signature依然是根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、package、timestamp;sign_method是签名方法(不计入签名生成);微信公众平台在校验ok之后,会返回数据表明是否通知成功,例如:{“errcode”:0,”errmsg”:”ok”,......}如果有异常,会在errcode和errmsg描述出来,如果成功errcode就为0。如果查询成功,会返回详细的订单数据,如下:{“errcode”:0,“errmsg”:”ok”,“order_info”:{“ret_code”:0,“ret_msg”:”“,“input_charset”:”GBK”,“trade_state”:”0”,“trade_mode”:”1”,“partner”:”1900000109”,“bank_type”:”CMB_FP”,“bank_billno”:”207029722724”,“total_fee”:”1”,“fee_type”:”1”,“transaction_id”:”1900000109201307020305773741”,“out_trade_no”:”2986872580246457300”,“is_split”:”false”,“is_refund”:”false”,“attach”:”“,“time_end”:”20130702175943”,“transport_fee”:”0”,“product_fee”:”1”,“discount”:”0”,“rmb_total_fee”:”“}}对于详细的订单信息,放在order_info中的json数据中,各个字段的含义如下:ret_code是查询结果状态码,0表明成功,其他表明错误;ret_msg是查询结果出错信息;input_charset是返回信息中的编码方式;trade_state是订单状态,0为成功,其他为失败;trade_mode是交易模式,1为即时到帐,其他保留;partner是财付通商户号,即前文的partnerid;bank_type是银行类型;bank_billno是银行订单号;total_fee是总金额,单位为分;fee_type是币种,1为人民币;transaction_id是财付通订单号;out_trade_no是第三方订单号;is_split表明是否分账,false为无分账,true为有分账;is_refund表明是否退款,false为无退款,ture为退款;attach是商户数据包,即生成订单package时商户填入的attach;time_end是支付完成时间;transport_fee是物流费用,单位为分;product_fee是物品费用,单位为分;discount是折扣价格,单位为分;rmb_total_fee是换算成人民币之后的总金额,单位为分,一般看total_fee即可。6.常见问题和注意事项6.1帮助SDK为了帮助商户更好地完成支付功能的开发,我们提供了生成支付请求的辅助SDK,里面封装了相关的参数签名算法,可供商户参考。下载地址为:http://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/faq_tmpl&lang=zh_CN6.2常见基本概念疑惑(1)还没拿到正式号,如何调试测试?答:只有在“商户功能”审核通过以后,收到了微信和财付通的相关邮件,才可以进行开发。6.3常见错误现象及解决方法(1)“众账号支付使用了无效的商户号,无法发起该笔交易”支付提示支付提示“众账号支付使用了无效的商户号,无法发起该笔交易”答:请检查是否使用了正确的商户号,确认开放平台前三项审核结果均为“审核通过”。(2)“支付请求参数错误,请核实再试”or“交易出错,请稍后点击支付按钮,提示点击支付按钮,提示“支付请求参数错误,请核实再试””再试再试”答:请检查package参数是否为空,并注意格式,检查签名是否有误。可参考6.1中提到的帮助SDK。(3)“该支付签名无效,无法发起该笔交易”点击支付按钮,提示点击支付按钮,提示“该支付签名无效,无法发起该笔交易”答:调起支付的SHA1签名错误,请检查相关签名。可参考6.1中提到的帮助SDK。(4)获取token过程中,提示“outoffreq”过程中,提示“答:获取token频率超限。Token有效期为7200秒,不需要、也不要每次支付都重新获取一次,建议进行保存,即将过期时或已经过期时,再重新获取。(5)Notifyurl无法接收通知答:不支持非80端口,同时注意不要被防火墙拦截。(6)Notifyurl通知收到的参数缺少PostData部分答:可尝试使用此方法接收:file_get_contents()6.4常见注意事项(1)参数大小写问题请留意文档中要求的字符大小写问题,如“md5运算后,字符串的字符要转换为大写”,“bank_type填写时,WX大写”,“参与签名的字符串要小写”等。(2)参数格式问题所有传入参数,均为字符串类型,请注意文档中各处的具体要求。(3)签名问题建议使用“帮助SDK”生成签名;时间戳timeStamp和随即字符串nonceStr,在调用JSAPI和参与paySign签名时要保持一致。请不要使用文档中的参数值进行签名调试(数值均已失效)。(4)时间戳问题请使用Linux时间戳,注意为字符串格式。精确到秒,不需要到毫秒,即10位数字。(5)同一商户订单号支付问题商户的outtradeno必须全局唯一,调试和生产环境,都需要使用唯一的订单号。注意:当商户的同一个商户号绑定了公众号支付、小额刷卡、APP支付也需要加标识来区分,不能出现重复。当发起支付返回失败时,一定要用原订单的outtradeno而不能重新生成新的订单号发起支付,避免同一单重复支付。6.5联系我们如果您在开发中遇到问题,可以进入到我们的论坛(网址:http://mp.weixin.qq.com/qa/index.php?qa=questions),上面有用户成功解决的方案,更高效解决您的问题。如果未找到解决方案,可以在上面提问,我们会第一时间回复。获取最新文档和支付体验,请关注公众号:WXPayService”微信支付商户助手”。百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆34

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭