Init() public method

初始化函数
public Init ( ) : void
return void
コード例 #1
0
        /// <summary>
        /// 转换短链接 请求参数
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="signType"></param>
        /// <param name="longUrl"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        public TenPayV3ShortUrlRequestData(string appId, string mchId, string nonceStr,
                                           string longUrl, string key, string signType = "MD5")
        {
            AppId    = appId;
            MchId    = mchId;
            NonceStr = nonceStr;
            SignType = signType;
            LongUrl  = longUrl;
            Key      = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);        //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);       //商户号
            PackageRequestHandler.SetParameter("long_url", this.LongUrl);   //需要转换的URL
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr); //随机字符串
            PackageRequestHandler.SetParameter("sign_type", this.SignType); //签名类型
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);               //签名

            #endregion
        }
コード例 #2
0
        /// <summary>
        /// 关闭订单 请求参数
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        /// <param name="signType"></param>
        public TenPayV3CloseOrderRequestData(string appId, string mchId, string outTradeNo, string key, string nonceStr,
            string signType = "MD5")
        {
            AppId = appId;
            MchId = mchId;
            NonceStr = nonceStr;
            OutTradeNo = outTradeNo;
            SignType = signType;
            Key = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();

            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId); //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId); //商户号
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo); //填入商家订单号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr); //随机字符串
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign); //签名

            #endregion
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="body"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="totalFee">单位:分</param>
        /// <param name="spbillCreateIp"></param>
        /// <param name="notifyUrl"></param>
        /// <param name="tradeType"></param>
        /// <param name="openid"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        /// <param name="deviceInfo">自定义参数,可以为终端设备号(门店号或收银设备ID),PC网页或公众号内支付可以传"WEB",String(32)如:013467007045764</param>
        /// <param name="timeStart">订单生成时间,如果为空,则默认为当前服务器时间</param>
        /// <param name="timeExpire">订单失效时间,留空则不设置失效时间</param>
        /// <param name="detail">商品详细列表</param>
        /// <param name="attach">附加数据</param>
        /// <param name="feeType">符合ISO 4217标准的三位字母代码,默认人民币:CNY</param>
        /// <param name="goodsTag">商品标记,使用代金券或立减优惠功能时需要的参数,说明详见代金券或立减优惠。String(32),如:WXG</param>
        /// <param name="productId">trade_type=NATIVE时(即扫码支付),此参数必传。此参数为二维码中包含的商品ID,商户自行定义。String(32),如:12235413214070356458058</param>
        /// <param name="limitPay">是否限制用户不能使用信用卡支付</param>
        public TenPayV3UnifiedorderRequestData(string appId, string mchId, string body, string outTradeNo, int totalFee, string spbillCreateIp,
                                               string notifyUrl, TenPayV3Type tradeType, string openid, string key, string nonceStr,
                                               string deviceInfo = null, DateTime?timeStart = null, DateTime?timeExpire = null,
                                               string detail     = null, string attach      = null, string feeType = "CNY", string goodsTag = null, string productId = null, bool limitPay = false)
        {
            AppId          = appId;
            MchId          = mchId;
            DeviceInfo     = deviceInfo;
            NonceStr       = nonceStr;
            SignType       = "MD5";
            Body           = body ?? "Senparc TenpayV3";
            Detail         = detail;
            Attach         = attach;
            OutTradeNo     = outTradeNo;
            FeeType        = feeType;
            TotalFee       = totalFee;
            SpbillCreateIP = spbillCreateIp;
            TimeStart      = (timeStart ?? DateTime.Now).ToString("yyyyMMddHHmmss");
            TimeExpire     = timeExpire.HasValue ? timeExpire.Value.ToString("yyyyMMddHHmmss") : null;
            GoodsTag       = goodsTag;
            NotifyUrl      = notifyUrl;
            TradeType      = tradeType;
            ProductId      = productId;
            LimitPay       = limitPay ? "no_credit" : null;
            OpenId         = openid;
            Key            = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();

            //设置package订单参数
            //以下设置顺序按照官方文档排序,方便维护:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
            PackageRequestHandler.SetParameter("appid", this.AppId);                       //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);                      //商户号
            PackageRequestHandler.SetParameterWhenNotNull("device_info", this.DeviceInfo); //自定义参数
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);                //随机字符串
            PackageRequestHandler.SetParameterWhenNotNull("sign_type", this.SignType);     //签名类型,默认为MD5
            PackageRequestHandler.SetParameter("body", this.Body);                         //商品信息
            PackageRequestHandler.SetParameterWhenNotNull("detail", this.Detail);          //商品详细列表
            PackageRequestHandler.SetParameterWhenNotNull("attach", this.Attach);          //附加数据
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo);           //商家订单号
            PackageRequestHandler.SetParameterWhenNotNull("fee_type", this.FeeType);       //符合ISO 4217标准的三位字母代码,默认人民币:CNY
            PackageRequestHandler.SetParameter("total_fee", this.TotalFee.ToString());     //商品金额,以分为单位(money * 100).ToString()
            PackageRequestHandler.SetParameter("spbill_create_ip", this.SpbillCreateIP);   //用户的公网ip,不是商户服务器IP
            PackageRequestHandler.SetParameterWhenNotNull("time_start", this.TimeStart);   //订单生成时间
            PackageRequestHandler.SetParameterWhenNotNull("time_expire", this.TimeExpire); //订单失效时间
            PackageRequestHandler.SetParameterWhenNotNull("goods_tag", this.GoodsTag);     //商品标记
            PackageRequestHandler.SetParameter("notify_url", this.NotifyUrl);              //接收财付通通知的URL
            PackageRequestHandler.SetParameter("trade_type", this.TradeType.ToString());   //交易类型
            PackageRequestHandler.SetParameterWhenNotNull("product_id", this.ProductId);   //trade_type=NATIVE时(即扫码支付),此参数必传。
            PackageRequestHandler.SetParameterWhenNotNull("limit_pay", this.LimitPay);     //上传此参数no_credit--可限制用户不能使用信用卡支付
            PackageRequestHandler.SetParameter("openid", this.OpenId);                     //用户的openId,trade_type=JSAPI时(即公众号支付),此参数必传
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                              //签名
            #endregion
        }
コード例 #4
0
        public TenPayV3PayBankRequestData(string mchId, string nonceStr, string key, string partnerTradeNumber, string encBankNumber, string encTrueName, string bankCode, string amount, string desc = "")
        {
            this.MchId              = mchId;
            this.NonceStr           = nonceStr;
            this.Key                = key;
            this.PartnerTradeNumber = partnerTradeNumber;
            this.EncBankNumber      = encBankNumber;
            this.EncTrueName        = encTrueName;
            this.BankCode           = bankCode;
            this.Amount             = int.Parse(amount);
            this.Desc               = desc;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);                  //随机字符串
            PackageRequestHandler.SetParameter("partner_trade_no", this.PartnerTradeNumber); //商户订单号
            PackageRequestHandler.SetParameter("mch_id", this.MchId);                        //商户号
            PackageRequestHandler.SetParameter("enc_bank_no", this.EncBankNumber);
            PackageRequestHandler.SetParameter("enc_true_name", this.EncTrueName);
            PackageRequestHandler.SetParameter("bank_code", this.BankCode);
            PackageRequestHandler.SetParameter("amount", this.Amount.ToString());
            PackageRequestHandler.SetParameterWhenNotNull("desc", this.Desc);



            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign); //签名

            #endregion
        }
コード例 #5
0
ファイル: TenPayV3.cs プロジェクト: cnmediar/WeiXinMPSDK
        /// <summary>
        /// 统一支付接口
        /// 统一支付接口,可接受JSAPI/NATIVE/APP 下预支付订单,返回预支付订单号。NATIVE 支付返回二维码code_url。
        /// </summary>
        /// <param name="dataInfo">微信支付需要post的Data数据</param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public static string Unifiedorder(TenPayV3XmlDataInfo dataInfo, int timeOut = Config.TIME_OUT)
        {
            var urlFormat = "https://api.mch.weixin.qq.com/pay/unifiedorder";
            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(null);

            //初始化
            packageReqHandler.Init();

            //设置package订单参数
            packageReqHandler.SetParameter("appid", dataInfo.AppId);                     //公众账号ID
            packageReqHandler.SetParameter("mch_id", dataInfo.MchId);                    //商户号
            packageReqHandler.SetParameter("nonce_str", dataInfo.NonceStr);              //随机字符串
            packageReqHandler.SetParameter("body", dataInfo.NonceStr);                   //商品信息
            packageReqHandler.SetParameter("out_trade_no", dataInfo.OutTradeNo);         //商家订单号
            packageReqHandler.SetParameter("total_fee", dataInfo.TotalFee.ToString());   //商品金额,以分为单位(money * 100).ToString()
            packageReqHandler.SetParameter("spbill_create_ip", dataInfo.SpbillCreateIP); //用户的公网ip,不是商户服务器IP
            packageReqHandler.SetParameter("notify_url", dataInfo.NotifyUrl);            //接收财付通通知的URL
            packageReqHandler.SetParameter("trade_type", dataInfo.TradeType.ToString()); //交易类型
            packageReqHandler.SetParameter("openid", dataInfo.OpenId);                   //用户的openId
            string sign = packageReqHandler.CreateMd5Sign("key", dataInfo.Key);

            packageReqHandler.SetParameter("sign", sign);                       //签名
            string data = packageReqHandler.ParseXML();

            var          formDataBytes = data == null ? new byte[0] : Encoding.UTF8.GetBytes(data);
            MemoryStream ms            = new MemoryStream();

            ms.Write(formDataBytes, 0, formDataBytes.Length);
            ms.Seek(0, SeekOrigin.Begin);//设置指针读取位置
            return(RequestUtility.HttpPost(urlFormat, null, ms, timeOut: timeOut));
        }
