using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Specialized;
using System.Data;
using xabaraCOM;
using alipayfastlogin;

/// <summary>
/// 功能：页面跳转同步通知页面
/// 版本：3.3
/// 日期：2012-07-10
/// 说明：
/// 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
/// 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。
/// 
/// ///////////////////////页面功能说明///////////////////////
/// 该页面可在本机电脑测试
/// 可放入HTML等美化页面的代码、商户业务逻辑程序代码
/// 该页面可以使用ASP.NET开发工具调试，也可以使用写文本函数LogResult进行调试
/// </summary>

public partial class member_api_alipayReturnUrl : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SortedDictionary<string, string> sPara = GetRequestGet();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            Notify aliNotify = new Notify();
            bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

            if (verifyResult)//验证成功
            {
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码


                //——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
                //获取支付宝的通知返回参数，可参考技术文档中页面跳转同步通知参数列表

                //支付宝用户号
                string user_id = Request.QueryString["user_id"];

                //授权令牌
                string token = Request.QueryString["token"];

                //判断是否在商户网站中已经做过了这次通知返回的处理
                //如果没有做过处理，那么执行商户的业务程序
                //如果有做过处理，那么不执行商户的业务程序

                //打印页面
                //Response.Write("验证成功<br />");

                //——请根据您的业务逻辑来编写程序（以上代码仅作参考）——

                sqlServer sql = new sqlServer();
                javasrcipt js = new javasrcipt();
                user u = new user();
                webPublic wp = new webPublic();

                string alipayID = "alipay_" + user_id;
                DataTable dt;
                string strSql = "select * from XabaraUser where alipayID='" + alipayID + "'";
                dt = sql.getDataTable(strSql);
                if (dt.Rows.Count > 0)
                {
                    string email = dt.Rows[0]["userEmail"].ToString().Trim();
                    if (string.IsNullOrEmpty(email as string))  //检查有效邮箱
                    {
                        js.div(true, "电子邮箱", "text", "请填写您的电子邮箱！", 0, 0, "/member/user/edit.aspx", "top");
                    }
                    else
                    {
                        u.login(dt.Rows[0]["userCardID"].ToString().Trim(), email, "", "", true, false);
                    }
                }
                else
                {
                    wp.regUser("alipay^" + alipayID, user_id + "@alipay.com", "", xabara.rnd("abc123", 8), "aliPay一键登录");
                }
                dt.Dispose();
            }
            else//验证失败
            {
                Response.Write("验证失败");
            }
        }
        else
        {
            Response.Write("无返回参数");
        }
    }

    /// <summary>
    /// 获取支付宝GET过来通知消息，并以“参数名=参数值”的形式组成数组
    /// </summary>
    /// <returns>request回来的信息组成的数组</returns>
    public SortedDictionary<string, string> GetRequestGet()
    {
        int i = 0;
        SortedDictionary<string, string> sArray = new SortedDictionary<string, string>();
        NameValueCollection coll;
        //Load Form variables into NameValueCollection variable.
        coll = Request.QueryString;

        // Get names of all forms into a string array.
        String[] requestItem = coll.AllKeys;

        for (i = 0; i < requestItem.Length; i++)
        {
            sArray.Add(requestItem[i], Request.QueryString[requestItem[i]]);
        }

        return sArray;
    }
}