开发一个微信小程序一般得需要多少钱?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发一个微信小程序一般得需要多少钱?相关的知识,希望对你有一定的参考价值。

开发一个微信小程序需要多少钱?

开发一个微信小程序一般得需要几千元不等,推荐选择在线小程序制作平台,在线小程序制作平台小程序,免代码拖电式,在线生成小程序; 并且具有400+小程序模板,2000w+成功企业的微信小程序案例。

影响微信小程序的具体价格如下:
1、域名价格
首先大家要先去准备好自己的商城域名,可以选择一个跟企业相关,简短一些的域名。域名可以在服务商的网站上直接购买,一般域名的价格在几百块左右,大家可以提前去做好域名的准备。
2、服务器价格
其次还需要去准备好服务器,服务器大小不同,可以承载的内容大小也不同。服务器内存越大,可以承载的内容就越多,相应的价格也越高。服务器的价格主要在几千元到几万元之间,大家在选择服务器大小的时候,不要选择太小的,这样商城运营起来的速度会比较慢,影响用户体验。

想要了解更多有关开发小程序的相关信息,推荐选择在线小程序制作平台。在线小程序制作平台不需要学习htmlphp、CSS等等的编程语言,不需耗费众多的资源和时间,根据自身实际需求,通过简单的操作修改,就可以轻松的制作出属于优质的小程序。

400+精美小程序模板,点击这里马上获取:小程序制作平台

参考技术A 我们没有办法算出一个小程序具体需要多少钱,但是我们可以做一个初步的预算,接下来就教大家如何进行初步预算。小程序的开发需要涉及到开发工具费用,开发人员费用,服务器费用以及注册认证等。我们把这些基础费用相加就可以算出一个大概的费用了。

微信小程序

有的客户认为为什么有的小程序才几百块,你们的要几千块?还有一些标榜着什么小程序免费体验多少多少天不满全额退款的。在这里想对大家说,我们都是有独立思考能力的成年人了,该好好想想其中的猫腻。一个微信小程序光要微信认证就要 300 元,他们所说的一二百的小程序免费体验,就是给你一个后台的模板,其他都是让你自己去弄,他们就只提供服务器和一个后台。对于那些公司来说如果这些小订单量达到一定的数量,他们成本是会很低的。因为模板不需要二次开发,只需要服务器的租赁费用就可以了。哪怕你体验过后不想用这个小程序,把小程序后台收回来他们也没有损失的。但是,你可是要给微信 300 元的认证费用呢。

另外,小程序有两种开发方式,分别是模板开发和定制开发。模板开发比较便宜,无需开发直接用模板就能使用。但是模板是按年收取使用费用的,技术维护交给小程序开发公司去做,这种适合大部分的商家使用。而定制开发会比较贵,其适合有个性化需求的商家,开发成本和开发周期比模板开发较长一点,需要开发完成才能使用,通常是有个性化需求或者自己有技术团队的企业使用。当然,也能交给专业的网络外包公司去做。如此,省时又省力,商家们只需要坐等收益。

其中,几个基础费用收费标准如下:

1、工具费用

对于工具的费用来说也是分不同等级的,我们以某知名开发工具来作为一个简单的例子。其价格从几百元到几千元都要,会根据客户的需求,去选择使用的。

2、开发人员人力费用

从目前的程序员工资上来算,程序员一天的工资大约为 1000 元。然而这是按月来算的,所以单算整天的费用来说会更高一些,在这里我们就预估是 1200 元一天。接下来,就是关于开发小程序需要多少天的问题了。这个是非常难以计算的,因为他牵扯到程序员使用什么样的开发工具以及客户的功能需求不同等。
小程序开发工具主要有三种模式:源代码开发模式、套用模板进行编辑的模式和基于模板拖拽制作的模式。源码开发模式下,开发一个小程序,一般都得按月计,人力费用得几万到十几万不等;套用模版进行编辑的模式下的话就比较简单了,这样的模式下改动一般比较少,对于程序员来说一般一到两天就可以搞定了,这样的人力成本大概的 1200 到 2400 之间。如果是基于模板拖拽的模式下,一般情况下预计会需要一周到三周这样。所以,人力费用的话也会相差较大,从几千到几万块都是有可能的。

