微信摇一摇红包功用

摇一摇周边红包接口是为线下商户提供的发红包功效。用户可以在商家门店等线下场面通过摇一摇周边领取商家发放的红包。我曾经在《C#支付微信门户及应用(28)–微信“摇一摇·周边”功用的选择和接口的落到实处》介绍过微信摇一摇的有关管理,包涵页面、设备之间的关系,以及拔取等地点内容。本篇继续介绍摇一摇设备的别的一项功用,摇一摇红包功能,介绍怎么着选取微信摇摇周边的后台配置好页面及地址,然后通过微信JSSDK的措施,摇一摇获取红包的整个流程效用。

1、微信摇一摇红包成效介绍

职能表明

摇一摇周边红包接口是为线下商户提供的发红包作用。用户可以在商家门店等线下场地通过摇一摇周边领取商家发放的红包,在线上转账分享无效。

开发者可通过接口开发摇一摇红包作用,特点包罗:

  1. 可挑选选用模板加载页或自定义Html5页面调起微信原生红包页面(详见创制红包活动中use_template字段,1为使用模板,2为利用自定义Html5页面)
  2. 原生红包页面拆红包,无需通过群众号新闻发出
  3. 提供关爱群众号能力,用户可活动选取是还是不是关怀(裂变红包分享时不济)
  4. 形成页面可计划跳转链接,可跳转商户的其余自定义Html5页面
  5. 同一个用户在单个红包活动中只能提取1次红包

用户侧交互流程

正规的摇一摇红包的流程如下所示,那里没有利用用户自定义的沙盘,也就是利用系统内置的(努力加载中。。。)的页面,红包必要协调拆开。

图片 1

红包组件接口调用流程

  1. 报名红包接口权限:登录摇一摇周边商户后台https://zb.weixin.qq.com ,进入开发者协理,申请开通摇一摇红包组件接口;
  2. 红包预下单:调用微信支付的api进行红包预下单,告知必要发放的红包金额,人数,生成红包ticket;
  3. 制造活动并录入红包信息:调用摇周边平台的api录入创立红包活动并录入音信,传入预下单时生成的红包ticket;
  4. 调用jsapi抽红包:在摇出的页面中经过调用jsapi抽红包,抽中红包的用户可以拆红包;
  5. 调用以上接口时,红包提供商户和红包发给商户公众号必要一律。

摇一摇红包的处理进度可以先的流程表达,申请权限后,要求在摇一摇后台配置相关的红包处理页面,然后通过红包接口处理提交红包数量,最终经过摇一摇的配备摇出界面,使用JSAPI完结抽取红包的操作,具体经过如下所示。

图片 2

中间红包接口处理,是调用一系列的红包接口达成的,包涵红包预下单、创立红包活动、录入红包新闻等操作,如下所示。

图片 3 

摇一摇红包作用开通在后台获取接口即可,如下所示。

图片 4

如果已经有连锁的摇一摇设备(倘若没有或者须要出席新的摇一摇设备,请参考上篇小说《C#支付微信门户及运用(28)–微信“摇一摇·周边”成效的行使和接口的贯彻》的相关介绍,有了设施后在页面管理中添加一个页面,用来处理摇一摇的音讯的。

图片 5

页面的音讯,就是添加自定义链接界面,如下所示。

图片 6

接下来配置好URL地址接口,URL地址还亟需考虑什么得到用户的openid,因为摇一摇红包接口必要求赢得当前用户的openid音信,大家得以经过重定向的方法,使用code获取相应的openid新闻,具体后边详细介绍。

图片 7

 

2、红包接口处理

前边介绍了,红包接口处理,是调用一层层的红包接口落成的,包含红包预下单、成立红包活动、录入红包新闻等操作,如下所示。

图片 8 

那么我们就必要各自对这几个操作进行打包,并交付有关的数额了。

基于前边随笔《C#支付微信门户及运用(33)–微信现金红包的包装及采用》里面的平整,大家把摇一摇的连带接口也放在那一个ILotteryApi接口和LotteryApi落成类里面,如下所示。

图片 9

下面的摇一摇红包接口整体是依照上面的接口和落到实处类举办宏观处理的。

 

1)红包预下单

