using clientpay.Data.AlipayConfig;
using clientpay.Data.BLL;
using clientpay.Data.Entity;
using Aop.Api;
using Aop.Api.Domain;
using Aop.Api.Request;
using Aop.Api.Response;
using clientpay.TemplatePage;
using Lexun.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using clientpay.Data.Entity.WxPay;
using clientpay.Data.WxH5PayConfig; namespace clientpay
{
/// <summary>
/// 添加订单列表数据操作
/// </summary>
public partial class clientpay : PBTemplate
{
private BuyOrderInfo buyOrderInfo = null; //订单信息
private BuyOrderResult orderResult = null;//生成订单结果 protected int result = ;
protected string outmsg = string.Empty; protected override void InitParams()
{
try
{
PBPayOrderFootParams reqData = PBPayOrderFootParams.ParseFrom(PBBuffer);
if (null != reqData)
{
buyOrderInfo = new BuyOrderInfo();
buyOrderInfo.userid = reqData.Userid;//用户编号
buyOrderInfo.platform = reqData.Platform;//平台类型
buyOrderInfo.channelid = reqData.Channelid;//渠道
buyOrderInfo.payflag = reqData.Payflag; // 1微信 2支付宝
buyOrderInfo.ip = CUser.GetUserIp();
buyOrderInfo.amount = reqData.Amount;//充值金额(分)
buyOrderInfo.imei = reqData.Imei;
buyOrderInfo.phonemode = reqData.Phonemodel;
buyOrderInfo.phonesn = reqData.Phonesn;
buyOrderInfo.rechargetype = reqData.Rechargetype;//充值类型(1:足球竞猜金豆充值,2:资讯彩豆充值) //buyOrderInfo.userid = 1;//用户编号
//buyOrderInfo.platform = 2;//平台类型
//buyOrderInfo.channelid = 1;//渠道
//buyOrderInfo.payflag = 1; // 1微信 2支付宝
//buyOrderInfo.ip = CUser.GetUserIp();
//buyOrderInfo.amount = 100;//充值金额
//buyOrderInfo.imei = "23482342334224";
//buyOrderInfo.phonemode = "3434534534";
//buyOrderInfo.phonesn = "23423432";
//buyOrderInfo.rechargetype = 1;//充值类型(1:足球竞猜金豆充值,2:资讯彩豆充值)
}
}
catch { }
} protected override void InitData()
{
if (buyOrderInfo.userid <= )
{
outmsg = "抱歉,生成订单失败,请重新登录后再试。";
return;
} if (buyOrderInfo.amount <= )
{
outmsg = "抱歉,生成订单失败。";
return;
}
//安卓 微信 暂时用官方h5支付
if (buyOrderInfo.payflag == )
{
buyOrderInfo.paytype = PayType.PT_WXPAY; //微信支付方式
}
else
{
buyOrderInfo.paytype = PayType.PT_ALIPAY; //支付宝支付方式
} orderResult = PayOrderBLL.GenerateOrder(buyOrderInfo);
} protected override void OutPut()
{
string outmsg = string.Empty;
string payurl = string.Empty;
string urlprefix = string.Empty;
int usebrowser = ; PBPayOrderFootResult.Builder resData = PBPayOrderFootResult.CreateBuilder(); if (null == orderResult || orderResult.retval == -)
{
outmsg = (null == orderResult) ? "抱歉,生成订单失败." : orderResult.outmsg;
}
else
{
//产生订单成功
if (null != orderResult && orderResult.retval > && !string.IsNullOrEmpty(orderResult.orderid))
{
if (buyOrderInfo.paytype == PayType.PT_WXPAY)
{
urlprefix = "http://ball.szbocx.com";
if (buyOrderInfo.platform == ) //安卓
payurl = GetH5PayUrl(orderResult.orderid, orderResult.amount);
else
payurl = string.Format("http://ball.szbocx.com/callpay.aspx?payflag=1&orderid={0}", orderResult.orderid);
}
else if (buyOrderInfo.paytype == PayType.PT_ALIPAY)
{
payurl = string.Format("http://ball.szbocx.com/callpay.aspx?payflag=2&orderid={0}", orderResult.orderid);
} if (!string.IsNullOrEmpty(payurl))
{
result = ;
outmsg = "生成订单成功";
resData.SetUrlprefix(urlprefix);
resData.SetPayurl(payurl);
resData.SetUsebrowser(usebrowser);
}
}
else
{
if (null != orderResult && !string.IsNullOrEmpty(orderResult.outmsg))
outmsg = orderResult.outmsg;
else
outmsg = "抱歉,生成订单失败!";
}
} resData.SetResult(result);
resData.SetOutmsg(outmsg);
Response.ContentType = "text/plain";
Response.BinaryWrite(resData.Build().ToByteArray());
Response.End();
} /// <summary>
///
/// </summary>
/// <param name="orderNo"></param>
/// <param name="amount"></param>
/// <returns></returns>
public string GetH5PayUrl(string orderNo, int amount)
{
try
{
WxPayParam wxPayParam = new WxPayParam()
{
APPID = WxH5PayConfig.APPID,
KEY = WxH5PayConfig.KEY,
MCHID = WxH5PayConfig.MCHID,
NOTIFY_URL = WxH5PayConfig.NOTIFY_URL,
IP = WxH5PayConfig.IP,
REPORT_LEVENL = WxH5PayConfig.REPORT_LEVENL
}; Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");
//场景信息
string scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \"http://www.szbocx.com\",\"wap_name\": \"全红体育充值\"}}"; WxPayData data = new WxPayData();
data.SetValue("body", "全红体育");//商品描述
data.SetValue("out_trade_no", orderNo);//商户订单号
data.SetValue("total_fee", amount);//订单总金额,单位为分
data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
data.SetValue("time_expire", DateTime.Now.AddMinutes().ToString("yyyyMMddHHmmss"));//交易结束时间
data.SetValue("trade_type", "MWEB");//交易类型
data.SetValue("scene_info", scene_info);//场景信息
data.SetValue("notify_url", "http://ball.szbocx.com/callback/callback_wxh5pay.aspx"); WxPayData result = WxPayApi.UnifiedOrderH5(data, wxPayParam, WxPayUtil.IPAddress);//调用统一下单接口
if (result != null)
{
if (result.GetValue("mweb_url") != null)
{
return result.GetValue("mweb_url").ToString();
}
return string.Empty;
}
else
{
return string.Empty;
}
}
catch (Exception ex)
{
CLog.WriteLog(" go_wx_form_h5 Message=" + ex.Message + "StackTrace=" + ex.StackTrace);
return string.Empty;
}
} }
}