3、服务器费用

只要是小程序开发,基本上都是需要服务器的。这个是作为小程序开发中必不可少的一个费用,关于这一块的费用我们可以简单的参考一下阿里云服务器的价格。或许有少许小程序开发工具,默认自带了服务器,这时服务器这部分的费用就隐含在工具的使用费里了,但是绝大多数的工具是不含服务器费用的。

4、关于小程序的注册认证费用

这个注册认证费用是微信收取的费用,如果是个人注册也是不需要注册费用的,如果是企业注册就需要 300 元每年的认证费。这个是固定费用并且是没有任何异议的。有一些特殊情况,比如说需要修改小程序的名称那么也是需要重新认证并且重新付费给微信的。

其实小程序开发最重要的是需要和开发者进行深度咨询,把自己想要的功能需求列表给开发者并且请开发者进行估价是最准确的。

对于开发一个微信小程序多少钱这个问题。小程序的价格都是根据功能多少、复杂程度、配置高低、页面设计、售后服务来决定的。绝对不是一概而论的,主要也是一分钱一分货这个道理。开发一个微信小程序从需求对接到产品规划、原型设计、UI 设计、技术实现,程序测试、售后维护等等,整个标准作业流程走完费用肯定就高了,因为付出的人力成本和时间成本摆在那呢。所以,请大家千万不要相信什么几百块钱就能做小程序的话了。
参考技术B 近几年小程序发展形势大好,很多商家都想通过小程序店铺来打通微信端流量市场。那么开发一个小程序要多少钱?这和小程序的开发方式以及开发难易程度有直接的关系,我们一起来看看吧。
1、自己独立开发

这个需要自己有足够的开发基础,毕竟涉及到小程序代码开发,想要呈现好的效果,不是那么容易的,况且上线后也需要有人技术维护。如果是个人版或者简单功能的小程序确实是可以实现独自开发的,那也没什么成本。另一方面,要视小程序的难易程度而定,如果是较为复杂的小程序,一个人无法独立完成开发的话,那么你也要把租用场地、租用设备、聘请技术人员等一系列的开支算进去,成本和周期也会随之增加。

2、第三方模板小程序

模板小程序是针对每个行业的特性而统一开发制作对于商家来说操作简单,直接套用模板即可,开发周期短上线快(一般最快数天),营销功能也比较齐全,能满足日常经营需求,价格也比较实惠,一般在几千元不等,对于中小型商家来说性价比最高。如果商家没有任何技术基础,也是完全不影响使用的,就像我们开淘宝店铺一样,不受技术层面限制。

3、第三方定制小程序
这个要根据商家的具体需求,对小程序的每个页面每项功能去开发,所以开发周期长,开发成本高等,一般在数万元到数十万元不等,更适合大企业使用。

那么我们该怎么选?小木建议,先明确自己所需要的所有功能,在符合功能需求的前提下选择最优方案即可,对于中小型商家来说,模板小程序就能完全满足经营需求了。
参考技术C 不同类型的小程序开发的价格是不一样的,一般按月计,人力费用几万到十几万不等。

微信小程序支付功能 C# .NET开发

微信小程序支付功能的开发的时候坑比较多,不过对于钱的事谨慎也是好事。网上关于小程序支付的实例很多,但是大多多少有些问题,C#开发的更少。此篇文档的目的是讲开发过程中遇到的问题做一个备注,也方便其他开发的同学作为参考!

 

       1、首先建议把官方文档支付部分看上三遍,每个细节都不要放过,因为任何一个点和微信要求不符都会导致支付不成功。https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=3_1

      2、经过验证的微信支付功能,会需要一些商户号、支付秘钥等,不要搞混。

     3、经常遇到的是“签名错误”,请仔细看需要传送的xml参数及取值规则是否符合微信规则。微信有个验证工具可以验证发送的xml字段是否合法。

 