接口表明

设置单个红包的金额,类型等,生成红包音讯。预下单完毕后,需求在72钟头内调用jsapi完结抽红包的操作。(红包过期失效后,资金会退回到商户财付通帐号。)

接口调用表明

服务器端调用
http请求方式: POST
https://api.mch.weixin.qq.com/mmpaymkttransfers/hbpreorder
POST数据格式:XML
需要商户证书

请求示例

<xml>     
<sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>     
<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>     
<mch_id><![CDATA[10000097]]></mch_id>     
<wxappid><![CDATA[wxcbda96de0b165486]]></wxappid>     
<send_name><![CDATA[send_name]]></send_name>     
<hb_type><![CDATA[NORMAL]]></hb_type>     
<auth_mchid><![CDATA[10000098]]></auth_mchid>     
<auth_appid><![CDATA[wx7777777]]></auth_appid>     
<total_amount><![CDATA[200]]></total_amount>     
<amt_type><![CDATA[ALL_RAND]]></amt_type>     
<total_num><![CDATA[3]]></total_num>     
<wishing><![CDATA[恭喜发财 ]]></wishing>     
<act_name><![CDATA[ 新年红包 ]]></act_name>     
<remark><![CDATA[新年红包 ]]></remark>     
<risk_cntl><![CDATA[NORMAL]]></risk_cntl>     
<nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str>
</xml>

回去数据印证

重回格式为xml

事业有成示范

<xml>     
<return_code><![CDATA[SUCCESS]]></return_code>     
<return_msg><![CDATA[发放成功.]]></return_msg> 
<result_code><![CDATA[SUCCESS]]></result_code> 
<err_code><![CDATA[0]]></err_code>     
<err_code_des><![CDATA[发放成功.]]></err_code_des>     
<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno> 
<mch_id>10010404</mch_id>     
<wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid>     
<sp_ticket><![CDATA[0cca98c8c8e814883]]></sp_ticket> 
<total_amount>3</total_amount>     
<detail_id><![CDATA[001001040420141117000004888]]></detail_id> 
<send_time><![CDATA[20150101080000]]></send_time> 
</xml>  

未果示例

<xml>     
<return_code><![CDATA[FAIL]]></return_code>     
<return_msg><![CDATA[系统繁忙,请稍后再试.]]></return_msg>     
<result_code><![CDATA[FAIL]]></result_code>     
<err_code><![CDATA[268458547]]></err_code>     
<err_code_des><![CDATA[系统繁忙,请稍后再试.]]></err_code_des>     
<mch_billno><![CDATA[0010010404201411170000046542]]></mch_billno>             
<mch_id>10010404</mch_id>     
<wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid>      
<total_amount>3</total_amount> 
</xml>

根据请求参数的证实,以及再次回到的结果,大家可以分级定义它们的传入参数和传唱参数,具体的红包预下单的接口定义如下

        /// <summary>
        /// 红包预下单接口。需要商户证书
        /// 设置单个红包的金额,类型等,生成红包信息。预下单完成后,需要在72小时内调用jsapi完成抽红包的操作。(红包过期失效后,资金会退回到商户财付通帐号。)
        /// </summary>
        /// <param name="data">传入参数数据</param>
        /// <returns></returns>
        LotteryPreOrderResult LotteryPreOrder(LotteryPreOrderData info);

