2016-12-04 13:26:32 wuchengzeng 阅读数 2226
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

微信公众平台技术文档


微信开发资源下载

iOS资源下载

开发工具包(SDK)

使用微信分享、登录、收藏、支付等功能需要的库以及文件。点击下载iOS开发工具包64位

使用微信语音识别接口、语音合成接口。点击下载 语音SDK+Demo+开发文档

使用微信图像识别接口。点击下载 图像SDK+Demo+开发文档

使用微信卡券功能接口。点击下载 卡券SDK+开发文档

范例代码

包含了一个完整的范例工程,该范例的使用可以参阅iOS平台上手指南。点击下载 范例代码


Android资源下载

开发工具包(SDK)

使用微信分享、登录、收藏、支付等功能需要的库以及文件。点击下载 Android开发工具包

使用微信语音识别接口、语音合成接口。点击下载 语音SDK+Demo+开发文档

使用微信图像识别接口。点击下载 图像SDK+Demo+开发文档

使用微信卡券功能接口。点击下载 卡券SDK+开发文档

范例代码

包含了一个完整的范例工程。该范例的使用可以参阅Android平台上手指南:HelloWeixin@Android。点击下载

签名生成工具

用于获取安装到手机的第三方应用签名的apk包。点击下载 签名生成工具


WP8资源下载

开发工具包(SDK)

开发第三方应用所需要的库以及文件。点击下载

范例代码

包含了一个完整的范例工程。该范例的使用可以参阅WP8平台上手指南:HelloWeixin@WP8。点击下载


设计资源下载

为了让开发者在使用微信开放平台的接口功能时,能够保持一致的用户体验,建议开发者使用标准设计资源来进行功能实现。

微信提供了以下几种标准的Logo、Icon、功能按钮标识,开发者可下载后使用。 下载方式:鼠标移到所需的图片上,点击右键选择“图片另存为...”,保存即可。

微信Logo

                                          

  64 * 64               48 * 48            32 * 32        16 * 16

微信Icon


                                          

  64 * 64               48 * 48            32 * 32         24 * 24

微信Button

在实现微信登录功能时,请使用微信的标准图标:

                            

                       48 * 48                                                  32 * 32                                  24 * 24

微信公众号登录授权页入口的统一按钮样式

在开发者通过公众号服务为公众号解决垂直行业需求时,若需从自身网站跳转至公众号授权页,请使用下述统一按钮样式和效果,保证统一体验:

                            

                       250 * 50                                                     178 * 32                                         24 * 24

 

微信分享

分享到微信朋友会话时,请使用微信的标准图标:

 

分享到微信朋友圈时,请使用朋友圈的标准图标:

微信收藏

在实现微信收藏功能时,请使用微信收藏的标准图标:









2017-05-23 15:18:21 RE_PHPzjw 阅读数 7106
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

目录 List

1. 那一抹淡淡的忧伤—–微信开发基础
2. 用纯js是不可能用纯js了,这辈子都不用纯js了 —– 微信JSSDK开发以及问题解答
3. 要你命3000 —— 微信支付开发系列问题解决

导语

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。
通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
本文重点讲最新的JSSDK版本1.2,关于1.2版本的说明可以参考这里
尤其注意从1.2版本开始微信针对IOS系统WKWebview内核做出了重大改变,所以广大开发者当以最新JSSDK1.2版本为开发源码,否则可能造成IOS部分功能无效


开发前准备

步骤一:绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。


步骤二:引入JS文件
在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js


步骤三:通过config接口注入权限验证配置

wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: ”, // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: ”, // 必填,生成签名的随机串
signature: ”,// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });

直接用代码演示

//加载微信JSSDK config
wx.config({
        debug: false,
        appId: 'APPID',
        timestamp: time,
        nonceStr: 'NONCESTR',
        signature: 'SIGNATURE',
        jsApiList: [
            'checkJsApi',
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'onMenuShareQQ',
            'onMenuShareWeibo',
            'onMenuShareQZone',
            'hideMenuItems',
            'showMenuItems',
            'hideAllNonBaseMenuItem',
            'showAllNonBaseMenuItem',
            'translateVoice',
            'startRecord',
            'stopRecord',
            'onVoiceRecordEnd',
            'playVoice',
            'onVoicePlayEnd',
            'pauseVoice',
            'stopVoice',
            'uploadVoice',
            'downloadVoice',
            'chooseImage',
            'previewImage',
            'uploadImage',
            'downloadImage',
            'getNetworkType',
            'openLocation',
            'getLocation',
            'hideOptionMenu',
            'showOptionMenu',
            'closeWindow',
            'scanQRCode',
            'chooseWXPay',
            'openProductSpecificView',
            'addCard',
            'chooseCard',
            'openCard',
        ]
    });
    //JSSDK错误报告
    wx.error(function(res){
        console.log(location.href.split('#')[0]);
    });

