YClimb / wxpay-sdk

最新最全微信支付集成SDK,一行代码调用微信支付,包含基础支付功能(网页授权、各种签名、统一下单、退款、对账单、用户信息获取)、验收用例指引(沙箱支付、支付验收、免充值产品开通)、商户平台(现金红包、企业付款到用户、代金券或立减优惠)、公众平台(微信卡券、社交立减金活动)、小程序(生成永久二维码、发送模版消息)等等更多丰富接口注释和例子。

Home Page:https://github.com/YClimb/wxpay-gitbook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

微信支付 Java SDK

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.WXPaycom.weixin.pay.util.WXUtils类下,此项目包含的微信支付功能主要分为以下几个部分,这里列举一些主要功能,具体的详细功能查询作者gitbook或者公众号查看。

1. 基础支付功能

com.weixin.pay.WXPay

方法名 说明
microPay 刷卡支付
unifiedOrder 统一下单
chooseWXPayMap 微信支付二次签名
orderQuery 查询订单
reverse 撤销订单
closeOrder 关闭订单
refund 申请退款
refundQuery 查询退款
downloadBill 下载对账单
report 交易保障
shortUrl 转换短链接
authCodeToOpenid 授权码查询openid

2. 验收用例

支付验收指引:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1

controller.TestWXPay

方法名 说明
unifiedOrder 统一下单
orderQuery 查询订单
reverse 撤销订单
closeOrder 关闭订单
refund 申请退款
refundQuery 查询退款

3. 商户平台-现金红包

com.weixin.pay.WXPay

方法名 说明
sendRedPack 企业向指定微信用户的openid发放指定金额红包
getRedPackInfo 查询红包记录

4. 商户平台-代金券或立减优惠

com.weixin.pay.WXPay

方法名 说明
sendCoupon 发放代金券
queryCouponsInfo 查询代金券信息
queryCouponStock 查询代金券批次

5. 公众平台-微信卡券

com.weixin.pay.util.WXUtils

方法名 说明
getAccessToken 获取微信全局accessToken
getJsapiAccessTokenByCode 网页授权获取用户信息时用于获取access_token以及openid
getJsapiUserinfo 通过access_token和openid请求获取用户信息
getWxCardApiTicket 获取卡券 api_ticket 的 api
getWxApiTicket 获取卡券 api_ticket 的 api

6. 公众平台-社交立减金活动

com.weixin.pay.util.WXUtils

方法名 说明
getCardList 根据代金券批次ID得到组合的cardList
createCardActivity 创建支付后领取立减金活动接口

7. 小程序

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>,详细信息见实体类,文档会实时更新,尽情期待!!!

关注作者微信公众号,点击下方讨论群,扫码即可加入微信支付讨论群与小伙伴一起探讨哦~

关注我的公众号


License

BSD

About

最新最全微信支付集成SDK,一行代码调用微信支付,包含基础支付功能(网页授权、各种签名、统一下单、退款、对账单、用户信息获取)、验收用例指引(沙箱支付、支付验收、免充值产品开通)、商户平台(现金红包、企业付款到用户、代金券或立减优惠)、公众平台(微信卡券、社交立减金活动)、小程序(生成永久二维码、发送模版消息)等等更多丰富接口注释和例子。

https://github.com/YClimb/wxpay-gitbook

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Java 100.0%