H5 支付请求

using clientpay.Data.BLL;
using clientpay.Data.Entity;
using Aop.Api;
using Aop.Api.Domain;
using Aop.Api.Request;
using Aop.Api.Response;
using Lexun.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using clientpay.Data.AlipayConfig;
using clientpay.Data.Entity.WxPay;
using clientpay.Data.WxH5PayConfig; namespace clientpay
{
/// <summary>
/// 订单验证返回
/// </summary>
public partial class callpay : System.Web.UI.Page
{
private string outmsg = string.Empty;
private string orderid = string.Empty;
private int payflag = ; //1 微信 2支付宝 private string errorMsg = "";
private int errorType = ; private string formHtml = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
InitParams(); InitData(); OutPut();
} protected void InitParams()
{
orderid = CRequest.GetString("orderid");
payflag = CRequest.GetInt("payflag"); //orderid = "20191118100631930992";
//payflag = 1; } protected void InitData()
{
if (string.IsNullOrEmpty(orderid))
{
errorMsg = "抱歉,订单号不正确。";
errorType = ;
return; } string payType = string.Empty;
if (payflag == )
payType = PayType.PT_WXPAY;
else if (payflag == )
payType = PayType.PT_ALIPAY;
else
{
outmsg = "抱歉,订单不存在。";
errorType = ;
return;
} PayOrderInfo orderInfo = PayOrderBLL.GetPayOrderInfo(orderid, payType);
if (orderInfo == null)
{
errorMsg = "抱歉,订单不存在。";
errorType = ;
return;
} if (payflag == )//微信
formHtml = GetH5PayUrl(orderInfo.orderid, orderInfo.amount / , orderInfo.userid);//将分转元,以便充值界面展示
else if (payflag == )//支付宝
formHtml = GetFormHtml(orderInfo.orderid, orderInfo.amount / );//将分转元,以便充值界面展示
} protected void OutPut()
{
//产生订单成功
if (errorType == && !string.IsNullOrEmpty(formHtml))
{
Response.Write(formHtml);
Response.End();
}
else
{
if (string.IsNullOrEmpty(errorMsg))
errorMsg = "抱歉,生成订单失败!";
}
} /// <summary>
/// 支付宝支付返回请求
/// </summary>
/// <param name="orderid"></param>
/// <param name="price"></param>
/// <returns></returns>
public string GetFormHtml(string orderid, int price)
{
string sHtmlText = string.Empty; DefaultAopClient client = new DefaultAopClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.private_key, "json", "1.0", AlipayConfig.sign_type, AlipayConfig.alipay_public_key, AlipayConfig.charset, false);
// 外部订单号,商户网站订单系统中唯一的订单号
string out_trade_no = orderid; // 订单名称
string subject = "全红体育"; //订单金额(元)
string total_amount = price.ToString(); // 商品描述
string body = "全红体育"; // 支付中途退出返回商户网站地址
string quit_url = "http://www.szbocx.com/"; // 组装业务参数model
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
model.Body = body;
model.Subject = subject;
model.TotalAmount = total_amount;
model.OutTradeNo = out_trade_no;
model.ProductCode = "QUICK_WAP_WAY";
model.QuitUrl = quit_url; AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
// 设置支付完成同步回调地址
request.SetReturnUrl("http://ball.szbocx.com/callback/callback_alipay.aspx");
// 设置支付完成异步通知接收地址
request.SetNotifyUrl("http://ball.szbocx.com/callback/callback_alipay.aspx");
// 将业务model载入到request
request.SetBizModel(model); AlipayTradeWapPayResponse response = null;
try
{
response = client.pageExecute(request, null, "post");
sHtmlText = response.Body.ToString();
}
catch (Exception ex)
{
CLog.WriteLog("clientpay->OutPut StackTrace={0},Message={1}", ex.StackTrace, ex.Message);
}
return sHtmlText;
} /// <summary>
/// 微信支付返回请求
/// </summary>
/// <param name="orderNo"></param>
/// <param name="amount"></param>
/// <param name="userid"></param>
/// <returns></returns>
public string GetH5PayUrl(string orderNo, int amount, int userid)
{
try
{
WxPayParam wxPayParam = new WxPayParam()
{
APPID = WxH5PayConfig.APPID,
KEY = WxH5PayConfig.KEY,
MCHID = WxH5PayConfig.MCHID,
NOTIFY_URL = WxH5PayConfig.NOTIFY_URL,
IP = WxH5PayConfig.IP,
REPORT_LEVENL = WxH5PayConfig.REPORT_LEVENL
}; Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");
//场景信息
string scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \"http://www.szbocx.com\",\"wap_name\": \"全红体育充值\"}}"; WxPayData data = new WxPayData();
data.SetValue("body", "全红体育");//商品描述
data.SetValue("out_trade_no", orderNo);//商户订单号
data.SetValue("total_fee", amount * );//订单总金额,单位为分
data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
data.SetValue("time_expire", DateTime.Now.AddMinutes().ToString("yyyyMMddHHmmss"));//交易结束时间
data.SetValue("trade_type", "MWEB");//交易类型
data.SetValue("scene_info", scene_info);//场景信息
data.SetValue("notify_url", "http://ball.szbocx.com/callback/callback_wxh5pay.aspx"); WxPayData result = WxPayApi.UnifiedOrderH5(data, wxPayParam, WxPayUtil.IPAddress);//调用统一下单接口
if (result != null)
{
if (result.GetValue("mweb_url") != null)
{
string mweb_url = result.GetValue("mweb_url").ToString();
mweb_url = mweb_url + "&redirect_url=" + HttpUtility.UrlEncode("ball.szbocx.com://");
return string.Format("<script>window.location.href ='{0}';</script>", mweb_url);
}
return string.Empty;
}
else
{
errorMsg = result.GetValue("return_msg").ToString();
return string.Empty;
}
}
catch (Exception ex)
{
CLog.WriteLog("go_wx_form_h5 Message=" + ex.Message + "StackTrace=" + ex.StackTrace);
return string.Empty;
}
}
}
}

