/// <summary> /// 构造函数 /// 从配置文件中初始化变量 /// </summary> /// <param name="inputPara">通知返回来的参数数组</param> /// <param name="notify_id">验证通知ID</param> /// <param name="partner">合作身份者ID</param> /// <param name="key">安全校验码</param> /// <param name="input_charset">编码格式</param> /// <param name="sign_type">签名类型</param> /// <param name="transport">访问模式</param> public AlipayNotify(SortedDictionary <string, string> inputPara, string notify_id, string partner, string key, string input_charset, string sign_type, string transport) { _transport = transport; if (_transport == "https") { gateway = "https://www.alipay.com/cooperate/gateway.do?"; } else { gateway = "http://notify.alipay.com/trade/notify_query.do?"; } _partner = partner.Trim(); _key = key.Trim(); _input_charset = input_charset; _sign_type = sign_type.ToUpper(); sPara = AlipayFunction.Para_filter(inputPara); //过滤空值、sign与sign_type参数 preSignStr = AlipayFunction.Create_linkstring(sPara); //获取待签名字符串(调试用) //获得签名结果 mysign = AlipayFunction.Build_mysign(sPara, _key, _sign_type, _input_charset); //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 responseTxt = Verify(notify_id); }
private Dictionary <string, string> sPara = new Dictionary <string, string>(); //要签名的字符串 /// <summary> /// 构造函数 /// 从配置文件及入口文件中初始化变量 /// </summary> /// <param name="partner">合作身份者ID</param> /// <param name="seller_email">签约支付宝账号或卖家支付宝帐户</param> /// <param name="return_url">付完款后跳转的页面 要用 以http开头格式的完整路径,不允许加?id=123这类自定义参数</param> /// <param name="notify_url">交易过程中服务器通知的页面 要用 以http开格式的完整路径,不允许加?id=123这类自定义参数</param> /// <param name="show_url">网站商品的展示地址,不允许加?id=123这类自定义参数</param> /// <param name="out_trade_no">请与贵网站订单系统中的唯一订单号匹配</param> /// <param name="subject">订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。</param> /// <param name="body">订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里</param> /// <param name="total_fee">订单总金额,显示在支付宝收银台里的“应付总额”里</param> /// <param name="paymethod">默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付)</param> /// <param name="defaultbank">默认网银代号,代号列表见club.alipay.com/read.php?tid=8681379</param> /// <param name="anti_phishing_key">防钓鱼时间戳</param> /// <param name="exter_invoke_ip">买家本地电脑的IP地址</param> /// <param name="extra_common_param">自定义参数,可存放任何内容(除等特殊字符外),不会显示在页面上</param> /// <param name="buyer_email">默认买家支付宝账号</param> /// <param name="royalty_type">提成类型,该值为固定值:10,不需要修改</param> /// <param name="royalty_parameters">提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条</param> /// <param name="key">安全检验码</param> /// <param name="input_charset">字符编码格式 目前支持 gbk 或 utf-8</param> /// <param name="sign_type">签名方式 不需修改</param> public AlipayService(string partner, string seller_email, string return_url, string notify_url, string show_url, string out_trade_no, string subject, string body, string total_fee, string paymethod, string defaultbank, string anti_phishing_key, string exter_invoke_ip, string extra_common_param, string buyer_email, string royalty_type, string royalty_parameters, string key, string input_charset, string sign_type) { gateway = "https://www.alipay.com/cooperate/gateway.do?"; _key = key.Trim(); _input_charset = input_charset.ToLower(); _sign_type = sign_type.ToUpper(); SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); //构造签名参数数组 sParaTemp.Add("service", "create_direct_pay_by_user"); sParaTemp.Add("payment_type", "1"); sParaTemp.Add("partner", partner); sParaTemp.Add("seller_email", seller_email); sParaTemp.Add("return_url", return_url); sParaTemp.Add("notify_url", notify_url); sParaTemp.Add("_input_charset", _input_charset); sParaTemp.Add("show_url", show_url); sParaTemp.Add("out_trade_no", out_trade_no); sParaTemp.Add("subject", subject); sParaTemp.Add("body", body); sParaTemp.Add("total_fee", total_fee); sParaTemp.Add("paymethod", paymethod); sParaTemp.Add("defaultbank", defaultbank); sParaTemp.Add("anti_phishing_key", anti_phishing_key); sParaTemp.Add("exter_invoke_ip", exter_invoke_ip); sParaTemp.Add("extra_common_param", extra_common_param); sParaTemp.Add("buyer_email", buyer_email); sParaTemp.Add("royalty_type", royalty_type); sParaTemp.Add("royalty_parameters", royalty_parameters); sPara = AlipayFunction.Para_filter(sParaTemp); //获得签名结果 mysign = AlipayFunction.Build_mysign(sPara, _key, _sign_type, _input_charset); }