コード例 #6
0
        /// <summary>
        /// 关闭订单 请求参数
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        /// <param name="signType"></param>
        public TenPayV3CloseOrderRequestData(string appId, string mchId, string outTradeNo, string key, string nonceStr,
                                             string signType = "MD5")
        {
            AppId      = appId;
            MchId      = mchId;
            NonceStr   = nonceStr;
            OutTradeNo = outTradeNo;
            SignType   = signType;
            Key        = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();

            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);             //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);            //商户号
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo); //填入商家订单号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);      //随机字符串
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                    //签名

            #endregion
        }
コード例 #7
0
        /// <summary>
        /// 查询企业付款
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="nonceStr"></param>
        /// <param name="partnerTradeNo"></param>
        /// <param name="key"></param>
        public TenPayV3GetTransferInfoRequestData(string appId, string mchId, string nonceStr,
                                                  string partnerTradeNo, string key)
        {
            AppId          = appId;
            MchId          = mchId;
            NonceStr       = nonceStr;
            PartnerTradeNo = partnerTradeNo;
            Key            = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);              //随机字符串
            PackageRequestHandler.SetParameter("partner_trade_no", this.PartnerTradeNo); //商户订单号
            PackageRequestHandler.SetParameter("mch_id", this.MchId);                    //商户号
            PackageRequestHandler.SetParameter("appid", this.AppId);                     //Appid
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                            //签名

            #endregion
        }
コード例 #8
0
        /// <summary>
        /// 撤销订单 请求参数
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="signType"></param>
        /// <param name="key"></param>
        /// <param name="transactionId"></param>
        /// <param name="nonceStr"></param>
        public TenPayV3ReverseRequestData(string appId, string mchId, string transactionId, string nonceStr,
                                          string outTradeNo, string key, string signType = "MD5")
        {
            AppId         = appId;
            MchId         = mchId;
            NonceStr      = nonceStr;
            TransactionId = transactionId;
            SignType      = signType;
            OutTradeNo    = outTradeNo;
            Key           = key;

            #region 设置RequestHandler
            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);                  //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);                 //商户号
            PackageRequestHandler.SetParameter("transaction_id", this.TransactionId); //微信的订单号
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo);      //商户系统内部的订单号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);           //随机字符串
            PackageRequestHandler.SetParameter("sign_type", this.SignType);           //签名类型
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                         //签名

            #endregion
        }
コード例 #9
0
        /// <summary>
        /// 提交刷卡支付 请求参数
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        /// <param name="deviceInfo"></param>
        /// <param name="body"></param>
        /// <param name="detail"></param>
        /// <param name="attach"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="totalFee"></param>
        /// <param name="feeType"></param>
        /// <param name="spbillCreateIp"></param>
        /// <param name="goodsTag"></param>
        /// <param name="authCode"></param>
        /// <param name="signType"></param>
        public TenPayV3MicroPayRequestData(string appId, string mchId, string key, string nonceStr, string deviceInfo,
                                           string body, string detail, string attach, string outTradeNo, string totalFee, string feeType,
                                           string spbillCreateIp, string goodsTag, string authCode, string signType = "MD5")
        {
            AppId          = appId;
            MchId          = mchId;
            NonceStr       = nonceStr;
            DeviceInfo     = deviceInfo;
            Body           = body;
            Detail         = detail;
            Attach         = attach;
            OutTradeNo     = outTradeNo;
            TotalFee       = totalFee;
            FeeType        = feeType;
            SpbillCreateIp = spbillCreateIp;
            GoodsTag       = goodsTag;
            AuthCode       = authCode;
            SignType       = signType;
            Key            = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);                     //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);                    //商户号
            PackageRequestHandler.SetParameter("device_info", this.DeviceInfo);          //终端设备号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);              //随机字符串
            PackageRequestHandler.SetParameter("sign_type", this.SignType);              //签名类型
            PackageRequestHandler.SetParameter("body", this.Body);                       //商品简单描述
            PackageRequestHandler.SetParameter("detail", this.Detail);                   //商品详细列表
            PackageRequestHandler.SetParameter("attach", this.Attach);                   //附加数据
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo);         //商户系统内部的订单号
            PackageRequestHandler.SetParameter("total_fee", this.TotalFee);              //订单总金额
            PackageRequestHandler.SetParameter("fee_type", this.FeeType);                //货币类型
            PackageRequestHandler.SetParameter("spbill_create_ip", this.SpbillCreateIp); //终端IP
            PackageRequestHandler.SetParameter("goods_tag", this.GoodsTag);              //商品标记
            PackageRequestHandler.SetParameter("auth_code", this.AuthCode);              //授权码

            // TODO:★554393109 修改
            //***************************************************************************************
            Sign = "MD5".Equals(signType, System.StringComparison.OrdinalIgnoreCase)
                ? PackageRequestHandler.CreateMd5Sign("key", this.Key)
                : PackageRequestHandler.CreateSha256Sign("key", this.Key);
            //***************************************************************************************

            PackageRequestHandler.SetParameter("sign", Sign); //签名

            #endregion
        }
コード例 #10
0
        /// <summary>
        /// 申请退款 请求参数
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="subAppId">服务商模式下,特约商户的开发配置中的AppId</param>
        /// <param name="subMchId">服务商模式下,特约商户的商户Id</param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        /// <param name="deviceInfo"></param>
        /// <param name="transactionId"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="outRefundNo"></param>
        /// <param name="refundFeeType"></param>
        /// <param name="signType"></param>
        /// <param name="totalFee"></param>
        /// <param name="refundFee"></param>
        /// <param name="opUserId"></param>
        /// <param name="refundAccount"></param>
        /// <param name="refundDescription"></param>
        /// <param name="notifyUrl"></param>
        public TenPayV3RefundRequestData(string appId, string mchId, string subAppId, string subMchId, string key, string deviceInfo, string nonceStr,
                                         string transactionId, string outTradeNo, string outRefundNo, int totalFee, int refundFee,
                                         string opUserId, string refundAccount, string refundDescription = null, string notifyUrl = null,
                                         string refundFeeType = "CNY", string signType = "MD5")
        {
            AppId             = appId;
            MchId             = mchId;
            Key               = key;
            NonceStr          = nonceStr;
            DeviceInfo        = deviceInfo;
            TransactionId     = transactionId;
            OutTradeNo        = outTradeNo;
            OutRefundNo       = outRefundNo;
            TotalFee          = totalFee;
            RefundFee         = refundFee;
            OpUserId          = opUserId;
            RefundFeeType     = refundFeeType;
            RefundAccount     = refundAccount;
            RefundDescription = refundDescription;
            NotifyUrl         = notifyUrl;
            SubAppId          = subAppId;
            SubMchId          = subMchId;
            SignType          = signType;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);  //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId); //商户号
            PackageRequestHandler.SetParameter("sub_appid", this.SubAppId);
            PackageRequestHandler.SetParameter("sub_mch_id", this.SubMchId);
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr); //随机字符串
            PackageRequestHandler.SetParameterWhenNotNull("device_info", this.DeviceInfo);
            PackageRequestHandler.SetParameter("sign_type", this.SignType);
            PackageRequestHandler.SetParameterWhenNotNull("transaction_id", this.TransactionId);
            PackageRequestHandler.SetParameterWhenNotNull("out_trade_no", this.OutTradeNo);
            PackageRequestHandler.SetParameter("out_refund_no", this.OutRefundNo);
            PackageRequestHandler.SetParameter("total_fee", this.TotalFee.ToString());
            PackageRequestHandler.SetParameter("refund_fee", this.RefundFee.ToString());
            PackageRequestHandler.SetParameter("op_user_id", this.OpUserId);
            PackageRequestHandler.SetParameterWhenNotNull("refund_fee_type", this.RefundFeeType);
            PackageRequestHandler.SetParameterWhenNotNull("refund_desc", this.RefundDescription);
            PackageRequestHandler.SetParameterWhenNotNull("notify_url", this.NotifyUrl);
            PackageRequestHandler.SetParameterWhenNotNull("refund_account", this.RefundAccount);
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign); //签名

            #endregion
        }
