Beispiel #1
0
        private static string genPackageSign(WXPrePost postParams)
        {
            //拼接排序list
            Dictionary <string, string> packageParams = new Dictionary <string, string>();

            packageParams.Add("appid", postParams.appid);
            packageParams.Add("body", postParams.body);
            packageParams.Add("detail", postParams.detail);
            packageParams.Add("mch_id", postParams.mch_id);
            packageParams.Add("nonce_str", postParams.nonce_str);
            packageParams.Add("notify_url", postParams.notify_url);
            packageParams.Add("out_trade_no", postParams.out_trade_no);
            packageParams.Add("spbill_create_ip", postParams.spbill_create_ip);
            packageParams.Add("total_fee", postParams.total_fee + "");
            packageParams.Add("trade_type", postParams.trade_type);
            StringBuilder sb = new StringBuilder();

            foreach (var packageParam in packageParams)
            {
                sb.Append(packageParam.Key);
                sb.Append('=');
                sb.Append(packageParam.Value);
                sb.Append('&');
            }
            sb.Append("key=");
            sb.Append(PartnerKey);//key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
            //这里又用到了从实例代码复制的MD5 可以去上面copy
            String packageSign = MD5Tool.GetMD5(sb.ToString()).ToUpper();

            return(packageSign);
        }
Beispiel #2
0
        //-----------------------微信下单代码----------------------
        //微信统一下单
        public static WeChatOrderInfo WeChatPlaceOrder(float money)
        {
            WXPrePost post = new WXPrePost();

            post.appid            = Pay_App_Id;
            post.mch_id           = PartnerId;
            post.nonce_str        = genNonceStr(32);             //随机字符串  **1 不超过32位
            post.body             = "商品购买";                      //商品标题
            post.detail           = "用于购买商品";                    //详细信息
            post.out_trade_no     = TopUpComponent.GetTradeNo(); //商户订单号 **2
            post.total_fee        = (int)(money * 100);          //单位是分
            post.spbill_create_ip = "127.0.0.1";                 //ip地址  **3

            post.notify_url = GetOuterPostAddress();             //这里是后台接受支付结果通知的url地址
            post.trade_type = "APP";
            post.sign       = genPackageSign(post);              //签名

            Dictionary <string, string> firstSignParams = getFirstSignParams(post);
            string xmlParams = toXml(firstSignParams);

            string callStr = HttpPost.Post(PlaceOrderUrl, xmlParams);

            // Console.WriteLine("收到下单回调:");
            // Console.WriteLine(callStr);
            XElement xe       = XElement.Parse(callStr);
            string   prepayId = xe.Element("prepay_id").Value;
            string   nonceStr = xe.Element("nonce_str").Value;

            // Console.WriteLine("prepay_id:"+ prepayId);
            // Console.WriteLine("nonce_str:" + nonceStr);
            return(WeChatOrderInfoFactory.Creator(prepayId, nonceStr, post.out_trade_no));
        }
Beispiel #3
0
        private static Dictionary <string, string> getFirstSignParams(WXPrePost postParams)
        {
            Dictionary <string, string> packageParams = new Dictionary <string, string>();

            packageParams.Add("appid", postParams.appid);
            packageParams.Add("body", postParams.body);
            packageParams.Add("detail", postParams.detail);
            packageParams.Add("mch_id", postParams.mch_id);
            packageParams.Add("nonce_str", postParams.nonce_str);
            packageParams.Add("notify_url", postParams.notify_url);
            packageParams.Add("out_trade_no", postParams.out_trade_no);
            packageParams.Add("spbill_create_ip", postParams.spbill_create_ip);
            packageParams.Add("total_fee", postParams.total_fee + "");
            packageParams.Add("trade_type", postParams.trade_type);
            packageParams.Add("sign", postParams.sign);
            return(packageParams);
        }