支付回调

using clientpay.Data.Entity.WxPay;
using clientpay.Data.WxH5PayConfig;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace clientpay.callback
{
public partial class callback_wxh5pay : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WxPayParam wxPayParam = new WxPayParam()
{
APPID = WxH5PayConfig.APPID,
KEY = WxH5PayConfig.KEY,
MCHID = WxH5PayConfig.MCHID,
NOTIFY_URL = WxH5PayConfig.NOTIFY_URL,
IP = WxH5PayConfig.IP,
REPORT_LEVENL = WxH5PayConfig.REPORT_LEVENL
}; ResultNotify resultNotify = new ResultNotify(this);
resultNotify.ProcessNotify(wxPayParam);
}
}
}

微信回调接口界面

using clientpay.Data.BLL;
using clientpay.Data.Entity;
using clientpay.Data.Entity.AliPay;
using Aop.Api.Util;
using Lexun.Common;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using clientpay.Data.AlipayConfig; namespace clientpay.callback
{
/// <summary>
/// 支付宝充值回调界面
/// </summary>
public partial class callback_alipay : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
/* 实际验证过程建议商户添加以下校验。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),
3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)
4、验证app_id是否为该商户本身。
*/
Dictionary<string, string> sArray = GetRequestPost();
if (sArray.Count != )
{
bool flag = AlipaySignature.RSACheckV1(sArray, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type, false);
if (flag)
{
PayOrderInfo orderInfo = PayOrderBLL.GetPayOrderInfo(Request["out_trade_no"], "");
if (orderInfo != null)
{
if (orderInfo.amount != CTools.ToInt((CTools.ToDouble(Request["total_amount"]) * ).ToString()))//订单金额与实际创建订单金额不相等
{
CLog.WriteLog("支付宝回调操作,添加订单金额{0},实际订单金额{1}", orderInfo.amount, CTools.ToInt((CTools.ToDouble(Request["total_amount"]) * ).ToString()));
Response.Write("fail");
return;
}
}
if (Request["app_id"] == AlipayConfig.app_id)
{
try
{
//商户订单号
string out_trade_no = Request["out_trade_no"];//商户订单号
//支付宝交易号
string trade_no = Request["trade_no"];//支付宝交易号
//交易状态
string trade_status = Request["trade_status"];//交易状态
string buyer_email = Request["buyer_email"];
string buyer_id = Request["buyer_id"];//买家支付宝用户号
string discount = Request["discount"];
string gmt_close = Request["gmt_close"];//该笔交易结束时间。格式为yyyy-MM-dd HH:mm:ss
string gmt_create = Request["gmt_create"];//该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss
string gmt_payment = Request["gmt_payment"];//该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss
string is_total_fee_adjust = Request["is_total_fee_adjust"];
string notify_id = Request["notify_id"];//通知校验ID
string notify_time = Request["notify_time"];//通知的发送时间。格式为yyyy-MM-dd HH:mm:ss
string notify_type = Request["notify_type"];//通知类型
string payment_type = PayType.PT_ALIPAY;
string price = Request["total_amount"];
string quantity = "";
string seller_email = Request["seller_email"];//卖家支付宝账号
string seller_id = Request["seller_id"];//卖家支付宝用户号
string total_fee = Request["total_amount"];//Request["total_fee"];//订单金额(分) if (trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED")
{
string outmsg = "";
int userid = ;
AlipayBackInfo backinfo = new AlipayBackInfo()
{
buyer_email = buyer_email,
buyer_id = buyer_id,
discount = CTools.ToDecimal(discount),
gmt_close = CTools.ToDateTime(gmt_close),
gmt_create = CTools.ToDateTime(gmt_create),
gmt_payment = CTools.ToDateTime(gmt_payment),
is_total_fee_adjust = is_total_fee_adjust,
notify_id = notify_id,
notify_time = CTools.ToDateTime(notify_time),
notify_type = notify_type,
orderid = out_trade_no,
out_trade_no = out_trade_no,
payment_type = payment_type,
price = CTools.ToInt((CTools.ToDouble(total_fee) * ).ToString()),//单位分
quantity = CTools.ToInt(quantity),
seller_email = seller_email,
seller_id = seller_id,
total_fee = CTools.ToInt((CTools.ToDouble(total_fee) * ).ToString()),//单位分
trade_no = trade_no,
trade_status = trade_status
}; AlipayBLL.AddAliPayCallBack(backinfo, out userid, out outmsg); }
}
catch (Exception ex)
{
CLog.WriteLog("callback_alipay-> StackTrace={0},Message={1}", ex.StackTrace, ex.Message);
}
Response.Write("success");
}
else
{
Response.Write("fail");
}
}
else
{
Response.Write("fail");
}
}
}
public Dictionary<string, string> GetRequestPost()
{
int i = ;
Dictionary<string, string> sArray = new Dictionary<string, string>();
NameValueCollection coll;
//coll = Request.Form;
coll = Request.Form;
String[] requestItem = coll.AllKeys;
for (i = ; i < requestItem.Length; i++)
{
sArray.Add(requestItem[i], Request.Form[requestItem[i]]);
}
return sArray; }
}
}