下面上代码:

 

web.config

 

    <add key="ConnectionString" value="server=127.0.0.1;database=;uid=sa;pwd="/>
    <add key="ConnectionString2" value="server=127.0.0.1;database=codematic2;uid=sa;pwd=1"/>
    <add key="appid" value=""/>//appid
    <add key="secret" value=""/>//小程序秘钥
    <add key="mch_id" value=""/>//商户号
    <add key="key" value=""/>//支付秘钥
    <add key="ip" value=""/>//服务器IP
    <add key="PayResulturl" value=""/>//微信返回接收信息的url地址
  </appSettings>

支付后台xiadan.ashx

 

 

<%@ WebHandler Language="C#" Class="xiadan" %>

using System;
using System.Web;
using System.Net;
using System.IO;
using System.Configuration;
using Maticsoft.Model;
using Maticsoft.BLL;
using System.Security.Cryptography;
using System.Text;
using System.Xml.Serialization;
using System.Xml;
using System.Collections.Generic;
using System.Data;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Linq;
using Newtonsoft.Json;

public class xiadan : IHttpHandler


    public void ProcessRequest(HttpContext context)
    
        context.Response.ContentType = "text/plain";
        string openid = context.Request.Params["openid"];
        string ordertime = context.Request.Params["ordertime"];

        string appid = ConfigurationManager.AppSettings["appid"];
        string secret = ConfigurationManager.AppSettings["secret"];
        string key = ConfigurationManager.AppSettings["key"];
        string mch_id = ConfigurationManager.AppSettings["mch_id"];
        string ip = ConfigurationManager.AppSettings["ip"];
        string PayResulturl = ConfigurationManager.AppSettings["PayResulturl"];
        string roomid = context.Request.Params["roomid"];
        string aa = "-押金";////商品描述交易字段格式根据不同的应用场景按照以下格式:APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。

        string strcode = aa;
        byte[] buffer = Encoding.UTF8.GetBytes(strcode);
        string body = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
        string totalfee = context.Request.Params["totalfee"];
        string output = "";
        if ((context.Request.Params["openid"] != null) && (context.Request.Params["openid"] != ""))
        
            //OrderInfo order = new OrderInfo();

            //order.appid = appid;

            System.Random Random = new System.Random();



            var dic = new Dictionary<string, string>

    "appid", appid,
    "mch_id", mch_id,
    "nonce_str", GetRandomString(20)/*Random.Next().ToString()*/,
    "body",body,
    "out_trade_no",roomid + DateTime.Now.ToString("yyyyMMddHHmmssfff") + Random.Next(999).ToString(),//商户自己的订单号码
    "total_fee",totalfee,
    "spbill_create_ip",ip,//服务器的IP地址
    "notify_url",PayResulturl,//异步通知的地址,不能带参数
    "trade_type","JSAPI" ,
    "openid",openid
