首先定义一下变量用于存储小程序信息
#region 小程序参数及实体类
/*------------------------小程序openid请求地址--------------------------------*/
private string QingQiuOpenidurl= "https://api.weixin.qq.com/sns/jscode2session?appid=";
/*------------------------小程序Appid--------------------------------*/
private string Appid = null;
/*------------------------小程序Secret--------------------------------*/
private string Secret = null;
/*------------------------小程序Openid--------------------------------*/
private string Openid = null;
#endregion
小程序请求这样写的
wx.login({
success(res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://localhost:xxx/api/WXInfo/GetOpenid,
method: 'POST',
data:{code:res.code},
header: {
"Content-Type": "application/json"
},
success: res => {
console.log(res);
},
fail: res => {
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
这里是小程序调用的接口
#region 小程序获取Openid和session_key
/// <summary>
/// 小程序获取Openid和session_key
/// </summary>
/// <returns></returns>
[HttpPost]
public IHttpActionResultGetOpenid([FromBody] object json)
{
dynamic jo = (dynamic)json;
var Code = jo.Code;
if (string.IsNullOrEmpty(Appid))
return Ok("Appid不能为空!");
if (string.IsNullOrEmpty(Secret))
return Ok("Secret不能为空!");
var data =AHttpGet.HttpGet(QingQiuOpenidurl+ Appid + "&secret="+ Secret + "&js_code=" + Code + "&grant_type=authorization_code");
JObject wxjo = (JObject)JsonConvert.DeserializeObject(data);
Openid = wxjo["openid"].ToString();
dynamic xcxInfo = new { openid= wxjo["openid"].ToString(), session_key=wxjo["session_key"].ToString() };
return Ok(xcxInfo);
}
#endregion
下面是上面用到的Get请求
#region 发送Get请求
/// <summary>
/// Get请求
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string HttpGet(string url)
{
WebRequest myWebRequest = WebRequest.Create(url);
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
string responseStr = "";
if (ReceiveStream != null)
{
StreamReader reader = new StreamReader(ReceiveStream, Encoding.UTF8);
responseStr = reader.ReadToEnd();
reader.Close();
}
myWebResponse.Close();
return responseStr;
}
#endregion