可以 等会我写一个教程
dount 多端开发,能做类型APP消息推送通知吗?dount 多端开发,能做类型APP消息推送通知吗? [图片]
2023-08-25https://developers.weixin.qq.com/community/develop/doc/000c0aef6246c0b106303eba461c00?highLine=agreePrivacyAuthorization @那一抹笑😃 穿透阳光 回答:完善一下用户隐私保护协议,然后要添加代码,https://developers.weixin.qq.com/miniprogram/dev/api/open-api/privacy/wx.requirePrivacyAuthorize.html,然后button组件有一个类型,要点击一下这个按钮,就可以使用了[图片]
<button open-type="getPhoneNumber">这个怎么触发授权?我记得公告刚出的时候 当时不是说这个要改为<button open-type="getPhoneNumber|agreePrivacyAuthorization"> 这种吗?但是为什么现在找不到对应文档内容了,而且不加后面的也可以正常的去触发授权,所以agreePrivacyAuthorization到底还加不加呢?
2023-08-24你的问题可能是由于在加密和解密过程中使用的随机生成的初始化向量(IV)或者认证标签(auth tag)不一致导致的。在你的代码中,你在加密和解密的过程中都使用了随机生成的 IV 和 auth tag,这可能会导致在解密过程中无法正确解密数据。 你需要确保在加密和解密过程中使用的 IV 和 auth tag 是一致的。你可以尝试将加密过程中生成的 IV 和 auth tag 保存下来,然后在解密过程中使用同样的 IV 和 auth tag。 另外,你的代码中在解密过程中使用了 base64 解码,但在加密过程中并没有对应的 base64 编码,这可能也会导致解密失败。你需要确保加密和解密过程中的编码和解码操作是一致的。 以下是一个简化的示例,展示了如何在加密和解密过程中使用相同的 IV 和 auth tag: // 加密 $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-gcm')); $tag = ''; $ciphertext = openssl_encrypt($plaintext, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag); // 解密 $decrypted = openssl_decrypt($ciphertext, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag);
服务端api签名指南,PHP版本有人成功过的吗?https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/getting_started/api_signature.htmlhttps://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/getting_started/api_signature.htmlhttps://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/getting_started/api_signature.html 我这里加密后,解密有时候成功,有时候返回false,有人知道怎么回事,问微信官方,官方也是一问三不知,搞了快一周还没解决这个问题。 //服务端api加密 public static function getRequestParam($url, $req) { $key = base64_decode(self::apiAES256['key']); $sn = self::apiAES256['sn']; $appId = self::miniAppID; $time = time(); //16位随机字符 $nonce = rtrim(base64_encode(random_bytes(16)), '='); $nonce = base64_encode(random_bytes(16)); $addReq = ["_n" => $nonce, "_appid" => $appId, "_timestamp" => $time]; $realReq = array_merge($addReq, $req); ksort($realReq); $realReq = json_encode($realReq); //额外参数 $aad = $url . "|" . $appId . "|" . $time . "|" . $sn; //12位随机字符 $iv = random_bytes(12); //var_dump($iv); $cipher = openssl_encrypt($realReq, "aes-256-gcm", $key, 1, $iv, $tag, $aad); echo '<br>---------encrypt paras start-------------<br>'; echo '<pre>'; echo '$realReq:'; var_dump($realReq); echo '$key:'; var_dump($key); echo '$iv:'; var_dump(base64_encode($iv)); echo '$tag:'; var_dump(base64_encode($tag)); echo '$aad:'; var_dump($aad); echo '<br>--------- encrypt paras end-------------<br>'; $iv = base64_encode($iv); $data = base64_encode($cipher); $authTag = base64_encode($tag); $reqData = ["iv" => $iv, "data" => $data, "authtag" => $authTag]; //校验本地加密是否正确 非必须 //$checkParam = self::checkParam($key, $authTag, $iv, $data, $aad); return ['ts' => $time, 'reqData' => json_encode($reqData)]; } //服务端api签名,$newRe参数是经过服务端api加密后的请求参数 public static function sign(array $newRe, $url_path) { $time = $newRe['ts']; $key = self::apiRSA256['private_key']; $url = $url_path; $appId = self::miniAppID; $reqData = $newRe['reqData']; $payload = "$url\n$appId\n$time\n$reqData"; $rsa = new RSA(); $rsa->loadKey($key); $rsa->setHash("sha256"); $rsa->setMGFHash("sha256"); $signature = $rsa->sign($payload); return base64_encode($signature); } //服务端验对api返回的加密的结果进行解密,得到真实返回 public static function jM($ts, $body, $url_path) { echo '<br>---------decrypt paras start-------------<br>'; echo '<pre>'; echo '$ts:'; var_dump($ts); echo '$body:'; var_dump($body); echo '$url_path:'; var_dump($url_path); echo '<br>--------- decrypt paras end-------------<br>'; $url = $url_path; $appId = self::miniAppID;; $sn = self::apiAES256['sn']; $aad = $url . '|' . $appId . '|' . $ts . '|' . $sn; $key = self::apiAES256['key']; $key = base64_decode($key); $iv = base64_decode($body['iv']); $data = $body['data']; // if (strlen($data) % 16) { // $data = str_pad($data,strlen($data) + 16 - strlen($data) % 16, "\0"); // } $data = base64_decode($data); $tag = base64_decode($body['authtag']); //print_r($tag); //print_r($data); $result = openssl_decrypt($data, "aes-256-gcm", $key, 1, $iv, $tag, $aad); var_dump( openssl_error_string()); var_dump($result); if (!$result) { print_r(openssl_error_string()); while ($msg = openssl_error_string()) { echo "<br>ERROR: " . $msg; } } //$result = \Qiniu\json_decode($result,true); return $result; }
2023-08-24代码看看
webview嵌入了一个url,苹果手机点击可以跳转,安卓点击没反应,请问是什么原因?webview嵌入了一个url,苹果手机点击可以跳转,安卓点击没反应,请问是什么原因?
2023-08-24签字即可
个体户流量主结算授权法人也就是自己收款没有公章怎么办?个体户流量主结算授权法人也就是自己收款没有公章怎么办?签字加按手印是否可行 [图片]
2023-08-23async function cgiUploadImg(params) { const formData = new FormData(); formData.append("media", fs.createReadStream(params.filepath), { filename: "image",contentType: 'image/jpeg',}); try { const res = await axios.post( "http://api.weixin.qq.com/cgi-bin/media/upload?type=image", formData, { headers: { ...formData.getHeaders() } } ); console.log("success", res); return res.data; } catch (err) { console.error("error", err); throw err; } }
使用开放服务接口时,上传临时素材,出现文件类型不合法,需要如何解决该问题?代码:[图片] 报错信息 "errcode": 40005, "errmsg": "invalid file type hint: [Imcj40339d106] rid: 64e4d503-53c7ee18-42e49745"
2023-08-22哈哈哈 明年也是 [/狗头/]
历史说是惊人的相似,前年七夕我是单身,去年七夕我是单身,今年七夕还是单身?七夕的美 [图片]
2023-08-22数据有多少?导出json后,直接批量改
云数据库批量update怎么实现?[ {_id: 1, score: 99}, {_id: 2, score: 78}, {_id: 3, score: 60}, ] 我需要更新成如下结果 [ {_id: 1, score: 100}, {_id: 2, score: 80}, {_id: 3, score: 65}, ] 请问db.collection().where().update()应该怎么实现呢
2023-08-22推荐存储用腾讯云对象存储 这样降低费用
企业小程序云开发上线的问题?我们企业用的云开发里面的存储和数据库,基础配额。开发的一个企业小程序用的内容管理CMS,里面有视频图片。问一下微信客服,可以本地部署吗?不本地部署怎么上线发布,按云开发配置发布之后收费情况费用多少,怕企业承担不起啊?????????????????????????、
2023-08-22// 允许从相机和相册扫码 wx.scanCode({ success (res) { console.log(res) } }) // 只允许从相机扫码 wx.scanCode({ onlyFromCamera: true, success (res) { console.log(res) } })
扫码一直不能识别?api能调起摄像头扫码,只能从相册选取,摄像头直接扫一直识别不了
2023-08-22