///
/// 一键上传小程序代码
///
/// 第三方appid
/// 小程序版本号
/// 商家名称
/// 商家网址
/// 调用签名
/// 时间戳
/// 是否是微信回调
/// 微信回调授权码
/// 微信回调时间搓
///
[HttpGet]
public ActionResult Get(string comAppid = "", string authorizer_appid = "", string user_version = "", string smallAppName = "", string mainSiteUrl = "",string supplierId="", string sign = "", string dateNumber = "", string guid = "", string auth_code = "", int expires_in = 0)
{
string msg = string.Empty;
//0:授权链接,1:上传代码失败,2:配置链接失败,3:提交审核失败,4:提交审核成功,5:已审核成功,string.Empty:错误
string flag = string.Empty;
//从缓存、数据库中获取token
if (!string.IsNullOrEmpty(guid) ||(!string.IsNullOrEmpty(comAppid) && !string.IsNullOrEmpty(authorizer_appid)))
{
Tuple accessToken_msg = sendRequset.GetAKeyTokenEntity(comAppid);
if (accessToken_msg != null && accessToken_msg.Item1 != null)
{
string authorizer_access_token = string.Empty;
string component_access_token = string.Empty;
component_access_token = accessToken_msg.Item1.component_access_token;
authorizer_access_tokenFresh _authToken = sendRequset.GetAuthAccess_Token(authorizer_appid, comAppid, component_access_token);
authorizer_access_token = _authToken.authorizer_access_token;
//判断是否存在token
if (!string.IsNullOrEmpty(authorizer_access_token) && !string.IsNullOrEmpty(component_access_token))
{
//直接上传小程序,并提交审核
Tuple tuplemsg =sendRequset.AkeyUpLoadXCXAudit(comAppid, smallAppName, supplierId, authorizer_access_token, mainSiteUrl, user_version, component_access_token);
flag = tuplemsg.Item1;
msg = tuplemsg.Item2;
}
else
{
//判断是否是扫码微信跳转过来
if (!string.IsNullOrEmpty(guid))
{
//获取微信跳转前存储的信息
string datajson = _Cache.Get(guid + "_comAppid");
if (!string.IsNullOrEmpty(datajson))
{
SessionPreAuthCode sessionPreAuthCode = JsonConvert.DeserializeObject(datajson);
comAppid = sessionPreAuthCode.comAppid;
user_version = sessionPreAuthCode.user_version;
smallAppName = sessionPreAuthCode.smallAppName;
mainSiteUrl = sessionPreAuthCode.mainSiteUrl;
supplierId = sessionPreAuthCode.supplierId;
if (string.IsNullOrEmpty(auth_code)) auth_code = sessionPreAuthCode.auth_code;
//获取第三方token
component_access_tokenEntity component_Access_Token = sendRequset.GetTokenEntity(comAppid);
if (component_Access_Token == null)
{
msg = "获取accessToken异常,请联系管理员查看日志";
}
else
{
//获取经销商信息,这里包括经销商的token
authorization_infoEntity authorization_Info = sendRequset.AuthorizationSend(component_Access_Token.component_access_token, comAppid, auth_code);
if (authorization_Info == null)
{
msg = "获取授权信息失败";
}
else
{
// 将授权信息存入数据库
int count = new DBHelper().WxOpenContextEditOrAdd(authorization_Info, comAppid);
if (count > 0)
{
//将经销商的token存入缓存
_Cache.Set(comAppid + authorization_Info.authorization_info.authorizer_appid + "_AuthToken"
, authorization_Info.authorization_info.authorizer_access_token, TimeSpan.FromSeconds(expires_in));
}
// 获取经销商授权的令牌
var authToken = sendRequset.GetAuthAccess_Token(authorization_Info.authorization_info.authorizer_appid, comAppid, component_Access_Token.component_access_token);
//上传小程序,并提交审核
Tuple tuplemsg= sendRequset.AkeyUpLoadXCXAudit(comAppid, smallAppName, supplierId, authToken.authorizer_access_token, mainSiteUrl, user_version, component_access_token);
flag=tuplemsg.Item1;
msg = tuplemsg.Item2;
}
}
}
else
{
msg = "微信跳转缓存数据错误!";
}
}
else
{
//获取授权链接
bool signErrorFlag = true;
// 获取是否需要验签
if (GetConfigJson.GetIsDecode())
{
// 获取私钥
string temp = GetConfigJson.GetSecretKey() + dateNumber + "&" + comAppid + GetConfigJson.GetSecretKey();
string aTemp = new Helper().Md5(temp);
if (aTemp != sign)
{
signErrorFlag = false;
msg = "签名错误";
}
}
if (signErrorFlag)
{
if (!string.IsNullOrEmpty(comAppid))
{
component_access_tokenEntity component_Access_Token = sendRequset.GetTokenEntity(comAppid);//票据对象
if (component_Access_Token == null)
{
msg = "获取accessToken异常,请联系管理员查看日志";
}
else
{
//获取授权码
pre_auth_codeEntity pre_Auth_Code = sendRequset.GetPreAuthCode(component_Access_Token, comAppid);
if (pre_Auth_Code == null)
{
msg = "获取accessToken异常,请联系管理员查看日志";
}
else
{
var appid = GetConfigJson.GetAppid();
SessionPreAuthCode sessionPreAuthCode = new SessionPreAuthCode()
{
comAppid = comAppid,
user_version = string.IsNullOrEmpty(user_version) ? "1.0" : user_version,
smallAppName = smallAppName,
supplierId= supplierId,
mainSiteUrl = mainSiteUrl,
auth_code = pre_Auth_Code.pre_auth_code
};
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
guid = Guid.NewGuid().ToString() + Convert.ToInt64(ts.TotalSeconds).ToString();
_Cache.Set(guid + "_comAppid", JsonConvert.SerializeObject(sessionPreAuthCode), TimeSpan.FromSeconds(1800));
string url = "http://***********.**/api/AKeyUploadXCX?guid=" + guid;
msg = new Helper().GetAuthorizaLink(appid, pre_Auth_Code.pre_auth_code, url);
flag = "0";
}
}
}
}
}
}
}
else {
msg = accessToken_msg.Item2;
}
}
return JsonConvert.SerializeObject(new
{
flag = flag,
msg = msg
});
}