感谢 @杨李云 的反馈,现在明白两个mediaId的区别了,但是我想反馈给用户永久素材,到xml应该怎么写呢? 按官方文档的要求写的,却不能实现,不知道坑在哪。。。
微信公众平台 回复图片消息的问题这两天一直被这个看似很简单的问题所纠缠,感觉自己雾里看花,希望有大神能指点迷津。 需求很简单,就是在微信公众号里,根据用户的消息,反馈一张图片。 之前把回复文本消息功能已经做好,所以$object是确定ok的,问题就集中在$mediaId上面。 [代码]/*[代码][代码] [代码][代码]* 回复文本消息[代码][代码] [代码][代码]*/[代码][代码]private[代码] [代码]function[代码] [代码]transmitText([代码][代码]$object[代码][代码], [代码][代码]$content[代码][代码])[代码][代码]{[代码][代码] [代码][代码]$textTpl[代码] [代码]= "<xml>[代码][代码] [代码][代码]<ToUserName><![CDATA[[代码][代码]".$object->FromUserName."[代码][代码]]]></ToUserName>[代码][代码] [代码][代码]<FromUserName><![CDATA[[代码][代码]".$object->ToUserName."[代码][代码]]]></FromUserName>[代码][代码] [代码][代码]<CreateTime>[代码][代码]".time()."[代码][代码]</CreateTime>[代码][代码] [代码][代码]<MsgType><![CDATA[text]]></MsgType>[代码][代码] [代码][代码]<Content><![CDATA[[代码][代码]".$content."[代码][代码]]]></Content>[代码][代码] [代码][代码]</xml>";[代码][代码] [代码][代码]return[代码] [代码]$textTpl[代码][代码];[代码][代码]}[代码] [代码]/*[代码][代码] [代码][代码]* 回复图片消息[代码][代码] [代码][代码]*/[代码][代码]private[代码] [代码]function[代码] [代码]transmitImg([代码][代码]$object[代码][代码], [代码][代码]$mediaId[代码][代码])[代码][代码]{[代码][代码] [代码][代码]$textTpl[代码] [代码]= [代码][代码]"<xml><ToUserName>< ![CDATA["[代码][代码].[代码][代码]$object[代码][代码]->FromUserName.[代码][代码]"] ]></ToUserName><FromUserName>< ![CDATA["[代码][代码].[代码][代码]$object[代码][代码]->ToUserName.[代码][代码]"] ]></FromUserName><CreateTime>"[代码][代码].time().[代码][代码]"</CreateTime><MsgType>< ![CDATA[image] ]></MsgType><Image><MediaId>< ![CDATA["[代码][代码].[代码][代码]$mediaId[代码][代码].[代码][代码]"] ]></MediaId></Image></xml>"[代码][代码];[代码][代码] [代码][代码]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,但是在公众号后台看不到 [代码]<[代码][代码]form[代码] [代码]action[代码][代码]=[代码][代码]"http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=16_n17ktSF43jkJFzUE6IGt3ZLSvQvwlJQu1LFLOBD9RsYtBlIa4P1aPCZyOM6g9vBOX43ez2sLy-V_FBMcNGWwstFH0I3OoCStAzNNCvX9wImPG5Kqd98WxffZfbzL-48B43thslN9wl6wbpxnZAGjAAAOPV&type=image"[代码] [代码]method[代码][代码]=[代码][代码]"post"[代码] [代码]enctype[代码][代码]=[代码][代码]"multipart/form-data"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]input[代码] [代码]type[代码][代码]=[代码][代码]"file"[代码] [代码]name[代码][代码]=[代码][代码]"media"[代码] [代码]/>[代码][代码] [代码][代码]<[代码][代码]input[代码] [代码]type[代码][代码]=[代码][代码]"submit"[代码] [代码]value[代码][代码]=[代码][代码]"ok"[代码][代码]/>[代码][代码] [代码][代码]</[代码][代码]form[代码][代码]>[代码]返回值: [代码]{"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有什么问题么? [代码]<[代码][代码]xml[代码][代码]><[代码][代码]ToUserName[代码][代码]>< ![CDATA[oz_hD1o9au6stC6GOXfi_Gk7N19E] ]></[代码][代码]ToUserName[代码][代码]><[代码][代码]FromUserName[代码][代码]>< ![CDATA[gh_b59f0a6081c4] ]></[代码][代码]FromUserName[代码][代码]><[代码][代码]CreateTime[代码][代码]>1545311876</[代码][代码]CreateTime[代码][代码]><[代码][代码]MsgType[代码][代码]>< ![CDATA[image] ]></[代码][代码]MsgType[代码][代码]><[代码][代码]Image[代码][代码]><[代码][代码]MediaId[代码][代码]>< ![CDATA[QH0VDmI4HTP-PwKRvdhzgwaNDsHuy40FUqmjZt1g7AjV6mpNzJmymmuIzk1MzzO3] ]></[代码][代码]MediaId[代码][代码]></[代码][代码]Image[代码][代码]></[代码][代码]xml[代码][代码]>[代码] 希望大神不吝赐教,再次感谢!
2018-12-21