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#

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

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>
}
}