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

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

memberActivate.aspx页面代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="memberActivate.aspx.cs" Inherits="ChainStock.mobile.member.memberActivate" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>激活会员卡</title><script src="js/jquery.min.js" type="text/javascript"></script><%--<script src="scripts/bootstrap.min.js" type="text/javascript"></script>--%><link href="css/bootstrap.min.css" rel="stylesheet" /><style type="text/css">.no-padding {padding: 0px;}.no-margin {margin: 0px;}.btn_active {background-color: #019a01;width: 100%;padding: 7px 0px;color: white;border: 1px solid #019a01;}.btn_return {background-color: #f8f8f8;width: 100%;padding: 7px 0px;color: black;border: 1px solid #e6e6e6;}</style><script type="text/javascript">$(function () {$(".btn_return").bind("click", function () {event.preventDefault();window.history.back();})});</script>
</head>
<body style="background-color: #f2f2f2;" class="no-padding no-margin"><form id="form1" runat="server"><div class="container no-padding"><br /><div class="col-xs-12"><div class="col-xs-12"><label>请确定以下信息:</label></div></div><div class="clearfix"></div><br /><div style="background-color: white; padding: 30px 0px; border-bottom: 1px solid #dbdbdb; border-top: 1px solid #dbdbdb;"><div class="col-xs-12"><div class="col-xs-3">用户名</div><div class="col-xs-9 no-padding text-left" id="divMemName" runat="server"></div><div class="clearfix"></div></div><div class="col-xs-12" style="padding-top: 10px;"><div class="col-xs-3">手机号</div><div class="col-xs-9 no-padding text-left" id="divMemMobile" runat="server"></div><div class="clearfix"></div></div><div class="clearfix"></div></div><br /><div class="col-xs-12 no-padding"><div class="col-xs-12 text-center"><input type="button" class="btn btn-sm btn_active" value="激活会员卡" id="btnActiveMem" /><input type="hidden" id="hd_MemMobile" value="" runat="server" /><input type="hidden" id="hd_CardCode" value="" runat="server" /><input type="hidden" id="hd_CardId" value="" runat="server" /></div><div class="col-xs-12 text-center"><br /><input type="button" class="btn btn-sm btn_return" value="返 回" /></div><div class="col-xs-12 "><h6 style="color: red;">注:激活后不可修改上面的信息</h6></div><div class="clearfix"></div></div></div></form><script type="text/javascript" src="scripts/jquery-2.1.4.min.js"></script><script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script><script type="text/javascript">$(function () {//激活会员卡$("#btnActiveMem").click(function () {$.ajax({type: "GET",url: "../../Service/AjaxService.ashx?Method=Wx_ActivateCard",data: {memMobile: $("#hd_MemMobile").val(),cardCode: $("#hd_CardCode").val(),cardId: $("#hd_CardId").val()},dataType: "text",success: function (result) {if (result != null && result != "") {switch (result) {case "0":alert("系统错误,请稍后再试");break;case "-1":alert("系统异常,请联系管理员");break;case "-2":alert("您还不是会员,激活失败");break;default:alert("激活成功");wx.closeWindow();//这一步就是会员激活了之后就自动跳转到会员卡详细页面
                            }}}});});})</script>
</body>
</html>

后台代码:

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_tokenpublic 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 "";}}/// <summary>/// 发送Post请求到微信端/// </summary>/// <param name="postUrl">请求的路径</param>/// <param name="paramData">发送的数据</param>/// <returns></returns>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.2public 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() : "";//卡Codestring strCardId = !string.IsNullOrEmpty(Request["cardId"]) ? Request["cardId"].ToString() : "";//卡IDif (!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

转载于:https://www.cnblogs.com/LoveQin/p/10176045.html

