微信支付快速入门
微信支付申请(了解)
第一步:注册公众号(类型须为:服务号)
请根据营业执照类型选择以下主体注册:个体工商户| 企业/公司| 政府| 媒体| 其他类型。
第二步:认证公众号
公众号认证后才可申请微信支付,认证费:300元/次。
第三步:提交资料申请微信支付
登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。
第四步:开户成功,登录商户平台进行验证
资料审核通过后,请登录联系人邮箱查收商户号和密码,并登录商户平台填写财付通备付金打的小额资金数额,完成账户验证。
第五步:在线签署协议
本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。
本课程已经提供好“传智播客”的微信支付账号,学员无需申请。
完成上述步骤,你可以得到调用API用到的账号和密钥
appid:微信公众账号或开放平台APP的唯一标识 wx8397f8696b538317
mch_id:商户号 1473426802
key:商户密钥 T6m9iK73b0kn9g5v426MKfHQH7X8rKwb
微信支付开发文档与SDK
在线微信支付开发文档:
https://pay.weixin.qq.com/wiki/doc/api/index.html
微信支付接口调用的整体思路:
按API要求组装参数,以XML方式发送(POST)给微信支付接口(URL),微信支付接口也是以XML方式给予响应。程序根据返回的结果(其中包括支付URL)生成二维码或判断订单状态。
我们解压从官网下载的sdk ,安装到本地仓库
com.github.wxpay.sdk.WXPay类下提供了对应的方法:
方法名 | 说明 |
---|---|
microPay | 刷卡支付 |
unifiedOrder | 统一下单 |
orderQuery | 查询订单 |
reverse | 撤销订单 |
closeOrder | 关闭订单 |
refund | 申请退款 |
refundQuery | 查询退款 |
downloadBill | 下载对账单 |
report | 交易保障 |
shortUrl | 转换短链接 |
authCodeToOpenid | 授权码查询openid |
统一下单API
(1)新建工程,引入微信支付Api
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>3.0.9</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.24</version>
</dependency>
(2)创建com.github.wxpay.sdk包,包下创建MyConfig类 ,继承自抽象类WXPayConfig
public class MyConfig extends WXPayConfig { String getAppID() { return "wx8397f8696b538317"; } String getMchID() { return "1473426802"; } String getKey() { return "T6m9iK73b0kn9g5v426MKfHQH7X8rKwb"; } InputStream getCertStream() { return null; } IWXPayDomain getWXPayDomain() { return new IWXPayDomain() { public void report(String domain, long elapsedTimeMillis, Exception ex) { } public DomainInfo getDomain(WXPayConfig config) { return new DomainInfo("api.mch.weixin.qq.com",true); } }; } }
(3)创建测试类,编写代码
MyConfig config=new MyConfig(); WXPay wxPay=new WXPay( config ); Map<String,String> map=new HashMap(); map.put("body","畅购");//商品描述 map.put("out_trade_no","55555211");//订单号 map.put("total_fee","1");//金额 map.put("spbill_create_ip","127.0.0.1");//终端IP map.put("notify_url","http://www.baidu.com");//回调地址 map.put("trade_type","NATIVE");//交易类型 Map<String, String> result = wxPay.unifiedOrder( map ); System.out.println(result);
执行后返回结果
{nonce_str=fvMGIlLauUPNCtws, code_url=weixin://wxpay/bizpayurl?pr=I5sd2rc, appid=wx8397f8696b538317, sign=48B2938F70EDADC9CC235249BC085FD1D83456F67C46601FFD23B5AFBDA502D0, trade_type=NATIVE, return_msg=OK, result_code=SUCCESS, mch_id=1473426802, return_code=SUCCESS, prepay_id=wx17193859685440d561c4cef01259098400}
其中的code_url就是我们的支付URl ,我们可以根据这个URl 生成支付二维码
二维码JS插件- QRcode.js
QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。支持该库的浏览器有:IE6~10, Chrome, Firefox, Safari, Opera, Mobile Safari, Android, Windows Mobile, 等
我们看一下静态原型wxpay.html中的代码,显示二维码的地方放置<div id='qrcode'></div>
,然后编写脚本
<script src="js/plugins/qrcode.min.js" ></script> <script type="text/javascript"> let qrcode = new QRCode(document.getElementById("qrcode"), { width : 200, height : 200 }); qrcode.makeCode("weixin://wxpay/bizpayurl?pr=Y3hDTZy"); </script>