config里面所涉及到的参数我们通过JSSDK官方demo来提供数据,我对官方的demo进行了再次封装,直接在这里贴出来:

class Jssdk{
    private $appId;
    private $appSecret;

    public function __construct($appId, $appSecret) {
        $this->appId = $appId;
        $this->appSecret = $appSecret;
    }

    public function getSignPackage() {
        $jsapiTicket = $this->getJsApiTicket();

        // 注意 URL 一定要动态获取,不能 hardcode.
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

        $timestamp = time();
        $nonceStr = $this->createNonceStr();

        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
        $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

        $signature = sha1($string);

        $signPackage = array(
            "appId"     => $this->appId,
            "nonceStr"  => $nonceStr,
            "timestamp" => $timestamp,
            "url"       => $url,
            "signature" => $signature,
            "rawString" => $string
        );
        return $signPackage;
    }

    private function createNonceStr($length = 16) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i < $length; $i++) {
            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        }
        return $str;
    }

    private function getJsApiTicket() {
        // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
        $data = json_decode($this->get_php_file("jsapi_ticket.php"));
        if ($data->expire_time < time()) {
            $accessToken = $this->getAccessToken();
            // 如果是企业号用以下 URL 获取 ticket
            // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
            $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
            $res = json_decode($this->httpGet($url));
            $ticket = $res->ticket;
            if ($ticket) {
                $data->expire_time = time() + 7000;
                $data->jsapi_ticket = $ticket;
                $this->set_php_file("jsapi_ticket.php", json_encode($data));
            }
        } else {
            $ticket = $data->jsapi_ticket;
        }

        return $ticket;
    }

    private function getAccessToken() {
        // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
        $data = json_decode($this->get_php_file("access_token.php"));
        if ($data->expire_time < time()) {
            // 如果是企业号用以下URL获取access_token
            // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
            $res = json_decode($this->httpGet($url));
            $access_token = $res->access_token;
            if ($access_token) {
                $data->expire_time = time() + 7000;
                $data->access_token = $access_token;
                $this->set_php_file("access_token.php", json_encode($data));
            }
        } else {
            $access_token = $data->access_token;
        }
        return $access_token;
    }

    private function httpGet($url) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 500);
        // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
        // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
        curl_setopt($curl, CURLOPT_URL, $url);

        $res = curl_exec($curl);
        curl_close($curl);

        return $res;
    }

    private function get_php_file($filename) {
        return trim(substr(file_get_contents($filename), 15));
    }
    private function set_php_file($filename, $content) {
        $fp = fopen($filename, "w");
        fwrite($fp, "<?php exit();?>" . $content);
        fclose($fp);
    }
}

务必先拿到数据后注册给JSconfig,否则微信JSSDK是无效的

等你一切准备得当的时候请打开网页调试里的console来查看效果

正确调用的情况:
这里写图片描述

到这里所有的准备工作就完成了


图片选择

调用JSSDK的图片接口