コード例 #11
0
ファイル: TenPay.cs プロジェクト: ydxsz/WeixinMarketing
        /// <summary>
        /// 获取预支付订单
        /// </summary>
        /// <param name="orderId">订单号</param>
        /// <param name="body">支付主体内容</param>
        /// <param name="spbillCreateIp">IP</param>
        /// <param name="openId"></param>
        /// <param name="price"></param>
        /// <param name="parentId">返回的预支付订单【2小时有效】</param>
        /// <param name="nonceStr"></param>
        /// <returns></returns>
        public string GetCodeUrl(string orderId, string body, string spbillCreateIp, decimal price, out string parentId,
                                 string nonceStr = null)
        {
            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(null);

            //初始化
            packageReqHandler.Init();

            nonceStr = string.IsNullOrEmpty(nonceStr) ? TenPayUtil.GetNoncestr() : nonceStr;

            //设置package订单参数
            packageReqHandler.SetParameter("appid", AppId);                           //公众账号ID
            packageReqHandler.SetParameter("mch_id", MchId);                          //商户号
            packageReqHandler.SetParameter("nonce_str", nonceStr);                    //随机字符串
            packageReqHandler.SetParameter("body", body);
            packageReqHandler.SetParameter("out_trade_no", orderId);                  //商家订单号
            packageReqHandler.SetParameter("total_fee", (price * 100).ToString("0")); //商品金额,以分为单位(money * 100).ToString()
            packageReqHandler.SetParameter("spbill_create_ip", spbillCreateIp);       //用户的公网ip,不是商户服务器IP
            packageReqHandler.SetParameter("notify_url", TenPayV3Notify);             //接收财付通通知的URL
            packageReqHandler.SetParameter("trade_type", "NATIVE");                   //交易类型
                                                                                      //packageReqHandler.SetParameter("openid", openId); //用户的openid
            string sign = packageReqHandler.CreateMd5Sign("key", Key);

            packageReqHandler.SetParameter("sign", sign); //签名

            string data = packageReqHandler.ParseXML();

            var result = TenPayV3.Unifiedorder(data);

            LogUtility.DebugLogger.Info(result);

            var res = XDocument.Parse(result);

            //LogUtility.Order.Error(string.Format("预支付订单返回XML :{0}", result));
            if (res.Element("xml") == null)
            {
                throw new Exception("统一订单接口出错");
            }
            var codeUrl = res.Element("xml").Element("code_url") == null
               ? null
               : res.Element("xml").Element("code_url").Value;

            parentId = res.Element("xml").Element("prepay_id") == null
              ? null
              : res.Element("xml").Element("prepay_id").Value;
            if (string.IsNullOrEmpty(codeUrl))
            {
                throw new Exception("统一订单接口出错,未获取到预支付订单号");
            }
            return(codeUrl);
        }
コード例 #12
0
        /// <summary>
        /// 查询退款 请求参数
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        /// <param name="deviceInfo"></param>
        /// <param name="transactionId"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="outRefundNo"></param>
        /// <param name="refundId"></param>
        /// <param name="subAppid">(非必填)微信分配的子商户公众账号ID,如:1900000109</param>
        /// <param name="subMchId">微信支付分配的子商户号,如:wx8888888888888888</param>
        /// <param name="offset">(非必填)偏移量,当部分退款次数超过10次时可使用,表示返回的查询结果从这个偏移量开始取记录,如:15</param>
        /// <param name="signType"></param>
        public TenPayV3RefundQueryRequestData(string appId, string mchId, string key, string nonceStr, string deviceInfo,
                                              string transactionId, string outTradeNo, string outRefundNo, string refundId, string subAppid = null, string subMchId = null, int?offset = null, string signType = "MD5")
        {
            AppId         = appId;
            MchId         = mchId;
            NonceStr      = nonceStr;
            DeviceInfo    = deviceInfo;
            TransactionId = transactionId;
            OutTradeNo    = outTradeNo;
            OutRefundNo   = outRefundNo;
            RefundId      = refundId;
            SubAppId      = subAppid;
            SubMchId      = subMchId;
            Offset        = offset;
            SignType      = signType;
            Key           = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);        //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);       //商户号
            PackageRequestHandler.SetParameter("device_info", this.DeviceInfo);
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr); //随机字符串
            PackageRequestHandler.SetParameter("sign_type", this.SignType);
            PackageRequestHandler.SetParameter("transaction_id", this.TransactionId);
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo);
            PackageRequestHandler.SetParameter("out_refund_no", this.OutRefundNo);
            PackageRequestHandler.SetParameter("refund_id", this.RefundId);
            PackageRequestHandler.SetParameterWhenNotNull("sub_appid", this.SubAppId);
            PackageRequestHandler.SetParameterWhenNotNull("sub_mch_id", this.SubMchId);
            PackageRequestHandler.SetParameterWhenNotNull("offset", this.Offset != null ? this.Offset.ToString() : null);

            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign); //签名

            #endregion
        }
コード例 #13
0
        public TenPayV3GetPublicKeyRequestData(string mchId, string nonceStr, string key)
        {
            MchId    = mchId;
            NonceStr = nonceStr;
            Key      = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr); //随机字符串
            PackageRequestHandler.SetParameter("mch_id", this.MchId);       //商户号
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);               //签名

            #endregion
        }
コード例 #14
0
        public TenPayV3QueryBankRequestData(string mchId, string nonceStr, string key, string partnerTradeNo)
        {
            this.MchId              = mchId;
            this.NonceStr           = nonceStr;
            this.Key                = key;
            this.PartnerTradeNumber = partnerTradeNo;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();
            //设置package订单参数
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);                  //随机字符串
            PackageRequestHandler.SetParameter("partner_trade_no", this.PartnerTradeNumber); //商户订单号
            PackageRequestHandler.SetParameter("mch_id", this.MchId);                        //商户号
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                                //签名

            #endregion
        }
コード例 #15
0
        /// <summary>
        /// 企业付款
        /// </summary>
        /// <param name="mchAppid">公众账号appid</param>
        /// <param name="mchId">商户号</param>
        /// <param name="deviceInfo">设备号</param>
        /// <param name="nonceStr">随机字符串</param>
        /// <param name="outTradeNo">商户订单号</param>
        /// <param name="openId">用户openid</param>
        /// <param name="key"></param>
        /// <param name="checkName">校验用户姓名选项</param>
        /// <param name="reUserName">收款用户姓名</param>
        /// <param name="amount">金额(单位:元,小数点后不要超过2位,否则会被四舍五入到分)</param>
        /// <param name="desc">企业付款描述信息</param>
        /// <param name="spbillCreateIP">Ip地址</param>
        public TenPayV3TransfersRequestData(string mchAppid, string mchId, string deviceInfo, string nonceStr, string outTradeNo, string openId, string key, string checkName, string reUserName, decimal amount, string desc, string spbillCreateIP)
        {
            MchAppId       = mchAppid;
            MchId          = mchId;
            DeviceInfo     = deviceInfo;
            NonceStr       = nonceStr;
            OutTradeNo     = outTradeNo;
            OpenId         = openId;
            CheckName      = checkName;
            ReUserName     = reUserName;
            Amount         = amount;
            Desc           = desc;
            SpbillCreateIP = spbillCreateIP;
            Key            = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();

            //设置package订单参数
            PackageRequestHandler.SetParameter("mch_appid", this.MchAppId);                             //公众账号appid
            PackageRequestHandler.SetParameter("mchid", this.MchId);                                    //商户号
            PackageRequestHandler.SetParameter("device_info", this.DeviceInfo);                         //终端设备号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);                             //随机字符串
            PackageRequestHandler.SetParameter("partner_trade_no", this.OutTradeNo);                    //商户订单号
            PackageRequestHandler.SetParameter("openid", this.OpenId);                                  //用户openid
            PackageRequestHandler.SetParameter("check_name", this.CheckName);                           //校验用户姓名选项
            PackageRequestHandler.SetParameter("re_user_name", this.ReUserName);                        //收款用户姓名
            PackageRequestHandler.SetParameter("amount", ((int)(this.Amount * 100 + 0.5m)).ToString()); //金额
            PackageRequestHandler.SetParameter("desc", this.Desc);                                      //企业付款描述信息
            PackageRequestHandler.SetParameter("spbill_create_ip", this.SpbillCreateIP);                //Ip地址
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                                           //签名

            #endregion
        }
