微信支付系统码怎么申领

微信扫码支付开发流程和分析 - 简书
微信扫码支付开发流程和分析
1 分类说明
1.1 模式一
1.2 模式二
总结:根据官方文档配合现有网站业务,选择模式二来作为微信扫码支付方式。原因是:
流程更加简单 2. 支付二维码有效期控制在2小时 3. 支付请求更加主动
2 业务流程
2.1 选择充值金额
2.2 调用微信统一下单方法,同时网站内部产生支付订单
2.3 获取微信统一支付方法返回的支付链接
2.4 将支付链接作为内容生成支付二维码
2.5 支付二维码展示给用户
2.6 手机端用户长按二维码,微信调用支付功能
2.7 网站主动发起订单查询方法
2.8 对微信异步通知结果进行处理
3 功能实现
3.1 微信充值接口
method: POST
用户有效token
用户在微信公众号下唯一识别编号
微信支付类型,JSAPI(公众号支付)、NATIVE(扫码支付)
3.2 微信支付下单组件
Core\Unlity\WxPay\WxPayCoreAPI::unifiedorder()
3.3 bacon-qr-code composer package 生成二维码
composer.json 添加 bacon/bacon-qr-code使用:
$renderer = new \BaconQrCode\Renderer\Image\Png();
$renderer-&setHeight(256);
$renderer-&setWidth(256);
$writer = new \BaconQrCode\Writer($renderer);
$writer-&writeFile('Hello World!', 'qr.png');
3.4 展示支付二维码
因为需要在模板中显示,所以在生成二维码时将图片保存在服务器静态域下通过 http 或 https 访问显示支付二维码。
3.5 调用支付功能(微信自身调用)
微信客户端中长按二维码微信会自动识别支付链接然后调用支付功能插件。
3.6 订单查询(网站主动查询)
因为微信扫码支付未提供有效的同步通知结果,所以最后想到的办法就是手动向微信服务器查询订单处理结果,然后配合网站业务完成支付操作所有步骤。
3.7 异步通知结果处理
微信异步通知是直接对服务器响应处理结果,内网无法获取。所以做好日志记录操作,然后根据响应结果和现有网站记录信息来验证订单,验证通过后内部订单状态更新并对微信响应处理结果。因为微信通知频率为15/15/30/180/00/,单位:秒,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知。
4.1 微信扫码支付方式选择
微信提供 2 种扫码支付方式,从开发时间和业务实际考虑上,选择模式二更有优点。
4.2 支付二维码生成
微信官方提供的 SDK 中有提供生成二维码的工具类文件,但是因为和现有框架不能很好兼容,调整时间较长所以最后解决办法是在composer中找到一个被很多人使用的包来作为生成二维码的工具。
4.3 下单帐号和支付帐号不一致问题
个人在开发环境中调试不存在这个问题,当多人同时验证支付功能时候就会出现,原因是在早期生成支付二维码时只生成一张图片但是被多人使用,这样就会存在下单帐号和支付帐号不一致问题并且有时候会出现本人充值的金额前后不一致问题,原因都是因为支付二维码不存在唯一性。
4.4 二维码在微信客户端页面显示问题
目前在微信客户端中存在微信支付二维码无法显示内容,从生成二维码方法中未检查到原因,所以这个问题在后期优化中需要继续研究。
PHP, Lua, Python, MySQL, JS, Nginx, Linux, H5, CSS, bash shell
欢迎留言、转发 微信极速开发系列文章:http://www.jianshu.com/p/a172a1b69fdd 上一篇文章介绍了微信提供的那些支付方式以及公众号支付http://www.jianshu.com/p/cba7 这篇文章我们来聊聊微信扫码支付(...
微信支付文档 1.微信支付简介 a)功能简介 b)支付账户 c)支付方式 d)账号测试 2.JS API支付接口 a)支付场景 b)功能交互 c)获取当前微信版本号 d)显示微信安全支付标题 e)JS API支付接口(getBrandWCPayRequest)定义 f)订单...
在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去,微信支付旨在为广大微信用户及商户提供更优质的支付服务,微信的支付和安全系统由腾讯财付通提供支持。本文主要介绍如何在微信公众号上实现微信支付...
目前,以支付宝和微信为代表的扫码支付正在各个线下消费场景中攻城略地,也给我们的生活带来了不小的方便。今天就来聊聊生活中常见的几种扫码支付方式。 1、扫码转账 支付流程:用户点击支付宝扫一扫,扫码商家事先准备好的二维码,识别出来后选择转账。 扫码分析:此扫码支付的本质其实还是...
银联支付,支付宝支付,微信支付的三大总结,之前也有写过两篇。 微信支付,支付宝支付,银联支付——三大支付总结: http://blog.csdn.net/androidstarjack/article/details/ 支付宝植入总结: android 支付...
文章链接地址:http://mp.weixin.qq.com/s?__biz=MzI0NjUxNTY5Nw==&mid=&idx=1&sn=04dfcb6fee2c8c71922a71d&chksm=e9bf5303dec8da151a...
为什么要提升阅读能力 在知识经济时代,通过打造多维度的个人核心竞争力是通往财富自由,实现人生自由的不二选择。毕业后一直不忘学习提升自己,但是买了一本本书之后,看完的记不住、用不上,没看的估计很难有机会再去翻开了吧。 阅读做为知识输入的关键环节之一,起者非常大的作用。之前一直...
滴答滴答,刚刚下完雨的街道变得反光,月亮今夜也是特别的圆。 砰~“就没有一个能打的了吗?”贾克斯大声喊到。身边躺着数十个人都是被一个拿着路灯的给打倒的。周围下赌注的人开始兴奋了起来,“我赌500,他肯定不能在接着打了,在找15个打手上来。”旁边的人也跟着压钱了。 贾克斯轻蔑...
你30岁的生日根本没来得及庆祝,因为孩子下个月就要出生,全家忙成一团。 那年以后,孩子一天天长大,而你总是忘记自己的年龄。 “闺女,你多大了?大学毕业没啊?” 生完孩子后的你,身材和容貌并没有变得惨不忍睹,每每被问及年龄,内心总少不了一阵躁动,一边暗自窃喜自己的青春可人,一...微信公众号
微信自助入住系统正式上线啦!
前台忙的团团转,客人排队办理入住等的不耐烦?
客人忘记带房卡或房卡丢了,进不了房间干着急?
希尔顿等一大波酒店,都开始拥抱微信自助入住系统啦!
住哲微信自助入住,轻轻一按微信,房门瞬间开,即使躺在床上也可以!
对酒店的好处:
解放前台,提高工作效率
降低酒店人工和管理成本
让酒店更智慧,更有范儿
酒店微信公众号增粉和粘粉利器
提升客人的住酒店体验
对客人的好处:
银行卡、现金都不用带,支付方便
方便、快捷,再也不用排队等待
微信开门,快!爽!酷!炫!
提前任性选房
住哲是行业首家与微信合作,PMS全面接入微信扫码支付,引领全新到店支付方式!
客人只需用微信扫一扫即可轻松付房费!
即使没带银行卡,兜里仅有五毛钱,只要手机在,酒店就能住!
住哲微信扫码支付优势:
1、增加微信粉丝,精准推广酒店的微信公众号
2、大幅节约酒店成本,交易费率超低,仅0.6%
3、押金等款项自动进入pms,入账十分便捷
4、微信官方丰富的宣传物料支持,收银牌、门贴、台卡等
5、吸客神器,时尚酷炫方便,客人对酒店的好感爆棚
6、支付成功后,可自动绑定会员
微信扫码支付使用流程:
宜客宜家连锁酒店到店微信扫码支付比例最高达到59%
还在为酒店入住率担忧吗?还在为OTA拿走大量佣金而烦恼吗?
微信时代来了!酒店不可错过
微信时代来了!酒店不可错过
微信已经成为21岁以上用户的首选手机应用微信总用户数超13亿,活跃用户数达4.68亿,日人均开启次数为38次
当微信来敲门,酒店准备好了吗?
当微信来敲门,酒店准备好了吗?
住哲微信订房,行业首家,帮酒店提升入住率20%以上投入低,仅需投入运营人员工资,是酒店当前发展移动端预订最简单最有效的工具
没有微信公众账号?开通和运营微信账号太麻烦?
没有微信公众账号?开通和运营微信账号太麻烦?
住哲帮酒店一键开通酒店专属移动订房链接,发朋友圈推广,用作移动端百度推广,生成二维码实现O2O推广...从此客源少、入住率低、推广受限,通通不攻自破!
扫一扫二维码,立即体验
扫一扫二维码,立即体验
住哲微信订房优势
1、与PMS(酒店管理系统)对接
房型、房价、订单、会员无缝对接
2、整合微博微信订房
一个后台搞定两个平台房型,房价,订单数据
3、完善的会员体系
会员等级、会员价格、会员积分、优惠券
4、积分商城
积分可在商城兑换礼品,优惠券等
5、营销支持
刮刮卡、大转盘,优惠券、积分可分群体发放,会员注册可赠送积分,优惠券(优惠券使用微信预订时可直接使用)
6、零门槛的支付宝接入,更低手续费
房型、房价、订单、会员无缝对接
7、原生微信支付支持
更佳的支付体验(需酒店方提供微信支付相应的开发密钥)
8、基于LBS订房
用户发送地理位置、酒店城市、酒店名称等关键词,自动推送相应酒店信息
9、地图导航、一键拨号
10、强大价格调整支持
周末价格、旺季、淡季、节假日价格设置
11、微客服支持
微信消息弹屏提示,客人实时沟通,一个后台全搞定
12、订单提醒更省心
后台弹屏,音乐提示,也可短信、邮件提醒到酒店方
13、门票支持
微信上直接售卖景区门票
14、推广更灵活
将微信订房生成专属链接,可发朋友圈,可用作移动端百度推广,可生成二维码实现O2O推广
北京住哲信息技术有限公司
销售电话:010-售后电话:010-
北京市海淀区上地十街辉煌国际中心1号楼12层
微信公众号
移动办公PMS
微信公众号
移动办公PMS
友情链接:
北京住哲信息技术有限公司 版权所有 京ICP备号-3 京公网安备86号08:44 提问
手机app原生 做支付宝、微信 扫码支付怎样实现?
医院用的app,需要支付宝和微信扫码支付
根据费用手机生成二维码,患者扫码进行支付。
用哪个场景的接口?
医院需要提供什么资料?
详细点,原来没有接触过
按赞数排序
对公账户、企业资质【三证合一的许可证、组织机构代码、法人身份证号balabalabala 总之很多证件的必填项】
扫码支付分两种:
1)扫码支付是平台生成订单和付款二维码,然后用户拿手机app去扫,当然 对应的app扫对应的平台。
2)用户展示自己的付款码,平台生成订单 然后用扫码枪之类的设备扫用户的付款码。
至于你说的医院用的app,_一下内容属于个人猜测_ 应该是要绑定【门诊号】 之类的唯一关联的一个code,医生在平台生成订单,
socket推给对应的患者,患者在app内选择对应的支付工具支付。
至于支付成功/失败 有回调地址,回调地址也不保险? 你还可以主动去支付宝和微信查询订单信息。
至于楼上说的paypal, 很鸡肋,因为不支持RMB,想申请也可以。只做过开发,没申请过账号。
总之 支付平台 必须是跟法人有关的公户才可以,经营资质啦 一大堆,去申请页面对应看就行了,
在这里等答案属于浪费时间。 编程就是要 去做 去试错。
特别详细的步骤看这里:
你要做的是自己的APP,然后接入微信和支付宝付款,那你应该去申请支付宝和微信的商户号,然后按照APP接入的方式接入他们的支付。
微信的(对应你场景的是:APP支付{适用于商户在移动端APP中集成微信支付功能。}):
支付宝的(同样是APP支付):
先向支付渠道提交商户入网申请,以便获得支付渠道分配给商户的支付渠道参数,这样 C 端用户在 App 里购买商品时,支付渠道才知道这笔钱该清算给哪个商户再。根据支付渠道提供的接口及文档,将申请好的支付渠道参数配置好,再进行测试和联调 。准备好相关材料。
打开支付宝官网(
登陆账号后,需要提交企业资质证明材料(营业执照等等,官网上都有的,提交过后3天左右审核),还需要缴纳一定的费用(具体的步骤官网提示一步步审核就行),然后再下载提供的开发SDK,
创建应用,获取接口和密钥(创建应用后就会有),然后就可以开发了。微信支付方式差不多,进官网去看。
1、首先,你要有一间五证齐全的公司2、然后用这些材料,去支付宝注册一个商家账户(审核周期大概5个工作日),或者微信的开发者账号(审核周期大概5个工作日,300元费用),或者银联、paypal(这俩个我不太熟悉)3、然后申请开通手机端的支付产品,支付宝的话就是“移动快捷支付”(支付时跳转到支付宝APP,需要用户安装支付宝APP),或者“移动WAP网页支付”(支付时打开一个WebView里边登陆支付宝进行支付),微信的话,需要你的app已经上架有了APPID,才能开通;大概也是5个工作日4、然后就是技术集成了,支付宝和微信会提供给你一个32位的秘钥,用于防篡改效验(或者你采用RSA加密的话,需要给他上传你的公钥);你需要有一个自己的支付后台服务器,来处理加密、获取支付令牌的后台处理;技术集成比较复杂就难以在这里细说了
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
本文讲的是微信支付中的扫码支付的模式二:该模式下,二维码链接由微信支付返回给商户,商户将得到的二维码链接转成二维码图片,用户通过扫码支付,此方式下生成的二维码2小时内有效。
微信支付官网地址:https://pay.weixin.qq.com/wiki/doc/api/index.html
1.扫码支付步骤:
调用统一下单接口可获取到一个二维码链接参数code_url
主要针对公司APP、PC端统一后台下单接口,已经测试通过。如有疑问,可以加QQ
最近在弄支付宝、微信支付等的事,发现这两家的文档都写得很差,demo也让人看的云里雾里。所以写篇博客,来尽量减少后来的同学走的弯路。
首先,若是要做app支付的话,在微信第三方平台申请APP,若是安卓的话上传你的keystore和包名,ios上传bundle id,微信会生成相应的签名。
然后前往微信商户平台,拿到要做支付必要的各种id和密钥。
请看以下配置代码:
package co
1.【模式一】:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号), 用户扫码后,微信支付系统将productid和用户唯一标识(openid)回调商户后台系统(需要设置支付回调URL), 商户后台系统根据productid生成支付交易,最后微信支付系统发起用户支付流程...
可应用场景: 线上、线下
场景说明: 线下:因为一张二维码可重
最近公司有电脑网站跟手机网站的支付宝支付需求,正好博主最近相对有空,于是花了一天时间去实现这个功能。先是在支付宝的开放平台的文档中心看了半天,,发现并不能找到立马就能上手开发的内容。于是搜了几篇博客,综合之下终于实现了功能。在此将java沙箱调试的历程整理出来,希望能对大家有所帮助,好了废话不扯,来看看怎么一步步实现的。第一步
访问开放平台文档中西,看看支付宝的支付流程,大概了解...
网上的很多PHP微信扫码支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,只有200行代码,希望可以给各位想接入微信扫码支付的带来些许帮助和借鉴意义。直接运行该文件即可得到一个支付二维码的图片。
在自己的应用中打开微信扫一扫代码:
private void toWeChatScan() {
//利用Intent打开微信
Uri uri = Uri.parse(&weixin://dl/scan&);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
支付宝支付 微信扫码支付
已封装好工具类和谷歌的二维码生成工具类。内附微信回调action
自己去下载。百度到处都是的。
微信扫码支付模式二
http://www.demodashi.com/demo/10268.html支付宝扫码支付
https://blog.csdn.net/zhulin2012/article/details/
为了便于微信开发,此处在ThinkPHP5.0 框架下整合了微信扫码支付的功能,测试需要外网项目部署.
对于TP3的集成,可参考之前写的文章 ThinkPHP 框架下微信支付
功能开发微信支付SDK整理移植
一般会进行原生开发,那么就可以直接下载开发文档中的PHP-SDK,此处的代码进行了整理。
需要将 ..\application\extend 目录下的 wxpay 对应移植到自己的项目目录今天要比昨天吃苦的能力更强
一:前期微信支付扫盲知识
前提条件是已经有申请了微信支付功能的公众号,然后我们需要得到公众号APPID和微信商户号,这个分别在微信公众号和微信支付商家平台上面可以发现。其实在你申请成功支付功能之后,微信会通过邮件把Mail转给你的,有了这些信息之后,我们就可以去微信支付服务支持页面:https://pay.weixin.qq.com/service_provider/index.shtml
打开这个页面,点击右上方的链接【开发文档】会进入到API文档说明页面,看起来如下
选择红色圆圈的扫码支付就是我们要做接入方式,鼠标移动到上面会提示你去查看开发文档,如果这个都不知道怎么查看,可以洗洗睡了,你真的不合适做程序员,地址如下:
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1在中打开之后会看到
一:前期微信支付扫盲知识
前提条件是已经有申请了微信支付功能的公众号,然后我们需要得到公众号APPID和微信商户号,这个分别在微信公众号和微信支付商家平台上面可以发现。其实在你申请成功支付功能之后,微信会通过邮件把Mail转给你的,有了这些信息之后,我们就可以去微信支付服务支持页面:https://pay.weixin.qq.com/service_provider/index.shtml
打开这个页面,点击右上方的链接【开发文档】会进入到API文档说明页面,看起来如下
选择红色圆圈的扫码支付就是我们要做接入方式,鼠标移动到上面会提示你去查看开发文档,如果这个都不知道怎么查看,可以洗洗睡了,你真的不合适做程序员,地址如下:
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1在中打开之后会看到
我们重点要关注和的内容我已经用红色椭圆标注好了,首先阅读【接口规则】里面的协议规范,开玩笑这个都不读你就想做微信支付,这个就好比你要去泡妞,得先收集点基本背景信息,了解对方特点,不然下面还怎么沟通。事实证明只有会泡妞得程序员才是好销售。跑题了我们接下来要看一下【场景介绍】中的案例与规范,只看一下记得一定要微信支付的LOGO下载下来,是为了最后放到我们自己的扫码支付网页上,这样看上去比较专业一点。之后重点关注【模式二】
我们这里就是要采用模式二的方式实现PC端页面扫码支付功能。
微信官方对模式二的解释是这样的“商户后台先调用微信支付的统一下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付。注意:code_url有效期为2小时,过期后扫码不能再发起支付”。看明白了吧就是我们首先要调用微信提供统一下单接口,得到一个关键信息code_url(至于这个code_url是什么鬼,我也不知道),然后我们通过自己的程序把这个URL生成一个二维码,生成二维码我这里用了Google的zxing库。然后把这个二维码显示在你的PC端网页上就行啦。这样终端用户一扫码就支付啦,支付就完成啦,看到这里你肯定很激动,发现微信支付如此简单,等等还有个事情我们还不知道,客户知道付钱了,我们服务器端还不知道呢,以微信开发人员的智商他们早就想到这个问题了,所以让你在调用统一下单接口的时候其中有个必填的参数就是回调URL,就是如果客户端付款成功之后微信会通过这个URL向我们自己的服务器提交一些数据,然后我们后台解析这些数据,完成我们自己操作。这样我们才知道客户是否真的已经通过微信付款了。这样整个流程才结束,这个就是模式二。微信用一个时序图示这样表示这个过程的。
表达起来比较复杂,看上去比较吃力,总结一下其实我们服务器该做的事情就如下件:
1. 通过统一下单接口传入正确的参数(当然要包括我们的回调URL)与签名验证,从返回数据中得到code_url的对应数据
2. 根据code_url的数据我们自己生成一个二维码图片,显示在浏览器网页上
3. 在回调的URL中添加我们自己业务逻辑处理。
至此扫盲结束了,你终于知道扫码支付什么个什么样的流程了,下面我们就一起来扒扒它的相关API使用,做好每步处理。
二:开发过程
在开发代码之前,请先准备几件事情。
1. 添加的依赖&& 也可以直接在前端使用第三方库& 生成二维码
2. 添加的依赖
3.下载版本SDK演示程序,地址在这里
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1
我们需要MD5Util.java和两个文件
4. 我们使用版本是,记得添加依赖
上面准备工作做好以后,继续往下看:
首先我们要调用微信的统一下单接口,我们点击【API列表】中的统一下单会看到这样页面:
我们重点要关注和的内容我已经用红色椭圆标注好了,首先阅读【接口规则】里面的协议规范,开玩笑这个都不读你就想做微信支付,这个就好比你要去泡妞,得先收集点基本背景信息,了解对方特点,不然下面还怎么沟通。事实证明只有会泡妞得程序员才是好销售。跑题了我们接下来要看一下【场景介绍】中的案例与规范,只看一下记得一定要微信支付的LOGO下载下来,是为了最后放到我们自己的扫码支付网页上,这样看上去比较专业一点。之后重点关注【模式二】
我们这里就是要采用模式二的方式实现PC端页面扫码支付功能。
微信官方对模式二的解释是这样的“商户后台先调用微信支付的统一下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付。注意:code_url有效期为2小时,过期后扫码不能再发起支付”。看明白了吧就是我们首先要调用微信提供统一下单接口,得到一个关键信息code_url(至于这个code_url是什么鬼,我也不知道),然后我们通过自己的程序把这个URL生成一个二维码,生成二维码我这里用了Google的zxing库。然后把这个二维码显示在你的PC端网页上就行啦。这样终端用户一扫码就支付啦,支付就完成啦,看到这里你肯定很激动,发现微信支付如此简单,等等还有个事情我们还不知道,客户知道付钱了,我们服务器端还不知道呢,以微信开发人员的智商他们早就想到这个问题了,所以让你在调用统一下单接口的时候其中有个必填的参数就是回调URL,就是如果客户端付款成功之后微信会通过这个URL向我们自己的服务器提交一些数据,然后我们后台解析这些数据,完成我们自己操作。这样我们才知道客户是否真的已经通过微信付款了。
这样整个流程才结束,这个就是模式二。微信用一个时序图示这样表示这个过程的。
package com........
import java.util.I
import java.util.M
import java.util.S
import java.util.SortedM
import javax.servlet.http.HttpServletR
public class ConstantUtil {
&* 商家可以考虑读取配置文件
public static String GATEURL = "https://api.mch.weixin.qq.com/pay/unifiedorder";//获取预支付id的接口url
public static String QUERYURL = "https://api.mch.weixin.qq.com/pay/orderquery";//获取微信支付订单支付情况url
public static String BODY="";//支付介绍看微信介绍
//微信扫码支付配置--start--微信公众平台APPID
public static String WECHAT_APP_ID="";//公司提供
public static String WECHAT_MCH_ID="";//公司提供
&&&&public static String WECHAT_APP_KEY="";//公司提供微信公众平台支付商户平台系统内的API密钥
public static String WECHAT_NOTIFY_URL="http://www.*******.com/weixinPayReturn";//微信扫码支付配置&&&回调路径--end--
&&&&public static String createSign(String Encoding, SortedMap&String, String& parameters){
&&&&&&&&StringBuffer sb = new StringBuffer();
&&&&&&&&Set es = parameters.entrySet();
&&&&&&&&Iterator it = es.iterator();
&&&&&&&&while(it.hasNext()) {
&&&&&&&&&&&&Map.Entry entry = (Map.Entry)it.next();
&&&&&&&&&&&&String k = (String)entry.getKey();
&&&&&&&&&&&&Object v = entry.getValue();
&&&&&&&&&&&&if(null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
&&&&&&&&&&&&&&&&sb.append(k + "=" + v + "&");
&&&&&&&&&&&&}
&&&&&&&&sb.append("key=" + ConstantUtil.WECHAT_APP_KEY);
&&&&&&&&String sign = MD5Util.MD5Encode(sb.toString(), Encoding).toUpperCase();
&&&&public static boolean IsNumeric(String str) {
&&&&&&&&return str.matches("\\d *");
&&&&public &static String parametersToXml(Map&String, String& parameters) {
&&&&&&&&String xml = "&xml&";
&&&&&&&&Set es = parameters.entrySet();
&&&&&&&&Iterator it = es.iterator();
&&&&&&&&while(it.hasNext()) {
&&&&&&&& Map.Entry entry = (Map.Entry)it.next();
&&&&&&&&&&&&String key = (String)entry.getKey();
&&&&&&&&&&&&String val = (String)entry.getValue();
&&&&&&&&&&&&if(IsNumeric(val)) {
&&&&&&&&&&&&&&&&xml = xml + "&" + key + "&" + val + "&/" + key + "&";
&&&&&&&&&&&&} else {
&&&&&&&&&&&&&&&&xml = xml + "&" + key + "&&![CDATA[" + val + "]]&&/" + key + "&";
&&&&&&&&&&&&}
&&&&&&&&xml = xml + "&/xml&";
&public&static&String generateString(int&length) { &
&&&&&&&&StringBuffer sb&= new&StringBuffer(); &
&&&&&&&&Random random&= new&Random(); &
&&&&&&&&for&(int&i&= 0; i&& i++) { &
&&&&&&&&&&&&sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length()))); &
&&&&&&&&} &
&&&&&&&&return&sb.toString(); &
&&&&public static String getIpAddress(HttpServletRequest request) { &
&&&&&&&&String ip = request.getHeader("x-forwarded-for"); &
&&&&&&&&if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { &
&&&&&&&&&&&&ip = request.getHeader("Proxy-Client-IP"); &
&&&&&&&&} &
&&&&&&&&if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { &
&&&&&&&&&&&&ip = request.getHeader("WL-Proxy-Client-IP"); &
&&&&&&&&} &
&&&&&&&&if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { &
&&&&&&&&&&&&ip = request.getHeader("HTTP_CLIENT_IP"); &
&&&&&&&&} &
&&&&&&&&if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { &
&&&&&&&&&&&&ip = request.getHeader("HTTP_X_FORWARDED_FOR"); &
&&&&&&&&} &
&&&&&&&&if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { &
&&&&&&&&&&&&ip = request.getRemoteAddr(); &
&&&&&&&&} &
&&&&&&&&return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":
先准备下单接口
window.location.href = "weixinPay?Oid="&+
&@RequestMapping(value = "/weixinPay", method = RequestMethod.GET, produces = MediaType.ALL_VALUE)
&&&&public&String weixinPay(Model model,String Oid) {
&&&&&&&&System.out.println("\n*****************开启微信扫码界面******\n");
&&&&&&&// 付款金额,必填
&&&&&&&&/*JSONObject jObject =new JSONObject();*/
&&&&&&&&long&date&= System.currentTimeMillis();
&&&&&&&&SortedMap&String, String& sParaTemp&= new&TreeMap&String, String&();
&&&&&&&&sParaTemp.put("appid", ConstantUtil.WECHAT_APP_ID);
&&&&&&&&sParaTemp.put("mch_id", ConstantUtil.WECHAT_MCH_ID);
&&&&&&&&sParaTemp.put("nonce_str", date&+ ConstantUtil.generateString(10));//最好是当前时间在随机数
&&&&&&&&sParaTemp.put("sign_type", "MD5");
&&&&&&&&sParaTemp.put("body", ConstantUtil.BODY);
&&&&&&&&sParaTemp.put("out_trade_no", Oid);//此处改成商城orderID
&&&&&&&&sParaTemp.put("total_fee", "1"); &&&//为一分钱&
&&&&&&&&sParaTemp.put("spbill_create_ip", ConstantUtil.getIpAddress(request));
&&&&&&&&sParaTemp.put("trade_type", "NATIVE");
&&&&&&&&sParaTemp.put("notify_url", ConstantUtil.WECHAT_NOTIFY_URL);//notify_url
&&&&&&&&String signString&= ConstantUtil.createSign("utf-8", sParaTemp);
&&&&&&&&sParaTemp.put("sign", signString);
&&&&&&&&String paramXml&= ConstantUtil.parametersToXml(sParaTemp);
&&&&&&&&try&{//一下发送请求至微信的下单接口
&&&&&&&&&&&&CloseableHttpClient httpClient&= HttpClientBuilder.create().build();
&&&&&&&&&&&&HttpPost post&= new&HttpPost(ConstantUtil.GATEURL);
&&&&&&&&&&&&post.addHeader("Content-Type", "text/ charset=UTF-8");
&&&&&&&&&&&&StringEntity xmlEntity&= new&StringEntity(paramXml, ContentType.APPLICATION_JSON);//UTF-8
&&&&&&&&&&&&post.setEntity(xmlEntity);
&&&&&&&&&&&&CloseableHttpResponse httpResponse&= httpClient.execute(post);
&&&&&&&&&&&&String responseXML&= EntityUtils.toString(((org.apache.http.HttpResponse) httpResponse).getEntity(), "UTF-8");
&&&&&&&&&&&&@SuppressWarnings("unchecked")
&&&&&&&&&&&&Map&String, String& resultMap&= XMLUtil.parseXmlToMap(responseXML);
&&&&&&&&&&&&if&(resultMap.get("return_code").equals("SUCCESS") && resultMap.get("result_code").equals("SUCCESS")) {
&&&&&&&&&&&&&&&&String codeurl&= resultMap.get("code_url");
&&&&&&&&&&&&&&&&if&(codeurl&!= null&&& !"".equals(codeurl)) {
&&&&&&&&&&&&&&&&&&&&model.addAttribute("data", codeurl);//一切正常返回一个url 页面接收生成二维码
&&&&&&&&&&&&&&&&} else&{
&&&&&&&&&&&&&&&&&&&&model.addAttribute("data", "");
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&post.releaseConnection();
&&&&&&&&} catch&(Exception e) {
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&return&"/weixinPay";
//发送的请求主要是注意验签那块。只要告诉提供的信息没有问题。一切都ok
weixinPay.jsp
获取以上的data页面使用第三方工具库生成二维码
&script&src="${pageContext.request.contextPath}/resources/js/jquery-1.12.0.min.js"&type="text/javascript"&&/script&
&script&src="${pageContext.request.contextPath}/resources/js/jquery.qrcode.min.js"&type="text/javascript"&&/script&
$(function(){
var&str = toUtf8("${data}");//展示二维码
$("#code").qrcode({
&render: "canvas", // 渲染方式有table方式和canvas方式
&width: 220, &&//默认宽度
&height: 200, //默认高度
&text: str, //二维码内容
&typeNumber: -1, &&//计算模式一般默认为-1
&correctLevel: 2, //二维码纠错级别
&background: "#ffffff", &//背景颜色
&foreground: "#000000"&&//二维码颜色
到最后一步微信的二维码就展示在页面上了。& 然后还有扫码回调和订单查询不懂的可以留言
阅读(...) 评论()

我要回帖

更多关于 怎样用微信扫一扫付款 的文章

 

随机推荐