内部LotteryPreOrderResult重返的目标结果如下所示,主要的新闻是要记录sp_ticket,方今没有经过API接口获取已经预下单红包的sp_ticket新闻,所以肯定要先记下好,后边在录入红包的时候,必要利用到那几个单子。

    public class LotteryPreOrderResult : PayResult
    {
        /// <summary>
        /// 商户订单号
        /// </summary>
        public string mch_billno { get; set; }
        /// <summary>
        /// 公众账号appid
        /// </summary>
        public string wxappid { get; set; }
        /// <summary>
        /// 总付款金额,单位分
        /// </summary>
        public int total_amount { get; set; }
        /// <summary>
        /// 一个普通红包对应一个ticket
        /// </summary>
        public string sp_ticket { get; set; }
        /// <summary>
        /// 红包内部订单号
        /// </summary>
        public string detail_id { get; set; }
        /// <summary>
        /// 红包发放时间 
        /// </summary>
        public string send_time { get; set; }
    }

 

2)成立红包活动

接口表达

制造红包活动,设置红包活动有效期,红包活动开关等中央新闻,重回活动id

接口调用表明

服务器端调用
http请求方式: POST
URL: https://api.weixin.qq.com/shakearound/lottery/addlotteryinfo?access_token=ACCESSTOKEN&use_template=1&logo_url=”LOGO_URL”

请求参数表达

参数 类型 说明
access_token string accesstoken,以参数的形式拼装在url后
use_template int 是否使用模板,1:使用,2:不使用,以参数的形式拼装在url后。(模版即交互流程图中的红包加载页,使用模板用户不需要点击可自动打开红包;不使用模版需自行开发HTML5页面,并在页面调用红包jsapi)
logo_url string 使用模板页面的logo_url,不使用模板时可不加。展示在摇一摇界面的消息图标。图片尺寸为120×120。

POST BODY:JSON格式的结构体,具体新闻不在赘述,但是值得表明的是中间的Key是索要小心的,那个值一定必要利用一个确定的值,因为必要和前边的抽取红包的签署处理一致,否则会出错不可能抽取红包。

参数 类型 说明
title string 抽奖活动名称(选择使用模板时,也作为摇一摇消息主标题),最长6个汉字,12个英文字母。
desc string 抽奖活动描述(选择使用模板时,也作为摇一摇消息副标题),最长7个汉字,14个英文字母。
onoff int 抽奖开关。0关闭,1开启,默认为1
begin_time long 抽奖活动开始时间,unix时间戳,单位秒
expire_time long 抽奖活动结束时间,unix时间戳,单位秒,红包活动有效期最长为91天
sponsor_appid string 红包提供商户公众号的appid,需与预下单中的公众账号appid(wxappid)一致
total long 红包总数,红包总数是录入红包ticket总数的上限,因此红包总数应该大于等于预下单时红包ticket总数。
jump_url string 红包关注界面后可以跳转到第三方自定义的页面
key string 开发者自定义的key,用来生成活动抽奖接口的签名参数,长度32位。使用方式见sign生成规则

请求示例

Content-Type: application/json Post Body:
{                                                            
 "title": "title",                           
 "desc": "desc",                             
 "onoff": 1,                                 
 "begin_time": 1428854400,                            
 "expire_time": 1428940800,                           
 "sponsor_appid": "wxxxxxxxxxxxxxx",
 "total": 10,
 "jump_url": JUMP_URL,     
 "key": "keyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"                            
}

回去数据证实

示例

{     
 "errcode":0,     
 "errmsg":"",     
 "lottery_id":"xxxxxxllllll", 
 "page_id":1, 
}

据悉地点的接口定义和接口参数表明,大家可以定义成立红包活动的接口定义,如下所示

        /// <summary>
        /// 创建红包活动,设置红包活动有效期,红包活动开关等基本信息,返回活动id
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="useTempate">是否使用模板</param>
        /// <param name="login_url">使用模板页面的logo_url,不使用模板时可不加。展示在摇一摇界面的消息图标。图片尺寸为120x120。</param>
        /// <returns></returns>
        AddLotterResult AddLotteryInfo(string accessToken, bool useTempate, string login_url, AddLotteryJson json);

