微信的开发文档没有服务器端的demo,然后我就找了一些资料做了一下,没想到一次就成功了,记录一下。
第一步获取prepay_id
UnifiedOrder uo = new UnifiedOrder();
uo.appid = appid;
uo.mch_id = mch_id;
uo.nonce_str = tenpay.getNoncestr();
uo.body = "我是微信支付";
uo.out_trade_no = orders.OrderId.ToString();
uo.total_fee = Convert.ToInt32(Consume*100);
uo.spbill_create_ip = System.Web.HttpContext.Current.Request.UserHostAddress;
uo.notify_url = notify_url;
uo.trade_type = "APP";
string prepayid = tenpay.getPrepay_id(uo, key);
getPrepay_id方法
public string getPrepay_id(Com.TenPay.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;
}
第二步:获取签名
SortedDictionary<string, string> sParams = new SortedDictionary<string, string>();
string noncestr = tenpay.getNoncestr();
string currenttime = tenpay.getTimestamp();
sParams.Add("appid", appid);
sParams.Add("partnerid", mch_id);
sParams.Add("prepayid", prepayid);
sParams.Add("noncestr", noncestr);
sParams.Add("timestamp", currenttime);
sParams.Add("package", "Sign=WXPay");
string sign = tenpay.getsign(sParams, key);
这个基本上完成了,然后把这些参数传给客户端,客户端负责调起支付