wx.chooseImage({
            count: 1,
            success: function (res) {
                //选择图片成功后
                images.localId = res.localIds;//安卓可以直接使用localIds 预览图片
                if(res.localIds.indexOf("wxlocalresource") != -1){
                    res.localIds = res.localIds.replace("wxlocalresource", "wxLocalResource");
                }
              )};  
               //以下的适配IOS
               //先使用阅览接口(适配IOSWKWebview版本)
                    wx.getLocalImgData({
                        localId: images.localId[i], // 图片的localID
                        success: function (res) {
                            var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                            $("#chooseImage").parent().before("<li class='upload_action'><img src='"+localData+"'/></li>");
                        }

                    });

图片上传

直接采用递归方法来上传多张图片

function upload() {
    wx.uploadImage({
                        localId: images.localId[i].toString(),
                        isShowProgressTips: 1, // 默认为1,显示进度提示
                        success: function (res) {
                            i++;
                            var media_id = res.serverId;

                            images.serverId.push(res.serverId);//上传到了服务器的ID

                            if (i < length) {
                                upload();
                            }
                        },
                        fail: function (res) {
                            alert(JSON.stringify(res));
                        }
                    });

}

将上传到服务器的图片下载到本地项目

public function getmedia(){
        $media_id = get.sevrid;//前端返回的上传后的媒体id
        $weixin = new Weixinpay(); //实例化微信类
        $access_token = $weixin->getToken(); //获取token

        $url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$media_id;
        //获取微信“获取临时素材”接口返回来的内容(即刚上传的图片)
        $a = file_get_contents($url);
        //echo $a;
        $filename = date('YmdHis').rand(1000,9999).'.jpg';
        //以读写方式打开一个文件,若没有,则自动创建
        $resource = fopen($_SERVER["DOCUMENT_ROOT"].'/Uploads/User_img/'.$filename, 'w+');
        //将图片内容写入上述新建的文件
        fwrite($resource, $a);
        //关闭资源
        fclose($resource);
        echo '/Car/Common/Uploads/User_img/'.$filename;
    }

通过以上方法我们能达到 用户用微信自带的上传图片系统上传到我们自己服务器上


完整代码

var images = {
        localId: [],
        serverId: []
    };
    choose.onclick = function(){
        wx.chooseImage({
            count: 1,
            success: function (res) {
                //选择图片成功后
                images.localId = res.localIds;
                if(res.localIds.indexOf("wxlocalresource") != -1){
                    res.localIds = res.localIds.replace("wxlocalresource", "wxLocalResource");
                }
                var i = 0, length = images.localId.length;

                function upload() {
                    //先使用阅览接口(适配IOSWKWebview版本)
                    wx.getLocalImgData({
                        localId: images.localId[i], // 图片的localID
                        success: function (res) {
                            var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                            $("#chooseImage").parent().before("<li class='upload_action'><img src='"+localData+"'/></li>");
                        }

                    });
                    wx.uploadImage({
                        localId: images.localId[i].toString(),
                        isShowProgressTips: 1, // 默认为1,显示进度提示
                        success: function (res) {
                            i++;
                            var media_id = res.serverId;

                            images.serverId.push(res.serverId);
                            $.ajax({
                                url:'getmedia.php',
                                data:{'mid':res.serverId.toString()},
                                type:'get',
                                success:function(res){
                                    $("input[name='qu_img']").val(res);
                                    $("#chooseImage").hide();
                                }

                            });
                            if (i < length) {
                                upload();
                            }
                        },
                        fail: function (res) {
                            alert(JSON.stringify(res));
                        }
                    });

                }
                upload();
            }
        });

    }

演示

这里写图片描述

讨论和询问可以加QQ

1577452412

2019-09-15 17:09:27 weixin_44571975 阅读数 44
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

如果能重来,我要杀写文档之人以祭天

神奇的微信图片素材上传

之前我发了上传图片素材的微信接口,后来前端告诉我这接口不能用了???
我之前还穿了几张企鹅图,嘲讽了腾讯,难道是报应?

排查错误

postman测试,发现返回结果不是false就是data丢失,在csdn上找其他的curl模拟post函数也是一样的结果,这TM的?
一度怀疑是content-type的错误,因为我检查发送的标题头的时候发现,有些人写的curl函数是content-type是null,而微信要求是form-data的形式

一怒之下用postman,直接拼接好借口的网址,带图片发送
它成功了? !成了!!!

WTF
说明postman的发送方式是对的,我们自己的是有问题的

意外的结局

一连3,4天都没找到到底是哪里的curl问题

于是 懒得打太多字,就把图片移动到硬盘的根目录,也就是G:
结果TM的成了?

难道是文件目录有问题? 没错只能在根目录,只要进了文件夹比如G:\123\k.jpg
无论是什么斜线都不行
于是我拿其他位置的图片测试,结果是----没问题,就是这么NB

结论

必须所在的磁盘根目录不同,而且文件路径为
$filePath = ‘D:/hyd.jpg’;

//这样就会报错
// $filePath = 'D:\123\hyd.jpg';

如果一定要放在文件夹里,必须和TP所在的磁盘目录不同

推测 php5.6所带有的CURLfile类和curl一直是个谜一样的配合

2015-11-24 11:43:04 u010533511 阅读数 5671
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

上传文件(获得:media_id):

<?php

// 微信参数
$appId = 'appid';
$appSecret = 'appsecret';


$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appId . "&secret=" . $appSecret;

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
$output = curl_exec ( $ch );
curl_close ( $ch );
$jsoninfo = json_decode ( $output, true );
$access_token = $jsoninfo ["access_token"];


$url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$access_token."&type=image";
$data =array("media" => "@"."rhlq.jpg");


$result = https_request ( $url, $data );
var_dump ( $result );


function https_request($url, $data = null) {
$curl = curl_init ();
//curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false); 
curl_setopt ( $curl, CURLOPT_URL, $url );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE );
if (! empty ( $data )) {
curl_setopt ( $curl, CURLOPT_POST, 1 );
curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data );
}
curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );
$output = curl_exec ( $curl );
curl_close ( $curl );
return $output;
}

