热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#微信开发微信会员卡(三)激活会员卡

在会员领取了会员卡之后需要做 一个跳转性激活,模式请看下图:在创建会员卡的时候需要配置下这个参数的值:memberActivate.aspx页面代码如下:

在会员领取了会员卡之后需要做 一个跳转性激活,模式请看下图:

在创建会员卡的时候需要配置下这个参数的值:

 

 memberActivate.aspx页面代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="memberActivate.aspx.cs" Inherits="ChainStock.mobile.member.memberActivate" %>



"http://www.w3.org/1999/xhtml">
"server">
    "Content-Type" cOntent="text/html; charset=utf-8" />
    "viewport" cOntent=">
    
    
    <%----%>
    "css/bootstrap.min.css" rel="stylesheet" />
    
    

"background-color: #f2f2f2;" class="no-padding no-margin">
    "form1" runat="server">
        
class="container no-padding">
class="col-xs-12">
class="col-xs-12">
class="clearfix">

"background-color: white; padding: 30px 0px; border-bottom: 1px solid #dbdbdb; border-top: 1px solid #dbdbdb;">
class="col-xs-12">
class="col-xs-3"> 用户名
class="col-xs-9 no-padding text-left" id="divMemName" runat="server">
class="clearfix">
class="col-xs-12" color: rgba(128, 0, 0, 1)">"padding-top: 10px;">
class="col-xs-3"> 手机号
class="col-xs-9 no-padding text-left" id="divMemMobile" runat="server">
class="clearfix">
class="clearfix">

class="col-xs-12 no-padding">
class="col-xs-12 text-center"> "button" class="btn btn-sm btn_active" value="激活会员卡" id="btnActiveMem" /> "hidden" id="hd_MemMobile" value="" runat="server" /> "hidden" id="hd_CardCode" value="" runat="server" /> "hidden" id="hd_CardId" value="" runat="server" />
class="col-xs-12 text-center">
"button" class="btn btn-sm btn_return" value="返 回" />
class="col-xs-12 ">
"color: red;">注:激活后不可修改上面的信息
class="clearfix">

后台代码:

