Ejemplo n.º 1
0
        /// <summary>
        /// 授权并执行
        /// </summary>
        /// <param name="callbackurl">支付成功跳转链接</param>
        /// <param name="token">返回token</param>
        /// <returns>直接跳转</returns>
        public string alipay_Wap_Auth_AuthAndExecute(
            string callbackurl,
            string token)
        {
            //临时请求参数数组
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();
            //拼接req_data
            string req_Data = "<auth_and_execute_req><request_token>" + token + "</request_token></auth_and_execute_req>";

            sParaTemp.Add("req_data", req_Data);
            sParaTemp.Add("service", Config.Service_Auth);
            sParaTemp.Add("sec_id", Config.Sec_id);
            sParaTemp.Add("partner", Config.Partner);
            sParaTemp.Add("format", Config.Format);
            sParaTemp.Add("v", Config.V);

            //返回拼接后的跳转URL
            return(Submit.SendPostRedirect(sParaTemp, Config.Req_url, Config.Input_charset_UTF8, Config.Key, Config.Sec_id));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 构造wap交易创建接口
        /// </summary>
        /// <param name="subject">商品名称</param>
        /// <param name="outTradeNo">外部交易号(由商户创建,请不要重复)</param>
        /// <param name="totalFee">商品总价</param>
        /// <param name="notifyUrl">商户接收通知URL(异步返回商户)</param>
        /// <param name="outUser">商户用户唯一ID,外部用户唯一标识</param>
        /// <param name="merchantUrl">返回商户产品URL</param>
        /// <param name="callbackurl">支付成功跳转链接</param>
        /// <param name="reqid">商户请求ID</param>
        /// <returns>返回token</returns>
        public string alipay_wap_trade_create_direct(
            string subject,
            string outTradeNo,
            string totalFee,
            string notifyUrl,
            string outUser,
            string merchantUrl,
            string callbackurl,
            string reqid)
        {
            //临时请求参数数组
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();

            //构造请求参数数组
            string req_Data = "<direct_trade_create_req><subject>" + subject + "</subject><out_trade_no>" +
                              outTradeNo + "</out_trade_no><total_fee>" + totalFee + "</total_fee><seller_account_name>" + Config.Seller_account_name +
                              "</seller_account_name><notify_url>" + notifyUrl + "</notify_url><out_user>" + outUser +
                              "</out_user><merchant_url>" + merchantUrl + "</merchant_url>" +
                              "<call_back_url>" + callbackurl + "</call_back_url></direct_trade_create_req>";

            sParaTemp.Add("req_data", req_Data);
            sParaTemp.Add("service", Config.Service_Create);
            sParaTemp.Add("sec_id", Config.Sec_id);
            sParaTemp.Add("partner", Config.Partner);
            sParaTemp.Add("req_id", reqid);
            sParaTemp.Add("format", Config.Format);
            sParaTemp.Add("v", Config.V);

            //构造表单提交HTML数据
            string strResult = Submit.SendPostInfo(sParaTemp, Config.Req_url, Config.Input_charset_UTF8, Config.Key, Config.Sec_id);


            //对返回字符串处理,得到request_token的值
            strResult = HttpUtility.UrlDecode(strResult, Encoding.GetEncoding(Config.Input_charset_UTF8));
            //分解返回数据 用&拆分赋值给result
            string[] result = strResult.Split('&');

            string res_data = string.Empty;

            //-------------------------------此处代码有bug,已注释---------------------------
            ////AlipayService.cs 124行代码修改
            //if (result.Length > 0)
            //    //替换成标准Xml数据
            //    res_data = result[0].Replace("res_data=", string.Empty);
            //---------------------------------------------------------------------------------------

            for (int i = 0; i < result.Length; i++)
            {
                if (result[i].IndexOf("res_data=") >= 0)
                {
                    res_data = result[i].Replace("res_data=", string.Empty);
                }
            }

            //得到 request_token 的值
            string token = string.Empty;

            try
            {
                token = Function.GetStrForXmlDoc(res_data, "direct_trade_create_res/request_token");
            }
            catch
            {
                //提示 返回token值无效
                return(string.Empty);
            }
            return(token);
        }