;
      //加入签名
            dic.Add("sign", GetSignString(dic));

            var sb = new StringBuilder();
            sb.Append("<xml>");


            foreach (var d in dic)
            
                sb.Append("<" + d.Key + ">" + d.Value + "</" + d.Key + ">");
            
            sb.Append("</xml>");
            var xml = new XmlDocument();
            //  xml.LoadXml(GetPostString("https://api.mch.weixin.qq.com/pay/unifiedorder", sb.ToString()));
            CookieCollection coo = new CookieCollection();
            Encoding en = Encoding.GetEncoding("UTF-8");

            HttpWebResponse response = CreatePostHttpResponse("https://api.mch.weixin.qq.com/pay/unifiedorder", sb.ToString(), en);
            //打印返回值
            Stream stream = response.GetResponseStream();   //获取响应的字符串流
            StreamReader sr = new StreamReader(stream); //创建一个stream读取流
            string html = sr.ReadToEnd();   //从头读到尾,放到字符串html
                                            //Console.WriteLine(html);
            xml.LoadXml(html);
            //对请求返回值 进行处理

            var root = xml.DocumentElement;

            DataSet ds = new DataSet();
            StringReader stram = new StringReader(html);
            XmlTextReader reader = new XmlTextReader(stram);
            ds.ReadXml(reader);
            string return_code = ds.Tables[0].Rows[0]["return_code"].ToString();
            if (return_code.ToUpper() == "SUCCESS")
            
                //通信成功
                string result_code = ds.Tables[0].Rows[0]["result_code"].ToString();//业务结果
                if (result_code.ToUpper() == "SUCCESS")
                
                    var res = new Dictionary<string, string>

    "appId", appid,
    "timeStamp", GetTimeStamp(),
    "nonceStr", dic["nonce_str"],
    "package",  "prepay_id="+ds.Tables[0].Rows[0]["prepay_id"].ToString(),
    "signType", "MD5"
;

                    //在服务器上签名
                    res.Add("paySign", GetSignString(res));
                    // string signapp = res.ToString();
                    string signapp = JsonConvert.SerializeObject(res);
                    if ((context.Request.Params["openid"] != null) && (context.Request.Params["openid"] != ""))
                     
                    //存储订单信息
                    Maticsoft.Model.order_history oh = new Maticsoft.Model.order_history();
                    //oh.shop_id =
                    oh.room_id = Convert.ToInt32(roomid);
                    oh.pay_price = Convert.ToDecimal(totalfee);
                    oh.out_trade_no = dic["out_trade_no"];
                    oh.order_timestart = Convert.ToDateTime(ordertime);
                    oh.openid = openid;
                    oh.creating_date = DateTime.Now;

                    Maticsoft.BLL.order_history bll = new Maticsoft.BLL.order_history();
                    bll.Add(oh);

                
                context.Response.Write(signapp);
            
        




    
    context.Response.Write(output);
    

public bool IsReusable

    get
    
        return false;
    


public string GetMd5Hash(String input)

    if (input == null)
    
        return null;
    

    MD5 md5Hash = MD5.Create();

    // 将输入字符串转换为字节数组并计算哈希数据  
    byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

    // 创建一个 Stringbuilder 来收集字节并创建字符串  
    StringBuilder sBuilder = new StringBuilder();

    // 循环遍历哈希数据的每一个字节并格式化为十六进制字符串  
    for (int i = 0; i < data.Length; i++)
    
        sBuilder.Append(data[i].ToString());
    

    // 返回十六进制字符串  
    return sBuilder.ToString();

/// <summary>  
/// 对象序列化成 XML String  
/// </summary>  
public static string XmlSerialize<T>(T obj)

    string xmlString = string.Empty;
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
    using (MemoryStream ms = new MemoryStream())
    
        xmlSerializer.Serialize(ms, obj);
        xmlString = Encoding.UTF8.GetString(ms.ToArray());
    
    return xmlString;

/// <summary>
/// 从字符串里随机得到,规定个数的字符串.
/// </summary>
/// <param name="allChar"></param>
/// <param name="CodeCount"></param>
/// <returns></returns>
public static string GetRandomString(int CodeCount)

    string allChar = "1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
    string[] allCharArray = allChar.Split(‘,‘);
    string RandomCode = "";
    int temp = -1;
    Random rand = new Random();
    for (int i = 0; i < CodeCount; i++)
    
        if (temp != -1)
        
            rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
        
        int t = rand.Next(allCharArray.Length - 1);
        while (temp == t)
        
            t = rand.Next(allCharArray.Length - 1);
        
        temp = t;
        RandomCode += allCharArray[t];
    

    return RandomCode;



