如何实现微信二维码支付功能???
首先呢,要实现微信支付,首先要申请一个公众号,人家支付的money才能到你口袋噢,不然,你可以不用申请,来, 给你提供一个号,尽管支付,别客气,嚯嚯[偷笑]
咱们别造了哈, 直接开货吧!!!
一. 微信支付概述
**(1)**账号申请
步骤一:注册公众号,根据自身主体类型注册对应的公众号
注意: 只能申请服务号,订阅号没有办法申请支付
煌sir给你提供申请网址: 安排666
https://kf.qq.com/product/weixinmp.html#hid=87
步骤二:微信认证,公众号认证后才可申请微信支付
注意噢:(想要拥有属于自己的专属号,需要提交费用审核噢)
步骤三:申请微信支付
- 登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。
步骤四:商户账号审核
- 审核通过之后会往您填写的邮箱里发一封邮件是关于微信支付商户的帐号信息,同时您对公账户上也会收到几毛钱的汇款,需要您查看下具体的金额然后登录微信支付商户平台进行验证
步骤五:在线签署协议
- 本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。
步骤六:完成上述步骤,你可以得到调用API用到的账号和密钥
- appid:微信公众账号或开放平台APP的唯一标识
- mch_id:商户号
- key:商户密钥
(2)测试账号:
当然,如果有小伙伴想要更快的功能实现,可以不申请,可以先用这个账号尝试测试实现
appid: wx8397f8696b538317
mch_id:1473426802
key: T6m9iK73b0kn9g5v426MKfHQH7X8rKwb
(3)支付接口和SDK
微信支付帮助文档地址:
https://pay.weixin.qq.com/wiki/doc/api/index.html
手动调用,常见的接口(了解)
接口 | |
---|---|
下订单 | https://api.mch.weixin.qq.com/pay/unifiedorder |
查询订单 | https://api.mch.weixin.qq.com/pay/orderquery |
关闭订单 | https://api.mch.weixin.qq.com/pay/closeorder |
手动调用整体思路:
- 根据接口要求,组装请求参数
- 以XML的方式,通过POST请求,发送给支付接口
- 微信支付接口,以XML方式给予响应
实际开发中,我们很少直接使用“接口操作”。通常情况下使用微信提供的SDK(工具类)
com.github.wxpay.sdk.WXPay 类就是核心操作封装类。
方法名 | 说明 |
---|---|
microPay | 刷卡支付 |
unifiedOrder | 统一下单 |
orderQuery | 查询订单 |
reverse | 撤销订单 |
closeOrder | 关闭订单 |
refund | 申请退款 |
refundQuery | 查询退款 |
downloadBill | 下载对账单 |
report | 交易保障 |
shortUrl | 转换短链接 |
authCodeToOpenid | 授权码查询openid |
二.测试实现:
1.统一下单后台实现
在测试项目完成操作
步骤一:添加依赖
<dependency><groupId>com.github.wxpay</groupId><artifactId>wxpay-sdk</artifactId><version>0.0.3</version>
</dependency>
步骤二:编写配置类,实现WXPayConfig接口
package com.czxy.changgou3.weixin;import com.github.wxpay.sdk.WXPayConfig;import java.io.InputStream;/*** @author huangsir@itcast.cn* @version 1.0**/
public class MyWXPayConfig implements WXPayConfig {/*** 应用ID:微信开发平台审核通过的应用APPID* @return*/@Overridepublic String getAppID() {return "wx8397f8696b538317";}/*** 商户号:微信支付分配的商户号* @return*/@Overridepublic String getMchID() {return "1473426802";}/*** 秘钥,用于生成签名(sign)* @return*/@Overridepublic String getKey() {return "T6m9iK73b0kn9g5v426MKfHQH7X8rKwb";}@Overridepublic InputStream getCertStream() {return null;}/*** 连接超时时间,单位是毫秒* @return*/@Overridepublic int getHttpConnectTimeoutMs() {return 0;}/*** 读超时时间,单位是毫秒* @return*/@Overridepublic int getHttpReadTimeoutMs() {return 0;}
}
步骤三:后台测试类
下单:
package com.czxy.changgou3.weixin;import com.github.wxpay.sdk.WXPay;import java.util.HashMap;
import java.util.Map;/*** @author huangsir@itcast.cn* @version 1.0**/
public class TestWXPAYunifiedOrder {public static void main(String[] args) throws Exception {//下单过程//1/准备配置类MyWXPayConfig config = new MyWXPayConfig();//2/准备核心类WXPay wxPay = new WXPay(config);//3.准备参数Map<String, String> map = new HashMap<>();map.put("body", "第一个"); //商品描述map.put("out_trade_no", "202010001225023");//商户订单号map.put("total_fee", "111"); //标价金额map.put("spbill_create_ip", "127.0.0.1"); //终端IPmap.put("notify_url", "http://www.baidu.com"); //通知地址map.put("trade_type", "NATIVE");//交易类型//4.调用方法Map<String, String> result = wxPay.unifiedOrder(map);//5.处理结果System.out.println("返回状态码" + result.get("return_code"));System.out.println("返回信息" + result.get("return_msg"));System.out.println("业务结果" + result.get("result_code"));System.out.println("交易类型" + result.get("trade_type"));System.out.println("二维码链接:"+result.get("code_url"));System.out.println(result);}
}
控制台显示:
查询订单:
package com.czxy.changgou3.weixin;import com.github.wxpay.sdk.WXPay;import java.util.HashMap;
import java.util.Map;/*** @author huangsir@itcast.cn* SUCCESS—支付成功* REFUND—转入退款* NOTPAY—未支付* CLOSED—已关闭* REVOKED—已撤销(刷卡支付)* USERPAYING--用户支付中* PAYERROR--支付失败**/
public class TestWXPayOrderQuery {public static void main(String[] args) throws Exception {//1.准备配置类MyWXPayConfig payConfig = new MyWXPayConfig();//2.准备核心配置类WXPay wxPay = new WXPay(payConfig);//3准备参数Map<String, String> map = new HashMap();map.put("out_trade_no", "202010001225023"); //商户订单号//4.查询Map<String, String> result = wxPay.orderQuery(map);//5.处理结果System.out.println("返回状态码" + result.get("return_code"));System.out.println("返回信息" + result.get("return_msg"));System.out.println("业务结果" + result.get("result_code"));System.out.println("交易状态" + result.get("trade_state"));System.out.println("交易状态描述:" + result.get("trade_state_desc"));System.out.println(result);}
}
控制台显示:
2.前端实现:
(1)JS版二维码:QRCode.js
**概述:**QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。
煌sir直接提供二维码生成器js文件:需要的自行下载: (qrcode.min.js)
链接:https://pan.baidu.com/s/1Bfao-5bzVOAar1C0CVf-PQ
提取码:zesb
在vue前端
- 拷贝 qrcode.min.js
2.编写wxpay.html
Document
//核心类
let qrcode = new QRCode ( document . getElementById ( ‘qrcode’ ),
{
width: 200 , height: 200
});
//2.设置数据(需要修改这个地址:要根据你后端下单生成的连接)
qrcode . makeCode ( ‘weixin://wxpay/bizpayurl?pr=3I85g9R’ )
最终启动,访问页面:
http://localhost:3000/wxpay.html
到这里,微信支付的基本实现就完成了,想要实现更完美的代码和展示,那小伙伴们自己就使劲去造吧,嚯嚯…
看完恭喜你,又知道了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!
如何实现微信二维码支付功能???相关推荐
- 微信二维码支付支付宝二维码支付(主扫模式)开发指南
微信二维码支付 熟悉微信支付全家桶的童鞋应该都清楚,微信支付是没有提供PC网关支付的,那么传统的网站需要怎么接入微信支付产品呢? 我们可以选择微信支付中的Native支付产品,官方介绍: Native ...
- 对接微信二维码支付流程
客户在平台下单 平台生成订单记录并且请求微信支付系统获取支付链接地址 微信支付系统响应支付地址通过平台H5技术生成支付二维码 用户扫描支付二维码跳转支付链接地址并且微信支付系统校验支付链接有效性 用户 ...
- Java支付宝二维码支付和退款,微信二维码支付
在蚂蚁金服开发平台下载demo 打开 TradePayDemo 项目,里面的main可以直接运行,在配置文件zfbinfo.properties中改为自己支付宝的信息 # 支付宝网关名.partner ...
- 微信二维码支付快速入门
目录 一.二维码生成插件qrious 二.HttpClient 三.微信扫码支付 1.申请步骤 2.开发文档 四.入门Demo 1.工程搭建 2.myStudy-pay-interface 3.myS ...
- Opencv4.5.1 微信二维码识别功能 QRCode 编译与使用 C++
日常生活中手机摄像头最常用的功能可能就是扫码了,而且大部分使用微信扫码,微信扫码的功能的确很强大,精度高.速度快.微信扫码近来加入了opencv开源项目了.现特地进行了尝试,并记录了整个过程,以上动图 ...
- 关于前端调用微信二维码支付,二维码无法显示的问题
昨天测试提交了一个bug,说是公司网站调用微信支付时无法显示微信二维码,于是去测试环境测试了一下,发现果然有问题: 此时后台日志打印了如下信息,微信接口返回的错误提示是:"invalid s ...
- springboot整合微信二维码支付
微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/api.shtml 下图是微信支付的一个流程图: 我们需要做的是: 1.调用 ...
- 微信新增刷卡功能 微信二维码支付回归?
苹果的新品发布会在给手机厂商的压力的同时,apple pay的发布给移动支付承销商敲响了警钟,虽然apple-pay还没正式登陆国内,但已经有开发者在ios8代码中发现"入侵"的倾 ...
- C# 微信支付宝 Winform 开发支付宝微信二维码 付款功能(扫码付,条码付,退款、查询、撤销)
更具金额生成相对应的二维码 , 成品 ,DEMO,与实际环境! 演示视频地址:https://shunnet.top/rqIN3a 访问密码:payshun 个人网站首页地址:https:// ...
最新文章
- OSChina 周四乱弹 —— 春天在哪里,春天在哪里?
- python类属性初始化_Python:如何模拟类属性初始化函数
- linux通过光盘安装命令包,RHEL5通过光盘配置本地yum仓库及命令详解
- C语言:判断m是否为素数
- 10.Doctrine2 (2)
- Sql Server 2008完全卸载方法(其他版本类似)
- EXCEL 求解线性规划问题
- 20145322何志威 Exp8 Web基础
- 小小白的Android入门之计算器学习
- 运营管理模型对计算机软件,生产与运作管理
- win11_中文包/中文输入法(微软拼音)设置/键盘/输入法移除win10启用单词输入法/基于英语语言包的美式键/半角切换设置开关
- Coursera上Python课程(公开课)汇总
- SimpleITK笔记本中ITK细分(Segmentation)介绍
- BIM技术越发成熟,项目利润从哪来?
- 在字符串两侧填充指定字符ljust()与rjust()方法
- [论文阅读]Using the Output Embedding to Improve Language Models
- 抖音私信引流话术,抖音私信引流技术
- 《版式设计——日本平面设计师参考手册》目录—导读
- ppt模板如何制作出科技感?
- [大数据] 搜索日志数据采集系统 flume+hbase+kafka架构 (数据搜狗实验室)
热门文章
- 链接:https://pan.baidu.com/s/1joRvLQ7nbti0Wp4t2CkX5w 提取码:ZMTD
- 蚁群算法及蚂蚁系统的原理(js实现版)
- 短视频平台-小说推文(最右)推广任务详情
- 计算机老师新年贺卡祝福语,老师新年贺卡祝福语
- Java 二十三种设计模式
- 一秒钟快速在PPT里插入100张图片
- 印度内阁小组讨论华为投资 通信部表示支持
- 程序员面试金典-刷题笔记
- MacBook Pro出现kernel_task占用CPU非常高问题
- java配置jdk和jre_为什么要配置java环境变量?JDK和JRE的区别在哪里?