其间AddLotteryResult为大家定义的接口处理结果,紧要要求记录其中的LotteryID,那么些值必要在后头的录入红包接口使用到。

    /// <summary>
    /// 添加红包活动的结果
    /// </summary>
    public class AddLotterResult : ErrorJsonResult
    {
        /// <summary>
        /// 生成的红包活动id
        /// </summary>
        public string lottery_id { get; set; }
        /// <summary>
        /// 生成的模板页面ID  
        /// </summary>
        public int page_id { get; set; }
    }

 

3)录入红包信息

在红包预下单,以及开创红包活动后,就须求把前面两者的新闻涉及起来,那个操作就是录入红包消息,录入红包音信包罗提交红包活动的ID,以及红包预下单的sp_ticket的单据新闻,那样就足以让用户抽取具体的红包新闻了。

接口表达

在调用”创立红包活动”接口之后,调用此接口录入红包音讯。注意,此接口每一次调用,都会向某个活动新增一批红包音信,假诺红包数少于100个,请通过一遍调用添加所有红包音信。如若红包数大于100,可以频仍调用接口添加。请留意保管多次录入的红包ticket总的数目不超过创建该红包活动时设置的total值。

接口调用表明

服务器端调用
http请求方式: POST
URL:https://api.weixin.qq.com/shakearound/lottery/setprizebucket?access_token=ACCESSTOKEN

POST BODY:JSON格式的结构体

参数 类型 说明
lottery_id string 红包抽奖id,来自addlotteryinfo返回的lottery_id
mchid string 红包提供者的商户号,,需与预下单中的商户号mch_id一致
sponsor_appid string 红包提供商户公众号的appid,需与预下单中的公众账号appid(wxappid)一致
prize_info_list json数组 红包ticket列表,如果红包数较多,可以一次传入多个红包,批量调用该接口设置红包信息。每次请求传入的红包个数上限为100
ticket string 预下单时返回的红包ticket,单个活动红包ticket数量上限为100000个,可添加多次。

呼吁示例

Content-Type: application/json Post Body:
{     
"lottery_id": "xxxxxxllllll",     
"mchid": "10000098",     
"sponsor_appid": "wx8888888888888888"     
"prize_info_list": [         
     {            
   "ticket": "v1|ZiPs2l0hpMBp3uwGI1rwp45vOdz/V/zQ/00jP9MeWT+e47/q1FJjwCIP34frSjzOxAEzJ7k2CtAg1pmcShvkChBWqbThxPm6MBuzceoHtj79iHuHaEn0WAO+j4sXnXnbGswFOlDYWg1ngvrRYnCY3g==",                                   
     }
   ]
}

重回数据评释

示例

{         
"errcode":0,     
"errmsg":"",     
"repeat_ticket_list":[         
     {            
"ticket": "v1|ZiPs2l0hpMBp3uwGI1rwp45vOdz/V/zQ/00jP9MeWT+e47/q1FJjwCIP34frSjzOxAEzJ7k2CtAg1pmcShvkChBWqbThxPm6MBuzceoHtj79iHuHaEn0WAO+j4sXnXnbGswFOlDYWg1ngvrRYnCY3g==",                       
     }            
  ]     
"success_num":100 
}

基于那个接口定义和传递参数新闻,大家能够定义录入红包的接口。

        /// <summary>
        /// 录入红包信息
        /// 在调用"创建红包活动"接口之后,调用此接口录入红包信息。
        /// 注意,此接口每次调用,都会向某个活动新增一批红包信息,如果红包数少于100个,请通过一次调用添加所有红包信息。
        /// 如果红包数大于100,可以多次调用接口添加。请注意确保多次录入的红包ticket总的数目不大于创建该红包活动时设置的total值。
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="json">录入红包信息</param>
        /// <returns></returns>
        SetPrizeBucketResult SetPrizeBucket(string accessToken, SetPrizeBucketJson json);

