Fetch the repository succeeded.
This action will force synchronization from Kevin/OSS.PaySdk, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
OSS支付SDK,主要打造微信支付,支付宝支付,以及其他银行支付接口标准库项目
此项目以标准库的形式提供服务,也就是可以同时支持.Net Framework(4.6及以上版本) 和 .Net Core
如果有问题,也可以在公众号(osscoder)中提问:
nuget下安装命令:Install-Package OSS.PaySdk.Wx (微信支付 nuget下安装命令:Install-Package OSS.PaySdk.Ali (支付宝支付
// 声明配置
private static WxPayCenterConfig config= new WxPayCenterConfig()
{
AppSource = "11",
AppId = "wx2428e34e0e7dc6ef",
MchId = "1233410002",
Key = "e10adc3849ba56abbe56e056f20f883e",
AppSecret = "51c56b886b5be869567dd389b3e5d1d6",
CertPassword = "1233410002",
CertPath = "cert/apiclient_cert.p12",
NotifyUrl = "http://www.osscoder.com",
// 设置证书附加请求方式
SetCertificata = (handler, cert) =>
{
handler.ServerCertificateCustomValidationCallback = (msg, c, chain, sslErrors) => true;
handler.ClientCertificates.Add(cert);
}
};
// 调用示例
private static WxPayTradeApi m_Api=new WxPayTradeApi(config);
public void AddUniOrderAsyncTest()
{
var order = new WxAddPayUniOrderReq();
order.device_info = "WEB";
order.body = "测试商品支付";
order.openid = "sdfvsfdbf345678888fhngfbsdfbsdfb";
order.out_trade_no = "2017022423560123";
order.trade_type = "JSAPI";
order.total_fee = 100;
var res = m_Api.AddUniOrderAsync(order).WaitResult();
Assert.IsTrue(res.IsSuccess);
}
private static string privateKey = "自定义私钥";
private static string publicKey = "支付宝提供的公钥";
protected static ZPayCenterConfig ZPayConfig { get; set; } = new ZPayCenterConfig()
{
AppSource = "1",
AppId = "2016080300153582",
AppPrivateKey = privateKey,
AppPublicKey = publicKey
};
protected static ZPayTradeApi zPayApi = new ZPayTradeApi(ZPayConfig);
public async Task<IActionResult> ZPay(PayOrderMo order)
{
string orderNum = DateTime.Now.ToString("yyyyMMddHHmmss");
var payReq = new ZAddPreTradeReq("http://pay.sample.osscoder.com/base/ZCallBack");
payReq.body = order.order_name;
payReq.out_trade_no = orderNum;
payReq.total_amount = order.order_price;
payReq.subject = order.order_name;
var res =await zPayApi.AddPreTradeAsync(payReq);
return Json(res);
}
因为底层接口使用了Task返回,在.Net Framework MVC项目中如果你的在action中通过 Result或者wait等方式,直接返回ActionResult对象,界面会出现假死状态,解决方案:
1. action 返回类型 ActionResult 修改为 async Task<ActionResult>, 全程异步
2. 将异步调用方法 通过 var task= Task.Run(()=> 异步方法 )返回异步对象,再使用task.Result即可
Sign in for post a comment
Comments ( 0 )