JSAPI支付-获取openid
<p><strong>接口描述:</strong> </p>
<ul>
<li>用于服务商模式(服务商公众号)授权获取用户信息,在调用JS支付前,通过此接口获取微信公众号的openid或支付宝服务窗的userid;使用子商户模式(独立公众号)发起支付的商户请通过相应的直连接口获取。</li>
</ul>
<p><strong>接口URL:</strong> </p>
<ul>
<li><code>接口域名+/jsapi/getauth2</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET</li>
</ul>
<p><strong>请求参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: center;">类型</th>
<th style="text-align: center;">必含</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">参数示例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">inst_no</td>
<td style="text-align: center;">string</td>
<td style="text-align: center;">是</td>
<td style="text-align: left;">机构号</td>
<td style="text-align: left;">900024</td>
</tr>
<tr>
<td style="text-align: left;">mch_no</td>
<td style="text-align: center;">string</td>
<td style="text-align: center;">是</td>
<td style="text-align: left;">商户号</td>
<td style="text-align: left;">851811130002</td>
</tr>
<tr>
<td style="text-align: left;">redirect_uri</td>
<td style="text-align: center;">string</td>
<td style="text-align: center;">是</td>
<td style="text-align: left;">回跳地址,需要openid的收银台路径</td>
<td style="text-align: left;"><a href="https://www.baidu.com?aa=123">https://www.baidu.com?aa=123</a></td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: center;">string</td>
<td style="text-align: center;">是</td>
<td style="text-align: left;">签名字符串,具体规则见下文</td>
<td style="text-align: left;">51c7d68424e5492199cf7f4734a2b977</td>
</tr>
</tbody>
</table>
<p><code>备注</code>由于此接口涉及到URL编码,故详细说明接口的请求规则:</p>
<pre><code class="language-java">//1.假设请求接口的参数如下
String redirect_uri = &quot;https://www.baidu.com?aa=123&quot;;
String inst_no = &quot;900001&quot;;
String mch_no = &quot;851902270018&quot;;
String key = ***
//2.按ASCII码拼接请求参数,最后拼接key(机构秘钥),此时redirect_uri不需要encodeURI
String param = &quot;inst_no=900001&amp;mch_no=851902270018&amp;redirect_uri=https://www.baidu.com?aa=123&amp;key=***&quot;;
//3.通过MD5算法生成签名结果
String sign = MD5.sign(param);
//4.对redirect_uri进行encodeURI编码,并将所有请求参数拼接到授权接口地址上,即为请求授权链接
String redirect_uri = &quot;https%3A%2F%2Fwww.baidu.com%3Faa%3D123&quot;;
String auth_url = &quot;https://open.gdyfsk.com/yfpay/jsapi/getauth2?redirect_uri=https%3A%2F%2Fwww.baidu.com%3Faa%3D123&amp;inst_no=900001&amp;mch_no=851902270018&amp;sign=b4e64d988059c1cf6b824a03b4a18b80&quot;;</code></pre>
<p><strong>请求示例:</strong></p>
<pre><code class="language-txt">https://open.gdyfsk.com/yfpay/jsapi/getauth2?redirect_uri=https%3A%2F%2Fwww.baidu.com%3Faa%3D123&amp;inst_no=900001&amp;mch_no=851902270018&amp;sign=b4e64d988059c1cf6b824a03b4a18b80</code></pre>
<p><strong>返回参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: center;">类型</th>
<th style="text-align: center;">必含</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">参数示例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">openid</td>
<td style="text-align: center;">string</td>
<td style="text-align: center;">否</td>
<td style="text-align: left;">微信公众号的openid或支付宝服务窗的userid</td>
<td style="text-align: left;">orxYXv8WjctnRnD_kE2Uk7uqgta0</td>
</tr>
</tbody>
</table>
<p><strong>返回示例:</strong></p>
<pre><code class="language-txt">https://www.baidu.com/?aa=123&amp;openid=orxYXv8WjctnRnD_kE2Uk7uqgta0</code></pre>