中间录入红包重返的结果类SetPrizeBucketResult 定义如下所示。

    /// <summary>
    /// 录入红包返回的结果
    /// </summary>
    public class SetPrizeBucketResult : ErrorJsonResult
    {
        /// <summary>
        /// 重复使用的ticket列表,如为空,将不返回
        /// </summary>
        public List<PrizeTicket> repeat_ticket_list { get; set; }
        /// <summary>
        /// 过期的ticket列表,如为空,将不返回
        /// </summary>
        public List<PrizeTicket> expire_ticket_list { get; set; }
        /// <summary>
        /// 金额不在大于1元,小于1000元的ticket列表,如为空,将不返回
        /// </summary>
        public List<PrizeTicket> invalid_amount_ticket_list { get; set; }
        /// <summary>
        /// 原因:生成红包的时候,授权商户号auth_mchid和auth_appid没有写摇周边的商户号
        /// </summary>
        public List<PrizeTicket> wrong_authmchid_ticket_list { get; set; }
        /// <summary>
        /// ticket解析失败,可能有错别字符或不完整    
        /// </summary>
        public List<PrizeTicket> invalid_ticket_list { get; set; }

        /// <summary>
        /// 成功录入的红包数量
        /// </summary>
        public int success_num { get; set; }
    }

 

3、红包接口的应用及JSAPI的摇一摇页面处理

前方表明了连带的接口音信和对应的结果类的定义,我们切实在根据有关的认证,达成接口的处理就可以了,这一个小节介绍如何运用这么些接口,达成大家对摇一摇红包的万事工艺流程的拍卖。

如首先步,调用红包预下单处理。

        string sp_ticket = "";
        /// <summary>
        /// 红包预下单,并记录红包的ticket信息
        /// </summary>
        private void btnHbPreOrder_Click(object sender, EventArgs e)
        {
            LotteryPreOrderData info = new LotteryPreOrderData()
            {
                total_amount = 100,
                total_num = 1,
                act_name = "恭喜发财",
                remark = "恭喜发财",
                wishing = "恭喜发财",
            };
            var result = hbApi.LotteryPreOrder(info);
            sp_ticket = result.sp_ticket;//赋值,方便下面的录入红包操作
            Console.WriteLine(XmlConvertor.FormatXml(result.ToXml()));
        }

第二部创设红包活动,如下所示。

        string lotteryId = "";
        /// <summary>
        /// 创建红包活动,并记录活动的ID
        /// </summary>
        private void btnCreateLottery_Click(object sender, EventArgs e)
        {
            AddLotteryJson json = new AddLotteryJson()
            {
                begin_time = DateTime.Now.DateTimeToInt(),
                expire_time = DateTime.Now.AddDays(90).DateTimeToInt(),
                title = "测试红包",
                desc = "测试红包",
                sponsor_appid = this.AppId,
                onoff = 1,
                total = 1, 
                jump_url = "http://www.iqidi.com",
                key = accountInfo.PayAPIKey
            };

            var result = hbApi.AddLotteryInfo(token, false, null, json);
            lotteryId = result.lottery_id;//赋值方便查询红包

            Console.WriteLine(result.ToJson());
        }

其三步,根据红包预下单结果和红包活动创办结果,录入红包音信

        /// <summary>
        /// 录入红包信息,供使用摇一摇页面处理
        /// </summary>
        private void btnSetHB_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(sp_ticket))
            {
                MessageUtil.ShowError("红包票据ticket为空");
                return;
            }

            SetPrizeBucketJson json = new SetPrizeBucketJson()
            {
                lottery_id = lotteryId, //使用前面的红包活动
                mchid = accountInfo.MchID,
                sponsor_appid = accountInfo.AppID,
                prize_info_list = new List<PrizeTicket>()
                {
                    new PrizeTicket() { ticket = sp_ticket},//使用前面的红包预下单ticket
                }
            };
            var result = hbApi.SetPrizeBucket(this.token, json);
            Console.WriteLine("录入红包的结果:");
            Console.WriteLine(result.ToJson());
        }