public static string GetWebClientIp()

    string userIP = "IP";

    try
    
        if (System.Web.HttpContext.Current == null
    || System.Web.HttpContext.Current.Request == null
    || System.Web.HttpContext.Current.Request.ServerVariables == null)
            return "";

        string CustomerIP = "";

        //CDN加速后取到的IP   
        CustomerIP = System.Web.HttpContext.Current.Request.Headers["Cdn-Src-Ip"];
        if (!string.IsNullOrEmpty(CustomerIP))
        
            return CustomerIP;
        

        CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];


        if (!String.IsNullOrEmpty(CustomerIP))
            return CustomerIP;

        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
        
            CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (CustomerIP == null)
                CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        
        else
        
            CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

        

        if (string.Compare(CustomerIP, "unknown", true) == 0)
            return System.Web.HttpContext.Current.Request.UserHostAddress;
        return CustomerIP;
    
    catch  

    return userIP;





private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)

    return true; //总是接受   


public static HttpWebResponse CreatePostHttpResponse(string url, string datas, Encoding charset)

    HttpWebRequest request = null;
    //HTTPSQ请求
    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
    request = WebRequest.Create(url) as HttpWebRequest;
    request.ProtocolVersion = HttpVersion.Version10;
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";

    //如果需要POST数据   
    //if (!(parameters == null || parameters.Count == 0))
    //
    StringBuilder buffer = new StringBuilder();
    //int i = 0;
    //foreach (string key in parameters.Keys)
    //
    //    if (i > 0)
    //    
    //        buffer.AppendFormat("&0=1", key, parameters[key]);
    //    
    //    else
    //    
    //        buffer.AppendFormat("0=1", key, parameters[key]);
    //    
    //    i++;
    //
    buffer.AppendFormat(datas);
    byte[] data = charset.GetBytes(buffer.ToString());
    using (Stream stream = request.GetRequestStream())
    
        stream.Write(data, 0, data.Length);
    
    //
    return request.GetResponse() as HttpWebResponse;



public string GetSignString(Dictionary<string, string> dic)

    string key = System.Web.Configuration.WebConfigurationManager.AppSettings["key"].ToString();//商户平台 API安全里面设置的KEY  32位长度
                                                                                                //排序
    dic = dic.OrderBy(d => d.Key).ToDictionary(d => d.Key, d => d.Value);
    //连接字段
    var sign = dic.Aggregate("", (current, d) => current + (d.Key + "=" + d.Value + "&"));
    sign += "key=" + key;
    //MD5
    // sign = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sign, "MD5").ToUpper();
    System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
    sign = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(sign))).Replace("-", null);
    return sign;



/// <summary>  
/// 获取时间戳  
/// </summary>  
/// <returns></returns>  
public static string GetTimeStamp()

    TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
    return Convert.ToInt64(ts.TotalSeconds).ToString();





 

      微信返回信息接收后台页面notify_url.ashx

 

<%@ WebHandler Language="C#" Class="notify_url" %>

using System;
using System.Web;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using System.Xml;
using System.Net;
public class notify_url : IHttpHandler

    public string return_result = "";
    public void ProcessRequest(HttpContext context)
    
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");


        String xmlData = getPostStr();//获取请求数据
        if (xmlData == "")
        

        
        else
        
            var dic = new Dictionary<string, string>

    "return_code", "SUCCESS",
    "return_msg","OK"

