コード例 #1
0
ファイル: mch.cs プロジェクト: fleetscythe/YuChang
 public static string unifiedorder(string appid, string mch_id, string openid, string key, string body, string notify_url,
                            string out_trade_no, int total_fee)
 {
     //string appId = this.accessToken.AppId;
     //string parameterValue = this.partnerId;
     var spbill_create_ip = "127.0.0.1";
     string noncestr = TenpayUtil.getNoncestr();
     string parameterValue2 = "JSAPI";
     RequestHandler requestHandler = new RequestHandler(Encoding.UTF8);
     requestHandler.setKey(key);
     requestHandler.setParameter("appid", appid);
     requestHandler.setParameter("body", body);
     requestHandler.setParameter("mch_id", mch_id);
     requestHandler.setParameter("nonce_str", noncestr);
     requestHandler.setParameter("notify_url", notify_url);
     requestHandler.setParameter("openid", openid);
     requestHandler.setParameter("out_trade_no", out_trade_no);
     requestHandler.setParameter("spbill_create_ip", spbill_create_ip);
     requestHandler.setParameter("total_fee", total_fee.ToString());
     requestHandler.setParameter("trade_type", parameterValue2);
     string text = requestHandler.createMd5Sign();
     string data = requestHandler.parseXML();
     string address = "https://api.mch.weixin.qq.com/pay/unifiedorder";
     string xml = new WebClient
     {
         Encoding = Encoding.UTF8
     }.UploadString(address, "post", data);
     XmlDocument xmlDocument = new XmlDocument();
     xmlDocument.LoadXml(xml);
     XmlElement[] source = xmlDocument.FirstChild.ChildNodes.Cast<XmlElement>().ToArray<XmlElement>();
     string innerText = source.Single((XmlElement o) => o.Name == "return_code").InnerText;
     if (!(innerText != "SUCCESS"))
     {
         return source.Single((XmlElement o) => o.Name == "prepay_id").InnerText;
     }
     string text2 = (
         from o in source
         where o.Name == "err_code"
         select o.InnerText).SingleOrDefault<string>();
     string text3 = (
         from o in source
         where o.Name == "err_code_des"
         select o.InnerText).SingleOrDefault<string>();
     if (text2 != null && text3 != null)
     {
         throw Error.WeiXinError(text2, text3);
     }
     string msg = (
         from o in source
         where o.Name == "return_msg"
         select o.InnerText).SingleOrDefault<string>() ?? "ERROR";
     throw Error.WeiXinError(innerText, msg);
 }
コード例 #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string sp_billno = Request["order_no"];
        //当前时间 yyyyMMdd
        string date = DateTime.Now.ToString("yyyyMMdd");
        //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一
        string out_trade_no = "" + DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4);

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

        sp_billno = TenpayUtil.partner + sp_billno;



        //创建RequestHandler实例
        RequestHandler packageReqHandler = new RequestHandler(Context);
        //初始化
        packageReqHandler.init();
        packageReqHandler.setKey(TenpayUtil.key);

        //设置package订单参数
        packageReqHandler.setParameter("partner", TenpayUtil.partner);		  //商户号
        packageReqHandler.setParameter("bank_type", "WX");		                      //银行类型
        packageReqHandler.setParameter("fee_type", "1");                    //币种,1人民币
        packageReqHandler.setParameter("input_charset", "GBK");
        packageReqHandler.setParameter("out_trade_no", sp_billno);		//商家订单号
        packageReqHandler.setParameter("total_fee", "1");			        //商品金额,以分为单位(money * 100).ToString()
        packageReqHandler.setParameter("notify_url", TenpayUtil.tenpay_notify);		    //接收财付通通知的URL
        packageReqHandler.setParameter("body", "nativecall");	                    //商品描述
        packageReqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress);   //用户的公网ip,不是商户服务器IP

        //获取package包
        string  packageValue = packageReqHandler.getRequestURL();

        //调起微信支付签名
        string timeStamp = TenpayUtil.getTimestamp();
        string  nonceStr = TenpayUtil.getNoncestr();

        //设置支付参数
        RequestHandler payHandler = new RequestHandler(Context);
        payHandler.setParameter("appid", TenpayUtil.appid);
        payHandler.setParameter("noncestr", nonceStr);
        payHandler.setParameter("timestamp", timeStamp);
        payHandler.setParameter("package", packageValue);
        payHandler.setParameter("RetCode","0");
        payHandler.setParameter("RetErrMsg","成功");
        string paySign = payHandler.createSHA1Sign();
        payHandler.setParameter("app_signature", paySign);
        payHandler.setParameter("sign_method","SHA1");


        Response.ContentType = "text/xml";
        Response.Clear();
        Response.Write(payHandler.parseXML());

    }