第四步,配置好重定向的页面,方便获取用户的openid

1)用户同意授权,获取code

其一手续,大家应用的是“网页授权获取用户基本音讯”操作,其中相关的新闻验证如下所示。

在保管微信公众账号拥有授权功效域(scope参数)的权柄的前提下(服务号获得高级接口后,默许拥有scope参数中的snsapi_base和snsapi_userinfo),率领关心者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

一发令人瞩目:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问

参考链接(请在微信客户端中打开此链接体验)
Scope为snsapi_base
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
Scope为snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

更是令人瞩目:跳转回调redirect_uri,应当选择https链接来确保授权code的安全性。

那样,如若大家布置的连天为http://www.iqidi.com/JSSDKTest/RedPack?uid=iqidiSoftware
,其中uid为大家相应的账号名称。

那就是说大家根据下边规则,获得重定向的连接地址就是之类所示。

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3a%2f%2fwww.iqidi.com%2fJSSDKTest%2fRedPack%3fuid%3diqidiSoftware&response_type=code&scope=snsapi_base&state=state#wechat_redirect

2)通过code换取网页授权access_token

第一请留心,那里透过code换取的是一个与众分歧的网页授权access_token,与功底支撑中的access_token(该access_token用于调用其余接口)分裂。公众号可通过下述接口来博取网页授权access_token。假诺网页授权的成效域为snsapi_base,则本步骤中获得到网页授权access_token的还要,也获取到了openid,snsapi_base式的网页授权流程即到此甘休。

愈来愈令人瞩目:由于公众号的secret和获得到的access_token安全级别都不行高,必须只保存在服务器,差异意传给客户端。后续刷新access_token、通过access_token获取用户信息等手续,也非得从服务器发起。

恳请方法

获取code后,请求以下链接获取access_token: 
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数表明

 

图片 10

在切切实实的页面里面,我们得以得到有关的参数,如uid我们可以把它转换为大家相应的账号音信,如下所示。

        /// <summary>
        /// 根据账号名获取对应的对象
        /// </summary>
        /// <returns></returns>
        private AccountInfo GetAccount()
        {
            AccountInfo accountInfo = null;
            string accountNo = Request.QueryString["uid"];
            if (!string.IsNullOrEmpty(accountNo))
            {
                accountInfo = BLLFactory<Account>.Instance.FindByAccountNo(accountNo);
            }
            return accountInfo;
        }