using Chain.Wechat;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ChainStock.mobile.member
{
    public partial class memberActivate : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            BindData();

        }
        void BindData()
        {
            string code = "";
            string openid = "";
            string access_token = "";
            string strEncrypt_code = "";
            string tick_code = "";
            string strActivate_ticket = "";
            string cardId = "";

            try
            {
                if (!string.IsNullOrEmpty(Request.QueryString["encrypt_code"]))
                {
                    strEncrypt_code = Request.QueryString["encrypt_code"].ToString();
                }
                if (!string.IsNullOrEmpty(Request.QueryString["card_id"]))
                {
                    cardId = Request.QueryString["card_id"].ToString();
                    hd_CardId.Value = cardId;
                }
                string getAuthorize = GetAuthorize();
                if (getAuthorize != "")
                {
                    getAuthorize = "[" + getAuthorize + "]";

                    Newtonsoft.Json.Linq.JArray Javascript = (Newtonsoft.Json.Linq.JArray)JsonConvert.DeserializeObject(getAuthorize);
                    Newtonsoft.Json.Linq.JObject obj = (Newtonsoft.Json.Linq.JObject)Javascript[0];

                    if (obj["access_token"] != null && obj["access_token"].ToString() != "")
                    {
                        access_token = obj["access_token"].ToString();//用户OpenID             
                    }
                }
                if (!string.IsNullOrEmpty(access_token))
                {
                    if (!string.IsNullOrEmpty(Request.QueryString["encrypt_code"]))
                    {
                        strEncrypt_code = Request.QueryString["encrypt_code"].ToString();
                        string postUrl = "https://api.weixin.qq.com/card/code/decrypt?access_token=" + access_token;
                        string postDate = "{\"encrypt_code\":\"" + strEncrypt_code + "\"}";

                        string strResult = PostWebRequest(postUrl, postDate);
                        strResult = "[" + strResult + "]";
                        Newtonsoft.Json.Linq.JArray codeArray = (Newtonsoft.Json.Linq.JArray)JsonConvert.DeserializeObject(strResult);
                        Newtonsoft.Json.Linq.JObject objResult = (Newtonsoft.Json.Linq.JObject)codeArray[0];
                        if (objResult["errmsg"].ToString() == "ok")
                        {
                            code = objResult["code"].ToString();
                            hd_CardCode.Value = code;
                            if (!string.IsNullOrEmpty(Request["activate_ticket"]))
                            {
                                strActivate_ticket = Request["activate_ticket"].ToString();
                            }

                            if (!string.IsNullOrEmpty(strActivate_ticket))
                            {
                                string ticketPostUrl = "https://api.weixin.qq.com/card/membercard/activatetempinfo/get?access_token=" + access_token;
                                string ticketPostData = "{ \"activate_ticket\" : \"" + strActivate_ticket + "\"}";
                                string userInfoResult = PostWebRequest(ticketPostUrl, ticketPostData);
                                userInfoResult = "[" + userInfoResult + "]";

                                Newtonsoft.Json.Linq.JArray userInfoArray = (Newtonsoft.Json.Linq.JArray)JsonConvert.DeserializeObject(userInfoResult);
                                Newtonsoft.Json.Linq.JObject objUserInfo = (Newtonsoft.Json.Linq.JObject)userInfoArray[0];
                                if (objUserInfo["errmsg"].ToString() == "ok")
                                {
                                    string userMobile = objUserInfo["info"]["common_field_list"][0]["value"].ToString();
                                    string userName = objUserInfo["info"]["common_field_list"][1]["value"].ToString();
                                    if (!string.IsNullOrEmpty(userMobile))
                                    {
                                        hd_MemMobile.Value = userMobile;
                                        divMemMobile.InnerText = userMobile;
                                        divMemName.InnerText = userName;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                PubFunction.LogError("微信激活会员授权异常:" + ex);
            }
        }


        //通过code换取网页授权access_token
        public string GetAuthorize()
        {
            //PubFunction.curParameter.strWeiXinAppID = "wxcb014df3a2583811";
            //PubFunction.curParameter.strWeiXinAppSecret = "1fb18946950b112cd79103a7b1f9249b";
            if (PubFunction.curParameter.strWeiXinAppID != null && PubFunction.curParameter.strWeiXinAppSecret != null)
            {
                string templateUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
                templateUrl = string.Format(templateUrl, PubFunction.curParameter.strWeiXinAppID, PubFunction.curParameter.strWeiXinAppSecret);
                HttpRequestHelper hrh = new HttpRequestHelper();
                return hrh.Reqeust(templateUrl);
            }
            else
            {
                return "";
            }
        }

        /// 
        /// 发送Post请求到微信端
        /// 
        /// 请求的路径
        /// 发送的数据
        /// 
        public string PostWebRequest(string postUrl, string paramData)
        {
            string ret = string.Empty;
            try
            {
                byte[] byteArray = Encoding.UTF8.GetBytes(paramData); //转化
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
                webReq.Method = "POST";
                webReq.ContentType = "application/json";

                webReq.ContentLength = byteArray.Length;
                Stream newStream = webReq.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);//写入参数
                newStream.Close();
                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                ret = sr.ReadToEnd();
                sr.Close();
                response.Close();
                newStream.Close();
            }
            catch (Exception ex)
            {
                PubFunction.LogError(ex);
            }
            return ret;

        }
    }
}

激活时我使用了一般处理程序来激活的代码如下:这个是根据我的系统做了一个判断,是我系统中的会员才能激活,否则不能激活

#region 跳转式激活会员卡 参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025283   6.6.2
        public void Wx_ActivateCard()
        {
            int flag = 0;
            string access_token = "";
            try
            {
                string strMemMobile = !string.IsNullOrEmpty(Request["memMobile"]) ? Request["memMobile"].ToString() : "";//手机号
                string strCardCode = !string.IsNullOrEmpty(Request["cardCode"]) ? Request["cardCode"].ToString() : "";//卡Code
                string strCardId = !string.IsNullOrEmpty(Request["cardId"]) ? Request["cardId"].ToString() : "";//卡ID
                if (!string.IsNullOrEmpty(strMemMobile))
                {
                    Chain.BLL.Mem bllMem = new Chain.BLL.Mem();
                    DataTable dtMem = bllMem.GetList(" MemMobile=\'" + strMemMobile + "\' ").Tables[0];
                    if (dtMem.Rows.Count > 0)//执行激活(只有系统中的会员才能激活)
                    {
                        string getAuthorize = GetAuthorize();
                        if (getAuthorize != "")
                        {
                            getAuthorize = "[" + getAuthorize + "]";

                            Newtonsoft.Json.Linq.JArray Javascript = (Newtonsoft.Json.Linq.JArray)JsonConvert.DeserializeObject(getAuthorize);
                            Newtonsoft.Json.Linq.JObject obj = (Newtonsoft.Json.Linq.JObject)Javascript[0];

                            if (obj["access_token"] != null && obj["access_token"].ToString() != "")
                            {
                                access_token = obj["access_token"].ToString();
                            }
                            if (!string.IsNullOrEmpty(strCardCode) && !string.IsNullOrEmpty(strCardId))
                            {
                                string postData = "{";
                                postData += "\"membership_number\": \"" + strMemMobile + "\",";
                                postData += "\"code\": \"" + strCardCode + "\",";
                                postData += "\"card_id\": \"" + strCardId + "\"";
                                postData += "}";
                                string postUrl = "https://api.weixin.qq.com/card/membercard/activate?access_token=" + access_token;
                                string result = PostWebRequest(postUrl, postData);

                                if (!string.IsNullOrEmpty(result))
                                {
                                    result = "[" + result + "]";
                                    Newtonsoft.Json.Linq.JArray cardResult = (Newtonsoft.Json.Linq.JArray)JsonConvert.DeserializeObject(result);
                                    Newtonsoft.Json.Linq.JObject cardObj = (Newtonsoft.Json.Linq.JObject)cardResult[0];

                                    if (cardObj["errmsg"] != null && cardObj["errmsg"].ToString() != "")
                                    {
                                        if (cardObj["errmsg"].ToString() == "ok")
                                        {
                                            flag = 1;
                                        }
                                        else
                                        {
                                            flag = -1;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else//禁止激活 
                    {
                        flag = -2;
                    }
                }
                else
                {
                    flag = -1;
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
                flag = -1;
            }
            Context.Response.Write(flag);
        }
        #endregion

 


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
author-avatar
我女神不能F哭不能输丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有