哈尔滨万达游乐园在哪到了之后可以现金支付,还是微信或支付宝支付,急等,第一次去,没经验

  楼主刚才遇到了一个非常棘手的问题!我在一餐厅吃饭,身上没带钱,我就问服务员:“可不可以支付宝支付”,服务员说:可以。吃饭后我准备买单,打开了我的支付宝,但收银员又说可以微信支付,不支持支付宝支付,我当时反应觉得都一样无所谓,就打开了我的微信但发现我绑定银行卡的钱全部被我存进了余额宝,瞬间我就觉得尴尬了,怎么办。。怎么办。。。
楼主发言:14次 发图:0张 | 更多
  微信我绑定卡了
  支付宝转账到银行卡  
  微信和支付宝绑定同一张银行卡,就可以通过这张银行卡互转了
  全部都弄了余额宝?那你怎么生活啊。。。再说可以转出来的吧  
  @益上青云
14:13:00  支付宝转账到银行卡  -----------------------------  转账至少半个小时,有时一天也转不过来
  哈哈哈。。。所以呢?  今天去买车,谈了半天终于谈好了,随手摸出一张银行卡,交给销售员,霸气地说:“给,全额现金,刷卡!”销售员屁颠屁颠地拿着POS机过来,一刷,余额不足。查一下,余额1.6元。瞬间就觉得尴尬了,怎么办。。怎么办。。。身上只有十几块,还能买车吗?
  @益上青云
14:13:00   支付宝转账到银行卡   —————————————————  @u_
14:15:00  转账至少半个小时,有时一天也转不过来  —————————————————  楼主别逗,现在微信支付宝 最慢五分钟就提到银行卡里了  
  不便捷吗?是你自己二好吧
  如果没有信用卡,那么保证储蓄卡里有够用的生活费,这是常识。
  你是来黑的吧,小金额转账,几分钟就到了。  再说,你没信用卡?
  @wangjinrui911
14:15:00  全部都弄了余额宝?那你怎么生活啊。。。再说可以转出来的吧  -----------------------------  为什么不可以我,有时我会提前转出来,实在不行很多地方是可以支付宝支付的
  让你家人朋友发红包给你,回去在还呗。
  支付宝转出来比微信快点  
  @loudi738
14:08:00  微信我绑定卡了  —————————————————  绑信用卡 不占资金。每月换还卡就可以了。简单方便。  
  首先楼主为何不绑定信用卡?  其次,余额宝跟支付宝是即时操作,转银行卡要看绑定的是什么银行了,  比如招行是瞬间到账,有些就要第二天到账了  最后,能支付宝不能微信的有少部分是。只能微信不能支付宝的情况我至今没有碰到过,应该很少,而且怕是一些小店,通过私人微信转账的方式吧。
  你不绑定卡怪谁呢?  这不就跟以前没网络的时候,  带个钱包不装钱一样萨比么?
  我微信上绑的卡里总是留几百块,就是为了这种情况
  直接余额宝转到银行卡啊 我每次转几分钟就到了 不用几个小时!  
  @u_ 太假了,下次做足功课再来,微信支付可以用信用卡的
  奇怪了为什么不绑一张信用卡?
  @云上小雨滴
14:42:00  奇怪了为什么不绑一张信用卡?  -----------------------------  是绑定了一张卡,但是卡上没钱啊被我存进了余额宝啊
  我只好奇后续,楼主怎么样了?霸王餐?→_→  
  餐馆那么多人没一个有支付宝的?支付宝转给附近有人吃饭的,或者有支付宝的服务员,叫人帮忙给现金或者微信付不就好了。  
  比如,我买高铁票,支付宝买,接着刷身份证入站,你说方便吗
  便捷是没得说的,出于安全考虑,我不随便用
  1300中产。  
微信没试过
支付宝余额转回银行卡
提示两小时都是骗人的
从来没超过5分钟过
  我都好久没摸过现金了 我去楼下小超市买瓶饮料都是支付宝。。。一个月没用过现金了。。。
  @u_   支付宝和微信是解放了我的钱包和保障我的健康(不用直接接触钱,少了一道病从口入的机会)一台手机,平板电脑,就可以支付,方便倒不至于,就是钱变成了平民可以接受的数字化
  用支付宝转到银行,提示2小时内到账,但我从来不超过3分钟就到账了。。。。。。。我也是把所有钱都放支付宝,不过也没什么钱
  @u_16-05-30 14:15:00  @益上青云
