2018最新最全微信支付集成SDK,一行代码调用微信支付,更多丰富接口注释和例子,包含基础支付功能(网页授权、各种签名、统一下单、退款、对账单、用户信息获取)、验收用例指引(沙箱支付、支付验收、免充值产品开通)、商户平台(现金红包、企业付款到用户、代金券或立减优惠)、公众平台(微信卡券、社交立减金活动)、小程序(生成永久二维码、发送模版消息)等等功能。
本项目依托于 微信支付开发者文档,对文档中的接口进行二次封装,从而为小伙伴们提供一个拿来即用
的支付sdk工具。
相关的sdk文档已经更新,请进入以下地址查看:
文档地址:https://yclimb.gitbook.io/wxpay
gitbook:https://github.com/YClimb/wxpay-gitbook
现在一般是有两种方式,pom 引用 jar 包和直接 copy,详情如下:
1.第一种是直接把当前项目 clone 下来当作一个支付中间件,修改关键的支付参数后 deploy 到个人或者公司的私服中去,其他项目引用 jar 包;
2.第二种是直接把我的 sdk 中 java 下的目录和文件拷贝到你的项目中,放到 java 项目路径下;
释:两种方式各有利弊,jar 方式比较灵活,独立项目,但是修改参数要注意历史版本兼容和及时推包到私服,否则报错;
直接拷贝的方式就比较简单,不独立,修改起来方便,但是如果有多个公众号或者小程序,或者多个项目需要使用,则需要拷贝到多个项目中,麻烦不容易管理,比较复杂;
具体如何选择,看朋友们自身项目决定吧,建议公司级别项目使用第一种,更弹性可扩展。
首先需要简单说明整个 wxpay-sdk
的项目结构,主体结构如下所示:
- wxpay-sdk
- src
- main
- java
- com.weixin.pay
- card // 微信卡券
- constants // 常量文件
- redis // redis工具类
- util // 支付工具类(支付、签名、加密解密)
- xxx class // 支付实体类,基础配置信息
- test
- controller
- xxx class // 测试的相关类
- .gitignore
- pom.xml // 引用包
- README.md
提供微信支付的基础功能,脱胎于微信官方Java-SDK,进行二次封装后,提供一系列的方法;
基础方法主要在 com.weixin.pay.WXPay
、 com.weixin.pay.util.WXUtils
类下,此项目包含的微信支付功能主要分为以下几个部分,这里列举一些主要功能,具体的详细功能查询作者gitbook或者公众号查看。
com.weixin.pay.WXPay
:
方法名 | 说明 |
---|---|
microPay | 刷卡支付 |
unifiedOrder | 统一下单 |
chooseWXPayMap | 微信支付二次签名 |
orderQuery | 查询订单 |
reverse | 撤销订单 |
closeOrder | 关闭订单 |
refund | 申请退款 |
refundQuery | 查询退款 |
downloadBill | 下载对账单 |
report | 交易保障 |
shortUrl | 转换短链接 |
authCodeToOpenid | 授权码查询openid |
支付验收指引:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1
controller.TestWXPay
:
方法名 | 说明 |
---|---|
unifiedOrder | 统一下单 |
orderQuery | 查询订单 |
reverse | 撤销订单 |
closeOrder | 关闭订单 |
refund | 申请退款 |
refundQuery | 查询退款 |
com.weixin.pay.WXPay
:
方法名 | 说明 |
---|---|
sendRedPack | 企业向指定微信用户的openid发放指定金额红包 |
getRedPackInfo | 查询红包记录 |
com.weixin.pay.WXPay
:
方法名 | 说明 |
---|---|
sendCoupon | 发放代金券 |
queryCouponsInfo | 查询代金券信息 |
queryCouponStock | 查询代金券批次 |
com.weixin.pay.util.WXUtils
:
方法名 | 说明 |
---|---|
getAccessToken | 获取微信全局accessToken |
getJsapiAccessTokenByCode | 网页授权获取用户信息时用于获取access_token以及openid |
getJsapiUserinfo | 通过access_token和openid请求获取用户信息 |
getWxCardApiTicket | 获取卡券 api_ticket 的 api |
getWxApiTicket | 获取卡券 api_ticket 的 api |
com.weixin.pay.util.WXUtils
:
方法名 | 说明 |
---|---|
getCardList | 根据代金券批次ID得到组合的cardList |
createCardActivity | 创建支付后领取立减金活动接口 |
com.weixin.pay.util.WXUtils
:
方法名 | 说明 |
---|---|
getMiniBaseUserInfo | 获取小程序静默登录返回信息 |
getWxMiniQRImg | 生成带参数的小程序二维码[] |
具体示例及文章可以查看作者的sdk文档,地址如下:
文档地址:https://yclimb.gitbook.io/wxpay
或者在本文末扫码关注作者微信公众号,加作者微信&加入讨论群与大家一起讨论。
微信公众号网页授权
:
https://yclimb.gitbook.io/wxpay/pay/authorize
统一下单接口
:
public Map<String, String> saveWxPayUnifiedOrder(Payment payment, User user) throws Exception {
if (payment == null) {
return null;
}
if (user == null) {
return null;
}
// 1.调用微信统一下单接口
WXPay wxPay = new WXPay(WXPayConfigImpl.getInstance());
Map<String, String> resultMap = wxPay.unifiedOrder(...);
// 1.1.记录付款流水
...
// 下单失败,进行处理
if (WXPayConstants.FAIL.equals(resultMap.get(WXPayConstants.RETURN_CODE)) ||
WXPayConstants.FAIL.equals(resultMap.get(WXPayConstants.RESULT_CODE))) {
// 处理结果返回,无需继续执行
resultMap.put(WXPayConstants.RESULT_CODE, WXPayConstants.FAIL);
resultMap.put(WXPayConstants.ERR_CODE_DES, resultMap.get(WXPayConstants.RETURN_MSG));
return resultMap;
}
// 1.2.获取prepay_id、nonce_str
String prepay_id = resultMap.get("prepay_id");
String nonce_str = resultMap.get("nonce_str");
// 2.根据微信统一下单接口返回数据组装微信支付参数,返回结果
return wxPay.chooseWXPayMap(prepay_id, nonce_str);
}
支付结果通知
:
https://yclimb.gitbook.io/wxpay/pay/wxnotify
查询订单和关闭订单
:
https://yclimb.gitbook.io/wxpay/pay/orderquery
申请退款、退款回调接口、查询退款
:
https://yclimb.gitbook.io/wxpay/refund/refund
基础调用方式如上所述,统一返回值为 Map<String, String>
,详细信息见实体类,文档会实时更新,尽情期待!!!
BSD