C# 微信开发-----微信会员卡(三)激活会员卡相关推荐

  1. 微信开发 ━━ 微信商户v3微信支付H5方式开发之php篇

    native方式开发纪要:<微信开发 ━━ 微信商户native方式支付v3开发之php篇> 一.流程 流程是必须要弄懂的,弄懂之后遇到问题也能知道出在哪里. 官方说明:<H5支付统 ...

  2. C# 微信开发-----微信会员卡(一)

    这是微信的官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025283,能看懂的朋友就请不要往下看了,我是看不懂 ...

  3. C# 微信开发-----微信会员卡(二)

    主要说说如何使用微信的激活会员卡 如图: 点击激活会员卡时,要跳转到如下的图片: 要实现这个功能,首先我们在创建会员卡后就操作如下代码 #region 添加激活时的自定义字段string custom ...

  4. 微信开发---微信网页授权、JS-SDK和微信公众号的基本设置

    用了好几个小时的时间,整理了一下关于公众号的思维导图,由于CSDN不能上传相对应的文件,所以萍子一一的分解开的截图附上来,希望对大家有所帮助哦~ 因为是电脑设备自动截图,又鉴于内容比较多,可能不是太清 ...

  5. 微信开发-微信公共账号申请与接入(1)

    接触微信已经一年啦,也算是有点小体会啦,大大小小的项目也做了些,在此温故知新也.在接下来的博客中,我会从申请到开发微信项目做下简单的介绍,方便新手学习,也请大神们多多指点哈 首先要想开发微信公共号,你 ...

  6. 微信开发 ━━ 微信商户v3微信支付回调之php篇

    开发内容都在这里: 微信支付API v3 证书和回调报文解密 在微信支付时提供一个回调地址,支付完成后微信会向这个回调地址发送一个json格式的报文,将报文内容解密后获取订单号等数据 报文内容: {& ...

  7. [微信开发] 微信公众号被关注后如何回复多条消息?

    当开发微信公众号接口的时候,第一次关注以后,可以给用户回复多条自动回复消息 需要用到客服接口的功能,公众号是认证的订阅号或者是服务号 当收到关注事件以后,调用客户接口的回复消息功能,可以回复多条 可以 ...

  8. 微信开发--微信公众号相关配置--添加子管理员

    微信公众号一般由客户申请,客户方会有一位微信公众号的超级管理员管理公众号: 为了方便开发,开发者最好成为微信公众号的子管理员,下面将说明如何添加微信公众号子管理员 首先从客户那里获取到所开发微信公众号 ...

  9. 微信开发 ━━ 微信支付之商户API证书获得

    微信开发需要用到商户平台密钥,可用于生成签名等工作.操作时跟着提示一步一步走就行了,里面下载的最新软件链接都有. 进入商户平台 => 账户中心 => API安全 => API证书 = ...

最新文章

  1. COGS 2769. mk去撸串
  2. 模型转换状态已支持Webhook!
  3. python背景虚化
  4. leetcode算法题--简化路径
  5. Python中必知的知识点:文本转义及编码的常用方法
  6. .NET Core VS Code 环境配置
  7. 【bzoj1010-toy】斜率优化入门模板
  8. php打包压缩下载多大,php多文件打包压缩下载简单示例
  9. Java中数组的初始化
  10. c#endread怎么打印出来_C#教程之打印和打印预览
  11. 手把手教你架构3D引擎高级篇系列四
  12. 【ManageEngine】IP地址扫描的作用
  13. 20220315_K近邻
  14. Android蓝牙简介
  15. mysql5.1.35_在Windows上安装MySql 5.1.35 Noinstall版
  16. 转载 解密蓝牙mesh系列 | 第七篇【低功耗蓝牙】【承载层(bearer layer)】【节点与特性】【代理节点(Proxy Node)】【蓝牙mesh代理服务】【发现代理节点】【代理协议】
  17. TensorFlow识别图片数字
  18. 深度知识追踪(Deep Knowledge Tracing)·论文学习归纳
  19. Coremail邮件安全竞赛正式启动
  20. 如何无需开发集成易快报、金蝶等第三方应用

热门文章

  1. Python 修改AD账号密码(二)- 修改域账号密码
  2. IIS无法下载文件的原因及解决方法
  3. Comsol学习笔记1:三种瞬态求解器的选择
  4. 基于Autoware分析runtime manager人机交互界面模块作用
  5. 利用c51单片机实现测频仪(基于proteus仿真)
  6. 《和声学教程》学习笔记(一):原位正三和弦及连接
  7. i513400f和i512400f差距 i5 13400f和i5 12400f区别对比
  8. 【MySQL高级篇】第06章_索引的数据结构
  9. 多媒体技术是利用计算机对,计算机多媒体技术对影视后期制作的应用
  10. 实验五 构造函数和析构函数