而里面的code,我们依照那一个音信,也足以拿走用户的相关音讯,大家需求得到访问用户的openid,如下所示。

                string code = Request.QueryString["code"];
                IBasicApi baseApi = new BasicApi();
                var result = baseApi.GetAuthToken(accountInfo.UniteAppId, accountInfo.UniteAppSecret, code);
                if (result != null && !string.IsNullOrEmpty(result.openid))
                {
                    var openid = result.openid;

有了这个信息,大家就足以创设大家的红包参数,并打包好签名了。

                    WxPayData data = new WxPayData();
                    data.SetValue("openid", openid);
                    data.SetValue("lottery_id", lottery_id);
                    data.SetValue("noncestr", data.GenerateNonceStr());
                    data.SetValue("sign", data.MakeSign(accountInfo.PayAPIKey));

然后,我们在后台,把那些新闻赋值给ViewBag,就足以在页面上无往不利使用了。

                    var sign = data.GetString("sign");//获取生成的sign
                    var noncestr = data.GetString("noncestr");//获取生成的sign

                    ViewBag.sign = sign;
                    ViewBag.lottery_id = lottery_id;
                    ViewBag.openid = openid;
                    ViewBag.noncestr2 = noncestr;

在摇一摇红包的拍卖视图页面里面,大家先引入对应的js文件,如下所示

    <title>摇一摇红包页面</title>
    <link rel="stylesheet" href="http://demo.open.weixin.qq.com/jssdk/css/style.css?ts=1420774989">
    <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js"></script>
    <script type="text/javascript" src="http://zb.weixin.qq.com/app/shakehb/BeaconShakehbJsBridge.js"></script>

下一场在JS里面添加相关的处理函数,并赋值给相应的接口参数。

    <script type="text/javascript">
    BeaconShakehbJsBridge.ready(function () {
        //跳转到抽红包页面
        BeaconShakehbJsBridge.invoke('jumpHongbao', {
            lottery_id: '@ViewBag.lottery_id',
            noncestr: '@ViewBag.noncestr2',
            openid: '@ViewBag.openid',
            sign: '@ViewBag.sign'
        });
    });
    </script>

末段,大家测试相关的结果,使用手机摇一摇获得红包的进程界面效果如下所示。

图片 11  图片 12

图片 13  图片 14

 

若果对这么些《C#支付微信门户及使用》体系感兴趣,可以关心自身的其他小说,种类小说如下所示:

C#支付微信门户及运用(38)–微信摇一摇红包作用

C#开发微信门户及应用(37)–微信公众号标签管理职能

C#支出微信门户及运用(36)–微信卡劵管理的包装操作

C#支付微信门户及应用(35)–微信支付之公司付款封装操作

C#付出微信门户及采用(34)–微信裂变红包

C#支出微信门户及应用(33)–微信现金红包的包裹及利用

C#支付微信门户及采纳(32)–微信支付接入和API封装使用

C#付出微信门户及应用(31)–微信语义掌握接口的落到实处和处理

C#支出微信门户及选拔(30)–音信的群发处理和预览功能

C#支付微信门户及利用(28)–微信“摇一摇·周边”作用的运用和接口的贯彻

C#开发微信门户及应用(27)-公众号模板新闻管理 

C#付出微信门户及运用(26)-公众号微信资料管理

C#支出微信门户及应用(25)-微信公司号的客户端管住职能

C#开发微信门户及接纳(24)-微信小店货架音信保管

C#付出微信门户及应用(23)-微信小店商品管理接口的包装和测试

C#支出微信门户及选择(22)-微信小店的开销和动用

C#支付微信门户及利用(21)-微信公司号的音讯和事件的吸收处理及解密 

C#开发微信门户及使用(20)-微信集团号的食谱管理

C#付出微信门户及采用(19)-微信集团号的新闻发送(文本、图片、文件、语音、视频、图文音讯等)

C#开发微信门户及运用(18)-微信公司号的通信录管理支付之成员管理

C#付出微信门户及应用(17)-微信集团号的通讯录管理支出之部门管理

C#支出微信门户及使用(16)-微信公司号的布署和拔取

C#支付微信门户及运用(15)-微信菜单伸张扫一扫、发图片、发地理地点成效

C#支付微信门户及应用(14)-在微信菜单中应用重定向获取用户数据

C#开发微信门户及使用(13)-使用地理地点扩张相关应用

C#付出微信门户及运用(12)-使用语音处理

C#支出微信门户及使用(11)–微信菜单的有余表现方法介绍

C#支付微信门户及运用(10)–在管理系列中联手微信用户分组音讯

C#开发微信门户及利用(9)-微信门户菜单管理及提交到微信服务器

C#付出微信门户及使用(8)-微信门户应用管理种类机能介绍

C#支出微信门户及利用(7)-微信多客服作用及开发集成

C#支付微信门户及使用(6)–微信门户菜单的管住操作

C#付出微信门户及运用(5)–用户分组音信保管

C#支出微信门户及使用(4)–关心用户列表及详细音讯管理

C#支付微信门户及运用(3)–文本音讯和图文音信的答疑

C#开发微信门户及应用(2)–微信信息的拍卖和答复

C#付出微信门户及采用(1)–初始接纳微信接口

 

相关文章