コード例 #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="body"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="totalFee"></param>
        /// <param name="spbillCreateIp"></param>
        /// <param name="notifyUrl"></param>
        /// <param name="tradeType"></param>
        /// <param name="openid"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        public TenPayV3RequestData(string appId, string mchId, string body, string outTradeNo, decimal totalFee, string spbillCreateIp, string notifyUrl, TenPayV3Type tradeType, string openid, string key, string nonceStr)
        {
            AppId          = appId;
            MchId          = mchId;
            NonceStr       = nonceStr;
            Body           = body ?? "Senparc TenpayV3";
            OutTradeNo     = outTradeNo;
            TotalFee       = totalFee;
            SpbillCreateIP = spbillCreateIp;
            NotifyUrl      = notifyUrl;
            TradeType      = tradeType;
            OpenId         = openid;
            Key            = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();

            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);                     //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);                    //商户号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);              //随机字符串
            PackageRequestHandler.SetParameter("body", this.NonceStr);                   //商品信息
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo);         //商家订单号
            PackageRequestHandler.SetParameter("total_fee", this.TotalFee.ToString());   //商品金额,以分为单位(money * 100).ToString()
            PackageRequestHandler.SetParameter("spbill_create_ip", this.SpbillCreateIP); //用户的公网ip,不是商户服务器IP
            PackageRequestHandler.SetParameter("notify_url", this.NotifyUrl);            //接收财付通通知的URL
            PackageRequestHandler.SetParameter("trade_type", this.TradeType.ToString()); //交易类型
            PackageRequestHandler.SetParameter("openid", this.OpenId);                   //用户的openId
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                            //签名
            #endregion
        }
コード例 #17
0
ファイル: wxpay.cs プロジェクト: szoliver/wxpay
        /// <summary>
        /// 获取微信支付签名信息
        /// 调用前请先配置wxPayV3Info属性,否则会支付失败,如果paySign = "ERROR",请查看package内容信息
        /// 目前提供最基本的签名字段,有时间的话可以增加基础以外字段的动态增加,一般情况下,基础的字段也能满足支付需求了
        /// 微信支付步骤:</summary>
        /// 1.$.post调用GetWXPayInfo()获取WXPayModel数据,其中包含签名数据
        /// 2.wxpay.js调用 WeixinJSBridge.invoke('getBrandWCPayRequest')发起微信支付
        /// 3.处理回调,成功后返回success
        /// <param name="payorder"></param>
        /// <param name="openid"></param>
        /// <param name="tfee">支付的金额</param>
        /// <param name="body">备注</param>
        /// <param name="pid">产品信息</param>
        /// <param name="sp_billno">订单号码</param>
        /// <returns>返回签名数据,Response给JS呼出微信支付控件,返回WXPayModel.paySign=ERROR时报错</returns>
        public static WXPayModel GetWXPayInfo(PayOrder payorder, string openid, string tfee, string body, string pid, string sp_billno)
        {
            try
            {
                string timeStamp = "";
                string nonceStr = "";
                string package = "";
                string paySign = "";

                //创建支付应答对象
                RequestHandler packageReqHandler = new RequestHandler(null);
                //初始化
                packageReqHandler.Init();

                //调起微信支付签名
                timeStamp = TenPayV3Util.GetTimestamp();
                nonceStr = TenPayV3Util.GetNoncestr();

                //设置package订单参数
                packageReqHandler.SetParameter("appid", wxPayV3Info.AppId);		  //公众账号ID
                packageReqHandler.SetParameter("mch_id", wxPayV3Info.MchId);		  //商户号
                packageReqHandler.SetParameter("nonce_str", nonceStr);                    //随机字符串
                packageReqHandler.SetParameter("body", body);
                packageReqHandler.SetParameter("out_trade_no", sp_billno);		//商家订单号
                packageReqHandler.SetParameter("spbill_create_ip", HttpContext.Current.Request.UserHostAddress);
                packageReqHandler.SetParameter("total_fee", tfee);
                packageReqHandler.SetParameter("notify_url", wxPayV3Info.TenPayV3Notify);		    //接收财付通通知的URL
                packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString());	 //交易类型
                packageReqHandler.SetParameter("openid", openid);//OPENID

                //获取package包
                string sign = packageReqHandler.CreateMd5Sign("key", wxPayV3Info.Key);
                packageReqHandler.SetParameter("sign", sign);
                string data = packageReqHandler.ParseXML();
                var result = TenPayV3.Unifiedorder(data);
                var res = XDocument.Parse(result);
                if (res.Element("xml").Element("prepay_id") == null)
                {
                    string err_code = res.Element("xml").Element("return_msg").Value;
                    return new WXPayModel() { paySign = "ERROR", package = err_code };
                }
                string prepayId = res.Element("xml").Element("prepay_id").Value;
                package = string.Format("prepay_id={0}", prepayId);
                //设置支付参数
                RequestHandler paySignReqHandler = new RequestHandler(null);
                paySignReqHandler.SetParameter("appId", wxPayV3Info.AppId);
                paySignReqHandler.SetParameter("timeStamp", timeStamp);
                paySignReqHandler.SetParameter("nonceStr", nonceStr);
                paySignReqHandler.SetParameter("package", package);
                paySignReqHandler.SetParameter("signType", "MD5");
                paySign = paySignReqHandler.CreateMd5Sign("key", wxPayV3Info.Key);
                WXPayModel wm = new WXPayModel()
                {
                    appId = wxPayV3Info.AppId,
                    nonceStr = nonceStr,
                    package = package,
                    payNo = sp_billno,
                    paySign = paySign,
                    timeStamp = timeStamp
                };
                //payorder(wm, openid, tfee, body, pid, param, sp_billno);
                payorder(wm);
                return wm;

            }
            catch (Exception ex)
            {
                return new WXPayModel() { paySign = "ERROR", package = "抛出异常:" + ex.ToString() };
            }
        }
コード例 #18
0
        public ActionResult JsApi(string code, string state)
        {
            if (string.IsNullOrEmpty(code))
            {
                return Content("您拒绝了授权!");
            }

            if (!state.Contains("|"))
            {
                //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下
                //实际上可以存任何想传递的数据,比如用户ID,并且需要结合例如下面的Session["OAuthAccessToken"]进行验证
                return Content("验证失败!请从正规途径进入!1001");
            }

            //获取产品信息
            var stateData = state.Split('|');
            int productId = 0;
            ProductModel product = null;
            if (int.TryParse(stateData[0], out productId))
            {
                int hc = 0;
                if (int.TryParse(stateData[1], out hc))
                {
                    var products = ProductModel.GetFakeProductList();
                    product = products.FirstOrDefault(z => z.Id == productId);
                    if (product == null || product.GetHashCode() != hc)
                    {
                        return Content("商品信息不存在,或非法进入!1002");
                    }
                    ViewData["product"] = product;
                }
            }

            //通过,用code换取access_token
            var openIdResult = OAuthApi.GetAccessToken(TenPayV3Info.AppId, TenPayV3Info.AppSecret, code);
            if (openIdResult.errcode != ReturnCode.请求成功)
            {
                return Content("错误:" + openIdResult.errmsg);
            }

            string timeStamp = "";
            string nonceStr = "";
            string paySign = "";

            string sp_billno = Request["order_no"];
            //当前时间 yyyyMMdd
            string date = DateTime.Now.ToString("yyyyMMdd");

            if (null == sp_billno)
            {
                //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
                sp_billno = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);
            }
            else
            {
                sp_billno = Request["order_no"].ToString();
            }

            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(null);
            //初始化
            packageReqHandler.Init();

            timeStamp = TenPayV3Util.GetTimestamp();
            nonceStr = TenPayV3Util.GetNoncestr();

            //设置package订单参数
            packageReqHandler.SetParameter("appid", TenPayV3Info.AppId);		  //公众账号ID
            packageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId);		  //商户号
            packageReqHandler.SetParameter("nonce_str", nonceStr);                    //随机字符串
            packageReqHandler.SetParameter("body", product == null ? "test" : product.Name);    //商品信息
            packageReqHandler.SetParameter("out_trade_no", sp_billno);		//商家订单号
            packageReqHandler.SetParameter("total_fee", product == null ? "100" : (product.Price * 100).ToString());			        //商品金额,以分为单位(money * 100).ToString()
            packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);   //用户的公网ip,不是商户服务器IP
            packageReqHandler.SetParameter("notify_url", TenPayV3Info.TenPayV3Notify);		    //接收财付通通知的URL
            packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString());	                    //交易类型
            packageReqHandler.SetParameter("openid", openIdResult.openid);	                    //用户的openId

            string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);
            packageReqHandler.SetParameter("sign", sign);	                    //签名

            string data = packageReqHandler.ParseXML();

            var result = TenPayV3.Unifiedorder(data);
            var res = XDocument.Parse(result);
            string prepayId = res.Element("xml").Element("prepay_id").Value;

            //设置支付参数
            RequestHandler paySignReqHandler = new RequestHandler(null);
            paySignReqHandler.SetParameter("appId", TenPayV3Info.AppId);
            paySignReqHandler.SetParameter("timeStamp", timeStamp);
            paySignReqHandler.SetParameter("nonceStr", nonceStr);
            paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
            paySignReqHandler.SetParameter("signType", "MD5");
            paySign = paySignReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);

            ViewData["appId"] = TenPayV3Info.AppId;
            ViewData["timeStamp"] = timeStamp;
            ViewData["nonceStr"] = nonceStr;
            ViewData["package"] = string.Format("prepay_id={0}", prepayId);
            ViewData["paySign"] = paySign;

            return View();
        }
