您的位置:首页 > 移动开发 > 微信开发

微信支付---APP调起微信支付c#后台接口

2018-03-10 09:53 411 查看
c#后台APP微信支付接口和微信公众号支付差不多
#region 微信APP支付接口
/// <summary>
/// 微信APP支付接口
/// </summary>
/// <param name="out_trade_no">支付订单号</param
/// <param name="total_fee">支付金额</param>
/// <param name="type">1.安卓,2.IOS</param>
/// <returns></returns>
[HttpGet]
public CommonResponse<Wx_pay> APP_Pay(string out_trade_no,Double total_fee,int type)
{
PayMent pm = new PayMent();
string ip = HttpContext.Current.Request.UserHostAddress;
int money =int.Parse((total_fee * 100).ToString());
Wx_pay wp = pm.APP_PayMent("服务费",ip,money,out_trade_no,type);
if (wp.sign == "") {
return new CommonResponse<Wx_pay> { Data = null, Message = "系统异常,联系管理员!", Code = EnumResponseCode.Fail.GetHashCode() };
}
return new CommonResponse<Wx_pay> { Data = wp, Message = String.Empty, Code = EnumResponseCode.Successful.GetHashCode() };
}
#endregion

///
///是对返回数据类型
///
public class CommonResponse<T>
{
public T Data { get; set; }

/// <summary>
/// 代码  1:失败,2:成功
/// </summary>

public int Code { get; set; }
/// <summary>
/// 消息
/// </summary>

public string Message { get; set; }

/// <summary>
/// 其他附带信息
/// </summary>

public string Tag { get; set; }

}

/// <summary>
/// 微信APP支付实体
/// </summary>
public class Wx_pay
{
/// <summary>
/// 应用ID
/// </summary>
public string appid { set; get; } = "";
/// <summary>
/// 商户号
/// </summary>
public string partnerid { set; get; } = "";
/// <summary>
/// 预支付交易会话ID
/// </summary>
public string prepayid { set; get; } = "";
/// <summary>
/// 扩展字段
/// </summary>
public string package { set; get; } = "Sign=WXPay";
/// <summary>
/// 随机字符串
/// </summary>
public string noncestr { set; get; } = "";
/// <summary>
/// 时间戳
/// </summary>
public string timestamp { set; get; } = "";

/// <summary>
/// 签名
/// </summary>
public string sign { set; get; } = "";
}

#region 微信APP支付
/// <summary>
/// 微信APP支付
/// </summary>
/// <param name="boby">商品描述</param>
/// <param name="mch_id">商户号</param>
/// <param name="spbill_create_ip">终端IP</param>
/// <param name="total_fee">金额</param>
/// <param name="out_trade_no">商户订单号</param>
/// <returns></returns>
public Wx_pay APP_PayMent( string boby,  string spbill_create_ip, int total_fee, string out_trade_no,int type)
{
UnifiedOrder order = new UnifiedOrder();
if (type == 1)
{
order.appid = APP_Aconfig.appid;
order.mch_id = APP_Aconfig.partnerid;
}
else {
order.appid = APP_Iconfig.appid;
order.mch_id = APP_Iconfig.partnerid;
}
order.attach = "APP名称-支付内容说明";
order.body = boby;
order.device_info = "WEB";
order.nonce_str = TenpayUtil.getNoncestr();
order.notify_url = APP_Aconfig.url;
order.out_trade_no = out_trade_no;
order.trade_type = "APP";
order.spbill_create_ip = spbill_create_ip;
order.total_fee = total_fee;
TenpayUtil tenpay = new TenpayUtil();
string paySignKey = string.Empty;
if (type == 1)
{
paySignKey = APP_Aconfig.paysignkey;
}
else {
paySignKey = APP_Iconfig.paysignkey;
}
string prepay_id = tenpay.getPrepay_id(order, paySignKey);
string timeStamp = TenpayUtil.getTimestamp();
string nonceStr = TenpayUtil.getNoncestr();
SortedDictionary<string, object> sParams = new SortedDictionary<string, object>();
sParams.Add("appid", order.appid);
sParams.Add("partnerid", order.mch_id);
sParams.Add("prepayid", prepay_id);
sParams.Add("noncestr", nonceStr);
sParams.Add("timestamp", timeStamp);
sParams.Add("package", "Sign=WXPay");
string paySign = tenpay.getsign(sParams, paySignKey);
Wx_pay wp = new Wx_pay();
wp.appid = order.appid;
wp.partnerid = order.mch_id;
wp.noncestr = nonceStr;
wp.prepayid = prepay_id;
wp.sign = paySign;
wp.timestamp = timeStamp;
return wp;
}
#endregion

/// <summary>
/// APP安卓支付配置
/// </summary>
public class APP_Aconfig
{
public const string appid = "";//APPID
public const string partnerid = "";//商户号
public const string paysignkey = "";//证书密匙
public const string url = "";//回调ur
}

/// <summary>
/// APPios 支付配置
/// </summary>
public class APP_Iconfig
{
public const string appid = "";//APPID
public const string partnerid = "";//商户号
public const string paysignkey = "";//证书密匙
public const string url = "";//回调url
}

对于   TenpayUtil tenpay = new TenpayUtil();这个类其他文章上有代码。

请求方式:http get
接口参数说明
名称    类型    必填    说明
out_trade_no    string    是    支付订单ID
total_fee    Double    是    支付金额
type    int    是    1.安卓,2.IOS

返回示例:
/****失败示例**/
{
"Code":1, /*状态码  1:失败 2:成功 */
"Message":"错误信息",/*消息(一般失败时,返回错误信息)*/
"Tag":""/*附加信息*/
}

/****成功示例**/
{
"Code":2, /*状态码  1:失败 2:成功*/
“Data”:[]
"Message":"",/*消息(一般失败时,返回错误信息)*/
"Tag":"附加信息"/* */
}
接口返回Data集合参数说明
名称    类型    说明
appid    string    应用ID
partnerid    String     商户号
prepayid    String    预支付交易会话ID
package    String    扩展字段
noncestr    String    随机字符串
timestamp    String    时间戳
sign    String    签名

本人还是个新手(刚入行不久),请多多关照,后续还有微信其他内容


这是测试接口返回结果:



下篇。。。。。。微信支付(PC端扫码支付)





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  APP 调起 微信