You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
6.9 KiB
C#

using HuizhongLibrary.Log;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using WxPayAPI;
namespace HuizhongLibrary.PhonePay
{
public class WeiXinPay
{
public string url { get; set; }
public string key { get; set; }
//https://api.mch.weixin.qq.com/pay/unifiedorder
public WeiXinPay()
{
}
/// <summary>
/// openid用于调用统一下单接口
/// </summary>
public string openid { get; set; }
/// <summary>
/// access_token用于获取收货地址js函数入口参数
/// </summary>
public string access_token { get; set; }
/// <summary>
/// 商品金额,用于统一下单
/// </summary>
public int total_fee { get; set; }
public string trade_type { get; set; }
/// <summary>
/// 统一下单接口返回结果
/// </summary>
public WxPayData unifiedOrderResult { get; set; }
public WxPayData GetUnifiedOrderResult()
{
//统一下单
WxPayData data = new WxPayData();
data.SetValue("body", "test");
data.SetValue("attach", "test");
data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo());
data.SetValue("total_fee", total_fee);
data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));
data.SetValue("goods_tag", "test");
data.SetValue("trade_type", trade_type);
data.SetValue("openid", openid);
ErrorFollow.TraceWrite("GetUnifiedOrderResult", "openid:", openid);
WxPayData result = WxPayApi.UnifiedOrder(data);
if (!result.IsSet("appid") || !result.IsSet("prepay_id") || result.GetValue("prepay_id").ToString() == "")
{
ErrorFollow.TraceWrite("GetUnifiedOrderResult",this.GetType().ToString(), "UnifiedOrder response error!");
// Log.Error(this.GetType().ToString(), "UnifiedOrder response error!");
// throw new WxPayException("UnifiedOrder response error!");
}
unifiedOrderResult = result;
return result;
}
public string unifiedorder(WeiXinPayModel model)
{
//StringBuilder sb = new StringBuilder();
//sb.Append("<xml>");
//sb.Append("<appid>"+model.appid+"</appid>");
//sb.Append("<attach>"+model.attach+"</attach>");
//sb.Append("<body>"+model.body+"</body>");
//sb.Append("<mch_id>" + model.mch_id + "</mch_id>");
//sb.Append("<nonce_str>" + model.nonce_str + "</nonce_str>");
//sb.Append("< notify_url >"+model.notify_url+"</notify_url>");
//if(model.openid!=null&&model.openid!="")
//sb.Append("<openid>"+ model.openid + "</openid>");
//sb.Append("<out_trade_no>"+model.out_trade_no+"</out_trade_no>");
//sb.Append("<spbill_create_ip>"+model.spbill_create_ip+"</spbill_create_ip>");
//sb.Append("<total_fee >"+model.total_fee+"</total_fee>");
//sb.Append("<spbill_create_ip>" + model.spbill_create_ip + "</spbill_create_ip>");
//sb.Append("<trade_type>"+model.trade_type+"</trade_type>");
//sb.Append("<scene_info>{ \"h5_info\": { \"type\":"+model.scene_info.h5_info.type + ",\"wap_name\": " + model.scene_info.h5_info.wap_name + ",\"wap_url\": " + model.scene_info.h5_info.wap_url+"} }</scene_info>");
//sb.Append("<sign>"+model.sign+"</sign>");
//sb.Append("</xml>");
return "";
//< appid > wx2421b1c4370ec43b </ appid >
//< attach > 支付测试 </ attach >
//< body > H5支付测试 </ body >
//< mch_id > 10000100 </ mch_id >
//< nonce_str > 1add1a30ac87aa2db72f57a2375d8fec </ nonce_str >
// < notify_url > http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
//< openid > oUpF8uMuAJO_M2pxb1Q9zNjWeS6o </ openid >
//< out_trade_no > 1415659990 </ out_trade_no >
//< spbill_create_ip > 14.23.150.211 </ spbill_create_ip >
// < total_fee > 1 </ total_fee >
// < trade_type > MWEB </ trade_type >
// < scene_info >{ "h5_info": { "type":"IOS","app_name": "王者荣耀","package_name": "com.tencent.tmgp.sgame"} }</ scene_info >
// < sign > 0CB01533B8C1EF103065174F50BCA001 </ sign >
// </ xml >
}
}
public class WeiXinPayModel
{
public string appid { get; set; }
public string attach { get; set; }
public string mch_id { get; set; }
public string body { get; set; }
public string nonce_str { get; set; }
public string notify_url { get; set; }
public string openid { get; set; }
public string out_trade_no { get; set; }
public string spbill_create_ip { get; set; }
public string total_fee { get; set; }
public string trade_type { get; set; }
public scene_info scene_info { get; set; }
public string sign { get; set; }
}
public class scene_info
{
//{"h5_info": {"type":"Wap","wap_url": "https://pay.qq.com","wap_name": "腾讯充值"}}
public h5_info h5_info { get; set; }
}
public class h5_info
{
public string type { get; set; }
public string wap_url { get; set; }
public string wap_name { get; set; }
}
public class Return_info
{
public string return_code { get; set; }
public string return_msg { get; set; }
public string appid { get; set; }
public string mch_id { get; set; }
public string nonce_str { get; set; }
public string sign { get; set; }
public string prepay_id { get; set; }
public string trade_type { get; set; }
public string mweb_url { get; set; }
// <xml>
// <return_code><![CDATA[SUCCESS]]></return_code>
// <return_msg><![CDATA[OK]]></return_msg>
// <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
// <mch_id><![CDATA[10000100]]></mch_id>
// <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
// <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
// <result_code><![CDATA[SUCCESS]]></result_code>
// <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
// <trade_type><![CDATA[MWEB]]></trade_type>
// <mweb_url><![CDATA[https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241]]></mweb_url>
//</xml>
}
}