コード例 #19
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="mchId"></param>
        /// <param name="body"></param>
        /// <param name="outTradeNo"></param>
        /// <param name="totalFee"></param>
        /// <param name="spbillCreateIp"></param>
        /// <param name="notifyUrl"></param>
        /// <param name="tradeType"></param>
        /// <param name="openid"></param>
        /// <param name="key"></param>
        /// <param name="nonceStr"></param>
        public TenPayV3UnifiedorderRequestData(string appId, string mchId, string body, string outTradeNo, decimal totalFee, string spbillCreateIp, string notifyUrl, TenPayV3Type tradeType, string openid, string key, string nonceStr)
        {
            AppId = appId;
            MchId = mchId;
            NonceStr = nonceStr;
            Body = body ?? "Senparc TenpayV3";
            OutTradeNo = outTradeNo;
            TotalFee = totalFee;
            SpbillCreateIP = spbillCreateIp;
            NotifyUrl = notifyUrl;
            TradeType = tradeType;
            OpenId = openid;
            Key = key;

            #region 设置RequestHandler

            //创建支付应答对象
            PackageRequestHandler = new RequestHandler(null);
            //初始化
            PackageRequestHandler.Init();

            //设置package订单参数
            PackageRequestHandler.SetParameter("appid", this.AppId);          //公众账号ID
            PackageRequestHandler.SetParameter("mch_id", this.MchId);         //商户号
            PackageRequestHandler.SetParameter("nonce_str", this.NonceStr);                    //随机字符串
            PackageRequestHandler.SetParameter("body", this.Body);    //商品信息
            PackageRequestHandler.SetParameter("out_trade_no", this.OutTradeNo);      //商家订单号
            PackageRequestHandler.SetParameter("total_fee", this.TotalFee.ToString());                    //商品金额,以分为单位(money * 100).ToString()
            PackageRequestHandler.SetParameter("spbill_create_ip", this.SpbillCreateIP);   //用户的公网ip,不是商户服务器IP
            PackageRequestHandler.SetParameter("notify_url", this.NotifyUrl);          //接收财付通通知的URL
            PackageRequestHandler.SetParameter("trade_type", this.TradeType.ToString());                        //交易类型
            PackageRequestHandler.SetParameter("openid", this.OpenId);                      //用户的openId
            Sign = PackageRequestHandler.CreateMd5Sign("key", this.Key);
            PackageRequestHandler.SetParameter("sign", Sign);                       //签名
            #endregion
        }
コード例 #20
0
ファイル: zql.ashx.cs プロジェクト: PageCard/WeChat
        public void ProcessRequest(HttpContext context)
        {
            Model.HG.A_HG_new_order Str = new Model.HG.A_HG_new_order();

            BLL.HG.Hg_list add = new BLL.HG.Hg_list();
            Dictionary <string, string> jsonDict = new Dictionary <string, string>();

            jsonDict = new Dictionary <string, string>();
            string case_ = context.Request.QueryString["case_"];

            if (case_ == "save")
            {
                //  string openid=context.Request.QueryString["openid"];
                string name      = context.Request.QueryString["name"];
                string phone     = context.Request.QueryString["phone"];
                string sex       = context.Request.QueryString["sex"];
                string money     = context.Request.QueryString["money"];
                string type_     = context.Request.QueryString["type_"];
                string time      = context.Request.QueryString["time"];
                string day       = context.Request.QueryString["day"];
                string adress    = context.Request.QueryString["adress"];
                string weixiname = context.Request.QueryString["weixinname"];
                string openid    = context.Request.QueryString["openid"];
                //   string total=context.Request.QueryString["total"];
                //   Str.Openid_ = openid;
                Str.Name_       = name;
                Str.Tel_        = phone;
                Str.Sex_        = sex;
                Str.Pick_many   = money;
                Str.Type_       = type_;
                Str.Time_       = time;
                Str.start_time  = DateTime.Now.ToString();//开始时间
                Str.Pick_day    = day;
                Str.Weixin_name = weixiname;
                Str.Openid_     = openid;
                int day_   = int.Parse(day);
                int money_ = int.Parse(money);
                int total_ = day_ * money_;
                Str.total = total_.ToString();
                string bb = DateTime.Now.Day.ToString() + GuidTo16String();//生成的订单号
                Str.Order_dd   = bb;
                Str.Order_from = "小程序";
                Str.Fw_zt      = "未支付";
                Str.Delet_     = "未删除";
                Str.Adress     = adress;
                int fal = add.Add_order_new(Str);
                //   Str.total = total;
                if (fal == 0)
                {
                    jsonDict.Add("order_dd", bb);
                    jsonDict.Add("errCode", "false");
                    jsonDict.Add("recontent", fal.ToString());
                    context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                }
                else
                {
                    jsonDict.Add("order_dd", bb);
                    jsonDict.Add("errCode", "true");
                    jsonDict.Add("recontent", fal.ToString());
                    context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                }
            }
            else if (case_ == "jujia")
            {
                {
                    //  string openid=context.Request.QueryString["openid"];
                    string name      = context.Request.QueryString["name"];
                    string phone     = context.Request.QueryString["phone"];
                    string sex       = context.Request.QueryString["sex"];
                    string money     = context.Request.QueryString["money"];
                    string type_     = context.Request.QueryString["type_"];
                    string time      = context.Request.QueryString["time"];
                    string day       = context.Request.QueryString["day"];
                    string adress    = context.Request.QueryString["adress"];
                    string weixiname = context.Request.QueryString["weixinname"];
                    string openid    = context.Request.QueryString["openid"];
                    //   string total=context.Request.QueryString["total"];
                    //   Str.Openid_ = openid;
                    Str.Name_       = name;
                    Str.Tel_        = phone;
                    Str.Sex_        = sex;
                    Str.Pick_many   = money;
                    Str.Type_       = type_;
                    Str.Time_       = time;
                    Str.start_time  = DateTime.Now.ToString();//开始时间
                    Str.Pick_day    = day;
                    Str.Weixin_name = weixiname;
                    Str.Openid_     = openid;

                    Str.total = money;
                    string bb = DateTime.Now.Day.ToString() + GuidTo16String();//生成的订单号
                    Str.Order_dd   = bb;
                    Str.Order_from = "小程序";
                    Str.Fw_zt      = "未支付";
                    Str.Delet_     = "未删除";
                    Str.Adress     = adress;
                    int fal = add.Add_order_new(Str);
                    //   Str.total = total;
                    if (fal == 0)
                    {
                        jsonDict.Add("order_dd", bb);
                        jsonDict.Add("errCode", "false");
                        jsonDict.Add("recontent", fal.ToString());
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                    }
                    else
                    {
                        jsonDict.Add("order_dd", bb);
                        jsonDict.Add("errCode", "true");
                        jsonDict.Add("recontent", fal.ToString());
                        context.Response.Write(MyCommFun.getJsonStr(jsonDict));
                    }
                }
            }
            else if (case_ == "order")
            {
                string openid = context.Request.QueryString["openid"];
                context.Response.ContentType = "text/json";
                context.Response.Write(MyCommFun.GetJsonByDataset(order_new(openid)));
            }
            else
            {
                order_dd = MyCommFun.QueryString("order");
                BLL.HG.Hg_list          order_T = new BLL.HG.Hg_list();
                Model.HG.A_HG_new_order model   = order_T.getorder(order_dd);
                string timeStamp = "";
                string nonceStr  = "";
                string paySign   = "";
                //创建支付应答对象
                Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
                //初始化
                packageReqHandler.Init();

                timeStamp = TenPayV3Util.GetTimestamp();
                nonceStr  = TenPayV3Util.GetNoncestr();

                //设置package订单参数
                packageReqHandler.SetParameter("appid", "wx16650bedd9b0916a");                                                                  //公众账号ID
                packageReqHandler.SetParameter("mch_id", "1403543902");                                                                         //商户号
                packageReqHandler.SetParameter("nonce_str", nonceStr);                                                                          //随机字符串
                packageReqHandler.SetParameter("body", model.Name_ + "服务");                                                                     //商品信息
                packageReqHandler.SetParameter("out_trade_no", order_dd);                                                                       //商家订单号
                packageReqHandler.SetParameter("total_fee", ((double.Parse(model.total)) * 100).ToString());                                    //商品金额,以分为单位(money * 100).ToString()
                packageReqHandler.SetParameter("spbill_create_ip", context.Request.UserHostAddress);                                            //用户的公网ip,不是商户服务器IP
                packageReqHandler.SetParameter("notify_url", MyCommFun.getWebSite() + "/api/wxpay/notify_url.aspx?wid=" + 44 + "|" + order_dd); //接收财付通通知的URL
                packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString());                                                    //交易类型
                packageReqHandler.SetParameter("openid", model.Openid_);                                                                        //用户的openId

                string sign = packageReqHandler.CreateMd5Sign("key", "70OvzuXGLFP7539B9zbvEMUBd1H1Tv8Q");
                packageReqHandler.SetParameter("sign", sign);                       //签名
                string data = packageReqHandler.ParseXML();


                var      result = TenPayV3.Unifiedorder(data);
                DateTime bb111  = new DateTime();
                WriteTextLog(bb111, result);
                var    res      = XDocument.Parse(result);
                string prepayId = res.Element("xml").Element("prepay_id").Value;

                //设置支付参数
                RequestHandler paySignReqHandler = new RequestHandler(null);
                paySignReqHandler.SetParameter("appId", "wx16650bedd9b0916a");
                paySignReqHandler.SetParameter("timeStamp", timeStamp);
                paySignReqHandler.SetParameter("nonceStr", nonceStr);
                paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
                paySignReqHandler.SetParameter("signType", "MD5");
                paySign         = paySignReqHandler.CreateMd5Sign("key", "70OvzuXGLFP7539B9zbvEMUBd1H1Tv8Q");
                payaddid        = "";
                paytimeStamp    = timeStamp;
                paynonceStr     = nonceStr;
                paypackageValue = string.Format("prepay_id={0}", prepayId);
                paypaySign      = paySign;
                litDate         = DateTime.Now.ToString();
                oreder_name     = model.Name_ + "服务预约";
                context.Response.ContentType = "text/json";
                pay_ bb = new pay_
                {
                    timeStamp = timeStamp,
                    nonceStr  = nonceStr,
                    paySign   = paySign,
                    signType  = "MD5",
                    package   = prepayId
                };
                string json_bill = JsonMapper.ToJson(bb);
                context.Response.Write(json_bill);
            }
        }
