类 WxPayKit

java.lang.Object
com.ijpay.core.kit.WxPayKit

public class WxPayKit extends Object

IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。

不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。

IJPay 交流群: 723992875、864988890

Node.js 版: https://gitee.com/javen205/TNWX

微信支付工具类

作者:
Javen
  • 构造器详细资料

    • WxPayKit

      public WxPayKit()
  • 方法详细资料

    • hmacSha256

      public static String hmacSha256(String data, String key)
    • md5

      public static String md5(String data)
    • decryptData

      public static String decryptData(String base64Data, String key)
      AES 解密
      参数:
      base64Data - 需要解密的数据
      key - 密钥
      返回:
      解密后的数据
    • encryptData

      public static String encryptData(String data, String key)
      AES 加密
      参数:
      data - 需要加密的数据
      key - 密钥
      返回:
      加密后的数据
    • generateStr

      public static String generateStr()
    • verifyNotify

      public static boolean verifyNotify(Map<String,String> params, String partnerKey)
      支付异步通知时校验 sign
      参数:
      params - 参数
      partnerKey - 支付密钥
      返回:
      {boolean}
    • verifyNotify

      public static boolean verifyNotify(Map<String,String> params, String partnerKey, SignType signType, String signKey)
      支付异步通知时校验 sign
      参数:
      params - 参数
      partnerKey - 支付密钥
      signType - 签名类型
      signKey - 签名字符
      返回:
      {boolean}
    • verifyNotify

      public static boolean verifyNotify(Map<String,String> params, String partnerKey, String signKey)
      支付异步通知时校验 sign
      参数:
      params - 参数
      partnerKey - 支付密钥
      signKey - 签名字符
      返回:
      {boolean}
    • verifyNotify

      public static boolean verifyNotify(Map<String,String> params, String partnerKey, SignType signType)
      支付异步通知时校验 sign
      参数:
      params - 参数
      partnerKey - 支付密钥
      signType - SignType
      返回:
      Boolean 验证签名结果
    • createSign

      public static String createSign(Map<String,String> params, String partnerKey, SignType signType)
      生成签名
      参数:
      params - 需要签名的参数
      partnerKey - 密钥
      signType - 签名类型
      返回:
      签名后的数据
    • createSign

      public static String createSign(Map<String,String> params, String partnerKey, SignType signType, String signKey)
      生成签名
      参数:
      params - 需要签名的参数
      partnerKey - 密钥
      signType - 签名类型
      signKey - 签名字符
      返回:
      签名后的数据
    • createSign

      public static String createSign(Map<String,String> params, String secret)
      生成签名
      参数:
      params - 需要签名的参数
      secret - 企业微信支付应用secret
      返回:
      签名后的数据
    • buildSign

      public static Map<String,String> buildSign(Map<String,String> params, String partnerKey, SignType signType)
      构建签名
      参数:
      params - 需要签名的参数
      partnerKey - 密钥
      signType - 签名类型
      返回:
      签名后的 Map
    • buildSign

      public static Map<String,String> buildSign(Map<String,String> params, String partnerKey, SignType signType, boolean haveSignType)
      构建签名
      参数:
      params - 需要签名的参数
      partnerKey - 密钥
      signType - 签名类型
      haveSignType - 签名是否包含 sign_type 字段
      返回:
      签名后的 Map
    • buildSign

      public static Map<String,String> buildSign(Map<String,String> params, String partnerKey, SignType signType, String signKey, String signTypeKey, boolean haveSignType)
      构建签名
      参数:
      params - 需要签名的参数
      partnerKey - 密钥
      signType - 签名类型
      signKey - 签名字符串
      signTypeKey - 签名类型字符串
      haveSignType - 签名是否包含签名类型字符串
      返回:
      签名后的 Map
    • forEachMap

      public static StringBuffer forEachMap(Map<String,String> params, String prefix, String suffix)
    • toXml

      public static String toXml(Map<String,String> params)
      微信下单 map to xml
      参数:
      params - Map 参数
      返回:
      xml 字符串
    • xmlToMap

      public static Map<String,String> xmlToMap(String xmlStr)
      针对支付的 xml,没有嵌套节点的简单处理
      参数:
      xmlStr - xml 字符串
      返回:
      转化后的 Map
    • bizPayUrl

      public static String bizPayUrl(String sign, String appId, String mchId, String productId, String timeStamp, String nonceStr)

      生成二维码链接

      原生支付接口模式一(扫码模式一)

      参数:
      sign - 签名
      appId - 公众账号ID
      mchId - 商户号
      productId - 商品ID
      timeStamp - 时间戳
      nonceStr - 随机字符串
      返回:
      {String}
    • bizPayUrl

      public static String bizPayUrl(String partnerKey, String appId, String mchId, String productId, String timeStamp, String nonceStr, SignType signType)

      生成二维码链接

      原生支付接口模式一(扫码模式一)

      参数:
      partnerKey - 密钥
      appId - 公众账号ID
      mchId - 商户号
      productId - 商品ID
      timeStamp - 时间戳
      nonceStr - 随机字符串
      signType - 签名类型
      返回:
      {String}
    • bizPayUrl

      public static String bizPayUrl(String partnerKey, String appId, String mchId, String productId)

      生成二维码链接

      原生支付接口模式一(扫码模式一)

      参数:
      partnerKey - 密钥
      appId - 公众账号ID
      mchId - 商户号
      productId - 商品ID
      返回:
      {String}
    • replace

      public static String replace(String str, String regex, String... args)
      替换url中的参数
      参数:
      str - 原始字符串
      regex - 表达式
      args - 替换字符串
      返回:
      {String}
    • codeIsOk

      public static boolean codeIsOk(String codeValue)
      判断接口返回的 code
      参数:
      codeValue - code 值
      返回:
      是否是 SUCCESS
    • prepayIdCreateSign

      public static Map<String,String> prepayIdCreateSign(String prepayId, String appId, String partnerKey, SignType signType)

      公众号支付-预付订单再次签名

      注意此处签名方式需与统一下单的签名类型一致

      参数:
      prepayId - 预付订单号
      appId - 应用编号
      partnerKey - API Key
      signType - 签名方式
      返回:
      再次签名后的 Map
    • jsApiCreateSign

      public static Map<String,String> jsApiCreateSign(String appId, String prepayId, String keyPath) throws Exception
      JS 调起支付签名
      参数:
      appId - 应用编号
      prepayId - 预付订单号
      keyPath - key.pem 证书路径
      返回:
      唤起支付需要的参数
      抛出:
      Exception - 错误信息
    • jsApiCreateSign

      public static Map<String,String> jsApiCreateSign(String appId, String prepayId, PrivateKey privateKey) throws Exception
      JS 调起支付签名
      参数:
      appId - 应用编号
      prepayId - 预付订单号
      privateKey - 商户私钥
      返回:
      唤起支付需要的参数
      抛出:
      Exception - 错误信息
    • appPrepayIdCreateSign

      public static Map<String,String> appPrepayIdCreateSign(String appId, String partnerId, String prepayId, String partnerKey, SignType signType)

      APP 支付-预付订单再次签名

      注意此处签名方式需与统一下单的签名类型一致

      参数:
      appId - 应用编号
      partnerId - 商户号
      prepayId - 预付订单号
      partnerKey - API Key
      signType - 签名方式
      返回:
      再次签名后的 Map
    • appCreateSign

      public static Map<String,String> appCreateSign(String appId, String partnerId, String prepayId, String keyPath) throws Exception
      App 调起支付签名
      参数:
      appId - 应用编号
      partnerId - 商户编号
      prepayId - 预付订单号
      keyPath - key.pem 证书路径
      返回:
      唤起支付需要的参数
      抛出:
      Exception - 错误信息
    • appCreateSign

      public static Map<String,String> appCreateSign(String appId, String partnerId, String prepayId, PrivateKey privateKey) throws Exception
      App 调起支付签名
      参数:
      appId - 应用编号
      partnerId - 商户编号
      prepayId - 预付订单号
      privateKey - 商户私钥
      返回:
      唤起支付需要的参数
      抛出:
      Exception - 错误信息
    • miniAppPrepayIdCreateSign

      public static Map<String,String> miniAppPrepayIdCreateSign(String appId, String prepayId, String partnerKey, SignType signType)

      小程序-预付订单再次签名

      注意此处签名方式需与统一下单的签名类型一致

      参数:
      appId - 应用编号
      prepayId - 预付订单号
      partnerKey - API Key
      signType - 签名方式
      返回:
      再次签名后的 Map
    • buildAuthorization

      public static String buildAuthorization(RequestMethodEnum method, String urlSuffix, String mchId, String serialNo, String keyPath, String body, String nonceStr, long timestamp, String authType) throws Exception
      构建 v3 接口所需的 Authorization
      参数:
      method - RequestMethodEnum 请求方法
      urlSuffix - 可通过 WxApiType 来获取,URL挂载参数需要自行拼接
      mchId - 商户Id
      serialNo - 商户 API 证书序列号
      keyPath - key.pem 证书路径
      body - 接口请求参数
      nonceStr - 随机字符库
      timestamp - 时间戳
      authType - 认证类型
      返回:
      String 返回 v3 所需的 Authorization
      抛出:
      Exception - 异常信息
    • buildAuthorization

      public static String buildAuthorization(RequestMethodEnum method, String urlSuffix, String mchId, String serialNo, PrivateKey privateKey, String body, String nonceStr, long timestamp, String authType) throws Exception
      构建 v3 接口所需的 Authorization
      参数:
      method - RequestMethodEnum 请求方法
      urlSuffix - 可通过 WxApiType 来获取,URL挂载参数需要自行拼接
      mchId - 商户Id
      serialNo - 商户 API 证书序列号
      privateKey - 商户私钥
      body - 接口请求参数
      nonceStr - 随机字符库
      timestamp - 时间戳
      authType - 认证类型
      返回:
      String 返回 v3 所需的 Authorization
      抛出:
      Exception - 异常信息
    • buildAuthorization

      public static String buildAuthorization(RequestMethodEnum method, String urlSuffix, String mchId, String serialNo, String keyPath, String body) throws Exception
      构建 v3 接口所需的 Authorization
      参数:
      method - RequestMethodEnum 请求方法
      urlSuffix - 可通过 WxApiType 来获取,URL挂载参数需要自行拼接
      mchId - 商户Id
      serialNo - 商户 API 证书序列号
      keyPath - key.pem 证书路径
      body - 接口请求参数
      返回:
      String 返回 v3 所需的 Authorization
      抛出:
      Exception - 异常信息
    • buildAuthorization

      public static String buildAuthorization(RequestMethodEnum method, String urlSuffix, String mchId, String serialNo, PrivateKey privateKey, String body) throws Exception
      构建 v3 接口所需的 Authorization
      参数:
      method - RequestMethodEnum 请求方法
      urlSuffix - 可通过 WxApiType 来获取,URL挂载参数需要自行拼接
      mchId - 商户Id
      serialNo - 商户 API 证书序列号
      privateKey - key.pem 证书路径
      body - 接口请求参数
      返回:
      String 返回 v3 所需的 Authorization
      抛出:
      Exception - 异常信息
    • verifySignature

      @Deprecated public static boolean verifySignature(Map<String,Object> map, String certPath) throws Exception
      已过时。
      验证签名
      参数:
      map - 接口请求返回的 Map
      certPath - 平台证书路径
      返回:
      签名结果
      抛出:
      Exception - 异常信息
    • verifySignature

      public static boolean verifySignature(IJPayHttpResponse response, String certPath) throws Exception
      验证签名
      参数:
      response - 接口请求返回的 IJPayHttpResponse
      certPath - 平台证书路径
      返回:
      签名结果
      抛出:
      Exception - 异常信息
    • verifySignature

      public static boolean verifySignature(IJPayHttpResponse response, InputStream certInputStream) throws Exception
      验证签名
      参数:
      response - 接口请求返回的 IJPayHttpResponse
      certInputStream - 平台证书
      返回:
      签名结果
      抛出:
      Exception - 异常信息
    • verifySignature

      @Deprecated public static boolean verifySignature(Map<String,Object> map, InputStream certInputStream) throws Exception
      已过时。
      验证签名
      参数:
      map - 接口请求返回的 Map
      certInputStream - 平台证书输入流
      返回:
      签名结果
      抛出:
      Exception - 异常信息
    • verifySignature

      public static boolean verifySignature(String signature, String body, String nonce, String timestamp, String publicKey) throws Exception
      验证签名
      参数:
      signature - 待验证的签名
      body - 应答主体
      nonce - 随机串
      timestamp - 时间戳
      publicKey - 微信支付平台公钥
      返回:
      签名结果
      抛出:
      Exception - 异常信息
    • verifySignature

      public static boolean verifySignature(String signature, String body, String nonce, String timestamp, PublicKey publicKey) throws Exception
      验证签名
      参数:
      signature - 待验证的签名
      body - 应答主体
      nonce - 随机串
      timestamp - 时间戳
      publicKey - PublicKey 微信支付平台公钥
      返回:
      签名结果
      抛出:
      Exception - 异常信息
    • verifySignature

      public static boolean verifySignature(String signatureType, String signature, String body, String nonce, String timestamp, InputStream certInputStream) throws Exception
      验证签名
      参数:
      signatureType - 签名类型
      signature - 待验证的签名
      body - 应答主体
      nonce - 随机串
      timestamp - 时间戳
      certInputStream - 微信支付平台证书输入流
      返回:
      签名结果
      抛出:
      Exception - 异常信息
    • verifyNotify

      public static String verifyNotify(String serialNo, String body, String signature, String nonce, String timestamp, String key, InputStream certInputStream) throws Exception
      v3 支付异步通知验证签名
      参数:
      serialNo - 证书序列号
      body - 异步通知密文
      signature - 签名
      nonce - 随机字符串
      timestamp - 时间戳
      key - api 密钥
      certInputStream - 平台证书
      返回:
      异步通知明文
      抛出:
      Exception - 异常信息
    • verifyNotify

      public static String verifyNotify(String serialNo, String body, String signature, String nonce, String timestamp, String key, String certPath) throws Exception
      v3 支付异步通知验证签名
      参数:
      serialNo - 证书序列号
      body - 异步通知密文
      signature - 签名
      nonce - 随机字符串
      timestamp - 时间戳
      key - api 密钥
      certPath - 平台证书路径
      返回:
      异步通知明文
      抛出:
      Exception - 异常信息