支付宝回调接口界面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace clientpay.Data.AlipayConfig
{
/// <summary>
/// config 的摘要说明
/// </summary>
public class AlipayConfig
{
public AlipayConfig()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
// 应用ID,您的APPID
public static string app_id = ""; // 支付宝网关
public static string gatewayUrl = "https://openapi.alipay.com/gateway.do"; // 商户私钥,您的原始格式RSA私钥
public static string private_key = ""; // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static string alipay_public_key = ""; // 签名方式
public static string sign_type = "RSA2"; // 编码格式
public static string charset = "UTF-8";
}
}

支付宝配置

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace clientpay.Data.WxH5PayConfig
{
public class WxH5PayConfig
{
//=======【基本信息设置】=====================================
/* 微信公众号信息配置
* APPID:绑定支付的APPID(必须配置)
* MCHID:商户号(必须配置)
* KEY:商户支付密钥,参考开户邮件设置(必须配置)
* APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置)
*/
public const string APPID = "";
public const string MCHID = "";
public const string KEY = ""; public const string APPSECRET = ""; //=======【证书路径设置】=====================================
/* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要)
*/
public const string SSLCERT_PATH = "cert/apiclient_cert.p12";
public const string SSLCERT_PASSWORD = "";// "1233410002"; //=======【支付结果通知url】=====================================
/* 支付结果通知回调url,用于商户接收支付结果
*/
public const string NOTIFY_URL = "http://ball.szbocx.com/callback/callback_wxh5pay.aspx"; //=======【商户系统后台机器IP】=====================================
/* 此参数可手动配置也可在程序中自动获取
*/
public const string IP = "120.79.136.88"; //=======【代理服务器设置】===================================
/* 默认IP和端口号分别为0.0.0.0和0,此时不开启代理(如有需要才设置)
*/
public const string PROXY_URL = "http://10.152.18.220:8080"; //=======【上报信息配置】===================================
/* 测速上报等级,0.关闭上报; 1.仅错误时上报; 2.全量上报
*/
public const int REPORT_LEVENL = ; //=======【日志级别】===================================
/* 日志等级,0.不输出日志;1.只输出错误信息; 2.输出错误和正常信息; 3.输出错误信息、正常信息和调试信息
*/
public const int LOG_LEVENL = ;
}
}