コード例 #21
0
ファイル: TenPay.cs プロジェクト: ydxsz/WeixinMarketing
        /// <summary>
        /// 提现转账
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="money"></param>
        /// <param name="openId"></param>
        /// <param name="checkName">【NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓 OPTION_CHECK:针对已实名认证的用户才校验真实姓名】</param>
        /// <param name="reUserName"></param>
        /// <param name="spbillCreateIp"></param>
        /// <param name="desc"></param>
        /// <param name="nonceStr"></param>
        public void WithdrawMoney(string orderId, decimal money, string openId, string checkName, string reUserName,
                                  string spbillCreateIp, string desc,
                                  string nonceStr = null)
        {
            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(null);

            //初始化
            packageReqHandler.Init();

            nonceStr = string.IsNullOrEmpty(nonceStr) ? TenPayUtil.GetNoncestr() : nonceStr;

            //设置package订单参数
            packageReqHandler.SetParameter("mch_appid", AppId);                    //公众账号ID
            packageReqHandler.SetParameter("mchid", MchId);                        //商户号
            packageReqHandler.SetParameter("nonce_str", nonceStr);                 //随机字符串
            packageReqHandler.SetParameter("desc", desc);                          //企业付款描述信息
            packageReqHandler.SetParameter("check_name", checkName);               //校验用户姓名选项
            packageReqHandler.SetParameter("re_user_name", reUserName);            //收款用户姓名
            packageReqHandler.SetParameter("partner_trade_no", orderId);           //商户订单号
            packageReqHandler.SetParameter("amount", (money * 100).ToString("0")); //转账金额,以分为单位(money * 100).ToString()
            packageReqHandler.SetParameter("spbill_create_ip", spbillCreateIp);    //用户的公网ip,不是商户服务器IP
            packageReqHandler.SetParameter("openid", openId);                      //用户的openId
            string sign = packageReqHandler.CreateMd5Sign("key", Key);

            packageReqHandler.SetParameter("sign", sign); //签名
            string data = packageReqHandler.ParseXML();

            #region transfers()

            //发企业支付接口地址
            string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";

            //本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中)
            //string cert = @"D:\apiclient_cert.p12";
            //私钥(在安装证书时设置)
            string password = MchId;
            ServicePointManager.ServerCertificateValidationCallback =
                new RemoteCertificateValidationCallback(CheckValidationResult);
            //调用证书
            //X509Certificate2 cer = new X509Certificate2(cert, password,
            //    X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);


            X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            certStore.Open(OpenFlags.ReadOnly);
            X509Certificate2Collection certCollection = certStore.Certificates.Find(
                X509FindType.FindByThumbprint, "9595BAC7475049BA7CB06ACD6CDC792BADF40217", false);

            X509Certificate2 cert = null;
            if (certCollection.Count > 0)
            {
                cert = certCollection[0];
            }

            #region 发起post请求

            HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
            webrequest.ClientCertificates.Add(cert);
            webrequest.Method = "post";

            byte[] postdatabyte = Encoding.UTF8.GetBytes(data);
            webrequest.ContentLength = postdatabyte.Length;
            Stream stream;
            stream = webrequest.GetRequestStream();
            stream.Write(postdatabyte, 0, postdatabyte.Length);
            stream.Close();

            HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();
            StreamReader    streamReader    = new StreamReader(httpWebResponse.GetResponseStream());
            string          result          = streamReader.ReadToEnd();

            #endregion

            #endregion

            var res = XDocument.Parse(result);

            if (res.Element("xml") == null)
            {
                throw new Exception("转账订单接口出错");
            }

            var returnCode = res.Element("xml").Element("return_code") == null
                ? null
                : res.Element("xml").Element("return_code").Value;
            var resultCode = res.Element("xml").Element("result_code") == null
                ? null
                : res.Element("xml").Element("result_code").Value;
            if (string.IsNullOrEmpty(returnCode))
            {
                throw new Exception("转账订单接口出错,未获取到返回状态码");
            }
            if (returnCode == "FAIL" || resultCode == "FAIL")
            {
                var returnMsg = res.Element("xml").Element("return_msg").ToString();
                throw new Exception(returnMsg);
            }
        }
コード例 #22
0
        protected void Page_Load(object sender, EventArgs e)
        {
            order_type = Request.QueryString["order_type"];
            order_dd   = Request.QueryString["Order_dd"];
            BLL.HG.Hg_list order_T = new BLL.HG.Hg_list();
            if (order_type == "new")
            {
                Model.HG.A_HG_new_order model = order_T.getorder(order_dd);
                string timeStamp = "";
                string nonceStr  = "";
                string paySign   = "";
                //创建支付应答对象
                Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
                //初始化
                packageReqHandler.Init();
                litMoney  = double.Parse(model.total);
                timeStamp = TenPayV3Util.GetTimestamp();
                nonceStr  = TenPayV3Util.GetNoncestr();

                //设置package订单参数
                packageReqHandler.SetParameter("appid", "wx172ece37e2ed2939");                                                                  //公众账号ID
                packageReqHandler.SetParameter("mch_id", "1403543902");                                                                         //商户号
                packageReqHandler.SetParameter("nonce_str", nonceStr);                                                                          //随机字符串
                packageReqHandler.SetParameter("body", model.Name_ + "服务");                                                                     //商品信息
                packageReqHandler.SetParameter("out_trade_no", order_dd);                                                                       //商家订单号
                packageReqHandler.SetParameter("total_fee", ((double.Parse(model.total)) * 100).ToString());                                    //商品金额,以分为单位(money * 100).ToString()
                packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);                                                    //用户的公网ip,不是商户服务器IP
                packageReqHandler.SetParameter("notify_url", MyCommFun.getWebSite() + "/api/wxpay/notify_url.aspx?wid=" + 44 + "|" + order_dd); //接收财付通通知的URL
                packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString());                                                    //交易类型
                packageReqHandler.SetParameter("openid", model.Openid_);                                                                        //用户的openId

                string sign = packageReqHandler.CreateMd5Sign("key", "70OvzuXGLFP7539B9zbvEMUBd1H1Tv8Q");
                packageReqHandler.SetParameter("sign", sign);                       //签名
                string data = packageReqHandler.ParseXML();


                var    result   = TenPayV3.Unifiedorder(data);
                var    res      = XDocument.Parse(result);
                string prepayId = res.Element("xml").Element("prepay_id").Value;

                //设置支付参数
                RequestHandler paySignReqHandler = new RequestHandler(null);
                paySignReqHandler.SetParameter("appId", "wx172ece37e2ed2939");
                paySignReqHandler.SetParameter("timeStamp", timeStamp);
                paySignReqHandler.SetParameter("nonceStr", nonceStr);
                paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
                paySignReqHandler.SetParameter("signType", "MD5");
                paySign         = paySignReqHandler.CreateMd5Sign("key", "70OvzuXGLFP7539B9zbvEMUBd1H1Tv8Q");
                payaddid        = "";
                paytimeStamp    = timeStamp;
                paynonceStr     = nonceStr;
                paypackageValue = string.Format("prepay_id={0}", prepayId);
                paypaySign      = paySign;
                litDate         = DateTime.Now.ToString();
                oreder_name     = model.Name_ + "服务预约";
            }


            else
            {
                hg_number = int.Parse(Request.QueryString["kkl"]);
                Model.HG.HG_order model = order_T.Getorder(order_dd);

                string timeStamp = "";
                string nonceStr  = "";
                string paySign   = "";
                //创建支付应答对象
                Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
                //初始化
                packageReqHandler.Init();
                litMoney  = model.Total;
                timeStamp = TenPayV3Util.GetTimestamp();
                nonceStr  = TenPayV3Util.GetNoncestr();

                //设置package订单参数
                packageReqHandler.SetParameter("appid", "wx172ece37e2ed2939");                                                                  //公众账号ID
                packageReqHandler.SetParameter("mch_id", "1403543902");                                                                         //商户号
                packageReqHandler.SetParameter("nonce_str", nonceStr);                                                                          //随机字符串
                packageReqHandler.SetParameter("body", model.By_name + "护理");                                                                   //商品信息
                packageReqHandler.SetParameter("out_trade_no", order_dd);                                                                       //商家订单号
                packageReqHandler.SetParameter("total_fee", ((model.Total) * 100).ToString());                                                  //商品金额,以分为单位(money * 100).ToString()
                packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);                                                    //用户的公网ip,不是商户服务器IP
                packageReqHandler.SetParameter("notify_url", MyCommFun.getWebSite() + "/api/wxpay/notify_url.aspx?wid=" + 44 + "|" + order_dd); //接收财付通通知的URL
                packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString());                                                    //交易类型
                packageReqHandler.SetParameter("openid", model.Openid);                                                                         //用户的openId

                string sign = packageReqHandler.CreateMd5Sign("key", "70OvzuXGLFP7539B9zbvEMUBd1H1Tv8Q");
                packageReqHandler.SetParameter("sign", sign);                       //签名
                string data = packageReqHandler.ParseXML();


                var    result   = TenPayV3.Unifiedorder(data);
                var    res      = XDocument.Parse(result);
                string prepayId = res.Element("xml").Element("prepay_id").Value;

                //设置支付参数
                RequestHandler paySignReqHandler = new RequestHandler(null);
                paySignReqHandler.SetParameter("appId", "wx172ece37e2ed2939");
                paySignReqHandler.SetParameter("timeStamp", timeStamp);
                paySignReqHandler.SetParameter("nonceStr", nonceStr);
                paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
                paySignReqHandler.SetParameter("signType", "MD5");
                paySign         = paySignReqHandler.CreateMd5Sign("key", "70OvzuXGLFP7539B9zbvEMUBd1H1Tv8Q");
                payaddid        = "";
                paytimeStamp    = timeStamp;
                paynonceStr     = nonceStr;
                paypackageValue = string.Format("prepay_id={0}", prepayId);
                paypaySign      = paySign;
                litDate         = DateTime.Now.ToString();
                oreder_name     = model.By_name + "护理预约";
            }
        }
