- 关于微信小程序的一次性订阅消息怎么实现在 微信-发现-小程序栏上展示相关小程序的消息 ?
[图片]如图 瑞幸是怎么实现的呢
2024-01-18 - 文档里的右侧导航栏有bug
https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/express/business/intracity_service.html [图片]
2023-07-14 - 这个文档有问题,文档中有一个私钥在api安全配置中找不到,请检查下呢?
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/getting_started/api_signature.html [图片] 这个PrivateKey的值是在哪里获取的?是在以下这个配置页面吗 ?下载私钥下载的结果 一个公钥文件,请检查一下 [图片]
2023-07-12 - php使用同城配送时接入微信api安全出错,报错:934011,怎么解决?
报错信息:string(86) "{"errcode":934011,"errmsg":"request_body is required rid: 64adfa6f-4b7c30ee-0a560363"}" 我的代码:其中app_id local_sn local_key等均已省略 <?php namespace backend\modules\v4\controllers; use backend\components\BaseApiController; use backend\components\helper\WxDelivery; class TestController extends BaseApiController { private $param = [ 'app_id' => '', 'url' => 'https://api.weixin.qq.com/cgi-bin/express/intracity/balancequery', 'local_sn' => '', 'local_key' => '', 'store_id' => '', 'out_store_id' => '', ]; private $key =[ 'sn'=>'', 'key'=>'-----BEGIN RSA PRIVATE KEY----- 省略 -----END RSA PRIVATE KEY-----' ]; public function actionTest() { $param = $this->param; $accessToken = WxDelivery::getAccessToken(); $url = $this->param['url'] . "?access_token=" . $accessToken; $newRe = $this->getRequestParam(); $signature = $this->getSignature($newRe); $headerArray =['Wechatmp-Appid'=>$param['app_id'],'Wechatmp-TimeStamp'=>$newRe['ts'],'Wechatmp-Signature'=>$signature]; $data = WxDelivery::curlPost($url, $newRe['reqData'],$headerArray); var_dump($data); } public function getRequestParam() { $param = $this->param; // $param['local_key'] = base64_decode($param['local_key']); $req = ['store_id' => $param['store_id'], 'out_store_id' => $param['out_store_id']]; $time = time(); //16位随机字符串 $nonce = rtrim(base64_encode(random_bytes(16)), '='); $addReq = ["_n" => $nonce, "_appid" => $param['app_id'], "_timestamp" => $time]; $realReq = array_merge($addReq, $req); $realReq = json_encode($realReq); //额外参数 $aad = $param['url'] . "|" . $param['app_id'] . "|" . $time . "|" . $param['local_sn']; //12位随机字符 $iv = random_bytes(12); $cipher = openssl_encrypt($realReq, "aes-256-gcm", $param['local_key'], OPENSSL_RAW_DATA, $iv, $tag, $aad); $iv = base64_encode($iv); $data = base64_encode($cipher); $authTag = base64_encode($tag); $reqData = ["iv" => $iv, "data" => $data, "authtag" => $authTag]; return ['ts' => $time, 'reqData' => json_encode($reqData)]; } public function getSignature($newRe) { $param = $this->param; $keys = $this->key; $time = $newRe['ts']; $url = $param['url']; $appId = $param['app_id']; $reqData = $newRe['reqData']; $payload = "$url\n$appId\n$time\n$reqData"; $key = openssl_pkey_get_private($keys['key']); $signature = ''; openssl_sign($payload, $signature, $key, OPENSSL_ALGO_SHA256); openssl_free_key($key); return base64_encode($signature); } } <?php namespace backend\components\helper; use common\helpers\MiniHelper; class WxDelivery { /** * Name:获取小程序的token * User: zcw * Date: 2023/7/11 * Time: 9:50 * @return bool|int|mixed|string */ public static function getAccessToken() { $qr = new MiniHelper(); // 获取到的 access_token return $qr->getAccessToken(); } public static function curlPost($url, $field,$header) { $headerArray = array("Content-type:application/json;charset=utf-8", "Accept:application/json"); $headerArray = array_merge($headerArray,$header); $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $field); $str = curl_exec($curl); curl_close($curl); return $str; }
2023-07-12 - 微信api加密解密问题?报错编号934011
场景:使用微信的同城配送时,官方告知这个服务相关接口必须走api加密,由于demo无php案例,所以根据node.js案例自己写了一下,结果是报:934011错误,下面是报错图图片以及我的完整代码,麻烦解答一下: [图片] 代码如下: <?php namespace backend\modules\v4\controllers; use backend\components\BaseApiController; use backend\components\helper\WxDelivery; class TestController extends BaseApiController { private $param = [ 'app_id' => 'wx223dc21d5412f0c0', 'url' => 'https://api.weixin.qq.com/cgi-bin/express/intracity/balancequery', 'local_sn' => '3e2afefa0811f4fab71c753512dd7ef', 'local_key' => 'Y3fb15WAXyxnYJEMpuGy+Xw6ryk0GLNeLel9R25ZyY=', 'store_id' => '', 'out_store_id' => '', ]; private $key =[ 'sn'=>'29866c9f9eac9de2b238ee37da264031', 'key'=>'-----BEGIN RSA PRIVATE KEY----- MIIEpgIBAAKCAQEAyXq3vE7LOiLHyNXR761A2+6fBrqFG1hQXiSrIJ3t9wtHqarI jsoSeW2qxK7C+82goYl5cNe22MgoTCqB6RQJ7LcbFTGTMkXStZHYqTyWLnHwmgp 3D2yW60ZwKuqy3NfoIg91WhOg/VkojAVSjoNOSmG75nmOeSlMPMKnEj1URIu4Lvj ATOVFJFMp3rkOGP8wv7w7UaDm7AVaEIhZtTw5a8cgeOAH01ftroGjQ7SWLTRiU2h rsDb/k07qL60T3CIzJWO1auv9CnygacyziYLY67rEYmadu4TIRn6ddLSqQ+iDWKw 3sta3jSxiJ+fx0OlpjwIG8OOtrtMcJrGW+7p8QIDAQABAoIBAQCPW2D2fL3/jJXI odMxjX3zvzKpz/c7wLfWdJLKr3SNbho8cAcqCj/g5JY4Qfz8u4/KwI2HLAWu86QM YGLq8xARXyOVdTBvnDmVhyfd2W2SkgW/nuwCCGgq8Ny9CaiKAHqPN8F/YitTmzxS ZpIPcYTNIm4fd8qncLfVP2lSUFs0pc8kOjnOI29QhbkqPye+iyPj2Tayo0lmEehx UwxOlmlJTspx11VasHhymjAJcZC2qvd4bkzDWuS73CR5GLF8MGELCOtaSUv15vMu ttfz0tgnI6xY0Nenf+CoeE2CI3wwjGtXXV9ieMELG6R/RHJOVxKeP7yUUDkJrmot RK1pt3wRAoGBAOlKSJe4+WquPLKkmHZj9dh61pBzTtNuZ0gbigSm6lrt308zw6gs FUqwey2/qtcADSxWawdiymiaKDQF0Ddd29cgup1SEk3ES/tEIGvtqhSWUKo/w356 Y2MgfrhrzvfI9Ir5nsPRaEPNhyfJQ70wXva26ZLdn9BLPxDMgQe66UkNAoGBAN0X sRrTgUHpyqnxcl/gSJluXe709qwfldsDH87Isj5ZwFUwHiVmz2If0cqzZHxsfd3H 9Z5je71is5Q563AesTJFKqvXKbp4GSm7nlucgmBcv8X2qj7VpfdMRMUhWOLq/pTm 0i3d9X9oOioPETa0/g1s6EdQWcpBsvfZDTJLMuN1AoGBAJFWewUy8wgYRq5Qxr8z JU1ZseTKQXiNVoDgz0p4ppZBjZatPB7AX/9pFUR6HTfWy14s9H7keA9UwukuGfr0 WWqb9Ebgg5C5U1DVr5EtvoEW6Gg4U1Wvb82ox+mjGIzcQCV4wAVkp51eJO6Pf8kU ooT3jWq28cJ1rnOLxHMJah7dAoGBAJ+CIkJKaazWMWLeUTgepgIcACUQEo8n0oPK Az66yO327q4HIxi0zdXrQv5M4qhp1X0WcHwvJe0CsrC0AMpJOmocQKbtequPTggv 1hYeGmnPQIRga38dwLlkCxF195zvEXD3/pcc1atv1NbXPAIOHmQtOH+K1tz2/VmW /NBWNIapAoGBAKQ7Wg63RZ7mSqKf/LW9siIPVufwoIOhBXthxx2JHVZYk0VOuCpz hLj52lT90tJbd5GwvGWoem+1VWFtn/b+6YYs22lCZ921cSJWP1EDH0KpLicisD87 Qb1UzmUf8CasGh71djmqVBEemCQ3kdUMWWczoQC8op0UG9Jl0xzVNUyn -----END RSA PRIVATE KEY-----' ]; public function actionTest() { $param = $this->param; $accessToken = WxDelivery::getAccessToken(); $url = $this->param['url'] . "?access_token=" . $accessToken; $newRe = $this->getRequestParam(); $signature = $this->getSignature($newRe); $headerArray =['Wechatmp-Appid'=>$param['app_id'],'Wechatmp-TimeStamp'=>$newRe['ts'],'Wechatmp-Signature'=>$signature]; $data = WxDelivery::curlPost($url, $newRe['reqData'],$headerArray); var_dump($data); } public function getRequestParam() { $param = $this->param; // $param['local_key'] = base64_decode($param['local_key']); $req = ['store_id' => $param['store_id'], 'out_store_id' => $param['out_store_id']]; $time = time(); //16位随机字符串 $nonce = rtrim(base64_encode(random_bytes(16)), '='); $addReq = ["_n" => $nonce, "_appid" => $param['app_id'], "_timestamp" => $time]; $realReq = array_merge($addReq, $req); $realReq = json_encode($realReq); //额外参数 $aad = $param['url'] . "|" . $param['app_id'] . "|" . $time . "|" . $param['local_sn']; //12位随机字符 $iv = random_bytes(12); $cipher = openssl_encrypt($realReq, "aes-256-gcm", $param['local_key'], OPENSSL_RAW_DATA, $iv, $tag, $aad); $iv = base64_encode($iv); $data = base64_encode($cipher); $authTag = base64_encode($tag); $reqData = ["iv" => $iv, "data" => $data, "authtag" => $authTag]; return ['ts' => $time, 'reqData' => json_encode($reqData)]; } public function getSignature($newRe) { $param = $this->param; $keys = $this->key; $time = $newRe['ts']; $url = $param['url']; $appId = $param['app_id']; $reqData = $newRe['reqData']; $payload = "$url\n$appId\n$time\n$reqData"; $key = openssl_pkey_get_private($keys['key']); $signature = ''; openssl_sign($payload, $signature, $key, OPENSSL_ALGO_SHA256); openssl_free_key($key); return base64_encode($signature); } } <?php namespace backend\components\helper; use common\helpers\MiniHelper; class WxDelivery { /** * Name:获取小程序的token * User: zcw * Date: 2023/7/11 * Time: 9:50 * @return bool|int|mixed|string */ public static function getAccessToken() { $qr = new MiniHelper(); // 获取到的 access_token return $qr->getAccessToken(); } public static function curlPost($url, $field,$header) { $headerArray = array("Content-type:application/json;charset=utf-8", "Accept:application/json"); $headerArray = array_merge($headerArray,$header); $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $field); $str = curl_exec($curl); curl_close($curl); return $str; } public static function curlGet() { } }
2023-07-11 - 关于物流配送的接口demo,可以加一个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.html
2023-07-11 - 加个php的demo呗
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/getting_started/api_signature.html
2023-07-11 - 为啥 我引用插件 提示类目不符合呢
[图片][图片]
2023-03-22 - 两个微信开放平台A,B关联主体后,两者分别绑定的小程序获取到的unioid是否能一样
现在有A,B两个微信开放平台,并且已经绑定了主体关系 [图片] 现在我发现绑定在B下的小程序,同一用户获取到的unionid,与在A下的unionid不一致 ,怎么解决这个问题呢
2022-07-20 - 已接入到微信开放平台的 网站应用 变更公司主体,会影响到公众号与网站的连接使用吗,如获取登录信息?
目前是以公司A注册的开放平台,网站、公众号均属于公司A,现在需要将网站变更到公司B,这样会影响到我功能的正常使用吗?如微信登录,转发等
2022-03-22