这两天一直被这个看似很简单的问题所纠缠,感觉自己雾里看花,希望有大神能指点迷津。
需求很简单,就是在微信公众号里,根据用户的消息,反馈一张图片。
之前把回复文本消息功能已经做好,所以$object是确定ok的,问题就集中在$mediaId上面。
/*
* 回复文本消息
*/
private function transmitText($object, $content)
{
$textTpl = "
FromUserName."]]>
ToUserName."]]>
".time()."
";
return $textTpl;
}
/*
* 回复图片消息
*/
private function transmitImg($object, $mediaId)
{
$textTpl = "
< ![CDATA[".$object->FromUserName."] ]>< ![CDATA[".$object->ToUserName."] ]>".time()."< ![CDATA[image] ]>< ![CDATA[".$mediaId."] ]>";
return $textTpl;
}
昨天用下面的方法提交到微信那里,能返回mediaID,是43位的,能在公众号后台看到
$file = "/www/wwwroot/coin.yspjd.com/themes/simplebootx_mobile/Public/assets/images/jin.jpg";
$data = array(
'media'=> new CURLFile($file)
);
$url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$wechat_config['token'].'&type=image';
返回值:
array(2) { ["media_id"]=> string(43) "n1QolbCOtJOCEmcilp3X_Alp7ukxJIMjm3rRc8nIRy4" ["url"]=> string(132) "http://mmbiz.qpic.cn/mmbiz_jpg/lhfKaADsLqwaZ7uIO9f23xlhjaq7pFub79ZFAFqmWNrGNC9yGJAKdvYWxqibNnzgmbvCukQmx1OWw5ERKTor2tw/0?wx_fmt=jpeg" }
今天用另外一种方法,form表单提交,能返回64位的mediaID,但是在公众号后台看不到
返回值:
{"type":"image","media_id":"nJdoji-3rBsZOPFqL0PcWPQKzwUY9YIpWCI-8El3HQzFNT9LoWTWG0jyw01uGx0C","created_at":1545317001}
所以,问题一:都是media_id,哪个是正确的?
根据微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543
我按两个media_id都做分别做了两个xml,都不能返回正确的图片,问题二:xml有什么问题么?
< ![CDATA[oz_hD1o9au6stC6GOXfi_Gk7N19E] ]>< ![CDATA[gh_b59f0a6081c4] ]>1545311876< ![CDATA[image] ]>< ![CDATA[QH0VDmI4HTP-PwKRvdhzgwaNDsHuy40FUqmjZt1g7AjV6mpNzJmymmuIzk1MzzO3] ]>希望大神不吝赐教,再次感谢!
微信小程序开发问题解答
微信小程序开发者回答:
感谢 @杨李云 的反馈,现在明白两个mediaId的区别了,但是我想反馈给用户永久素材,到xml应该怎么写呢?
按官方文档的要求写的,却不能实现,不知道坑在哪。。。
微信小程序开发者回答:
嗯,问题还是蛮清晰的,应该是个有经验的开发人员,知道如何提问题
你应该确定这两个接口的文档描述
http请求方式: POST,需使用httpshttps://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE调用示例(使用curl命令,用FORM表单方式新增一个其他类型的永久素材,curl命令的使用请自行查阅资料)是其他永久素材,会进入公众号后台
api.weixin.qq.com/cgi-bin/media/upload,是临时素材
公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公众号可以新增临时素材(即上传临时多媒体文件)。
注意点:
1、临时素材media_id是可复用的。
2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。
那么你的 “需求很简单,就是在微信公众号里,根据用户的消息,反馈一张图片。”
很明显就是要使用upload接口返回的mediaId
如果搞明白了,记得给个小小的赞
本文网址:http://www.91bianli.com/weixinxiaochengxu/43382.html