14:13:00  支付宝转账到银行卡  -----------------------------  转账至少半个小时,有时一天也转不过来  -----------------------  3分钟就到,我常常这样
  @小小蚂蚁搬玉米
15:05:00  我都好久没摸过现金了 我去楼下小超市买瓶饮料都是支付宝。。。一个月没用过现金了。。。  -----------------------  同意,很没带现金出去了
  个人觉得微信支付的人群基本是那种天天捧着手机玩的人,以微信打发时间的人,而且女性居多。而支付宝支付的基本是比较商务一点的群体。我个人倾向支付宝支付。微信功能多的让人讨厌。  
  自己的问题就不需要在讨论了吧  
  支付宝可以用花呗付帐的,微信就不知道了。  
  @马云@马化腾,你们俩的支付平台能不能直接转呢?就像个大银行一样?
  楼主我教你一招吧,首先去申请一张信用卡,作为日常开支的主卡,  然后支付宝和微信都绑定这张信用卡。  把收入的都存到支付宝,大部分转入余额宝(目前年化利率2.4%左右),留少量余额备用。  日常开支用支付宝或微信支付都设置为刷信用卡,  信用卡到期时用余额宝还款。  这样配置可以做到收益最大化,风险几乎为零。
  你用支付宝不知道现在支付宝提现一分钟内就到账了吗?况且你微信没绑定信用卡吗?上面的人说的没错,你就是二  
    我是来得瑟一下的,虽说现在大家都是立即到帐了,但我这个还是不太一样呢。
  解决这事最简单了。楼主,你把腾讯和阿里巴巴集团都收购了以后,他们就能互转  
  @u_ 支付宝转到银行卡现在是秒转,很方便
  @u_ 你是如何想的,把银行卡的钱全部转到余额宝的?这不是给自己找不自在吗?
  @益上青云
14:13:00  支付宝转账到银行卡  -----------------------------  @u_16-05-30 14:15:00  转账至少半个小时,有时一天也转不过来  -----------------------------  就楼主这个智商,真为您着急,我看不是大陆人。
  这就是你自己的问题了,怎么可能银行卡里不留一点钱呢,万一急用现金怎么办?明知道余额宝提现是有一定延后的
16:19:00  @马云@马化腾,你们俩的支付平台能不能直接转呢?就像个大银行一样?  —————————————————  人为的,别风头呗。因为互转麻烦,所以就培养了专一的课户  
  u_: 举报
评论  评论 云上小雨滴:没有信用卡  -----------------------------------------------------------------------  请问楼主,你没有信用卡,借记卡的钱又都存入余额宝了。。。那请问你平时怎么生活的?全部用现金???那不和台湾人一样了?O(∩_∩)O~
  每月的水电费用支付宝,叫嘀嘀打车用微信支付,今年的取暖费微信支付的。每月的电话费网费用手机银行支付。今年的汽车保险用微信支付的。支付手段要多样化才行
7-11最方便,要啥支付宝。  
  @益上青云
14:13:00   支付宝转账到银行卡   —————————————————  @u_楼
14:15:00   转账至少半个小时,有时一天也转不过来   —————————————————  @呆蛙官人
14:17:00  楼主别逗,现在微信支付宝 最慢五分钟就提到银行卡里了  —————————————————  建行,邮政,信合的都快,基本即时到账!工行要半个小时!别的没试过  
  还用余额宝?现在很多银行都发行自己的宝宝产品了,不但有银行作为自己保障,而且无赎回时间,宝宝卡可以直接当银行卡用,微信支付宝同时绑定这张卡,完全没有支付问题..可惜还不具备透支功能,不然就更没问题了
  这个要怪就怪店家不能支付宝  
  支付宝提现说是两小时内到账,但其实一般三分钟内就到了。  
  LZ你是SB吧.
你把钱买了理财..
不提现咋消费?
真没常识!  估计多半是巴子..
只有巴子才问这么智障的问题!!!!
  余额宝属于货币基金.就是理财产品!! 不提出来怎么消费?  除了巴子能问这么智障的问题,我想不到还有哪里的人能这么蠢!
  都特么逗比吗~余额宝不可以直接支付吗???