コード例 #23
0
ファイル: paypage.aspx.cs プロジェクト: PageCard/WeChat
        //public static TenPayInfo TenPayInfo
        //{
        //    get
        //    {
        //        if (_tenPayInfo == null)
        //        {
        //            _tenPayInfo =
        //                TenPayInfoCollection.Data[System.Configuration.ConfigurationManager.AppSettings["WeixinPay_PartnerId"]];
        //        }
        //        return _tenPayInfo;
        //    }
        //}
        /// <summary>
        /// 微信支付:生成请求数据
        /// </summary>
        /// <param name="openid">微信用户id</openid>
        /// <param name="ttFee">商品总价格</param>
        /// <param name="busiBody"></param>
        /// <returns></returns>
        protected void WxPayData(decimal ttFee, string busiBody, string out_trade_no)
        {
            WxPayHelper wxPayHelper = new WxPayHelper();

            BLL.wx_payment_wxpay   wxPayBll    = new BLL.wx_payment_wxpay();
            Model.wx_payment_wxpay paymentInfo = wxPayBll.GetModelByWid(wid);

            // //先设置基本信息
            // string partnerId = paymentInfo.partnerId;// "1218574001";//
            // string appId = paymentInfo.appId;// "wxa9b8e33e48ac5e0f";//
            // string partnerKey = paymentInfo.partnerKey;// "huyuxianghuyuxianghuyuxiang12345";//
            // //paysignkey(非appkey)
            // string appKey = paymentInfo.paySignKey; //"nwRmqgvSG08pe3vU5qzBLb7Bvih0WOABGzUPvqgFqE0iSkJlJ8wh7JlLYy2cXFgFA3v1bM8eTDm1y1UcyeW9IGq2py2qei7J5xDoVR9lfO3cS6fMjFbMQeeqBRit0bKp";//

            // wxPayHelper.SetAppId(appId);
            // wxPayHelper.SetAppKey(appKey);
            // wxPayHelper.SetPartnerKey(partnerKey);
            // wxPayHelper.SetSignType("SHA1");
            // //设置请求package信息
            // wxPayHelper.SetParameter("bank_type", "WX");
            // wxPayHelper.SetParameter("body", busiBody);
            // wxPayHelper.SetParameter("attach",wid+"|"+busiBody);
            // wxPayHelper.SetParameter("partner", partnerId);
            // wxPayHelper.SetParameter("out_trade_no", out_trade_no);
            // wxPayHelper.SetParameter("total_fee", ((int)(ttFee * 100)).ToString());
            // wxPayHelper.SetParameter("fee_type", "1");
            //// wxPayHelper.SetParameter("notify_url", "http://" + HttpContext.Current.Request.Url.Authority + "/api/payment/wxpay/notify_url.aspx?wid="+wid);

            // wxPayHelper.SetParameter("notify_url", "http://" + HttpContext.Current.Request.Url.Authority + "/api/payment/wxpay/notify_url.aspx");//不能带参数
            // wxPayHelper.SetParameter("spbill_create_ip", MXRequest.GetIP());
            // wxPayHelper.SetParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
            // //---------有效期截至日期------

            // wxPayHelper.SetParameter("time_expire", DateTime.Now.AddMinutes(expireMinute).ToString("yyyyMMddHHmmss"));

            // wxPayHelper.SetParameter("input_charset", "UTF-8");
            // packageValue = wxPayHelper.CreateBizPackage();

            ///////////////////////////////////////////////////////////////////////////


            //通过,用code换取access_token
            //var openIdResult = OAuthApi.GetAccessToken(paymentInfo.appId, "a891edd957f2aede546f9256096bf95a", code);
            //if (openIdResult.errcode != ReturnCode.请求成功)
            //{
            //    return Content("错误:" + openIdResult.errmsg);
            //}

            string timeStamp = "";
            string nonceStr  = "";
            string paySign   = "";

            string sp_billno = Request["order_no"];
            //当前时间 yyyyMMdd
            string date = DateTime.Now.ToString("yyyyMMdd");

            if (null == sp_billno)
            {
                //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
                sp_billno = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);
            }
            else
            {
                sp_billno = Request["order_no"].ToString();
            }

            //创建支付应答对象
            Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
            //初始化
            packageReqHandler.Init();

            timeStamp = TenPayV3Util.GetTimestamp();
            nonceStr  = TenPayV3Util.GetNoncestr();

            //设置package订单参数
            packageReqHandler.SetParameter("appid", paymentInfo.appId);                                    //公众账号ID
            packageReqHandler.SetParameter("mch_id", paymentInfo.partnerId);                               //商户号
            packageReqHandler.SetParameter("nonce_str", nonceStr);                                         //随机字符串
            packageReqHandler.SetParameter("body", "aaa");                                                 //商品信息
            packageReqHandler.SetParameter("out_trade_no", sp_billno);                                     //商家订单号
            packageReqHandler.SetParameter("total_fee", "100");                                            //商品金额,以分为单位(money * 100).ToString()
            packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);                   //用户的公网ip,不是商户服务器IP
            packageReqHandler.SetParameter("notify_url", "http://ddd.com");                                //接收财付通通知的URL
            packageReqHandler.SetParameter("trade_type", Senparc.Weixin.MP.TenPayV3Type.JSAPI.ToString()); //交易类型
            packageReqHandler.SetParameter("openid", "oFo2Hjq6_yMhyz6cQ2MZtmxODOVU");                      //用户的openId

            string sign = packageReqHandler.CreateMd5Sign("key", paymentInfo.partnerKey);

            packageReqHandler.SetParameter("sign", sign);                           //签名

            string data = packageReqHandler.ParseXML();

            var    result   = TenPayV3.Unifiedorder(data);
            var    res      = XDocument.Parse(result);
            string prepayId = res.Element("xml").Element("prepay_id").Value;

            //设置支付参数
            Senparc.Weixin.MP.TenPayLibV3.RequestHandler paySignReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
            paySignReqHandler.SetParameter("appId", paymentInfo.appId);
            paySignReqHandler.SetParameter("timeStamp", timeStamp);
            paySignReqHandler.SetParameter("nonceStr", nonceStr);
            paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
            paySignReqHandler.SetParameter("signType", "MD5");
            paySign = paySignReqHandler.CreateMd5Sign("key", paymentInfo.partnerKey);

            payaddid        = paymentInfo.appId;
            paytimeStamp    = timeStamp;
            paynonceStr     = nonceStr;
            paypackageValue = packageValue;
            paypaySign      = paySign;
        }
