BeeCloudSDKDemo.notify.Page_Load C# (CSharp) Метод

Page_Load() защищенный Метод

protected Page_Load ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
Результат void
        protected void Page_Load(object sender, EventArgs e)
        {
            BeeCloud.BeeCloud.registerApp("c5d1cba1-5e3f-4ba0-941d-9b0a371fe719", "39a7a518-9ac8-4a9e-87bc-7885f33cf18c", "e14ae2db-608c-4f8b-b863-c8c18953eef2", "4bfdd244-574d-4bf3-b034-0c751ed34fee");
            BeeCloud.BeeCloud.setTestMode(false);

            byte[] byts = new byte[Request.InputStream.Length];
            Request.InputStream.Read(byts, 0, byts.Length);
            string req = System.Text.Encoding.UTF8.GetString(byts);
            req = Server.UrlDecode(req);

            JsonData requestData = JsonMapper.ToObject(req);

            string sign = requestData["sign"].ToString();//签名
            long timestamp = long.Parse(requestData["timestamp"].ToString());//时间戳
            string channelType = requestData["channel_type"].ToString();//渠道
            string subChannelType = requestData["sub_channel_type"].ToString();//子渠道
            string transactionType = requestData["transaction_type"].ToString();//支付还是退款还是打款或者订阅
            string tradeSuccess = requestData["trade_success"].ToString();//是否成功
            int transactionFee = int.Parse(requestData["transaction_fee"].ToString());//金额
            //如需取用message_detail的内容
            //JsonData messageDetail = requestData["message_detail"];

            //检查timestamp是否在可信时间段内,阻止在该时间段外重复发送请求
            TimeSpan ts = DateTime.Now - BCUtil.GetDateTime(timestamp);

            //验签, 确保来自BeeCloud
            //根据当前模式使用验签方法
            //生产环境:
            string mySign = BCUtil.GetSign(requestData["timestamp"].ToString());
            //测试环境:  string mySign = BCUtil.GetSignByTestMode(requestData["timestamp"].ToString());
            if (ts.TotalSeconds < 300 && mySign == sign)
            {
                //在处理自己的业务逻辑前,要做以下几步
                // 1. 过滤重复的webhook,如果该webhook的订单之前已经处理过,则忽略新的webhook(渠道有一定几率重复发送相同的webhook)
                // 2. 验证订单金额,客户需要验证Webhook中的 transaction_fee (实际的交易金额)与客户内部系统中的相应订单的金额匹配。

                if (transactionType == "PAY")//收款成功的webhook
                {

                    if (channelType == "ALI")
                    {
                        //......
                    }
                    if (channelType == "UN")
                    {
                        //
                    }
                    if (channelType == "WX")
                    {
                        //
                    }
                    if (channelType == "BC")
                    {
                        //subChannelType是BC_SUBSCRIPTION时候,说明是比可订阅支付
                        if (subChannelType == "BC_SUBSCRIPTION")
                        {
                            //订阅扣款成功的webhook样例
                            //{
                            //    "sign": "b366eda3e40aa396c1445ede5f418223",
                            //    "timestamp": 1469674005187,
                            //    "transaction_id": "238b156b-563b-495e-b649-3b2c671595e8",
                            //    "retryCounter": 0,
                            //    "notifyUrl": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook",
                            //    "transaction_fee": 150,
                            //    "sub_channel_type": "BC_SUBSCRIPTION",
                            //    "transaction_type": "PAY",
                            //    "channel_type": "BC",
                            //    "notify_url": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook",
                            //    "toSign": "95d87fff-989c-4426-812c-21408644cf888aaad136-b899-4793-9564-0ebc72ae86f2",
                            //    "message_detail": {
                            //        "subscription_id": "e0ecd9cc-0fe4-4a1d-bd2f-c36e7d430c50",
                            //        "id_no": "230826198601240832",
                            //        "card_no": "***************0486",
                            //        "err_msg": "",
                            //        "mobile": "15555511114",
                            //        "bank_name": "中国银行",
                            //        "buyer_id": "this_is_a_buyer_id",
                            //        "card_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                            //        "id_name": "xxx",
                            //        "plan_id": "1a73bf15-e227-4d75-8b0f-894629149945"
                            //    },
                            //    "trade_success": true
                            //}
                        }
                    }
                }
                else if (transactionType == "SUBSCRIPTION")//订阅成功的webhook
                {
                    if (channelType == "SUBSCRIPTION")
                    {
                        //subChannelType是BC_SUBSCRIPTION时候,说明是比可订阅支付
                        if (subChannelType == "BC_SUBSCRIPTION")
                        {
                            //订阅成功的webhook样例
                            //{
                            //    "transaction_id": "78500a22-2da1-4302-b55e-7cf2cc01791c",
                            //    "sign": "b366eda3e40aa396c1445ede5f418223",
                            //    "timestamp": 1469674005187,
                            //    "retryCounter": 0,
                            //    "notifyUrl": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook",
                            //    "transaction_fee": 0,
                            //    "sub_channel_type": "BC_SUBSCRIPTION",
                            //    "transaction_type": "SUBSCRIPTION",
                            //    "channel_type": "BC",
                            //    "notify_url": "https://notify.beecloud.cn/2/pay/callback/subscription/webhook",
                            //    "toSign": "95d87fff-989c-4426-812c-21408644cf888aaad136-b899-4793-9564-0ebc72ae86f2",
                            //    "message_detail": {
                            //        "subscription_id": "78500a22-2da1-4302-b55e-7cf2cc01791c",
                            //        "id_no": "230826198601240832",
                            //        "card_no": ****************0486",
                            //        "err_msg": "",
                            //        "mobile": "15555511114",
                            //        "bank_name": "中国银行",
                            //        "buyer_id": "this_is_a_buyer_id",
                            //        "card_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                            //        "id_name": "高健峰",
                            //        "plan_id": "1a73bf15-e227-4d75-8b0f-894629149945"
                            //    },
                            //    "trade_success": true
                            //}
                            //收到订阅成功的webhook,说明用户的卡已经完成订阅,这时可以去把本地的subscription记录中的status改成success,然后发短信告诉用户他订阅成功了巴拉巴拉
                        }
                    }
                }
                //当验签成功后务必返回success字样,通知server获取成功。
                Response.Write("success");
            }
        }