http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7860|回复: 1

[其他] 【微信接入】会的进来,有偿服务支付RMB哦

[复制链接]
发表于 2014-5-22 15:59:15 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 Kenney 于 2014-5-22 16:01 编辑

我现在的问题是获取openid有问题 access_token应该是可以的
如果有appId和appSerect的朋友 帮帮忙测试下
[C#] 纯文本查看 复制代码
 public string getOpenId(string Access_toKen)
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://graph.qq.com/oauth2.0/me?access_token=" + Access_toKen,//URL     必需项
                Method = "GET",//URL     可选项 默认为Get
                Timeout = 100000,//连接超时时间     可选项默认为100000
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写
                Cookie = "",//字符串Cookie     可选项
                UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0",//用户的浏览器类型,版本,操作系统     可选项有默认值
                Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值
                ContentType = "text/html",//返回类型    可选项有默认值
                Referer = "https://graph.qq.com",//来源URL     可选项
                Postdata = "",//Post数据     可选项GET时不需要写
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;
            string cookie = result.Cookie;
            byte[] b = result.ResultByte;

            try
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                jsonData p = js.Deserialize<jsonData>(html);
                //Response.Write("access_token:" + p.access_token.ToString() + ",expires_in:" + p.expires_in + "<br/>");//输出 access_token:0,expires_in:ZhangS
                return p.openid;
            }
            catch (Exception e)
            {
                return e.ToString();
            }
        }
        /// <summary>
        /// 获取Access_toKen,并用Session保存
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="appSecret"></param>
        public void getAccess_toKen(string appId, string appSecret)
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret,//URL     必需项
                Method = "GET",//URL     可选项 默认为Get
                Timeout = 100000,//连接超时时间     可选项默认为100000
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写
                Cookie = "",//字符串Cookie     可选项
                UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0",//用户的浏览器类型,版本,操作系统     可选项有默认值
                Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值
                ContentType = "text/html",//返回类型    可选项有默认值
                Referer = "https://api.weixin.qq.com",//来源URL     可选项
                Postdata = "",//Post数据     可选项GET时不需要写
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;
            string cookie = result.Cookie;
            byte[] b = result.ResultByte;

            JavaScriptSerializer js = new JavaScriptSerializer();
            //return js.Deserialize<jsonData>(strJson);

            //DeSerializer
            jsonData p = js.Deserialize<jsonData>(html);
            //Response.Write("access_token:" + p.access_token.ToString() + ",expires_in:" + p.expires_in + "<br/>");//输出 access_token:0,expires_in:ZhangS
            
            Session["Session_Access_toKen"] = p.access_token;
            //getOpenId(p.access_token);
        }
        /*订单发货or商家取消订单时调用的微信支付发货接口(只有付款方式为微信支付时才会调用)
        * @param openId 买家支付时的微信openid
        * @param transid 微站支付时交易流水号
        * @param orderId 对应订单号
        * @param status 发货状态 1表明发货成功 0表明发货失败(取消订单)
        * @param msg 发货状态信息 发货成功填写ok即可 如果是取消订单则填写上取消订单原因(注意要进行UTF8编码哦)
        * @param siteId 所属站点
        * @author qlf 
        * @datetime 2014-4-23 上午11:32:31
        */
        public void sendWxpayProduct(string openId, string transid, string orderId, string status, string msg)
        {
            string httpSend = "https://api.weixin.qq.com/pay/delivernotify?access_token=";
            //System.out.println("发货接口Token:"+CommonUtil.getAccessToken(siteId));

            httpSend += TenpayUtil.accss_token;
            //System.out.println("请求地址:"+httpSend);
            //商户订单号
            string out_trade_no = "D_" + DateTime.Now.ToString("yyyy-MM-dd") + "_" + new System.Random().Next(0, 9999) + "-" + orderId;
            //时间戳
            string deliver_timestamp = Convert.ToString(DateTime.Now.Ticks / 1000);
            //拼装加密字符串
            string signStr = "appid=" + TenpayUtil.appid + "&appkey=" + TenpayUtil.appkey + "&deliver_msg=" + msg + "&deliver_status=" + status
            + "&deliver_timestamp=" + deliver_timestamp + "&openid=" + openId + "&out_trade_no=" + out_trade_no + "&transid=" + transid;
            //System.out.println("签名字符串:"+signStr);
            //生成加密字符串
            string sign = SHA1Util.getSha1((signStr));
            //System.out.println("MD5签名:"+sign);
            //sign = SHA1Util.Sha1(sign);
            //System.out.println("SHA1签名:"+sign);
            //拼装json字符串
            string json = "{\"appid\":\"" + TenpayUtil.appid + "\",\"openid\":\"" + openId + "\",\"transid\":\"" + transid + "\",\"out_trade_no\":\"" + out_trade_no + "\"," +
                    "\"deliver_timestamp\":\"" + deliver_timestamp + "\",\"deliver_status\":\"1\",\"deliver_msg\":\"ok\"," +
                            "\"app_signature\":\"" + sign + "\",\"sign_method\":\"shal\"}";

            //System.out.println("发货接口json:"+json);
            string respStr = "";
            try
            {
                HttpHelper http = new HttpHelper();
                HttpItem item = new HttpItem()
                {
                    URL = "https://api.weixin.qq.com/pay/delivernotify?access_token=",//URL     必需项
                    Method = "GET",//URL     可选项 默认为Get
                    Timeout = 100000,//连接超时时间     可选项默认为100000
                    ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000
                    IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写
                    Cookie = "",//字符串Cookie     可选项
                    UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0",//用户的浏览器类型,版本,操作系统     可选项有默认值
                    Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值
                    ContentType = "text/html",//返回类型    可选项有默认值
                    Referer = "https://api.weixin.qq.com",//来源URL     可选项
                    Postdata = "",//Post数据     可选项GET时不需要写
                };
                HttpResult result = http.GetHtml(item);
                string html = result.Html;
                string cookie = result.Cookie;
                byte[] b = result.ResultByte;
                
                Response.Write(html);
            }
            catch (Exception e)
            {
                Response.Write(e.ToString());
            }
            //System.out.println("发货接口返回值="+respStr);	
        }



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2014-5-22 16:02:44 | 显示全部楼层
一共3个方法,第一个是通过第二个方法实现 目前第二个方法得到了access_token
getOpenId无效

只要得到openid 就能实现第三个 发货通知URL提交了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 08:47

© 2014-2021

快速回复 返回顶部 返回列表