コード例 #24
0
ファイル: DemandController.cs プロジェクト: Oldsooh/SHTS
        private bool PreparePaySign(TradeOrder order, out string appId, out string timeStamp,
            out string nonceStr, out string package, out string paySign, out string message)
        {
            bool isSuccessFul = false;

            appId = string.Empty;
            timeStamp = string.Empty;
            nonceStr = string.Empty;
            package = string.Empty;
            paySign = string.Empty;

            message = string.Empty;

            try
            {

                //创建支付应答对象
                RequestHandler packageReqHandler = new RequestHandler(null);
                //初始化
                packageReqHandler.Init();

                appId = TenPayV3Info.AppId;
                timeStamp = TenPayV3Util.GetTimestamp();
                nonceStr = TenPayV3Util.GetNoncestr();

                string body = "活动在线网-购买需求联系方式";

                //设置package订单参数
                packageReqHandler.SetParameter("appid", TenPayV3Info.AppId);		  //公众账号ID
                packageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId);		  //商户号
                packageReqHandler.SetParameter("nonce_str", nonceStr);                    //随机字符串
                packageReqHandler.SetParameter("body", body);    //商品信息
                packageReqHandler.SetParameter("out_trade_no", order.OrderId);		//商家订单号
                packageReqHandler.SetParameter("total_fee", (Convert.ToInt32(order.Amount * 100).ToString()));			        //商品金额,以分为单位(money * 100).ToString()
                packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);   //用户的公网ip,不是商户服务器IP
                packageReqHandler.SetParameter("notify_url", TenPayV3Info.TenPayV3Notify);		    //接收财付通通知的URL
                packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString());	                    //交易类型
                packageReqHandler.SetParameter("openid", CurrentWeChatUser.OpenId);	                    //用户的openId

                string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);
                packageReqHandler.SetParameter("sign", sign);	                    //签名

                string data = packageReqHandler.ParseXML();

                var result = TenPayV3.Unifiedorder(data);
                var res = XDocument.Parse(result);

                LogService.LogWexin("微信支付参数", res.ToString());
                string prepayId = res.Element("xml").Element("prepay_id").Value;

                //设置支付参数
                RequestHandler paySignReqHandler = new RequestHandler(null);
                paySignReqHandler.SetParameter("appId", TenPayV3Info.AppId);
                paySignReqHandler.SetParameter("timeStamp", timeStamp);
                paySignReqHandler.SetParameter("nonceStr", nonceStr);
                paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
                paySignReqHandler.SetParameter("signType", "MD5");

                paySign = paySignReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);
                package = string.Format("prepay_id={0}", prepayId);
            }
            catch (Exception ex)
            {
                message = "支付过程发生错误";
                LogService.LogWexin("构建支付参数出错", ex.ToString());
            }

            if (!string.IsNullOrEmpty(appId) &&
                !string.IsNullOrEmpty(timeStamp) &&
                !string.IsNullOrEmpty(nonceStr) &&
                !string.IsNullOrEmpty(package) &&
                !string.IsNullOrEmpty(paySign))
            {
                isSuccessFul = true;
            }

            return isSuccessFul;
        }
コード例 #25
0
ファイル: JsApi.aspx.cs プロジェクト: PageCard/WeChat
        protected void Page_Load(object sender, EventArgs e)
        {
            int orderId = MyCommFun.RequestInt("orderid");
            int wid     = MyCommFun.RequestInt("wid");

            getwid     = wid;
            getorderId = orderId;
            string code  = MyCommFun.RequestParam("code");
            string state = MyCommFun.RequestParam("state");

            BLL.wx_payment_wxpay   wxPayBll    = new BLL.wx_payment_wxpay();
            Model.wx_payment_wxpay paymentInfo = wxPayBll.GetModelByWid(wid);
            BLL.wx_userweixin      wx          = new BLL.wx_userweixin();
            Model.wx_userweixin    wxModel     = wx.GetModel(wid);
            BLL.orders             otBll       = new BLL.orders();

            Model.orders orderEntity = otBll.GetModel(orderId, wid);

            litout_trade_no = orderEntity.order_no;
            litMoney        = Decimal.ToInt32(orderEntity.order_amount);
            litDate         = orderEntity.add_time.ToString();



            if (string.IsNullOrEmpty(code))
            {
                Response.Write("您拒绝了授权!");
                return;
            }

            if (!state.Contains("|"))
            {
                //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下
                //实际上可以存任何想传递的数据,比如用户ID,并且需要结合例如下面的Session["OAuthAccessToken"]进行验证
                Response.Write("验证失败!请从正规途径进入!1001");
                return;
            }

            ////获取产品信息
            //var stateData = state.Split('|');
            //int productId = 0;

            //if (int.TryParse(stateData[0], out productId))
            //{
            //    int hc = 0;
            //    if (int.TryParse(stateData[1], out hc))
            //    {
            //        var products = ProductModel.GetFakeProductList();
            //        product = products.FirstOrDefault(z => z.Id == productId);
            //        if (product == null || product.GetHashCode() != hc)
            //        {
            //            return Content("商品信息不存在,或非法进入!1002");
            //        }
            //        ViewData["product"] = product;
            //    }
            //}

            //通过,用code换取access_token
            var openIdResult = OAuthApi.GetAccessToken(PayV3Config.Mch_appId, PayV3Config.Mch_Secret, code);

            if (openIdResult.errcode != ReturnCode.请求成功)
            {
                Response.Write("错误:" + openIdResult.errmsg);
                return;
            }

            string timeStamp = "";
            string nonceStr  = "";
            string paySign   = "";

            string sp_billno = Request["order_no"];
            //当前时间 yyyyMMdd
            string date = DateTime.Now.ToString("yyyyMMdd");

            if (null == sp_billno)
            {
                //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
                sp_billno = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);
            }
            else
            {
                sp_billno = Request["order_no"].ToString();
            }

            //创建支付应答对象
            Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
            //初始化
            packageReqHandler.Init();

            timeStamp = TenPayV3Util.GetTimestamp();
            nonceStr  = TenPayV3Util.GetNoncestr();

            //设置package订单参数
            //  packageReqHandler.SetParameter("appid", paymentInfo.appId);		  //公众账号ID
            ///    packageReqHandler.SetParameter("mch_id", paymentInfo.partnerId);		  //商户号

            packageReqHandler.SetParameter("appid", PayV3Config.Mch_appId);               //公众账号ID
            packageReqHandler.SetParameter("mch_id", PayV3Config.Mch_mchid);              //商户号
            ////
            packageReqHandler.SetParameter("sub_appid", paymentInfo.appId);               //子商户公众账号ID
            packageReqHandler.SetParameter("sub_mch_id", paymentInfo.partnerId);          //子商户号mch_id
            ///


            packageReqHandler.SetParameter("nonce_str", nonceStr);                                                                          //随机字符串
            packageReqHandler.SetParameter("body", orderId.ToString());                                                                     //商品信息
            packageReqHandler.SetParameter("out_trade_no", litout_trade_no);                                                                //商家订单号
            packageReqHandler.SetParameter("total_fee", (litMoney * 100).ToString());                                                       //product == null ? "100" : (product.Price * 100).ToString()商品金额,以分为单位(money * 100).ToString()
            packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);                                                    //用户的公网ip,不是商户服务器IP
            packageReqHandler.SetParameter("notify_url", MyCommFun.getWebSite() + "/api/wxpay/notify_url.aspx?wid=" + wid + "|" + orderId); //接收财付通通知的URL
            packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString());                                                    //交易类型
            packageReqHandler.SetParameter("openid", openIdResult.openid);                                                                  //用户的openId

            //   string sign = packageReqHandler.CreateMd5Sign("key", paymentInfo.paySignKey);
            string sign = packageReqHandler.CreateMd5Sign("key", PayV3Config.Mch_Key);

            packageReqHandler.SetParameter("sign", sign);                           //签名

            string data = packageReqHandler.ParseXML();

            var result = TenPayV3.Unifiedorder(data);

            var    res      = XDocument.Parse(result);
            string prepayId = res.Element("xml").Element("prepay_id").Value;

            //设置支付参数
            Senparc.Weixin.MP.TenPayLibV3.RequestHandler paySignReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
            paySignReqHandler.SetParameter("appId", PayV3Config.Mch_appId);
            paySignReqHandler.SetParameter("timeStamp", timeStamp);
            paySignReqHandler.SetParameter("nonceStr", nonceStr);
            paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId));
            paySignReqHandler.SetParameter("signType", "MD5");
            paySign = paySignReqHandler.CreateMd5Sign("key", PayV3Config.Mch_Key);



            payaddid        = PayV3Config.Mch_appId;
            paytimeStamp    = timeStamp;
            paynonceStr     = nonceStr;
            paypackageValue = string.Format("prepay_id={0}", prepayId);
            paypaySign      = paySign;
        }