<span class="count" title="
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)跨境支付这场战争,微信支付宝都在怎么打?_凤凰科技
跨境支付这场战争,微信支付宝都在怎么打?
用微信扫描二维码分享至好友和朋友圈
2016年中国跨境电商进出口额预计将增至6.5万亿元(1.02万亿美金),达到30%的年增长率,占中国总进出口贸易额的20%。
原标题:跨境支付这场战争,微信支付宝都在怎么打?跨境支付这场战争,微信支付宝都在怎么打?数据显示,2016年中国跨境电商进出口额预计将增至6.5万亿元(1.02万亿美金),达到30%的年增长率,占中国总进出口贸易额的20%。另外,在签证政策等利好刺激下,中国出境旅游市场持续升温,2016年我国公民出境旅游人数预计达到1.22亿人次,旅游花费1098亿美元。与之相对应的,是百度、阿里、腾讯三大互联网领军企业旗下的第三方支付平台,正在随着消费升级和境外旅游的热潮,向全球进行跨境支付的版图扩张。扩张的其中的核心关键词,是找零。跨境支付这场战争,微信支付宝都在怎么打?国人境外游足迹就是精准导航在4月18日,《人民日报》一篇题为《微信支付实现泰国全覆盖》的报道中,引用了两则数据进行比对:其一是泰国旅游局统计,2016年12月到2017年春节期间赴泰中国游客人数同比增长3倍以上;其二是微信支付最新数据显示,中国游客在泰国的交易量比去年同期增长6倍。后一组数据尽管没有标明具体时点,但依然可以明显看出随着游客的增长,微信支付的使用率也出现了爆发性增长。而之间的比例差额,则来自于普及程度,无论是对于用户而言,还是对于泰国的商铺。不仅仅是微信支付,国内领先的另外两家第三方支付平台,蚂蚁金服(支付宝)与百度钱包,也早早的进入了泰国市场。去年4月1日,百度钱包在海外市场低调上线了Monica Pay服务。就在当月中旬泰国泼水节期间,百度钱包的&扫码付&就开始在泰国曼谷、普吉、清迈和芭提雅四个城市全面上线,经营业务主要为餐饮、购物中心以及泰式按摩服务等。但一直和微信支付形成拉锯战的支付宝的动作幅度则显然更大。日,蚂蚁金服对Ascend Money展开战略投资,通过输出技术和经验,推出泰国版&支付宝&,并将Ascend Money引入支付宝的&全球收全球付&支付系统,推进eWTP的基础设施建设。和微信支付,重点在太过做游客生意不同,支付宝的野心更大:未来5年有望服务泰国一半以上的网民,帮助泰国发展&无现金社区&。若用简单的话语来描述,则可以说,比起对手们还在做国人生意的角度,支付宝利用自己在互联网金融上较为完备的场景生态,已经迈入全球人民&大团结&的门槛了,构建一个全球支付网络,而不仅仅是服务国人。支付宝并不讳言这种企图。其在年初对媒体放言,希望用技术和数据,10年内为20亿全球用户提供服务,其中60%用户来自海外。而目前,其已为2亿海外用户提供了服务。这也是不得已而为之。据艾瑞咨询4月初最新公布的数据,2016Q4第三方移动支付市场份额中,支付宝和财付通(微信支付+QQ钱包)共占据92%份额,其中支付宝占比55%,财付通占比37%。相比较艾瑞此前最新的2016Q1数据,支付宝市场份额环比增长3.2个百分点,财付通则微跌1.3个百分点。但放在一个更长的时段来分析,支付宝在2014年拥有的79%的市场份额,因为微信支付的出现,在2015年锐减到50%。同时,在国内双强争霸基本已经固态、人口红利挖掘也接近尾声之时,选择全球复制&支付宝模式&,也是唯一的出路。但不得不说,目前BAT们的跨境支付业务,其核心依然是冲着消费场景而去。同时,所有的内容,都指向了各种肤色、各种阶层用户钱包里面的&零钱&和&找零&生意,即消费场景。之所以都把泰国作为首选目标之一,则是中国游客近年来境外游的足迹,主要集中于此。换言之,用中国游客在兑换外币的郁结和国内养成的支付习惯,来压迫热门境外旅游地接受国内第三方支付平台的&方便&。微信支付海外运营负责人殷洁坦言,针对中国出境游客拓展日本及泰国等东南亚国家,下一步考虑欧美市场,但不会是重点拓展区域。跨境支付这场战争,微信支付宝都在怎么打?最大限度的将麻烦留给自己互联网金融版的跨境支付,其实延续了整个互联网+最传统的路数&&拆掉的用户在消费过程中遇到的&收费站&和麻烦,最大限度的将麻烦留给自己。好处显而易见,尤其是在境外旅游中,消费者到达商品的距离变成了直线、并缩减到了最短。以微信支付为例,在海外拓展时,其资金的换汇是与建行等国有银行合作。消费者用微信扫码完成一笔支付后(按照银行当日牌价计算汇率),资金会进入微信在有外汇储备能力的银行开设的外汇储备金账户中,在T+1个工作日完成换汇、结算,资金进入商户的境外银行账户中,这笔资金具体几天能到商户手上,要视它所在当地银行的到账时间而定。移动支付的收单在现阶段的费率通常会低于传统的境外收单方式。其他第三方支付平台的境外支付流程与之相类似。而移动支付的最大好处,即无论是消费者还是商家,用户都只要做一个简单的扫一扫动作,剩下的事均有平台方去协调、去麻烦。但这样的运行模式,往往只是在初期拓展时有奇效,尤其是在以信用卡支付为主流、移动支付并不强大的旅游地。然而,在进一步扩展中,则麻烦多多。如在国内第三方支付平台全力进击的韩国。和欧美相似,韩国也是一个信用卡习惯占主流的国家,出租车也支持信用卡付款。也由此,移动支付的场景多存在于旅游点和面向中国游客之上。反而韩国最流行的移动社交软件KakaoTalk所推出的支付工具KakaoPay,在韩国人自身的交易体系中,往往只存在于线上。这是机遇,同时也是挑战。国外的移动支付没有中国普及的大环境下,孕育着蓝海;但仅仅依靠境外游带动,则蓝海的空间有限。必须有更多的布局来破解瓶颈。跨境支付这场战争,微信支付宝都在怎么打?远交近攻,海外布局里的&买买买&策略在许多业界观感中,对于支付宝和微信支付的跨境支付全球布局上,往往形成了一个所谓的共识:支付宝全球铺开买买买,微信支付一城一国推推推。至于百度,动静不大,人家现在是一家人工智能公司,不是吗!但这种理解其实颇为表面化。尽管2017年,蚂蚁金服在海外的买买买进入加速阶段:1月,与全球第二大汇款公司MoneyGram(速汇金)达成协议,将以约8.8亿美元对其进行并购;2月,蚂蚁金服和菲律宾公司Ayala联合投资隶属于运营商GlobeTelecom的数字金融公司Mynt,向韩国Kakao Pay投资2亿美元;3月阿里巴巴增持印度电子支付公司Paytm股权,成为其最大股东&&以资本整合的方式融入当地市场,使得支付宝的跨境支付覆盖面急速增大,形成一种&全球同步上架&的观感。早在去年双十一前,全球已有200多个国家和地区接入支付宝,并支持18种货币结算。而在双十一期间,支付宝国际交易笔数同比增长了60%,全球共有224个国家和地区的消费者用支付宝参与。反之,以东南亚等周边旅游目的地国为先导的微信支付,其国际空间目前还十分有限。截止4月初,微信支付共登陆12个国家和地区,支持11个币种直接结算。但实质上,两大平台的路线并没有多少差异,均是采取&远交近攻&的策略,即对亚太周边市场,进行强势地推;而对其他辐射能力较差、尚未成为中国游客主要目的地的国家和地区,采取尝试性合作、扶植当地平台为主要推进方式。如香港,作为内地用户境外旅游的第一站,两大平台均派出了强大的地推团队,有游客即反馈在香港主要购物地点,到处可见两家平台的团队在强势拉人头。这样的场景,在日韩、东南亚均不鲜见。与此同时,在周边&旅游胜地&,两大平台也采取了各种姿势和某个&地头蛇&进行合作,如前述在韩国,支付宝的合作方是做社交的Kakao,而在香港,则选择与当地最大的电子收费系统八达通进行合作,两个合作者的形态不同,但生态上都是当地最强的用户人头所在。微信支付则延续国内的开放策略,只做基础的解决方案,将庞大的服务市场,留给更了解境外市场的第三方合作伙伴。这样的不同姿势选择,也同样源自于两个平台自身定位上的差异:支付宝的势力集中于线上,做跨境电商更容易形成黏性;微信支付没有多少电商基因,做线下服务场景,以O2O的姿势来寻找市场。只是旅游场景多集中于线下,使得微信支付的优势更为明显,而支付宝的全球布局则略显浮躁。不过,每一个支付场景上同时出现两个平台的接入口,未来将变成常态,就如国内一般。最后,包括银行在内的金融机构以各种姿势切入之后,一个在国内已经出现多时的问题必然爆发:还有什么更多的场景可以消费?跳出工具化应用才能全球化&找零&模式必然出现的发展瓶颈:通过互联网打通消费链,可以扩大快速覆盖,但也仅此而已。必须进一步开拓企业级的跨境支付市场才行。第三方支付平台在此不具备太多优势,只能依靠消费场景的扩展,让中小企业和小业主们形成一定的黏性。此外,据媒体报道,中国的应用程序存在遭到中国政府审查数据的可能性,这一点无法否认,其他国家的消费者对此抵触感很大。安永会计师事务所亚太地区金融科技主管詹姆斯&劳埃德认为,&(电子结算在中国的普及)在很大程度上是因为消费者对个人数据保护的期待值较低。向海外移植并不容易&。这同样给予了想要通过至下而上的方式进入全球支付体系的国内第三方支付一个短时间内难以逾越的瓶颈,其实对于国内其他意图进军跨境支付的金融机构们,如何化解这一症结,也是一道难题。继续在&零钱&和&找零&上挖掘场景,并且通过绑定各国&地头蛇&们,专管支付业务,绕开隐私问题,亦是一个可行的路线。或者可以这样说,早前的快速拓展,除了拜消费升级和境外旅游所赐外,还因为国内跨境支付上过去的积弊和信息孤岛等旧有原因所致,也使得BAT的跨境支付布局,能够如其他O2O项目在国内快速破除传统产业积弊一样,实现&忽然一夜春风来、千树万树梨花开&之效。如何寻找更多的使用场景呢?最关键的不是开发更多的金融工具,如借贷;而是跳出境外支付这一工具化应用,在传统线下交易和线上网购场景之外,构筑更多的内容,比如社交、个性化服务。前者或许在推特和脸谱的包围下,在各地已经形成的本地即时通讯应用如韩国Kakao、日本Line的围剿下,只能采取合作的态势,为其寻找和中国消费者、商家之间进行&交易&的通道,形成资源互换;后者则可借助中国越来越多的内容创业氛围,形成更多的个性化定制服务。特别是在当下跨境支付主要是从国人钱袋子里掏钱给国外商户为主流的形态下,将中国厂商、特别是创业者的产品,输出到国外,形成真正的双向跨境支付氛围,这可成为下一阶段,最有可能实现的场景内容。只是要做到这一点,需要那些境外的合作平台们,更好的理解中国市场,并挖掘可供&外国友人&消费的内容才行。至少,这个&零钱&生意,才有了做大做强的可能。
用微信扫描二维码分享至好友和朋友圈
凤凰科技官方微信
播放数:2397175
播放数:593865
播放数:1839468
播放数:5808920微信与支付宝第一次分出高低!
当低频模式遇上高频模式,等于是兔子遇上了狼,再强壮的兔子都难逃被猎杀的命运。2014年春节,高频的微信用红包在短短9天就绑定了数以百万计的银行卡,而相对低频的支付宝完成此事却足足花了好几年。所以,有远见的企业都会想尽一切办法,让自己向更高频的模式升级。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点6003人阅读
第三方支付
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布
现在的APP大部分需要接入支付功能,而支付的主流就是微信支付和支付宝支付,网上关于微信支付和支付支付资料很多,但是这些资料随着官方的变动可能变得毫无用处,所以我建议直接看官方文档,和。当然,一般官方不会闲的蛋疼随便改,大的改动周期在2年左右,小的改动不会有太大影响,所以,如果你不习惯官方的文档,那么你找的资料的新鲜度很重要。因为本文主要目的是介绍服务端的一些操作放到客户端,所以正常的接入就不重复造轮子了,有兴趣的可以参考郭霖公众号推送的文章 和
,或者直接访问 。
相信很多同学看到标题就有疑问了,为什么要将服务端的一些操作放到客户端来?放到客户端不安全,官方不是不推荐吗?我也想啊,为什么非要给自己制造麻烦,但是,我一个项目(外包)遇到了这样的情况,这个项目做服务端告诉他不会集成,让我放到客户端来,当时也解释了利害关系,但是对方执意如此。在此,我只想说……(此处省略一万字),这里我笑了,不会集成?那支付后那些回调操作你怎么要做了?为什么不也放到客户端来?哦,对了,客户端不方便修改数据库数据。请原谅我的吐槽,这根本不是会不会集成的原因,这是态度问题啊,相信有很多同学遇到过类似的事情,在这里还是希望大家吐槽可以,忍忍也就过去了。好像扯远了,回归正题吧。
支付宝服务端sign签名
首先我们有必要来看一下支付宝支付的流程图,以便了解服务端该做哪些操作:
注意第一点app携带支付信息(正常的流程这里服务端有一个签名过程,APP需要请求服务端提供的接口传入对应的参数获取签名后的数据,本文将服务端签名过程放到客户端)调用支付接口请求支付宝客户端调起支付界面。流程图其他步骤可以参考前言中推荐的文章,里面有详细的解释,这里不再解释了。
支付宝签名,其实,支付宝的集成很简单,所以签名也很简单,对照文档一会儿就弄出来了,我们来看一看就明白了:
* 获取签名
public static String getSign(String content, String privateKey) {
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(privateKey));
KeyFactory keyf = KeyFactory.getInstance("RSA");
PrivateKey priKey = keyf.generatePrivate(priPKCS8);
java.security.Signature signature = java.security.Signature.getInstance("SHA1WithRSA");
signature.initSign(priKey);
signature.update(content.getBytes("UTF-8"));
byte[] signed = signature.sign();
return Base64.encode(signed);
} catch (Exception e) {
e.printStackTrace();
return null;
* 创建订单信息
* payEntity 订单支付实体
private static String getOrderInfo(PayEntity payEntity){
StringBuffer orderInfo = new StringBuffer();
orderInfo.append("partner=" + "\"" + AliPayConstans.PARTNER + "\"");
orderInfo.append("&seller_id=" + "\"" + AliPayConstans.SELLER + "\"");
orderInfo.append("&out_trade_no=" + "\"" + payEntity.getOut_trade_no() + "\"");
orderInfo.append("&subject=" + "\"" + payEntity.getSubject() + "\"");
orderInfo.append("&body=" + "\"" + payEntity.getBody() + "\"");
orderInfo.append("&total_fee=" + "\"" + payEntity.getTotal_fee() + "\"");
orderInfo.append("&notify_url=" + "\"" + AliPayConstans.NOTIFY_URL
orderInfo.append("&service=\"mobile.securitypay.pay\"");
orderInfo.append("&payment_type=\"1\"");
orderInfo.append("&_input_charset=\"utf-8\"");
orderInfo.append("&it_b_pay=\"30m\"");
orderInfo.append("&return_url=\"\"");
return orderInfo.toString();
AliPayConstans相关:
/** 商户PID */
public static final String PARTNER = "";
/** 商户收款账号 */
public static final String SELLER = "";
/** 商户私钥,pkcs8格式 */
public static final String RSA_PRIVATE = "";
/** 支付宝公钥 */
public static final String RSA_PUBLIC = "";
/** 支付回调接口,需要服务器端支持 */
public static final String NOTIFY_URL = "";
微信服务端统一下单及签名
老规矩先看微信支付流程图,不得不说微信支付的流程还挺复杂的,这也许是大家吐槽微信支付的原因之一吧:
我们需要注意2-7之间的步骤,这是关键所在,其中会有两次签名。
1. 构建支付订单信息(第一次签名)
2. 调用统一下单接口获取预付ID(prepay_id)
3. 生成带签名的客户端支付信息(第二次签名)
1、构建支付订单信息
* 微信支付,构建统一下单请求参数
public String genEntity() {
String nonceStr = genNonceStr();
List&NameValuePair& packageParams = new ArrayList&NameValuePair&();
packageParams
.add(new BasicNameValuePair("appid", WeChatConstans.APP_ID));
packageParams.add(new BasicNameValuePair("body", body));
packageParams.add(new BasicNameValuePair("mch_id",
WeChatConstans.PARTNER_ID));
packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));
packageParams.add(new BasicNameValuePair("notify_url",
WeChatConstans.NOTIFY_URL));
packageParams.add(new BasicNameValuePair("out_trade_no", out_trade_no));
packageParams.add(new BasicNameValuePair("spbill_create_ip",
getIPAddress()));
BigDecimal totalFeeBig = new BigDecimal(total_fee);
int totalFee = totalFeeBig.multiply(new BigDecimal(100)).intValue();
packageParams.add(new BasicNameValuePair("total_fee", String
.valueOf(totalFee)));
packageParams.add(new BasicNameValuePair("trade_type", "APP"));
String sign = genPackageSign(packageParams);
packageParams.add(new BasicNameValuePair("sign", sign));
String xmlstring = XmlUtil.toXml(packageParams);
return new String(xmlstring.toString().getBytes(), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
生成签名:
* 生成签名
public static String genPackageSign(List&NameValuePair& params) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i & params.size(); i++) {
sb.append(params.get(i).getName());
sb.append('=');
sb.append(params.get(i).getValue());
sb.append('&');
sb.append("key=");
sb.append(WeChatConstans.PARTNER_KEY);
String packageSign = MD5Util.getMessageDigest(
sb.toString().getBytes("utf-8")).toUpperCase();
return packageS
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
随机字符串:
* 微信支付调用统一下单接口,随机字符串
public static String genNonceStr() {
Random random = new Random();
String rStr = MD5Util.getMessageDigest(String.valueOf(
random.nextInt(10000)).getBytes("utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
因为微信接收参数的格式只支持xml格式,所以我们要将参数转为xml格式,具体参照 接口,生成xml格式:
* 生成 XML
public static String toXml(List&NameValuePair& params) {
StringBuilder sb = new StringBuilder();
sb.append("&xml&");
for (int i = 0; i & params.size(); i++) {
sb.append("&" + params.get(i).getName() + "&");
sb.append(params.get(i).getValue());
sb.append("&/" + params.get(i).getName() + "&");
sb.append("&/xml&");
return sb.toString();
2、调用统一下单接口获取预付ID
将我们第一步构建支付订单信息作为参数请求统一下单接口:
* 异步网络请求获取预付Id
private class GetPrepayIdTask extends AsyncTask&String, Void, String& {
protected void onPreExecute() {
protected void onPostExecute(String result) {
sendPayReq(result);
protected String doInBackground(String... params) {
String url = String.format(WeChatConstans.WECHAT_UNIFIED_ORDER);
String entity = genEntity();
byte[] buf = WeChatHttpClient.httpPost(url, entity);
if (buf != null && buf.length & 0) {
Map map = XmlUtil.doXMLParse(new String(buf));
return (String) map.get("prepay_id");
} catch (Exception e) {
e.printStackTrace();
return null;
由于返回的参数格式是xml格式,所以我们要解析数据,获取prepay_id:
* 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。
* JDOMException
* IOException
public static Map doXMLParse(String strxml) throws Exception {
if (null == strxml || "".equals(strxml)) {
return null;
Map m = new HashMap();
InputStream in = new ByteArrayInputStream(strxml.getBytes());
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(in);
Element root = doc.getRootElement();
List list = root.getChildren();
Iterator it = list.iterator();
while (it.hasNext()) {
Element e = (Element) it.next();
String k = e.getName();
String v = "";
List children = e.getChildren();
if (children.isEmpty()) {
v = e.getTextNormalize();
v = getChildrenText(children);
m.put(k, v);
in.close();
* 获取子结点的xml
* children
public static String getChildrenText(List children) {
StringBuffer sb = new StringBuffer();
if (!children.isEmpty()) {
Iterator it = children.iterator();
while (it.hasNext()) {
Element e = (Element) it.next();
String name = e.getName();
String value = e.getTextNormalize();
List list = e.getChildren();
sb.append("&" + name + "&");
if (!list.isEmpty()) {
sb.append(getChildrenText(list));
sb.append(value);
sb.append("&/" + name + "&");
return sb.toString();
* 3、生成带签名的客户端支付信息(直接调起支付)*
private void sendPayReq(String prepayId) {
PayReq req = new PayReq()
req.appId = WeChatConstans.APP_ID
req.partnerId = WeChatConstans.PARTNER_ID
req.prepayId = prepayId
req.nonceStr = genNonceStr()
req.timeStamp = String.valueOf(genTimeStamp())
req.packageValue = "Sign=WXPay"
List&NameValuePair& signParams = new LinkedList&NameValuePair&()
signParams.add(new BasicNameValuePair("appid", req.appId))
signParams.add(new BasicNameValuePair("noncestr", req.nonceStr))
signParams.add(new BasicNameValuePair("package", req.packageValue))
signParams.add(new BasicNameValuePair("partnerid", req.partnerId))
signParams.add(new BasicNameValuePair("prepayid", req.prepayId))
signParams.add(new BasicNameValuePair("timestamp", req.timeStamp))
//再次签名
req.sign = genPackageSign(signParams)
// 传递的额外信息,字符串信息,自定义格式
// req.extData = type +"#" + out_trade_no + "#" +total_fee
// 微信支付结果界面对调起支付Activity的处理
// APPCache.payActivity.put("调起支付的Activity",(调起支付的Activity)context)
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.registerApp(WeChatConstans.APP_ID)
api.sendReq(req)
// 支付完成后微信会回调 wxapi包下 WXPayEntryActivity 的public void onResp(BaseResp
// resp)方法,所以后续操作,放在这个回调函数中操作就可以了
微信支付成功调起支付后回调到WXPayEntryActivity就是正常微信支付流程了。当我们调起了支付,就要进行一些处理了,比如支付成功了要把调起支付的Activity finish掉,或者你要传递一些订单信息去支付成功界面,那就要用req.extData了,代码中可以看到,我传了type (订单类型)+out_trade_no(订单号) +total_fee(费用),并用”#”分割,这种就是自定义数据格式了。
WXPayEntryActivity:
package com.example.payment.
import android.app.A
import android.content.I
import android.os.B
import com.example.payment.R;
import com.tencent.mm.sdk.constants.ConstantsAPI;
import com.tencent.mm.sdk.modelbase.BaseR
import com.tencent.mm.sdk.modelbase.BaseR
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventH
import com.tencent.mm.sdk.openapi.WXAPIF
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
private IWXAPI
* 支付类型
private String orderId;
* 支付费用
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_result);
String data = getIntent().getStringExtra("_wxapi_payresp_extdata");
String[] str = data.split("#");
type = str[0];
orderId = str[1];
fee = str[2];
api = WXAPIFactory.createWXAPI(this, WeChatConstans.APP_ID);
api.handleIntent(getIntent(), this);
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
public void onReq(BaseReq req) {
public void onResp(BaseResp resp) {
if (resp.getType() == MAND_PAY_BY_WX) {
if(resp.errCode == 0){
WXPayEntryActivity.this.finish();
WXPayEntryActivity.this.finish();
好了,最后我们来看下Activity怎么调起支付吧:
public class MainActivity extends Activity implements OnClickListener{
* 相匹配的msg.what
private int payFlag = 11;
private String orderId;
* 最后需要支付的金额
private String fastA
* 不同类型的订单
int type = 1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_alipay).setOnClickListener(this);
findViewById(R.id.btn_wechatpay).setOnClickListener(this);
public void onClick(View v) {
switch(v.getId()){
case R.id.btn_alipay:
String subject
= "测试名称";
AliPayService.pay(new PayEntity(orderId, subject, "测试商品不描述", fastAmount), mHandler, payFlag , this);
case R.id.btn_wechatpay:
String body = "测试商品不描述";
WeChatPayService weChatPay = new WeChatPayService(this,type, orderId, body, fastAmount);
weChatPay.pay();
* 支付宝支付异步通知
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if(msg.what == payFlag){
String resultStatus = new PayResult((String) msg.obj).getResultStatus();
if ("9000".equals(resultStatus)) {
showShortToast("支付成功!");
} else if("8000".equals(resultStatus)){
showShortToast("支付结果确认中");
showShortToast("支付失败");
private void showShortToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
文章重点介绍了微信支付服务端操作放到客户端而支付宝的服务端操作比较简单,由于篇幅原因,所以只贴了部分关键代码,下面会给出模板demo(Eclispce和Studio都有),Demo不能直接调起支付,但是替换为具体项目非常方便。通过本文可以了解到,其实不管客户端还是服务端,只要按照官方文档来做,一般还是能实现的,不过官方文档也有不足的地方,文档排版不好、内容混杂、文档更新不及时、demo杂而乱(PS:这里只觉得微信demo太杂太乱了)。但是,只要你用心,这些都不是问题。
如果……有同学遇到服务端蛮不讲理的把这些操作丢给你,你可以和他理论一番,他改正也就好了,如果还是一意孤心,你还是忍忍吧……毕竟,你要做一个大度的人,哈哈哈!
The good seaman is known in bad weather.
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40837次
排名:千里之外
评论:61条
(2)(1)(3)(1)

我要回帖

更多关于 微信现金支付 的文章

 

随机推荐