用微信指纹支付怎么设置支付,这是什么鬼,求大神指教??

微店不能用微信支付了,怎么回事?真的是因为“二清”的缘故吗?_53货源网
微店不能用微信支付了,怎么回事?真的是因为“二清”的缘故吗?共有356人学习了本文 | 发布时间:
昨天上午,不少网友反馈在口袋购物旗下微店(下简称“微店”)内已无法使用微信支付进行付款。网友在微店内下单购买时发现,在选择付款方式的页面,微信支付已经处于灰色不可选中状态,下面的红色提示文字显示“业务调整暂停使用”。  同时注意到,昨天消息刚传出时,微店支付页面的红色提示文字是“维护中,请使用银行卡支付,无需开通网银”。当天,微信官方的回复为:“因系统接口升级维护,微店内微信支付暂时无法使用。升级完成后,用户可再次选用微信支付完成微店内购买支付。”  微店不能用微信支付是什么原因?微店和微信支付是怎么回事?微信支付提示文字的变化又说明了什么?真的是因为“二清”的缘故吗?  此前,有媒体报道蘑菇街等第三方服务平台因“二清”问题被央行约谈。我们先来回顾下什么是“二清”。  事实上,微盟、蘑菇街、有赞、点点客等第三方平台都曾面临“二清”的尴尬。由于不是金融公司,这些平台没有获得支付牌照的必要。尽管很早就引入了与微信、支付宝等支付机构的合作,但支付机构仅仅是以支付通道的角色介入,并未对其平台本身的账户体系进行托管。  在用户的钱通过支付通道到帐后,平台再从自己的账上把钱清算给商家,这是典型的“二清”模型。随着企业成长,这些平台的手上多多少少都能沉淀下来一笔资金。比如微店为商家提供的7天无理由退款服务,其原理是消费者支付的资金要放在官方账户代保管7天,确认七天内没有退款退货行为再释放给商家。  在这7天内,这笔资金就被沉淀在了微店的账上。中国人行在《关于提供无牌机构办理支付业务信息线索的函》中提到,央行判断的核心标准就是无牌支付机构是否在支付业务流程中对客户资金有处理权限。第三方平台手里的这些沉淀资金,成了监管部门眼皮子底下的痒肉。  今年三月,央行曾就电商‘平台二清’模式约谈了一批第三方平台服务商。业内人士对此表示:“因为资本的涌入,不少互联网企业近年来发展得很快,但对于监管而言,在合规性问题没有解决的情况下,风险也会随着规模的膨胀与日俱增。央行窗口指导并非是针对这几家企业,而是认为对这些企业现有的模式进行监管探路具有非常好的典型意义。如果找到一条可行的道路,以后可以复制到同类监管场景中,甚至有可能对现行法规上进行相应的完善。”  消息人士透露,央行在三月的约谈中已经要求微信、支付宝等支付平台针对“平台二清”进行约束,并给予了整改时间。如何做到合规?平台借助有资质的银行机构存留商家资金,银行直接划拨给商家,平台服务商全程不碰钱。这些平台大多已借助合作的有资质的金融机构完成商家资金的合规性技术保障,而微店则不知道处于何种原因成为了那个不听话的孩子。此番微信支付接口的断开,或许是对坏学生的惩罚。  微店是口袋购物在2014年1月初上线的手机开店软件,目前已聚有7000万商家,其中不少是个人小商户。此次微信支付接口的断开给这些中小商户造成了巨大的冲击,有生鲜产品店主发帖求助,订单量减少的预期让他们极度害怕生鲜货品屯压。微信支付在微信线上零售生态中无疑占据重要地位。  业内人士透露,微信支付的用户黏性和付款成功率都非常高,在这个节骨眼上强迫消费者选用学习成本相对更高的替代方案,对成交率影响会非常大。个人及家庭卖家面对成交量锐减的状况却由于话语权较低,没有很好的发声渠道,其生存状态很容易被人忽视。  “二清”存在资金监管盲区,有可能导致种种经济问题的发生。企业既可能违法利用沉淀资金投资,也存在直接卷款跑路等重大经济隐患。虽然不清楚央行三月的约谈究竟给第三方平台留了多少整改的时间,但在其他平台都交了作业的今天,还没有完成作业的微店显然没有意识到其中的风险。如今,微信支付接口的断开给了微店足够的反思时间。  据了解,和银行的谈判、接口对接、虚拟开户是一个复杂冗长的过程,想要获得支付牌照更是难上加难,可能短时间内微店很难恢复微信支付的接口。或许这也是提醒的红字从“维护中”变成“业务调整暂停使用”的原因。&
相关专题:
上一篇:下一篇:
微信支付相关信息
微信支付在生活中越来越受欢迎,不过微信也有额度限制的,那么,信红包超出10万限额怎么办?微信零钱超出10万破解方法分享,赶紧学习。微信零钱支付超出10万怎么办?...
近日,香港金融管理局(金管局)发出第一批“储值支付工具牌照(SVF)”,支付宝和微信均在获批之列。以后,香港也能用支付宝、微信支付了。早在2007年,支付宝就开...
微信是我们现在用得比较多的手机通讯软件,可以通过微信支付打车、买东西等等,很多的朋友还不知道该如何使用,下面我们一起来看详细的教程介绍。微信支付怎么用?1、今天...
遇到有朋友在微信公众号询问微信支付绑卡时不小心绑定了别人的卡,怎么更换成自己的卡的事情。解决方案在此,请大家帮忙扩散,解救更多同学!为了确保用户的资金安全,微信...
微信订阅号的微信支付功能要怎么开通呢?下面就由小编来告诉大家。微信订阅号开通微信支付:1.登录微信订阅号之后可以点击左侧导航“微信支付”进行申请。2.点击同意协...
其它行业新闻信息
1234567891011
热门微商货源
1234567891011
淘宝网店怎么开,找免费开网店货源,欢迎来到53网店货源网。本站的货源信息由会员发布,请妥善交易!
-|--|--|--|--|--|--|--|-
投诉、建议联系邮箱:9386542⒊◎qq.Com (请尽量发邮件联系) QQ: 广告联系 QQ: 交流QQ群:(禁止任何广告)
& 2006-, all rights reserved.拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3bef-ua98).
重新安装浏览器,或使用别的浏览器微信扫一扫关注
您当前位置:
&&&&&&&&&&&&&&&正文
注销微信支付,一直有显示商家退款,三天后再试,我没有用微信买过东西啊,这个有大神知道是什么原因吗?跪
注销微信支付,一直有显示商家退款,三天后再试,我没有用微信买过东西啊,这个有大神知道是什么原因吗?跪
河南 漯河 发表时间: 19:59
问题与我的不同!
找法网认证系统
温馨提示:只有认证通过的律师才能回复咨询。
律师回答共 1 条
关于此问题以微信客服的意见为准。
律所:天津旌宇律师事务所
回复时间: 21:15
回答者将收到好评 好评数已记录
消费者权益相关词条:
遇到问题您可以尝试:
根据您遇到的问题找一个专业律师
不用注册,快速回复,马上在线咨询专业律师!
您的问题描述越详细,律师回答越及时越准确~
绑定手机号
律师回复后我们将第一时间发送短信通知您!
请输入以下的验证码继续提交
找法推荐律师
消费者权益律师
专长:消费者权益
找法特别推荐律师
相关法律帮助
热门找律师:
热门问题:
热点推荐:
Copyright@ 版权所有 找法网()- 中国大型法律服务平台&软件下载物料下载我要咨询姓名:手机:提交&&&&>&“移动支付”究竟是个什么鬼?文章来源:四九八网络发布时间: 10:49:09热度:217移动支付是什么?从技术层面来说,移动支付是指通过基于移动支付的移动设备,让用户通过这种终端设备实现购买商品、购买服务以及资金转账等货币交互的体系。目前移动支付的存在主要以五种形态,比如NFC近场和远程支付、刷卡支付、应用类支付、手机充值缴费类、聚合支付类。接下来,让我们来一起了解下移动支付的五种形态以及各自的优点和缺点。&NFC支付方式&&那么NFC支付类有哪些呢,NFC支付包括移动NFC近场支付、NFC远程(远场)支付方式,具体的定义是,是指用户通过手机等设备终端完成支付,最早在日本使用,并且发展成为高科技的支付方式,现在在日本的应用场景非常广,而在中国,此方式算是一种比较新的移动支付方式,是通过设备与设备之间实现点对点的数据传输和数据交换的支付过程。&NFC支付方式有哪些优点?&& 作为移动支付的一种高科技支付方式,NFC方式具有安全性能高的特点,而且在实现短距离的支付方面,不需要手机有网络的情况,也能实现支付。另一方面NFC支付方式的支付速度相比互联网下的其他快捷支付更快。NFC还具有跟多基于网络的快捷支付更编辑的应用场景,比如门禁卡的应用场景。&NFC支付方式有哪些缺点?&NFC作为移动支付的一种手段,虽然看起来高大上档次,而且非常便捷,但是其支付方式具有不可否认的不足之处,比如NFC支付方式需要以移动支付的大量设备终端作为支撑,NFC需要手机的厂家在生产手机的时候具有一个标准化,另一方面,需要基于移动支付设备的软件系统作为支撑,但是,目前在中国国内,手机厂家很多,其生产的手机在移动支付市场背景下无法得到统一和标准化,所以NFC支付方式在我国的支付市场上的发展受到限制,发展具有一定的成本的瓶颈。&应用支付方式&伴随着移动互联网的发展,移动APP也随之产生,比如移动微商城、微KTV、微酒店的发展,给商家带来了跟多的流量渠道的同时,也带来了新的移动应用的支付对接和使用,移动应用支付方式衍生出不同的支付方式,比如快捷支付、移动APP卡券等一系列的小支付体验。&应用支付的优点有哪些?&移动应用支付给消费者带来了新的消费体验,也给商家带来了新的营销模式,在短期内给移动APP积累了用户群体,让用户对移动端的APP产生了粘性。 &应用支付的缺点有哪些?&& 移动支付在短短的几年之内发展,所以在技术层面上还不够成熟,很多企业在移动支付APP中想做得更加全面,费用比较高,再加上移动APP的推广,所以这些企业需要花费更多的财力跟物力,不过随着很多巨头开始拓展移动APP的应用,比如微信推出的微信小程序,在某一种情况下,减少了此类APP开发和支付对接的成本问题。&刷卡支付方式&& 刷卡支付是利用移动读卡器,并且配合手机使用的支付方式,比如信用卡刷卡消费、储蓄卡刷卡消费的应用。&刷卡支付的优点有哪些?&& 现有的刷卡消费的用户占了很大的比例,刷卡消费具有超前消费的意识, 一方面培养了用户消费的驱动力,另一方面可以提高一定的国家GDP的增长。&刷卡支付的缺点有哪些?&& 刷卡消费需要购买硬件成本,缺点就是需要携带银行卡,银行卡容易丢失,但是刷卡消费的安全性比较强,顺应了需要大额交易的需求客户群体,所以,在现有的支付市场和大企业大额资金转账中经常使用到,刷卡支付在未来的拥有更多的前景。&运营商支付方式&& 运营商支付方式,通常是指运营商提供某种生活服务,比如手机充值、网络充值缴费等等,对于用户来说,此缴费非常便捷,不需要花很多的精力就可以完成交易。&运营商支付的优点有哪些?&非常便捷,不需要繁琐的手续,给人民生活带来便利。&运营商支付的缺点有哪些?&& 在市场上,目前运营商提供的支付类的服务,几乎形成一种垄断地位,而且这种垄断地位将没办法在短时间内被取代,用户只能按照其收费方式来缴费,所以会导致费用普遍比较高。但是,根据现有的此类支付方式来看,其支付方式还没有对移动支付市场造成很大的影响,并不能代表移动支付的发展方向。&聚合支付方式&& 2017年,一个新是支付方式映入人们的眼球,这就是最后不得不说一个支付的感念,聚合支付“云收单”,就是把微信、支付宝、百度钱包等一系列的扫码支付类的支付方式进行融合的支付方式,是在实体支付方式上衍生出的新产品,其支付方式具有划时代的意义。&聚合支付的优点有哪些?&& 聚合支付(云收单)解决了很多商家无法通过一码实现多种收款的方法。另一方面,也解决了消费者在选择支付方式的问题,在营销方面,聚合支付对营销进行了集成,实现了多种营销方式的聚合,也实现了移动支付大数据的聚合,是目前市场上主流的线下收单方式。&聚合支付的缺点有哪些?&&聚合支付的产生也出现了很多的问题,比如很多聚合支付服务商的产品存在安全、稳定性问题,出现了二清公司通过聚合支付的招牌来牟利,另一方面聚合支付下市场对新的产品监管不到位等一系列的新问题。&& 综合上述的总结,目前移动支付发展到如今,各种支付方式和支付的技术升级层出不穷,总体上来说,移动支付的利大于弊,移动支付的市场需要银行、企业、机构、个人的共同维护,才能健康并且持续发展,未来的移动支付才会走出另一片蓝天,造福更多的人。福州四九八的聚合支付云收单,就是通过6年的对支付技术的积累和沉淀,并且结合了很多消费者对支付的O2O的需求,提出了云收单一站式支付体验的支付应用微商城、微酒店等应用,聚合支付不仅仅是实体商家的收单利器,还是创业者加盟的摇篮。上一篇:下一篇:相关文章热门动态 11:32:34 17:54:49 18:05:15 11:07:14 09:38:56最新动态 14:42:42 17:41:19 15:56:28 17:23:04 17:50:02中国领先的IT技术网站
51CTO旗下网站
如何应对微信支付这一步一个坑的APP支付
我是个phper最近在写微信支付(APP支付),微信给的官方文档并不是很详细也没有dome之类的代码啥的(对于新手来说比较麻烦),本人是新手以前也没写过支付,踩了好多坑,所以想写篇文章给没写过支付的新手几个建议。
作者:恩就是这个名来源:| 15:59
秋高气爽,天气转凉,正是学习工作做的好时候。(~ ̄ ̄)~~(~ ̄ ̄)~
我是个phper最近在写微信支付(APP支付),微信给的官方文档并不是很详细也没有dome之类的代码啥的(对于新手来说比较麻烦),本人是新手以前也没写过支付,踩了好多坑,所以想写篇文章给没写过支付的新手几个建议。
这首先呢你得注册个开放平台以及商户平台的账号吧,注册完成后呢你会收到一封微信里邮件里面有你的商户号等信息,注册这俩账号完你会拥有商户号,appid,appkey等需要的东西。
准备完成后我们来看一下支付的大体流程
商户APP应用与微信支付主要的交互说明:
用户在商户APP应用(移动端)中选择商品提交订单,支付方式选择微信支付。
商户APP应用(后台)收到用户支付订单,调用微信支付中的统一下单接口。
商户APP应用(后台)统一下单接口调用成功后,返回的数据中有我们需要的prepay_id,按照签名规范重新生成一个签名,然后把这个重新生成的签名及app需要的数据返回给商户APP应用(移动端)。
商户APP应用(移动端)收到商户APP应用(后台)的数据调起微信支付,用户进行支付
商户APP应用(后台)的回调接口会收到微信发来的支付结果通知
商户APP应用(后台)查询支付结果通知
附:1,4是移动端所要做的事情,2,3,5是我们PHP服务端后台要做的6也是,但我没做,这个根据情况而定如果需要的话就做。
步骤1.由移动端完成
先要做的是流程中的第二步,调用同一下单接口。官方文档里说了请求的地址与参数,其中有一些是必填参数,有
应用ID 固定值,你申请账号时就给你了
商户号 固定值,你申请账号时就给你了
随机字符串 这个是自己写的要求不能长于32位,参见官方给的[标准][8]
我们把这个签名叫做第一次签名,注意这个是个坑,得自己写了,官方只给了如何写的[标准][9]没有代码,这个就比较蛋疼了。好多人掉进这个坑里,写的签名函数不对,老是出错。但不用担心我在文章的最后会贴出代码里面有签名函数直接调用就可以了。(注意看我写的函数使用规则)
商品描述 固定值 商品描述交易字段格式根据不同的应用场景按照以下格式:APP&&需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。
out_trade_no
商户订单号 我们自己定义的订单号,32个字符内、可包含字母。
总金额 这个就是你要支付的钱数了,由前端返回。注意一下这里的货币单位是分!
spbill_create_ip
终端IP 这个用户的IP地址,写个取IP地址的函数一调用就行
notify_url
通知地址 这又是一个坑,好多人不理解是干嘛的,这是接收微信支付异步通知回调地址用的,通知url必须为直接可访问的url,不能携带参数!
也可以这样理解,这个是给微信支付的接口,微信来调用的接口,微信调这接口干嘛用呢?就是告诉你用户付款成功啦或者用户付款失败了,然后你就可以在这个接口里通过微信给你返回的信息来做逻辑处理了。
trade_type
固定值 写 &APP& 因为咱写的是APP支付嘛,所以就填APP。
好了就是这些必选参数了,剩下就可以自己选择是否要用的参数了根据自己情况而定。
参数选完了就要发送参数了呗,如何发呢?
我们来调用wechatAppPay类中的unifiedOrder()函数。
啊哈啥!!!!!!??????
(⊙o⊙)?(⊙o⊙)?(⊙o⊙)?(⊙o⊙)?(⊙o⊙)?
wechatAppPay类???unifiedOrder()函数???
对就这这俩东西,不要惊讶,不要着急看最后有代码,有这个类,有代码的O(&_&)O哈哈~,
你只需在你的项目中加载这个类就可以调用这个方法了!不要崇拜我(
st)(因为这个类不是我写的我也忘了从哪找的了,我从百度搜的然后整理的做了些改动r(st)q
-_-|||-_-|||-_-!好吧好吧好吧没做改动,只是加了点注释而已,感谢写这个类的大神谢谢O(&_&)O谢谢O(&_&)O谢谢)
好了抽完疯了,开是干正事!
我们先来new下wechatAppPay类
$wxappid&&&&&&&&&&&=&'wx0';//应用ID&字符串&$mch_id&&&&&&&&&&&&=&'';//商户号&字符串&$notify_url&&&&&&&&=&'/xxxx.php/xxxx/xxxx';//接收微信支付异步通知回调地址&字符串&$wxkey&&&&&&&&&&&&&=&'';//这个是在商户中心设置的那个值用来生成签名时保证安全的&字符串&&$this-&wechatAppPay&=&new&wechatAppPay($wxappid,&$mch_id,&$notify_url,&$wxkey);&&
调用wechatAppPay类中的unifiedOrder()函数。unifiedOrder()需要的参数是个数组我们定义为$params
$params&&&&&&&&&&&&&&&&&&&&&=&array();&&&&&&&&&$params['body']&&&&&&&&&&&&&=&'APP-在线支付';&&&&&&//必填项&商品描述&&&&&&&&&$params['out_trade_no']&&&&&=&&time().&$member&;&&//必填项&自定义的订单号&&&&&&&&&$params['total_fee']&&&&&&&&=&($money*100);&&&&&&&//必填项&订单金额&单位为分所以要*100&&&&&&&&&$params['trade_type']&&&&&&&=&'APP';&&&&&&&&&&&&&&//必填项&交易类型固定写&&APP&&&&&&&&&&&$params['根据自己情况定的值']&=&&根据自己情况定的值&&//非必填项&根据自己情况定的值&这个可有好多个可以参看开发文档中的参数&&&&&&&&&&&&&&&&&&$result&=&$this-&wechatAppPay-&unifiedOrder(&$params&);&&
注:如果你加了$params['根据自己情况定的值'] wechatAppPay类里要做相应的改动,文章的最后有代码,你一看代码就明白了
现在$result就是我们调用统一下单接口返回的数据了,这个$resutl通过unifiedOrder()函数的处理已经把xml格式变成数组了。$result
里有return_code,return_msg,appid,mch_id,nonce_str,sign,result_code,prepay_id,trade_type。这里面就用一个prepay_id(预支付交易会话ID),其他都不重要了
步骤3. 把数据返回给商户APP应用(移动端)调起支付接口
现在我们要把调用统一下单接口返回的数据$resutl里的几个值返回给移动端那几个值呢?这几个:
应用ID 这个是固定的 可以自己写也可以从$resutl里拿 可以让移动端写死 就不用每次返回了
商户号 这个也是固定的 可以自己写也可以从$resutl里拿 可以让移动端写死 就不用每次返回了
预支付交易会话ID 这个很重要必须返回给移动端 是必须从$resutl里拿的
扩展字段 可以自己写也可以从$resutl里拿 暂填写固定值&Sign=WXPay& 可以让移动端写死 就不用每次返回了
随机字符串 这个可以自己写也可以从$resutl里拿
时间戳 自己生成
标准北京时间,时区为东八区注意:部分系统取到的值为毫秒级,需要转换成秒(10位数字),这里有个坑,ISO端接收的时候好像得强行转化一下,因为返回的是字符串不是数字,还有什么几位的数字之类的,我也不太懂,反正就是写的时候提醒下iOS工程师就行。安卓不清楚。
又来一个坑,我们把这个签名叫做二次签名,但是这个签名不是从$resutl里拿的,而是自己写的,如何写呢,又有坑!因为参与签名的参数值是那几个不清楚,参数名写不对!不怕我有代码!贴给你看!需要参与签名的值有六个!
$sign_array&&&&&&&&&&&&&&=&array();&&&&&&&$sign_array['appid']&&&&&=&$wx_result['appid'];&&&&//注意&$sign_array['appid']&里的参数名必须是appid&&&&&&&$sign_array['partnerid']&=&$wx_result['mch_id'];&&&//注意&$sign_array['partnerid']&里的参数名必须是partnerid&&&&&&&$sign_array['prepayid']&&=&$wx_result['prepay_id'];//注意&$sign_array['prepayid']&里的参数名必须是prepayid&&&&&&&$sign_array['package']&&&=&'Sign=WXPay';&&&&&&&&&&&//注意&$sign_array['package']&里的参数名必须是package&&&&&&&$sign_array['noncestr']&&=&$wx_result['nonce_str'];//注意&$sign_array['noncestr']&里的参数名必须是noncestr&&&&&&&$sign_array['timestamp']&=&time();&&&&&&&&&&&&&&&&&//注意&$sign_array['timestamp']&里的参数名必须是timestamp&&&&&&&&&&&&&&$sign_two&=&$this-&wechatAppPay-&MakeSign($sign_array);//调用wechatAppPay类里的MakeSign()函数生成sign&
现在就可以把重新生成的sign($sign_two)以及其他参数返回给移动端了,一共返回七个值,有三个之可以让前端写死(appid,partnerid,package),其余四个必须由服务器返回给移动端。
步骤4.由移动端完成
步骤5. 回调接口
还记得步骤2中我们设置的$notify_url吗,对现在就要对这个微信返回到这个接口的数据进行一系列的逻辑处理了官方是这样写的:
支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。
对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。
(通知频率为15/15/30/180/00/,单位:秒)
注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,防止数据泄漏导致出现&假通知&,造成资金损失。
首先来接收数据
$data&=&$this-&wechatAppPay-&getNotifyData();//获取数据&用wechatAppPay类里的getNotifyData()方法,这里数据也被getNotifyData()由xml转化成了数组。&
然后官方说要采用数据锁进行并发控制,这个我不懂所以没写(如果你懂你会的话请给我留言私信告诉我,在这谢谢了),对数据进行状态检查这个写了,如何写的呢?很简单微信返回的值有好多其中就可以判断result_code(业务结果)和return_code(返回状态码)是否为SUCCESS就可以了代码就不写了。
然后验签,这个很重要因为这是保证数据没有被第三方人为篡改的标准!
如何验签呢?
把返回的数据$data里除去sign剩下的值都参与重新签名我们把这次签名叫做验签签名,验签签名生成后再与$data里的sign对比,如果相同验签通过,否则不通过。这次签名的参数名与二次签名时的参数名不同,$data数组里叫什么参数名就验签时叫什么参数名。听乱了吧?(~ ̄ ̄)~(~ ̄ ̄)~没关系请看代码
//假如$data里有如下参数&&$w_sign&=&array();&&&&&&&&&&&//参加验签签名的参数数组&&&&&&&&&&&&&&&&&&&&&&&$w_sign['appid']&&&&&&&&&&&&&=&$data['appid'];&&$w_sign['bank_type']&&&&&&&&&=&$data['bank_type'];&&$w_sign['cash_fee']&&&&&&&&&&=&$data['cash_fee'];&&$w_sign['fee_type']&&&&&&&&&&=&$data['fee_type'];&&$w_sign['is_subscribe']&&&&&&=&$data['is_subscribe'];&&$w_sign['mch_id']&&&&&&&&&&&&=&$data['mch_id'];&&$w_sign['nonce_str']&&&&&&&&&=&$data['nonce_str'];&&$w_sign['openid']&&&&&&&&&&&&=&$data['openid'];&&$w_sign['out_trade_no']&&&&&&=&$data['out_trade_no'];&&$w_sign['result_code']&&&&&&&=&$data['result_code'];&&$w_sign['return_code']&&&&&&&=&$data['return_code'];&&$w_sign['time_end']&&&&&&&&&&=&$data['time_end'];&&$w_sign['total_fee']&&&&&&&&&=&$data['total_fee'];&&$w_sign['trade_type']&&&&&&&&=&$data['trade_type'];&&$w_sign['transaction_id']&&&&=&$data['transaction_id'];&&&$verify_sign&=&$this-&wechatAppPay-&MakeSign($w_sign);//生成验签签名&&
好了现在假设你的验签已经通过了接下里就是你自己的逻辑处理了
///////////////////////////////////////////////////////
商户APP应用(后台)处理逻辑代码
//////////////////////////////////////////////////////
自己的逻辑处理已经处理完之后,还得告诉微信一下,别再一直发结果通用通知啦,我已经收到通知并处理完啦!
$this-&wechatAppPay-&replyNotify();//商户处理后同步返回给微信参数&
步骤5结束步骤6根据自己情况而定
至此微信支付处理完成~(RQ)/~啦啦啦~(RQ)/~啦啦啦~(RQ)/~啦啦啦~(RQ)/~啦啦啦
写的有不对的方还请大家多多指导指教!!!给我留言!!b( ̄ ̄)db( ̄ ̄)db( ̄ ̄)d
还有感谢在我写微信支付地时候 那些被我问烦了的大神们!
!谢谢啦~(RQ)/~啦啦啦~(RQ)/~啦啦啦~(RQ)/~啦啦啦O(&_&)O哈哈~O(&_&)O哈哈~O(&_&)O哈哈~&( ̄ ̄)&&( ̄ ̄)&&( ̄ ̄)&
wechatAppPay类
class&wechatAppPay&&{&&&&&&&&//接口API&URL前缀&&&&&const&API_URL_PREFIX&=&'https://api.mch.';&&&&&//下单地址URL&&&&&const&UNIFIEDORDER_URL&=&&/pay/unifiedorder&;&&&&&//查询订单URL&&&&&const&ORDERQUERY_URL&=&&/pay/orderquery&;&&&&&//关闭订单URL&&&&&const&CLOSEORDER_URL&=&&/pay/closeorder&;&&&&&//公众账号ID&&&&&private&$&&&&&//商户号&&&&&private&$mch_&&&&&//随机字符串&&&&&private&$nonce_&&&&&//签名&&&&&private&$&&&&&//商品描述&&&&&private&$&&&&&//商户订单号&&&&&private&$out_trade_&&&&&//支付总金额&&&&&private&$total_&&&&&//终端IP&&&&&private&$spbill_create_&&&&&//支付结果回调通知地址&&&&&private&$notify_&&&&&//交易类型&&&&&private&$trade_&&&&&//支付密钥&&&&&private&$key;&&&&&//证书路径&&&&&private&$SSLCERT_PATH;&&&&&private&$SSLKEY_PATH;&&&&&//所有参数&&&&&private&$params&=&array();&&&&&public&function&__construct($wxappid,&$mch_id,&$notify_url,&$key)&&&&&{&&&&&&&&&$this-&appid&=&$&&&&&&&&&$this-&mch_id&=&$mch_&&&&&&&&&$this-&notify_url&=&$notify_&&&&&&&&&$this-&key&=&$key;&&&&&}&&&&&/**&&&&&&*&下单方法&&&&&&*&@param&&&$params&下单参数&&&&&&*/&&&&&public&function&unifiedOrder(&$params&){&&&&&&&&&$this-&body&=&$params['body'];&&&&&&&&&$this-&out_trade_no&=&$params['out_trade_no'];&&&&&&&&&$this-&total_fee&=&$params['total_fee'];&&&&&&&&&$this-&trade_type&=&$params['trade_type'];&&&&&&&&&$this-&nonce_str&=&$this-&genRandomString();&&&&&&&&&$this-&spbill_create_ip&=&$_SERVER['REMOTE_ADDR'];&&&&&&&&&$this-&params['appid']&=&$this-&&&&&&&&&&$this-&params['mch_id']&=&$this-&mch_&&&&&&&&&$this-&params['nonce_str']&=&$this-&nonce_&&&&&&&&&$this-&params['body']&=&$this-&&&&&&&&&&$this-&params['out_trade_no']&=&$this-&out_trade_&&&&&&&&&$this-&params['total_fee']&=&$this-&total_&&&&&&&&&$this-&params['spbill_create_ip']&=&$this-&spbill_create_&&&&&&&&&$this-&params['notify_url']&=&$this-&notify_&&&&&&&&&$this-&params['trade_type']&=&$this-&trade_&&&&&&&&&&&&&&&&&&&//获取签名数据&&&&&&&&&$this-&sign&=&$this-&MakeSign(&$this-&params&);&&&&&&&&&$this-&params['sign']&=&$this-&&&&&&&&&&$xml&=&$this-&data_to_xml($this-&params);&&&&&&&&&$response&=&$this-&postXmlCurl($xml,&self::API_URL_PREFIX.self::UNIFIEDORDER_URL);&&&&&&&&&if(&!$response&){&&&&&&&&&&&&&return&false;&&&&&&&&&}&&&&&&&&&$result&=&$this-&xml_to_data(&$response&);&&&&&&&&&if(&!empty($result['result_code'])&&&&!empty($result['err_code'])&){&&&&&&&&&&&&&$result['err_msg']&=&$this-&error_code(&$result['err_code']&);&&&&&&&&&}&&&&&&&&&return&$&&&&&}&&&&&/**&&&&&&*&查询订单信息&&&&&&*&@param&$out_trade_no&&&&&订单号&&&&&&*&@return&array&&&&&&*/&&&&&public&function&orderQuery(&$out_trade_no&){&&&&&&&&&$this-&params['appid']&=&$this-&&&&&&&&&&$this-&params['mch_id']&=&$this-&mch_&&&&&&&&&$this-&params['nonce_str']&=&$this-&genRandomString();&&&&&&&&&$this-&params['out_trade_no']&=&$out_trade_&&&&&&&&&//获取签名数据&&&&&&&&&$this-&sign&=&$this-&MakeSign(&$this-&params&);&&&&&&&&&$this-&params['sign']&=&$this-&&&&&&&&&&$xml&=&$this-&data_to_xml($this-&params);&&&&&&&&&$response&=&$this-&postXmlCurl($xml,&self::API_URL_PREFIX.self::ORDERQUERY_URL);&&&&&&&&&if(&!$response&){&&&&&&&&&&&&&return&false;&&&&&&&&&}&&&&&&&&&$result&=&$this-&xml_to_data(&$response&);&&&&&&&&&if(&!empty($result['result_code'])&&&&!empty($result['err_code'])&){&&&&&&&&&&&&&$result['err_msg']&=&$this-&error_code(&$result['err_code']&);&&&&&&&&&}&&&&&&&&&return&$&&&&&}&&&&&/**&&&&&&*&关闭订单&&&&&&*&@param&$out_trade_no&&&&&订单号&&&&&&*&@return&array&&&&&&*/&&&&&public&function&closeOrder(&$out_trade_no&){&&&&&&&&&$this-&params['appid']&=&$this-&&&&&&&&&&$this-&params['mch_id']&=&$this-&mch_&&&&&&&&&$this-&params['nonce_str']&=&$this-&genRandomString();&&&&&&&&&$this-&params['out_trade_no']&=&$out_trade_&&&&&&&&&//获取签名数据&&&&&&&&&$this-&sign&=&$this-&MakeSign(&$this-&params&);&&&&&&&&&$this-&params['sign']&=&$this-&&&&&&&&&&$xml&=&$this-&data_to_xml($this-&params);&&&&&&&&&$response&=&$this-&postXmlCurl($xml,&self::API_URL_PREFIX.self::CLOSEORDER_URL);&&&&&&&&&if(&!$response&){&&&&&&&&&&&&&return&false;&&&&&&&&&}&&&&&&&&&$result&=&$this-&xml_to_data(&$response&);&&&&&&&&&return&$&&&&&}&&&&&/**&&&&&&*&&&&&&&*&获取支付结果通知数据&&&&&&*&return&array&&&&&&*/&&&&&public&function&getNotifyData(){&&&&&&&&&//获取通知的数据&&&&&&&&&$xml&=&$GLOBALS['HTTP_RAW_POST_DATA'];&&&&&&&&&$data&=&array();&&&&&&&&&if(&empty($xml)&){&&&&&&&&&&&&&return&false;&&&&&&&&&}&&&&&&&&&$data&=&$this-&xml_to_data(&$xml&);&&&&&&&&&if(&!empty($data['return_code'])&){&&&&&&&&&&&&&if(&$data['return_code']&==&'FAIL'&){&&&&&&&&&&&&&&&&&return&false;&&&&&&&&&&&&&}&&&&&&&&&}&&&&&&&&&return&$&&&&&}&&&&&/**&&&&&&*&接收通知成功后应答输出XML数据&&&&&&*&@param&string&$xml&&&&&&*/&&&&&public&function&replyNotify(){&&&&&&&&&$data['return_code']&=&'SUCCESS';&&&&&&&&&$data['return_msg']&=&'OK';&&&&&&&&&$xml&=&$this-&data_to_xml(&$data&);&&&&&&&&&echo&$&&&&&&&&&die();&&&&&}&&&&&&/**&&&&&&&*&生成APP端支付参数&&&&&&&*&@param&&$prepayid&&&预支付id&&&&&&&*/&&&&&&public&function&getAppPayParams(&$prepayid&){&&&&&&&&&&$data['appid']&=&$this-&&&&&&&&&&&$data['partnerid']&=&$this-&mch_&&&&&&&&&&$data['prepayid']&=&$&&&&&&&&&&$data['package']&=&'Sign=WXPay';&&&&&&&&&&$data['noncestr']&=&$this-&genRandomString();&&&&&&&&&&$data['timestamp']&=&time();&&&&&&&&&&$data['sign']&=&$this-&MakeSign(&$data&);&&&&&&&&&&&return&$&&&&&&}&&&&&/**&&&&&&*&生成签名&&&&&&*&&@return&签名&&&&&&*/&&&&&public&function&MakeSign(&$params&){&&&&&&&&&//签名步骤一:按字典序排序数组参数&&&&&&&&&ksort($params);&&&&&&&&&$string&=&$this-&ToUrlParams($params);&&&&&&&&&//签名步骤二:在string后加入KEY&&&&&&&&&$string&=&$string&.&&&key=&.$this-&key;&&&&&&&&&//签名步骤三:MD5加密&&&&&&&&&$string&=&md5($string);&&&&&&&&&//签名步骤四:所有字符转为大写&&&&&&&&&$result&=&strtoupper($string);&&&&&&&&&return&$&&&&&}&&&&&&/**&&&&&&*&将参数拼接为url:&key=value&key=value&&&&&&*&@param&&&$params&&&&&&*&@return&&string&&&&&&*/&&&&&public&function&ToUrlParams(&$params&){&&&&&&&&&$string&=&'';&&&&&&&&&if(&!empty($params)&){&&&&&&&&&&&&&$array&=&array();&&&&&&&&&&&&&foreach(&$params&as&$key&=&&$value&){&&&&&&&&&&&&&&&&&$array[]&=&$key.'='.$&&&&&&&&&&&&&}&&&&&&&&&&&&&$string&=&implode(&&&,$array);&&&&&&&&&}&&&&&&&&&return&$&&&&&}&&&&&/**&&&&&&*&输出xml字符&&&&&&*&@param&&&$params&&&&&参数名称&&&&&&*&return&&&string&&&&&&返回组装的xml&&&&&&**/&&&&&public&function&data_to_xml(&$params&){&&&&&&&&&if(!is_array($params)||&count($params)&&=&0)&&&&&&&&&{&&&&&&&&&&&&&return&false;&&&&&&&&&}&&&&&&&&&$xml&=&&&xml&&;&&&&&&&&&foreach&($params&as&$key=&$val)&&&&&&&&&{&&&&&&&&&&&&&if&(is_numeric($val)){&&&&&&&&&&&&&&&&&$xml.=&&&.$key.&&&.$val.&&/&.$key.&&&;&&&&&&&&&&&&&}else{&&&&&&&&&&&&&&&&&$xml.=&&&.$key.&&&![CDATA[&.$val.&]]&&/&.$key.&&&;&&&&&&&&&&&&&}&&&&&&&&&}&&&&&&&&&$xml.=&&/xml&&;&&&&&&&&&return&$&&&&&&}&&&&&/**&&&&&&*&将xml转为array&&&&&&*&@param&string&$xml&&&&&&*&return&array&&&&&&*/&&&&&public&function&xml_to_data($xml){&&&&&&&&&&&if(!$xml){&&&&&&&&&&&&&return&false;&&&&&&&&&}&&&&&&&&&//将XML转为array&&&&&&&&&//禁止引用外部xml实体&&&&&&&&&libxml_disable_entity_loader(true);&&&&&&&&&$data&=&json_decode(json_encode(simplexml_load_string($xml,&'SimpleXMLElement',&LIBXML_NOCDATA)),&true);&&&&&&&&&&&&&&&&&return&$&&&&&}&&&&&/**&&&&&&*&获取毫秒级别的时间戳&&&&&&*/&&&&&private&static&function&getMillisecond(){&&&&&&&&&//获取毫秒的时间戳&&&&&&&&&$time&=&explode&(&&&&,&microtime&()&);&&&&&&&&&$time&=&$time[1]&.&($time[0]&*&1000);&&&&&&&&&$time2&=&explode(&&.&,&$time&);&&&&&&&&&$time&=&$time2[0];&&&&&&&&&return&$time;&&&&&}&&&&&/**&&&&&&*&产生一个指定长度的随机字符串,并返回给用户&&&&&&&*&@param&type&$len&产生字符串的长度&&&&&&*&@return&string&随机字符串&&&&&&*/&&&&&private&function&genRandomString($len&=&32)&{&&&&&&&&&$chars&=&array(&&&&&&&&&&&&&&a&,&&b&,&&c&,&&d&,&&e&,&&f&,&&g&,&&h&,&&i&,&&j&,&&k&,&&&&&&&&&&&&&&l&,&&m&,&&n&,&&o&,&&p&,&&q&,&&r&,&&s&,&&t&,&&u&,&&v&,&&&&&&&&&&&&&&w&,&&x&,&&y&,&&z&,&&A&,&&B&,&&C&,&&D&,&&E&,&&F&,&&G&,&&&&&&&&&&&&&&H&,&&I&,&&J&,&&K&,&&L&,&&M&,&&N&,&&O&,&&P&,&&Q&,&&R&,&&&&&&&&&&&&&&S&,&&T&,&&U&,&&V&,&&W&,&&X&,&&Y&,&&Z&,&&0&,&&1&,&&2&,&&&&&&&&&&&&&&3&,&&4&,&&5&,&&6&,&&7&,&&8&,&&9&&&&&&&&&&);&&&&&&&&&$charsLen&=&count($chars)&-&1;&&&&&&&&&//&将数组打乱&&&&&&&&&&shuffle($chars);&&&&&&&&&$output&=&&&;&&&&&&&&&for&($i&=&0;&$i&&&$&$i++)&{&&&&&&&&&&&&&$output&.=&$chars[mt_rand(0,&$charsLen)];&&&&&&&&&}&&&&&&&&&return&$output;&&&&&}&&&&&/**&&&&&&*&以post方式提交xml到对应的接口url&&&&&&*&&&&&&&*&@param&string&$xml&&需要post的xml数据&&&&&&*&@param&string&$url&&url&&&&&&*&@param&bool&$useCert&是否需要证书,默认不需要&&&&&&*&@param&int&$second&&&url执行超时时间,默认30s&&&&&&*&@throws&WxPayException&&&&&&*/&&&&&private&function&postXmlCurl($xml,&$url,&$useCert&=&false,&$second&=&30){&&&&&&&&&&&&&&&&$ch&=&curl_init();&&&&&&&&&//设置超时&&&&&&&&&curl_setopt($ch,&CURLOPT_TIMEOUT,&$second);&&&&&&&&&curl_setopt($ch,CURLOPT_URL,&$url);&&&&&&&&&curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);&&&&&&&&&curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);&&&&&&&&&//设置header&&&&&&&&&curl_setopt($ch,&CURLOPT_HEADER,&FALSE);&&&&&&&&&//要求结果为字符串且输出到屏幕上&&&&&&&&&curl_setopt($ch,&CURLOPT_RETURNTRANSFER,&TRUE);&&&&&&&&&if($useCert&==&true){&&&&&&&&&&&&&//设置证书&&&&&&&&&&&&&//使用证书:cert&与&key&分别属于两个.pem文件&&&&&&&&&&&&&curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');&&&&&&&&&&&&&//curl_setopt($ch,CURLOPT_SSLCERT,&WxPayConfig::SSLCERT_PATH);&&&&&&&&&&&&&curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');&&&&&&&&&&&&&//curl_setopt($ch,CURLOPT_SSLKEY,&WxPayConfig::SSLKEY_PATH);&&&&&&&&&}&&&&&&&&&//post提交方式&&&&&&&&&curl_setopt($ch,&CURLOPT_POST,&TRUE);&&&&&&&&&curl_setopt($ch,&CURLOPT_POSTFIELDS,&$xml);&&&&&&&&&//运行curl&&&&&&&&&$data&=&curl_exec($ch);&&&&&&&&&//返回结果&&&&&&&&&if($data){&&&&&&&&&&&&&curl_close($ch);&&&&&&&&&&&&&return&$&&&&&&&&&}&else&{&&&&&&&&&&&&&&$error&=&curl_errno($ch);&&&&&&&&&&&&&curl_close($ch);&&&&&&&&&&&&&return&false;&&&&&&&&&}&&&&&}&&&&&/**&&&&&&&*&错误代码&&&&&&&*&@param&&$code&&&&&&&服务器输出的错误代码&&&&&&&*&return&string&&&&&&&*/&&&&&&public&function&error_code(&$code&){&&&&&&&&&&$errList&=&array(&&&&&&&&&&&&&'NOAUTH'&&&&&&&&&&&&&&&&=&&&'商户未开通此接口权限',&&&&&&&&&&&&&'NOTENOUGH'&&&&&&&&&&&&&=&&&'用户帐号余额不足',&&&&&&&&&&&&&'ORDERNOTEXIST'&&&&&&&&&=&&&'订单号不存在',&&&&&&&&&&&&&'ORDERPAID'&&&&&&&&&&&&&=&&&'商户订单已支付,无需重复操作',&&&&&&&&&&&&&'ORDERCLOSED'&&&&&&&&&&&=&&&'当前订单已关闭,无法支付',&&&&&&&&&&&&&'SYSTEMERROR'&&&&&&&&&&&=&&&'系统错误!系统超时',&&&&&&&&&&&&&'APPID_NOT_EXIST'&&&&&&&=&&&'参数中缺少APPID',&&&&&&&&&&&&&'MCHID_NOT_EXIST'&&&&&&&=&&&'参数中缺少MCHID',&&&&&&&&&&&&&'APPID_MCHID_NOT_MATCH'&=&&&'appid和mch_id不匹配',&&&&&&&&&&&&&'LACK_PARAMS'&&&&&&&&&&&=&&&'缺少必要的请求参数',&&&&&&&&&&&&&'OUT_TRADE_NO_USED'&&&&&=&&&'同一笔交易不能多次提交',&&&&&&&&&&&&&'SIGNERROR'&&&&&&&&&&&&&=&&&'参数签名结果不正确',&&&&&&&&&&&&&'XML_FORMAT_ERROR'&&&&&&=&&&'XML格式错误',&&&&&&&&&&&&&'REQUIRE_POST_METHOD'&&&=&&&'未使用post传递参数&',&&&&&&&&&&&&&'POST_DATA_EMPTY'&&&&&&&=&&&'post数据不能为空',&&&&&&&&&&&&&'NOT_UTF8'&&&&&&&&&&&&&&=&&&'未使用指定编码格式',&&&&&&&&&&);&&&&&&&&&&&if(&array_key_exists(&$code&,&$errList&)&){&&&&&&&&&&&&&return&$errList[$code];&&&&&&&&&&}&&&&&&}&}&&&
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
原创原创头条热点头条
24H热文一周话题本月最赞
讲师:17562人学习过
讲师:16274人学习过
讲师:12981人学习过
精选博文论坛热帖下载排行
信息安全风险评估理论研究日趋成熟,相关资料比较充分,但有关评估实际工作的参考资料很少。本书以信息安全风险评估实践为基础,围绕评估工...
订阅51CTO邮刊

我要回帖

更多关于 小米微信指纹支付 的文章

 

随机推荐