欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

支付寶小程序開(kāi)發(fā)系列一: 獲取用戶(hù)手機(jī)號(hào)(.net) - 新聞資訊 - 云南小程序開(kāi)發(fā)|云南軟件開(kāi)發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開(kāi)發(fā)/軟件開(kāi)發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁(yè) » 新聞資訊 » 小程序相關(guān) >

支付寶小程序開(kāi)發(fā)系列一: 獲取用戶(hù)手機(jī)號(hào)(.net)

發(fā)表時(shí)間:2020-9-21

發(fā)布人:葵宇科技

瀏覽次數(shù):118

第一步:開(kāi)放平臺(tái)上添加 獲取會(huì)員手機(jī)號(hào)的功能包(需要主賬號(hào)簽約,子賬號(hào)不可見(jiàn))

https://open.alipay.com/operation/mini/ops/mini-summary

第二步:添加主動(dòng)觸發(fā)按鈕

getPhoneNumber:授權(quán)成功后的回調(diào)

onAuthError:拒絕授權(quán)后的回調(diào)

<button open-type="getAuthorize"> my.getPhoneNumber({
        success: (res) => {
          let encryptedData = JSON.parse(res.response).response;
          //userObject.phoneInfo = res.response;
          console.log(res.response);
          //手機(jī)號(hào)解密請(qǐng)求
          phoneAuth(res.response);
        },
        fail: (res) => {
          console.log(res);
        }
      });
function phoneAuth(e){
//后臺(tái)請(qǐng)求操作 主要是發(fā)送加密數(shù)據(jù)
}

第四步:后臺(tái)解析(低版本SDK:https://download.csdn.net/download/qq_36894527/12875709)

//應(yīng)用公鑰
        public static string PublicKey = "";
        //aes密鑰
        public static string AESKey = "";

        /// <summary>
        /// 手機(jī)號(hào)解密
        /// </summary>
        /// <param name="openapiResult"></param>
        /// <returns></returns>
        public static string Decypt(string openapiResult, string publicKey, string aesKey)
        {
//openapiResult= "{\"response\":\"9+asiPElYO6D9jVY21115q6WIe7Lobo0vIbP5D9l0hwmHERiIhu/jsMKoWX4PdJd05BUOLL0xSFazUut+4JH2udCwOaZVJcbT9/sJgMhAavSYGUDyKB3bffXRgDLRKBL+PGcnPD6JjQUgGOM9JPFxOBwmD0U0Ylo1GDagR9pjZjtAyFzAcJYDkGrOKTpsO9nTn2MFHfkUNikX/q1gPOehUiUnvb3ZqcPVs4rEb7M5xpgoBcc/eht+zpMBLFShaBpY3BtQluHxaTeEtT3a66G/SmcoJ0yBCt1z78ZQVy9pmStMgDnmVINArQz/O2XrPUakN3TszH9U1qnoJ5C8LSu/CsS0E8XApSu1iERQjKfJlg=\",\"sign\":\"KyQCYndlwsunFXOivUJGHdg88M4HyxtucizmGarsmvc+uUVOSuQlHhnYa3iKWkVxTv76Y75JJuiZP5wSqnfU0jjln27Xi0BSh2JPTF/4oIBJlrqQxsw9bVkzaGu5bkB+Tw4sZQwO8vgg8Z7f8bu6go/BWAEd5m4ds5haTQ9enH5ZDjb7S08EJbYLe9Nnz/BJbv0M1lbW60nGr5QyDFvmnE91g2U1NhAKaZewjIm/7xsFYlQ7xh68A+fEkr4TIzA7scILGncnmQ+mU3B98I5njiTzhxig+pByCGkY2vT3U6z+4VUFUuB0+bwOBNqYp++bXQs/cAhcv+7FV/yW4Qm+9w==\"}";
                    
            //小程序通過(guò) my.getPhoneNumber 獲取到加密數(shù)據(jù),詳見(jiàn)獲取會(huì)員手機(jī)號(hào)接入文檔
            string res = "";
            JObject jObj = null;
            //1. 獲取驗(yàn)簽和解密所需要的參數(shù)
            try
            {
                jObj = (JObject)JsonConvert.DeserializeObject(openapiResult);
            }
            catch (Exception ex)
            {
                throw new Exception("獲取驗(yàn)簽和解密所需要的參數(shù)失敗", ex);
            }

            string signType;
            if (openapiResult.Contains("sign_type"))
            {
                signType = jObj["sign_type"].ToString();
            }
            else
            {
                signType = "RSA2";
            }

            string charset;
            if (openapiResult.Contains("charset"))
            {
                charset = jObj["charset"].ToString();
            }
            else
            {
                charset = "UTF-8";
            }

            string encryptType;
            if (openapiResult.Contains("encrypt_type"))
            {
                encryptType = jObj["encrypt_type"].ToString();
            }
            else
            {
                encryptType = "AES";
            }

            string sign = jObj["sign"].ToString();
            string content = jObj["response"].ToString();

            //如果密文的
            bool isDataEncrypted = !content.StartsWith("{", StringComparison.Ordinal);
            bool signCheckPass = false;

            //2. 驗(yàn)簽
            string signContent = content;
            //RSA2支付寶公鑰(不是應(yīng)用公鑰),在控制臺(tái)-小程序-開(kāi)發(fā)設(shè)置-開(kāi)發(fā)設(shè)置-接口加簽方式-設(shè)置/查看
            string signVeriKey = publicKey;
            //填小程序設(shè)置的AES密鑰。注意:若AES密鑰中存在反斜杠"\\"會(huì)導(dǎo)致解密報(bào)錯(cuò),需刪除反斜杠或更改沒(méi)有反斜杠的AES密鑰
            string decryptKey = aesKey;
            //如果是加密的報(bào)文則需要在密文的前后添加雙引號(hào)
            if (isDataEncrypted)
            {
                signContent = "\"" + signContent + "\"";
            }
            try
            {
                signCheckPass = AlipaySignature.RSACheckContent(signContent, sign, signVeriKey, charset, signType, false);
                Console.WriteLine("RSA2驗(yàn)簽結(jié)果:" + signCheckPass);
            }
            catch (Exception ex)
            {
                //驗(yàn)簽異常, 日志
                throw new Exception("驗(yàn)簽失敗", ex);
            }
            if (!signCheckPass)
            {
                //驗(yàn)簽不通過(guò)(異?;蛘邎?bào)文被篡改),終止流程(不需要做解密)
                throw new Exception("驗(yàn)簽失敗");
            }

            //3. 解密
            string plainData = null;
            if (isDataEncrypted)
            {
                try
                {

                    plainData = AlipayEncrypt.AesDencrypt(decryptKey, content, charset);
                    Console.WriteLine("AES解密結(jié)果:" + plainData);
                }
                catch (Exception ex)
                {
                    //解密異常, 記錄日志
                    throw new Exception("解密異常", ex);
                }
            }
            else
            {
                plainData = content;
            }
            return plainData;
        }

相關(guān)案例查看更多