微信配置

.net H5微信,支付宝充值的更多相关文章

  1. React Native之支付集成(微信 支付宝)(ios android)

    React Native之支付集成(微信 支付宝)(ios android) 一,需求分析 1.1,app在线充值与提现 二,技术介绍与集成 2.1,微信支付 2.1.1,Android配置 详细配置 ...

  2. app微信支付宝支付后台的插件模式+回调通过spring广播处理后续业务(已亲测可用)

    写在前面的话:每当我们做一个项目,基本上都会涉及到支付的业务,最常用的莫过于微信和支付宝的支付了,项目有bug,有问题,都不叫问题,可一旦钱出了问题,那就是大问题了,所以在支付业务上我们必须慎之又慎! ...

  3. 微信支付宝xposed个人收款免签支付源码

    源码介绍: 个人免签支付是指使用自己的微信支付宝账号作为个人网站的收款账号,网站订单支付成功后,网站能实时收到成功回调信息.        系统基于xposed逆向微信.支付宝.云闪付来实现个人收款免 ...

  4. 【技术贴】解决支付宝充值信用卡还款跳转到网上银行报错Error 404 - Not Found

    声明 : 本文在 GFDL 1.2 下发布,本文出处光大银行信用卡  http://bbs.090989.com/forum-186-1.html http://androidgao.blogspot ...

  5. h5微信页面在手机微信端和微信web开发者工具中都能正常显示,但是在pc端微信浏览器上打不开(显示空白)

    h5微信页面在手机微信和微信开发者工具中都能正常显示,但是在pc端微信浏览器上打不开或者数据加载不出来. 原因:pc端微信浏览器不支持ES6语法,我的代码中使用了一些ES6的特性 解决:将ES6转换为 ...

  6. 微信h5支付“网站域名ICP备案主体与商户号主体不一致”的解决方法,H5微信支付 授权函下载

    如下图所示: 微信h5支付“网站域名ICP备案主体与商户号主体不一致”: 需提交H5微信支付 授权函 下载地址:https://download.csdn.net/download/a72400815 ...

  7. H5微信页面开发 IOS系统 input输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置,导致弹框里的按钮响应区域错位

    H5微信页面开发,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,导致弹框里的按钮响应区域错位. 解决方案:给输入框(或select选择框)添加失去焦点的 ...

  8. 制作QQ微信支付宝三合一收款码

    转载:http://blog.mambaxin.com/article/56 发现很多博客都带了打赏功能,虽说打赏的人可能很少,但始终是一份心意,能让博主知道自己写的文章有用,能够帮助到人.所以,我也 ...

  9. vue微信公众号、H5微信支付

    1.H5微信支付 后台会返回一个URL,前端直接跳转就OK(需要你传给后台一个ip,必须保证在同一域名下) 使用window.location.href =res.data;进行页面跳转到支付界面(r ...

随机推荐

  1. 【微信错误】{"errcode":"40013","errmsg":"invalid appid hint: [mackRA06203114]","success":false}

    一.异常背景 发送可以跳转小程序的公众号模版消息 二.原因 当前公众号没有和被跳转的小程序关联 三.解决办法 去公众号平台将小程序和公众号进行关联就可以了

  2. jquery实现一些小动画二

    jquery实现一些小动画二 jquery实现拖拽功能 <!DOCTYPE html> <html lang="en"> <head> < ...

  3. mysql系列3 SQL语法基础

    1.创建数据库(语法) 2.创建(数据库)表(语法) 复制新的空表举个例子: mysql> use course;Reading table information for completion ...

  4. 目标检测的评价标准mAP, Precision, Recall, Accuracy

    目录 metrics 评价方法 TP , FP , TN , FN 概念 计算流程 Accuracy , Precision ,Recall Average Precision PR曲线 AP计算 A ...

  5. c# 第9节 数据类型之引用类型

    本节内容: 1:数据类型之引用类型 2:字符串要注意的两点: 1:数据类型之引用类型 实例: 2:字符串要注意的两点: 对变量进行重新赋值:其原本的字符串并没有销毁

  6. 201871010104-陈园园 《面向对象程序设计(java)》第十二周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第十二周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  7. 【大数据】0001---使用SparkSQL关联两个表求和取前几行

    场景: 有两个表,表可以是文本或Json数据,结构化后分别是Table1(A,B,C)和Table2(C.D.E),两个表通过C关联,要求求出D+E之和,并以(A.B.D+E)三列返回 解答: 思路: ...

  8. String强制转换为Date,freemarker标签里date数据的显示问题

    String强制转换为Date,freemarker标签里date数据的显示问题 http://blog.sina.com.cn/s/blog_617f5d090101ut63.html (2014- ...

  9. Win10 Mactype 字体优化

    1.下载安装 Mactype :http://www.mactype.net/ 2. 打开MacType Tray.exe,右键其在任务栏图标就能选择配置文件. 分享一个配置文件: [General] ...

  10. 快速调用Android虚拟机

    由于使用Android studio开发flutter 每次打开软件都需要很长时间,所以我自己使用vscode进行开发,没有虚拟机也开发不了,于是就有了这篇博客的作用啦 在本地桌面新建一个xxx.ba ...