小程序支付获取openid
<h1>小程序获取openid(商户自有小程序)</h1>
<p>接⼊步骤说明:</p>
<ol>
<li>通过授权获取⽤户 open_id
a. ⼩程序端调⽤ wx.login(Object object)接⼝ [获取登录凭证(code)](<a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html">https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html</a> "获取登录凭证(code)")</li>
</ol>
<p>示例代码如下:</p>
<pre><code>wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://example.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})</code></pre>
<p>b. 商户端使⽤前⼀步获取的code 换取 open_id ,后台请求以下链接 [获取openID](<a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html">https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html</a> "获取openID");</p>
<p>示例代码如下:</p>
<pre><code>/*GET https://api.weixin.qq.com/sns/jscode2session?
appid=APPID&amp;secret=SECRET&amp;js_code=JSCODE&amp;grant_type=authorization_code*/
url = 'https://api.weixin.qq.com/sns/jscode2session'
params = {
'appid': app_id,
'secret': 'wx_secret',
'js_code': wx_code,
'grant_type': 'authorization_code',
}
resp = requests.get(url, params, timeout=15)
result_dict = json.loads(resp.text)
openid=result_dict.get('openid')
</code></pre>
<h1>小程序获取openid(通过服务商获取)</h1>
<p><strong>接口地址</strong></p>
<p><code>正式</code>
<code>https://cpay.xiangma365.com/openpay/jsapi/getMiniOpenId</code></p>
<p><strong>请求方式</strong></p>
<p><code>POST</code> <code>GET</code></p>
<p><strong>请求头部</strong></p>
<p><code>Content-Type:application/json</code></p>
<p><strong>请求参数</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">约束</th>
<th style="text-align: left;">描述</th>
<th style="text-align: left;">示例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">code</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">M</td>
<td style="text-align: left;">小程序登陆口登录凭证</td>
<td style="text-align: left;">0a1OrDFa1X1RwF0GtsFa1RuYH04OrDFt 参照[微信文档](<a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html">https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html</a> "微信文档")</td>
</tr>
<tr>
<td style="text-align: left;">mch_no</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">M</td>
<td style="text-align: left;">商户号,入网后可获取</td>
<td style="text-align: left;">Y52212200002</td>
</tr>
</tbody>
</table>
<p><strong>请求示例(获取code)</strong></p>
<pre><code>wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://example.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})</code></pre>
<p>示例参照:<a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html">https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html</a></p>
<p><strong>请求示例(通过code+mcho_no换取openid)</strong></p>
<pre><code>wx.login({
provider: &quot;weixin&quot;,
success: res =&gt; {
console.log('code=====',res.code);
wx.request({
url: 'https://cpay.xiangma365.com/openpay/jsapi/getminiopenid',
data:{
'code':res.code,
'mch_no':'852306190005'
},
method:'POST',
header: {
'content-type': 'application/json'
},
success: function (result) {
console.log(result)
if(result.statusCode === 200) {
console.log('openid=======',result.data.data.openid);
// uni.setStorageSync('openid', result.data.openid);
// uni.setStorageSync('session_key', result.data.session_key);
}
}
})
}
}) </code></pre>
<p><strong>响应参数</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">必填</th>
<th style="text-align: left;">描述</th>
<th style="text-align: left;">示例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">code</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">M</td>
<td style="text-align: left;">状态码</td>
<td style="text-align: left;">200</td>
</tr>
<tr>
<td style="text-align: left;">data</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">M</td>
<td style="text-align: left;">openid信息</td>
<td style="text-align: left;">{openid: "oyf3m5olbjj2Lh20BsAUZrl6hoBk", session_key: "IVuhirQYqOQbG6cAS+1UJA=="}</td>
</tr>
<tr>
<td style="text-align: left;">message</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">M</td>
<td style="text-align: left;">提示信息</td>
<td style="text-align: left;">操作成功</td>
</tr>
</tbody>
</table>