Files
payment-spring-boot/apidocs/cn/felord/payment/wechat/v3/SignatureProvider.html
2022-06-13 09:14:07 +08:00

672 lines
35 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="zh">
<head>
<!-- Generated by javadoc (1.8.0_282) on Mon Jun 13 09:10:43 CST 2022 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SignatureProvider (payment-spring-boot-autoconfigure 1.0.13.RELEASE API)</title>
<meta name="date" content="2022-06-13">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SignatureProvider (payment-spring-boot-autoconfigure 1.0.13.RELEASE API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","所有方法"],1:["t1","静态方法"],2:["t2","实例方法"],8:["t4","具体方法"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="导航">
<li><a href="../../../../../overview-summary.html">概览</a></li>
<li><a href="package-summary.html">程序包</a></li>
<li class="navBarCell1Rev"></li>
<li><a href="class-use/SignatureProvider.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../../../../deprecated-list.html">已过时</a></li>
<li><a href="../../../../../index-all.html">索引</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../cn/felord/payment/wechat/v3/KeyPairFactory.html" title="cn.felord.payment.wechat.v3中的类"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../../cn/felord/payment/wechat/v3/WechatApiProvider.html" title="cn.felord.payment.wechat.v3中的类"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?cn/felord/payment/wechat/v3/SignatureProvider.html" target="_top">框架</a></li>
<li><a href="SignatureProvider.html" target="_top">无框架</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">所有类</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">方法</a></li>
</ul>
<ul class="subNavList">
<li>详细资料:&nbsp;</li>
<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">方法</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">cn.felord.payment.wechat.v3</div>
<h2 title="类 SignatureProvider" class="title">类 SignatureProvider</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>cn.felord.payment.wechat.v3.SignatureProvider</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">SignatureProvider</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">Object</a></pre>
<div class="block">签名 加签 验签
<p>
我方请求微信服务器时需要根据我方的API证书对参数进行加签微信服务器会根据我方签名验签以确定请求来自我方服务器
<p>
然后微信服务器响应我方请求并在响应报文中使用【微信平台证书】加签 我方需要根据规则验签是否响应来自微信支付服务器
<p>
其中【微信平台证书】定期会进行更新,不受我方管控,我方需要适当的时候获取最新的证书列表。</div>
<dl>
<dt><span class="simpleTagLabel">从以下版本开始:</span></dt>
<dd>1.0.0.RELEASE</dd>
<dt><span class="simpleTagLabel">作者:</span></dt>
<dd>felord.cn</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>字段概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="字段概要表, 列表字段和解释">
<caption><span>字段</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">限定符和类型</th>
<th class="colLast" scope="col">字段和说明</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#BC_PROVIDER">BC_PROVIDER</a></span></code>
<div class="block">加密算法提供方 - BouncyCastle</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="java.util中的类或接口">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>,<a href="../../../../../cn/felord/payment/wechat/v3/X509WechatCertificateInfo.html" title="cn.felord.payment.wechat.v3中的类">X509WechatCertificateInfo</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#CERTIFICATE_MAP">CERTIFICATE_MAP</a></span></code>
<div class="block">微信平台证书容器 key = 序列号 value = 证书对象</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private org.springframework.util.IdGenerator</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#nonceStrGenerator">nonceStrGenerator</a></span></code>
<div class="block">The constant ID_GENERATOR.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private org.springframework.web.client.RestOperations</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#restOperations">restOperations</a></span></code>
<div class="block">The Rest operations.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#SCHEMA">SCHEMA</a></span></code>
<div class="block">The constant SCHEMA.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#TOKEN_PATTERN">TOKEN_PATTERN</a></span></code>
<div class="block">The constant TOKEN_PATTERN.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../cn/felord/payment/wechat/v3/WechatMetaContainer.html" title="cn.felord.payment.wechat.v3中的类">WechatMetaContainer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#wechatMetaContainer">wechatMetaContainer</a></span></code>
<div class="block">The Wechat meta container.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>构造器概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="构造器概要表, 列表构造器和解释">
<caption><span>构造器</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">构造器和说明</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#SignatureProvider-cn.felord.payment.wechat.v3.WechatMetaContainer-">SignatureProvider</a></span>(<a href="../../../../../cn/felord/payment/wechat/v3/WechatMetaContainer.html" title="cn.felord.payment.wechat.v3中的类">WechatMetaContainer</a>&nbsp;wechatMetaContainer)</code>
<div class="block">Instantiates a new Signature provider.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>方法概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">静态方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">具体方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">限定符和类型</th>
<th class="colLast" scope="col">方法和说明</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#createSign-boolean-java.lang.String...-">createSign</a></span>(boolean&nbsp;newLine,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>...&nbsp;components)</code>
<div class="block">请求时设置签名 组件</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#decryptResponseBody-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">decryptResponseBody</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;associatedData,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;nonce,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;ciphertext)</code>
<div class="block">解密响应体.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#doRequestSign-java.security.PrivateKey-java.lang.String...-">doRequestSign</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivateKey.html?is-external=true" title="java.security中的类或接口">PrivateKey</a>&nbsp;privateKey,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>...&nbsp;orderedComponents)</code>
<div class="block">Do request sign.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#encryptRequestMessage-java.lang.String-java.security.cert.Certificate-">encryptRequestMessage</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;message,
<a href="https://docs.oracle.com/javase/8/docs/api/java/security/cert/Certificate.html?is-external=true" title="java.security.cert中的类或接口">Certificate</a>&nbsp;certificate)</code>
<div class="block">对请求敏感字段进行加密</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../cn/felord/payment/wechat/v3/X509WechatCertificateInfo.html" title="cn.felord.payment.wechat.v3中的类">X509WechatCertificateInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#getCertificate-java.lang.String-">getCertificate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId)</code>
<div class="block">Get certificate x 509 wechat certificate info.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>org.springframework.util.IdGenerator</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#nonceStrGenerator--">nonceStrGenerator</a></span>()</code>
<div class="block">Nonce generator.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#refreshCertificate-java.lang.String-">refreshCertificate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId)</code>
<div class="block">当我方服务器不存在平台证书或者证书同当前响应报文中的证书序列号不一致时应当刷新 调用/v3/certificates</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#requestSign-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">requestSign</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;method,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;canonicalUrl,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;body)</code>
<div class="block">我方请求前用 SHA256withRSA 加签使用API证书.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#responseSignVerify-cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams-">responseSignVerify</a></span>(<a href="../../../../../cn/felord/payment/wechat/v3/model/ResponseSignVerifyParams.html" title="cn.felord.payment.wechat.v3.model中的类">ResponseSignVerifyParams</a>&nbsp;params)</code>
<div class="block">我方对响应验签,和应答签名做比较,使用微信平台证书.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../cn/felord/payment/wechat/v3/WechatMetaContainer.html" title="cn.felord.payment.wechat.v3中的类">WechatMetaContainer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../cn/felord/payment/wechat/v3/SignatureProvider.html#wechatMetaContainer--">wechatMetaContainer</a></span>()</code>
<div class="block">Wechat meta container.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="java.lang中的类或接口">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="java.lang中的类或接口">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="java.lang中的类或接口">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="java.lang中的类或接口">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="java.lang中的类或接口">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="java.lang中的类或接口">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="java.lang中的类或接口">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="java.lang中的类或接口">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="java.lang中的类或接口">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="java.lang中的类或接口">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="java.lang中的类或接口">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>字段详细资料</h3>
<a name="nonceStrGenerator">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nonceStrGenerator</h4>
<pre>private final&nbsp;org.springframework.util.IdGenerator nonceStrGenerator</pre>
<div class="block">The constant ID_GENERATOR.</div>
</li>
</ul>
<a name="SCHEMA">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SCHEMA</h4>
<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a> SCHEMA</pre>
<div class="block">The constant SCHEMA.</div>
<dl>
<dt><span class="seeLabel">另请参阅:</span></dt>
<dd><a href="../../../../../constant-values.html#cn.felord.payment.wechat.v3.SignatureProvider.SCHEMA">常量字段值</a></dd>
</dl>
</li>
</ul>
<a name="TOKEN_PATTERN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TOKEN_PATTERN</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a> TOKEN_PATTERN</pre>
<div class="block">The constant TOKEN_PATTERN.</div>
<dl>
<dt><span class="seeLabel">另请参阅:</span></dt>
<dd><a href="../../../../../constant-values.html#cn.felord.payment.wechat.v3.SignatureProvider.TOKEN_PATTERN">常量字段值</a></dd>
</dl>
</li>
</ul>
<a name="CERTIFICATE_MAP">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CERTIFICATE_MAP</h4>
<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="java.util中的类或接口">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>,<a href="../../../../../cn/felord/payment/wechat/v3/X509WechatCertificateInfo.html" title="cn.felord.payment.wechat.v3中的类">X509WechatCertificateInfo</a>&gt; CERTIFICATE_MAP</pre>
<div class="block">微信平台证书容器 key = 序列号 value = 证书对象</div>
</li>
</ul>
<a name="BC_PROVIDER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>BC_PROVIDER</h4>
<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a> BC_PROVIDER</pre>
<div class="block">加密算法提供方 - BouncyCastle</div>
<dl>
<dt><span class="seeLabel">另请参阅:</span></dt>
<dd><a href="../../../../../constant-values.html#cn.felord.payment.wechat.v3.SignatureProvider.BC_PROVIDER">常量字段值</a></dd>
</dl>
</li>
</ul>
<a name="restOperations">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>restOperations</h4>
<pre>private final&nbsp;org.springframework.web.client.RestOperations restOperations</pre>
<div class="block">The Rest operations.</div>
</li>
</ul>
<a name="wechatMetaContainer">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>wechatMetaContainer</h4>
<pre>private final&nbsp;<a href="../../../../../cn/felord/payment/wechat/v3/WechatMetaContainer.html" title="cn.felord.payment.wechat.v3中的类">WechatMetaContainer</a> wechatMetaContainer</pre>
<div class="block">The Wechat meta container.</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>构造器详细资料</h3>
<a name="SignatureProvider-cn.felord.payment.wechat.v3.WechatMetaContainer-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SignatureProvider</h4>
<pre>public&nbsp;SignatureProvider(<a href="../../../../../cn/felord/payment/wechat/v3/WechatMetaContainer.html" title="cn.felord.payment.wechat.v3中的类">WechatMetaContainer</a>&nbsp;wechatMetaContainer)</pre>
<div class="block">Instantiates a new Signature provider.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>wechatMetaContainer</code> - the wechat meta container</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>方法详细资料</h3>
<a name="requestSign-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requestSign</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;requestSign(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;method,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;canonicalUrl,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;body)</pre>
<div class="block">我方请求前用 SHA256withRSA 加签使用API证书.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>tenantId</code> - the properties key</dd>
<dd><code>method</code> - the method</dd>
<dd><code>canonicalUrl</code> - the canonical url</dd>
<dd><code>body</code> - the body</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the string</dd>
</dl>
</li>
</ul>
<a name="doRequestSign-java.security.PrivateKey-java.lang.String...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doRequestSign</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;doRequestSign(<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivateKey.html?is-external=true" title="java.security中的类或接口">PrivateKey</a>&nbsp;privateKey,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>...&nbsp;orderedComponents)</pre>
<div class="block">Do request sign.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>privateKey</code> - the private key</dd>
<dd><code>orderedComponents</code> - the orderedComponents</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the string</dd>
<dt><span class="simpleTagLabel">从以下版本开始:</span></dt>
<dd>1.0.4.RELEASE</dd>
</dl>
</li>
</ul>
<a name="responseSignVerify-cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>responseSignVerify</h4>
<pre>public&nbsp;boolean&nbsp;responseSignVerify(<a href="../../../../../cn/felord/payment/wechat/v3/model/ResponseSignVerifyParams.html" title="cn.felord.payment.wechat.v3.model中的类">ResponseSignVerifyParams</a>&nbsp;params)</pre>
<div class="block">我方对响应验签,和应答签名做比较,使用微信平台证书.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>params</code> - the params</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the boolean</dd>
</dl>
</li>
</ul>
<a name="refreshCertificate-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>refreshCertificate</h4>
<pre>private&nbsp;void&nbsp;refreshCertificate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId)</pre>
<div class="block">当我方服务器不存在平台证书或者证书同当前响应报文中的证书序列号不一致时应当刷新 调用/v3/certificates</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>tenantId</code> - tenantId</dd>
</dl>
</li>
</ul>
<a name="decryptResponseBody-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decryptResponseBody</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;decryptResponseBody(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;associatedData,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;nonce,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;ciphertext)</pre>
<div class="block">解密响应体.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>tenantId</code> - the properties key</dd>
<dd><code>associatedData</code> - the associated data</dd>
<dd><code>nonce</code> - the nonce</dd>
<dd><code>ciphertext</code> - the ciphertext</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the string</dd>
</dl>
</li>
</ul>
<a name="encryptRequestMessage-java.lang.String-java.security.cert.Certificate-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encryptRequestMessage</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;encryptRequestMessage(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;message,
<a href="https://docs.oracle.com/javase/8/docs/api/java/security/cert/Certificate.html?is-external=true" title="java.security.cert中的类或接口">Certificate</a>&nbsp;certificate)</pre>
<div class="block">对请求敏感字段进行加密</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>message</code> - the message</dd>
<dd><code>certificate</code> - the certificate</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>encrypt message</dd>
<dt><span class="simpleTagLabel">从以下版本开始:</span></dt>
<dd>1.0.6.RELEASE</dd>
</dl>
</li>
</ul>
<a name="getCertificate-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCertificate</h4>
<pre>public&nbsp;<a href="../../../../../cn/felord/payment/wechat/v3/X509WechatCertificateInfo.html" title="cn.felord.payment.wechat.v3中的类">X509WechatCertificateInfo</a>&nbsp;getCertificate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;tenantId)</pre>
<div class="block">Get certificate x 509 wechat certificate info.</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>tenantId</code> - the tenant id</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the x 509 wechat certificate info</dd>
</dl>
</li>
</ul>
<a name="wechatMetaContainer--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wechatMetaContainer</h4>
<pre>public&nbsp;<a href="../../../../../cn/felord/payment/wechat/v3/WechatMetaContainer.html" title="cn.felord.payment.wechat.v3中的类">WechatMetaContainer</a>&nbsp;wechatMetaContainer()</pre>
<div class="block">Wechat meta container.</div>
<dl>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the wechat meta container</dd>
</dl>
</li>
</ul>
<a name="nonceStrGenerator--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nonceStrGenerator</h4>
<pre>public&nbsp;org.springframework.util.IdGenerator&nbsp;nonceStrGenerator()</pre>
<div class="block">Nonce generator.</div>
<dl>
<dt><span class="returnLabel">返回:</span></dt>
<dd>the id generator</dd>
<dt><span class="simpleTagLabel">从以下版本开始:</span></dt>
<dd>1.0.4.RELEASE</dd>
</dl>
</li>
</ul>
<a name="createSign-boolean-java.lang.String...-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>createSign</h4>
<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;createSign(boolean&nbsp;newLine,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>...&nbsp;components)</pre>
<div class="block">请求时设置签名 组件</div>
<dl>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>components</code> - the components</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>string string</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="导航">
<li><a href="../../../../../overview-summary.html">概览</a></li>
<li><a href="package-summary.html">程序包</a></li>
<li class="navBarCell1Rev"></li>
<li><a href="class-use/SignatureProvider.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../../../../deprecated-list.html">已过时</a></li>
<li><a href="../../../../../index-all.html">索引</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../cn/felord/payment/wechat/v3/KeyPairFactory.html" title="cn.felord.payment.wechat.v3中的类"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../../cn/felord/payment/wechat/v3/WechatApiProvider.html" title="cn.felord.payment.wechat.v3中的类"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?cn/felord/payment/wechat/v3/SignatureProvider.html" target="_top">框架</a></li>
<li><a href="SignatureProvider.html" target="_top">无框架</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">所有类</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">方法</a></li>
</ul>
<ul class="subNavList">
<li>详细资料:&nbsp;</li>
<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">方法</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2022. All rights reserved.</small></p>
</body>
</html>