;
            var sb = new StringBuilder();
            sb.Append("<xml>");


            foreach (var d in dic)
            
                sb.Append("<" + d.Key + ">" + d.Value + "</" + d.Key + ">");
            
            sb.Append("</xml>");





            //把数据重新返回给客户端
            DataSet ds = new DataSet();
            StringReader stram = new StringReader(xmlData);
            XmlTextReader datareader = new XmlTextReader(stram);
            ds.ReadXml(datareader);
            if (ds.Tables[0].Rows[0]["return_code"].ToString() == "SUCCESS")
            


                string wx_appid = "";//微信开放平台审核通过的应用APPID
                string wx_mch_id = "";//微信支付分配的商户号

                string wx_nonce_str = "";// 	随机字符串,不长于32位
                string wx_sign = "";//签名,详见签名算法
                string wx_result_code = "";//SUCCESS/FAIL

                string wx_return_code = "";
                string wx_openid = "";//用户在商户appid下的唯一标识
                string wx_is_subscribe = "";//用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
                string wx_trade_type = "";// 	APP
                string wx_bank_type = "";// 	银行类型,采用字符串类型的银行标识,银行类型见银行列表
                string wx_fee_type = "";// 	货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型


                string wx_transaction_id = "";//微信支付订单号
                string wx_out_trade_no = "";//商户系统的订单号,与请求一致。
                string wx_time_end = "";// 	支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
                int wx_total_fee = -1;// 	订单总金额,单位为分
                int wx_cash_fee = -1;//现金支付金额订单现金支付金额,详见支付金额


                #region  数据解析
                //列 是否存在
                string signstr = "";//需要前面的字符串
                                    //wx_appid
                if (ds.Tables[0].Columns.Contains("appid"))
                
                    wx_appid = ds.Tables[0].Rows[0]["appid"].ToString();
                    if (!string.IsNullOrEmpty(wx_appid))
                    
                        signstr += "appid=" + wx_appid;
                    
                

                //wx_bank_type
                if (ds.Tables[0].Columns.Contains("bank_type"))
                
                    wx_bank_type = ds.Tables[0].Rows[0]["bank_type"].ToString();
                    if (!string.IsNullOrEmpty(wx_bank_type))
                    
                        signstr += "&bank_type=" + wx_bank_type;
                    
                
                //wx_cash_fee
                if (ds.Tables[0].Columns.Contains("cash_fee"))
                
                    wx_cash_fee = Convert.ToInt32(ds.Tables[0].Rows[0]["cash_fee"].ToString());

                    signstr += "&cash_fee=" + wx_cash_fee;
                

                //wx_fee_type
                if (ds.Tables[0].Columns.Contains("fee_type"))
                
                    wx_fee_type = ds.Tables[0].Rows[0]["fee_type"].ToString();
                    if (!string.IsNullOrEmpty(wx_fee_type))
                    
                        signstr += "&fee_type=" + wx_fee_type;
                    
                

                //wx_is_subscribe
                if (ds.Tables[0].Columns.Contains("is_subscribe"))
                
                    wx_is_subscribe = ds.Tables[0].Rows[0]["is_subscribe"].ToString();
                    if (!string.IsNullOrEmpty(wx_is_subscribe))
                    
                        signstr += "&is_subscribe=" + wx_is_subscribe;
                    
                

                //wx_mch_id
                if (ds.Tables[0].Columns.Contains("mch_id"))
                
                    wx_mch_id = ds.Tables[0].Rows[0]["mch_id"].ToString();
                    if (!string.IsNullOrEmpty(wx_mch_id))
                    
                        signstr += "&mch_id=" + wx_mch_id;
                    
                

                //wx_nonce_str
                if (ds.Tables[0].Columns.Contains("nonce_str"))
                
                    wx_nonce_str = ds.Tables[0].Rows[0]["nonce_str"].ToString();
                    if (!string.IsNullOrEmpty(wx_nonce_str))
                    
                        signstr += "&nonce_str=" + wx_nonce_str;
                    
                

                //wx_openid
                if (ds.Tables[0].Columns.Contains("openid"))
                
                    wx_openid = ds.Tables[0].Rows[0]["openid"].ToString();
                    if (!string.IsNullOrEmpty(wx_openid))
                    
                        signstr += "&openid=" + wx_openid;
                    
                

                //wx_out_trade_no
                if (ds.Tables[0].Columns.Contains("out_trade_no"))
                
                    wx_out_trade_no = ds.Tables[0].Rows[0]["out_trade_no"].ToString();
                    if (!string.IsNullOrEmpty(wx_out_trade_no))
                    
                        signstr += "&out_trade_no=" + wx_out_trade_no;
                    
                

                //wx_result_code 
                if (ds.Tables[0].Columns.Contains("result_code"))
                
                    wx_result_code = ds.Tables[0].Rows[0]["result_code"].ToString();
                    if (!string.IsNullOrEmpty(wx_result_code))
                    
                        signstr += "&result_code=" + wx_result_code;
                    
                

                //wx_result_code 
                if (ds.Tables[0].Columns.Contains("return_code"))
                
                    wx_return_code = ds.Tables[0].Rows[0]["return_code"].ToString();
                    if (!string.IsNullOrEmpty(wx_return_code))
                    
                        signstr += "&return_code=" + wx_return_code;
                    
                

                //wx_sign 
                if (ds.Tables[0].Columns.Contains("sign"))
                
                    wx_sign = ds.Tables[0].Rows[0]["sign"].ToString();
                    //if (!string.IsNullOrEmpty(wx_sign))
                    //
                    //    signstr += "&sign=" + wx_sign;
                    //
                

                //wx_time_end
                if (ds.Tables[0].Columns.Contains("time_end"))
                
                    wx_time_end = ds.Tables[0].Rows[0]["time_end"].ToString();
                    if (!string.IsNullOrEmpty(wx_time_end))
                    
                        signstr += "&time_end=" + wx_time_end;
                    
                

                //wx_total_fee
                if (ds.Tables[0].Columns.Contains("total_fee"))
                
                    wx_total_fee = Convert.ToInt32(ds.Tables[0].Rows[0]["total_fee"].ToString());

                    signstr += "&total_fee=" + wx_total_fee;
                

                //wx_trade_type
                if (ds.Tables[0].Columns.Contains("trade_type"))
                
                    wx_trade_type = ds.Tables[0].Rows[0]["trade_type"].ToString();
                    if (!string.IsNullOrEmpty(wx_trade_type))
                    
                        signstr += "&trade_type=" + wx_trade_type;
                    
                

                //wx_transaction_id
                if (ds.Tables[0].Columns.Contains("transaction_id"))
                
                    wx_transaction_id = ds.Tables[0].Rows[0]["transaction_id"].ToString();
                    if (!string.IsNullOrEmpty(wx_transaction_id))
                    
                        signstr += "&transaction_id=" + wx_transaction_id;
                    
                

                #endregion

                //追加key 密钥
                signstr += "&key=" + System.Web.Configuration.WebConfigurationManager.AppSettings["key"].ToString();
                //签名正确
                string orderStrwhere = "ordernumber=‘" + wx_out_trade_no + "‘";



                if (wx_sign == System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(signstr, "MD5").ToUpper())
                
                    //签名正确   处理订单操作逻辑


                
                else
                
                    //追加备注信息

                

            
            else
            
                // 返回信息,如非空,为错误原因  签名失败 参数格式校验错误
                string return_msg = ds.Tables[0].Rows[0]["return_msg"].ToString();

            


            return_result = sb.ToString();
        
    


    public bool IsReusable
    
        get
        
            return false;
        
    

    //获得Post过来的数据
    public string getPostStr()
    
        Int32 intLen = Convert.ToInt32(System.Web.HttpContext.Current.Request.InputStream.Length);
        byte[] b = new byte[intLen];
        System.Web.HttpContext.Current.Request.InputStream.Read(b, 0, intLen);
        return System.Text.Encoding.UTF8.GetString(b);
    

以上是关于开发一个微信小程序一般得需要多少钱?的主要内容,如果未能解决你的问题,请参考以下文章

开发一个微信小程序大概要花多少钱

微信小程序:做一个简单的商城小程序需要多少钱

商超行业微信小程序开发定制一般多少钱 (行业技术人员解读)

我想开发一个小程序,大概需要多少钱?

微信小程序商城源码开发

开发一个小程序需要多长时间?