• 首页
  •  
    位置:鹿城圈 » 微信资讯 » 微信学院 » 微信技术院 » 正文

    微信公众平台开发之微信支付--二维码支付代码

    发布日期:2015-11-22  来源:果壳网   浏览次数:114
            核心提示:在大家热切的期盼中,微信移动支付终于能面见公众。腾讯挟用户已突破5亿之势,微信携手“同胞兄弟”财付通如火如荼向第三方支付...
    地名:区域代码:
    镇级街道:区域代码:
    区县级市:电话区号:
    所在城市:邮政编码:
    所在省份:营业时间:
    城市代码:所属商圈:
    车牌号码:电话:
    所属类型:地址:

    在大家热切的期盼中,微信移动支付终于能面见公众。

    腾讯挟用户已突破5亿之势,微信携手“同胞兄弟”财付通如火如荼向第三方支付市场进军。为吸引更多的用户,公司在微信支付还未对外公开时,就已经悄悄上线微信支付,(下一节将给大家分享微信支付开发全过程),这节将为大家分享微信支付二维码支付,就是在消费的时候,您只需要拿出手机,通过微信扫一扫,扫描我们前台的二维码,即可完成支付。整个微信二维码支付过程中的体验无法用言语来形容。

    言归正卷,既然是微信二维码支付,第一步得先生成二维码,这里我直接使用的是腾讯提供的接口(微信二维码生成借口DLL下载)。有需要微信支付生成二维码源代码的,请在下方留言

    生成二维码实例代码:

    效果图如下:

    将上面的DLL下载下来之后,在项目中添加引用,需要引入以下几个命名空间:

    using System.Drawing;

    using ZXing;

    using ZXing.Rendering;

    using ZXing.Common;

    using (System.IO.MemoryStream mstream = new System.IO.MemoryStream())

    {

    System.Drawing.Image qrcodeImg = null;

    var writer = new BarcodeWriter

    {

    Format = BarcodeFormat.QR_CODE,

    Options = new EncodingOptions

    {

    Height = Height,

    Width = Width,

    Margin = 0

    },

    Renderer = (IBarcodeRenderer)Activator.CreateInstance(typeof(BitmapRenderer))

    };

    if (chainnID > 0 && list != null && list.Contains(chainnID))//没有权限

    {

    //开始签名 这里对写入二维码里面的参数进行签名,是为了防止数据被篡改

    string param = string.Format("i={0}&t={1}&showwxpaytitle=1", chainnID, Com.WX.Common.GetDateTimeInt());

    String URL = "http://www.wechatstyle.com";

    string payUrl = string.Format("{0}/forward.aspx?{1}&sign={2}", URL, param, Com.WX.Common.Sign(param)); //支付的地址

    //将支付的地址写入二维码中,用户扫二维码之后会跳转到你写入的地址

    System.Diagnostics.Debug.WriteLine(payUrl);

    qrcodeImg = writer.Write(payUrl);

    }

    else

    {

    qrcodeImg = writer.Write("亲,您已经远离地球了,很危险的?!");

    }

    qrcodeImg.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);

    Response.ClearContent();

    Response.ContentType = "image/Jpeg";

    Response.BinaryWrite(mstream.ToArray());

    mstream.Close();

    qrcodeImg.Dispose();

    }

    支付页面对传递过来的参数进行处理:

    微信支付

    这个界面将数据处理好之后,将通过微信提供的API(微信支付JS核心文件

    )调用微信支付输入密码界面:

    微信支付界面

    支付完成后,微信将回调您的接口,推送交易数据

    在notify接口中,处理微信发过来的数据:微信发过来的参数分两部分,一部分是POST中的xml数据,另一部分是从url中传过来的

    //获取回调参数

    NamevalueCollection namevalues = null;

    string sPrivateKey = "2b6Ujngi2gqTRqJKoBP7Z7dWT5xuqgS5Az8iEZKG9";

    namevalues = Request.Form.Keys.Count > 6 ? Request.Form : Request.QueryString;

    Dictionary dicReceive = new Dictionary();

    List lstReceiveKey = new List();

    foreach (string sKey in namevalues.Keys)

    {

    dicReceive.Add(sKey, Request[sKey]);

    }

    解析POST中的参数

    获取POST参数的代码

    Stream inStream = Request.InputStream;

    BinaryReader br = new BinaryReader(inStream, System.Text.Encoding.Default);

    byte[] byteData = br.ReadBytes((int)inStream.Length);

    string sXml = Common.ToUrlDecode(Encoding.Default.GetString(byteData));

    解析微信支付回调提交过来的数据:

    Xmldocument xmlDoc = new Xmldocument();

    xmlDoc.LoadXml(sXml );

    string sOpenID = xmlDoc.SelectSingleNode("xml/OpenId").InnerText;

    string sAppID = xmlDoc.SelectSingleNode("xml/AppId").InnerText;

    string sIsSubscribe = xmlDoc.SelectSingleNode("xml/IsSubscribe").InnerText;

    string sTimeStamp = xmlDoc.SelectSingleNode("xml/TimeStamp").InnerText;

    string sNonceStr = xmlDoc.SelectSingleNode("xml/NonceStr").InnerText;

    String AppSignature = xmlDoc.SelectSingleNode("xml/AppSignature").InnerText;

    解析之后要进行安全验证,也就是验证签名

    //开始验证签名

    String sToSHA = string.Format("appid={0}&appkey={1}&issubscribe={5}&noncestr={3}&openid={4}×tamp={2}", sAppID, sPrivateKey, sTimeStamp, sNonceStr, sOpenID, sIsSubscribe);

    string sMySign = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sToSHA, "SHA1").ToLower();

    if (sAppSignature == sMySign) //验证成功

    后面就是你自己的业务处理了。业务处理完成之后就是微信支付发货了。发货在下一节微信公众平台开发中讲到!

    本站提供附近位置信息,所有简介资料均由用户发布,不代表本站观点。请注意甄别介绍中的联系方式、诱导购买等信息,谨防诈骗。
    果壳网
    关注图片
    果壳网
    • 果壳网
    • 果壳网是主要面向都市科技青年的社交网站,并提供负责任、有智趣的泛科技主题内容。在这里可以关注感兴趣的人,阅读他们的推荐,...
    • 2013-08-07  [北京]

    ►位置地图◄

    天气预报


    ►全部图片◄

    ►驾车路线◄

    ►骑行路线◄

    ►步行路线◄

    ►网友评论◄

    preview

    果壳网 微信公众号文章推荐

    微信支付绑卡时手机验证码收不到怎么处理?
    好友发送的红包,无法接收到怎么办?
    如何提现收到的红包资金?
    收到的红包可以转发吗
    微信支付更换姓名(注销)的方法
    忘记微信支付密码如何处理?
    微信绑卡时提示与银行信息不符怎么办?
    微信提现时出现异常情况怎么办?
    微信红包零钱的资金还有其他用途吗?
    微信零钱提现什么时间到账?
    微信零钱提现需要收费吗?
    微信红包零钱提现什么时间到账?
    我不是大陆居民,是否可以收红包?
    微信红包如何收红包
    • 微信红包如何收红包
    • 1)收到红包消息=》点击进入红包领取页面=》拆红包=》领取成功;2)领取的红包资金会自动收入零钱,您可以在“钱包”=》“零钱”...
    • 2015-11-25  
    • 微信导航网官方
    微信红包如何提现收到的红包资金?
    微信红包提现限额是多少?
    什么是拼手气群红包?
    微信红包什么是普通红包?
    微信发送红包的限额是多少?
    微信红包好友发送的红包,无法接收到怎么办?
    微信红包如何发送多个红包给同一好友?
    微信如何查看红包发送记录?
    微信红包包好后没有发送,在哪里可以重新再发送?
    微信发出的红包没有领完可以再转发给其他小伙伴吗?
    微信红包包好后没有发出去或者没有被领完,钱可以退回吗?
    微信红包没有被领完的红包在哪里可以查询
    微信如何提现收到的红包资金?
    微信收到的红包资金到哪里去查看?
    微信如何查看收到的红包记录?
    如何关注微信红包公众号?
    分享与收藏:  微信资讯搜索  告诉好友  关闭窗口  打印本文 本文关键字:
     
    微信支付绑卡时手机验证码收不到怎么处理?
    好友发送的红包,无法接收到怎么办?
    • 好友发送的红包,无法接收到怎么办?
    • 好友给您发红包,如果您未看到收红包的提醒信息,建议发红包的好友按照下面的方式可以重发:iOS与Android系统:可以登录微信,点...
    • 2015-11-25  
    • 一般推荐
    如何提现收到的红包资金?
    • 如何提现收到的红包资金?
    • 红包拆开后资金直接进入零钱,您可以进入钱包=》零钱=》提现,选择提现银行、输入提现金额=》再输入支付密码完成即可。温馨提示...
    • 2015-11-25  
    • 一般推荐
    收到的红包可以转发吗
    • 收到的红包可以转发吗
    • 收到红包的小伙伴无法再转发给其他好友哦,需要塞钱进红包,重新发送给其他小伙伴。...
    • 2015-11-25  
    • 一般推荐
    微信支付更换姓名(注销)的方法
    • 微信支付更换姓名(注销)的方法
    • 若微信支付账号已绑定他人姓名的银行卡,现无法绑定本人的银行卡,需要您注销后重新绑定自己的银行卡即可更换为本人的姓名。注销...
    • 2015-11-25  
    • 一般推荐
    忘记微信支付密码如何处理?
    • 忘记微信支付密码如何处理?
    • iOS与Android系统:请登录微信,进入“我”=》钱包=》右上角的三个点=》密码管理=》忘记支付密码=》填写银行卡信息=》输入银行预...
    • 2015-11-25  
    • 一般推荐
    微信绑卡时提示与银行信息不符怎么办?
    • 微信绑卡时提示与银行信息不符怎么办?
    • 一般会提示与银行预留手机不一致。预留手机是在银行开户时填写的手机号码,建议联系银行核对手机号与目前使用的是否一致,不一致...
    • 2015-11-25  
    • 一般推荐
    微信提现时出现异常情况怎么办?
    微信红包零钱的资金还有其他用途吗?
    微信零钱提现什么时间到账?
    • 微信零钱提现什么时间到账?
    • 当天16:00前提现,当天23:59前到账;当天16:00后提现,次日23:59前到账。温馨提示:1、具体到账时间以提现时的页面提示为准...
    • 2015-11-25  
    • 一般推荐
     
    果壳网
    最新出炉微信资讯
    热门标签
    推荐图文
    微信资讯鼎力推荐
    热点图文
     
    网站标志