public static string GetPrepayId(UnifiedOrder order, string key) { string prepay_id = ""; string post_data = GetUnifiedOrderXml(order, key); string request_data = PostXmlToUrl(UnifiedPayUrl, post_data); SortedDictionary<string, string> requestXml = GetInfoFromXml(request_data); foreach(KeyValuePair<string, string> k in requestXml) { if(k.Key == "prepay_id") { prepay_id = k.Value; break; } } return prepay_id; }
private static string GetUnifiedOrderXml(UnifiedOrder order, string key) { string return_string = string.Empty; SortedDictionary<string, string> sParams = new SortedDictionary<string, string>(); sParams.Add("appid", order.appid); sParams.Add("attach", order.attach); sParams.Add("body", order.body); sParams.Add("device_info", order.device_info); sParams.Add("mch_id", order.mch_id); sParams.Add("nonce_str", order.nonce_str); sParams.Add("notify_url", order.notify_url); sParams.Add("openid", order.openid); sParams.Add("out_trade_no", order.out_trade_no); sParams.Add("spbill_create_ip", order.spbill_create_ip); sParams.Add("total_fee", order.total_fee.ToString()); sParams.Add("trade_type", order.trade_type); order.sign = GetSign(sParams, key); sParams.Add("sign", order.sign); StringBuilder sbPay = new StringBuilder(); foreach (KeyValuePair<string, string> k in sParams) { if (k.Key == "attach" || k.Key == "body" || k.Key == "sign") { sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">"); } else { sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">"); } } return_string = string.Format("<xml>{0}</xml>", sbPay.ToString()); byte[] byteArray = Encoding.UTF8.GetBytes(return_string); return_string = Encoding.GetEncoding("GBK").GetString(byteArray); return return_string; }
private string GetPrePayId(string ip) { UnifiedOrder order = new UnifiedOrder(); order.appid = "xxx"; order.attach = "version"; order.body = 10 + "人民币"; order.device_info = ""; order.mch_id = "mch_id"; order.nonce_str = WeixinPayUtil.GetNoncestr(); order.notify_url = "http://localhost/sample/a.aspx"; order.openid = "openid"; order.out_trade_no = "order_id"; order.trade_type = "JSAPI"; order.spbill_create_ip = ip; order.total_fee = 10 * 100; return WeixinPayUtil.GetPrepayId(order, "paySignKey"); }