?>

测试demo:http://download.csdn.net/detail/u010533511/9295355


自动回复代码:

if($keyword == '如何领取'){
$xmlTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>".time()."</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[上面代码获得到的media_id]]></MediaId></Image></xml>";
$result = sprintf($xmlTpl, $fromUsername, $toUsername, $time);
echo $result;
}







2017-05-03 16:59:02 Luze_1226 阅读数 2552
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

微信公众后台开发之素材管理

        最近应公司要求,对公司的微信公众号后台走升级,添加部分功能,其中就是需要在后台上传图片,而公众号回根据用户的按钮点击事件返回后台上传的图片。看着就是简单的需求,但是还是要先了解下微信开发文档,在来做开发微信开发文档
       看过文档后发现不是想象中的那么简单,这里涉及到三个系统的交互,一个是用户的收集,一个是自己的后台服务器,一个是微信服务器,做公众号的图片回复的时候,需要将图片上传到微信服务器,获取素材的media_id,然后使用media_id组装成微信规定的XML信息模板,当用户点击按钮的时候,返回给用户上传的图片。
       微信对上传的素材做了区分,分别为:临时素材和永久素材,他们上传的方式也不一样,同时也会有要求。对于永久素材,需要做删除操作。我使用PHP做开发,首先看看上传临时素材,文档给了我们URL和请求的方法。然后做编程。编程先把请求的方法包装下:
protected static function https_request($url, $data = null)
{
 //创建一个新cURL资源
 $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}
上包装了对请求的操作,接下来就是做上传素材了,微信不接受网络素材,只好是自己的本地图片做上传,这里写了一个方法来做上传临时素材:
//获取上传图片的medioId 添加临时素材
public function get_media_id($imgUrl){

     $TOKEN="idtbxhOnI4YZ8gFRHeUEU-MYk4T3XxVndEZKvx2jlx3dGteEWEyG6Twck9MTgsyXRl_MqyBhgYa4w73mjGnvXH17Nguhqs7Z2QCpCu7SvzUYIWjAHALVJ";
      $URL ='http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$TOKEN.'&type=image';



    $filedata = array("media"  => "@".$imgUrl);

   $result =$this->https_request($URL,$filedata);
   echo var_dump($result).'<br>';
   $res = json_decode($result,true);
    return $res;
}
上面的TOKEN是微信自己公众号的accessToken,可以通过文档网页测试来获取做测试,也可以自己写方法获取,这里就不写了,通过给参数$imageUrl就可以获得media_id,在使用media_id就可以在公众号显示了,上传永久素材和上传临时素材是一样的,只是链接不一样:
 //添加永久素材
    public function uploadImg($imgUrl){

        $TOKEN="7ZT1cX_zIh0PFJnINPPaVew5yIDAU9N0umuwt5kmyuMwGVW2LCCTmokixxt99Rix0NixyKiQP-kB-T8KxYNllkRz7pZ7znWfIKOkK8bYUmsCFIgAFAFIL";
        $url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$TOKEN.'&type=image';
//         $URL ='http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$TOKEN.'&type=image';
        $data = array('media'=>'@'.$imgUrl);
        $result = $this->https_request($url,$data);
        $data = @json_decode($result,true);

        return $data['media_id'];

//         return $data;
    }

这是不是很简单,现在看看如何删永久素材,删除素材,首先要获取素材的media_id,在通过media_id来删除素材,这就需要我们自己先保存上传后的素材media_id,方便我们做删除操作。这里直接给出代码:
   public function del_media($media_id){
         $TOKEN="7ZT1cX_zIh0PFJnINPPaVew5yIDAU9N0umuwt5kmyuMwGVW2LCCTmokixxt99Rix0NixyKiQP-kB-T8KxYNllkRz7pZ7znWfIKOkK8bYUmsCFIgAFAFIL";
         $media_id = 'b6geinBHCE6Z3WrilwK0NEeVU4JZDlcdebGYQrYOy-k';
//          $media_id = 'b6geinBHCE6Z3WrilwK0NBO88W4Q5nNrhWQOiUKQouA';
         $url = 'https://api.weixin.qq.com/cgi-bin/material/del_material?access_token='.$TOKEN;
         $data = '{"media_id":"%s"
}';
         $data = sprintf($data,$media_id);
         $result = $this->https_request($url,$data);
         $res = json_decode($result,true);
         return $res;
     }

这里要注意下请求的参数的格式一定要多注意,否则会报错。


C#微信群发素材

博文 来自: u010773333
没有更多推荐了,返回首页