public void CreateBusifavorStockAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 商家券使用规则 即刻开始 发1小时 生效1天 满100减10 var coupon_use_rule = new CreateBusifavorStockRequestData.Coupon_Use_Rule(new(new TenpayDateTime(DateTime.Now), new TenpayDateTime(DateTime.Now.AddHours(1)), 1, null, null, null), new(100, 10), null, null, "OFF_LINE", null, null); // 商家券发放规则 var stock_send_rule = new CreateBusifavorStockRequestData.Stock_Send_Rule(10, 1, 10, true); // TODO:流水号?这样是否有效? var out_request_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var requestData = new CreateBusifavorStockRequestData("Senparc微信支付V3商家券测试", TenPayV3Info.MchId, null, "微信支付V3商家券测试使用", "NORMAL", coupon_use_rule, stock_send_rule, out_request_no, null, null, "WECHATPAY_MODE", null, false); var marketingApis = new MarketingApis(); createBusifavorStockResult = marketingApis.CreateBusifavorStockRequestDataAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 创建商家券接口批次结果:" + createBusifavorStockResult.ToJson(true)); Assert.IsNotNull(createBusifavorStockResult); Assert.IsTrue(createBusifavorStockResult.ResultCode.Success); Assert.IsTrue(createBusifavorStockResult.VerifySignSuccess == true);//通过验证 }
public void PayParkingAsyncTest() { // 若没有创建停车入场, 则创建停车入场 if (createParkingResult is null) { CreateParkingAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var out_order_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var parking_info = new PayParkingRequestData.Parking_Info(createParkingResult); // 停车场设备id parking_info.device_id = "{device_id}"; // 每小时收费 var price = 1; // 根据停车时间计算收费 var amount = new PayParkingRequestData.Amount(price * parking_info.charging_duration, "CNY"); var requestData = new PayParkingRequestData(TenPayV3Info.AppId, "Senparc单元测试停车场扣费", null, out_order_no, "PARKING", null, notify_url, null, amount, parking_info); var vehicleParkingApis = new VehicleParkingApis(); payParkingResult = vehicleParkingApis.PayParkingAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 扣费受理接口测试结果:" + payParkingResult.ToJson(true)); Assert.IsNotNull(payParkingResult); Assert.IsTrue(payParkingResult.ResultCode.Success); Assert.IsTrue(payParkingResult.VerifySignSuccess == true);//通过验证 }
/// <summary> /// 创建支付分订单测试 /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_14.shtml /// </summary> public void CreateServiceOrderAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 服务单号 var out_order_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); //服务时间段 var time_range = new CreateServiceOrderRequestData.Time_Range(new TenpayDateTime(DateTime.Now), null, new TenpayDateTime(DateTime.Now.AddDays(1)), null); //付款项目列表 var post_payments = new CreateServiceOrderRequestData.Post_Payment[] { new CreateServiceOrderRequestData.Post_Payment("SenparcUnitTest名称测试", 1, "单元测试1分", null) }; //TODO:服务id获取 请阅读 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_1.shtml var serviceId = "{serviceId}"; //订单风险金 var risk_fund = new CreateServiceOrderRequestData.Risk_Fund("DEPOSIT", 1, "Senparc单元测试订单风险金"); var requestData = new CreateServiceOrderRequestData(out_order_no, TenPayV3Info.AppId, serviceId, "SenparcUnitTest", post_payments, null, time_range, null, risk_fund, null, null, openId, null); PayScoreApis payScoreApis = new PayScoreApis(); var createServiceOrderResult = payScoreApis.CreateServiceOrderAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 创建支付分订单测试:" + createServiceOrderResult.ToJson(true)); Assert.IsNotNull(createServiceOrderResult); Assert.IsTrue(createServiceOrderResult.ResultCode.Success); Assert.IsTrue(createServiceOrderResult.VerifySignSuccess == true);//通过验证 }
public void SendCardAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 如果还未创建建立合作关系 则建立合作关系 if (buildPartnershipsResult is null) { BuildPartnershipsAsyncTest(); } var card_id = "pIJMr5MMiIkO_93VtPyIiEk2DZ4w";//TODO: 消费卡ID,即card_id。card_id获取方法请参见《接入前准备》配置应用中的创建消费卡。https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_6_2.shtml#part-6 // TODO:流水号?这样是否有效? var out_request_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var requestData = new SendCardRequestData(card_id, TenPayV3Info.AppId, openId, out_request_no, new TenpayDateTime(DateTime.Now)); var marketingApis = new MarketingApis(); var result = marketingApis.SendCardAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 发放消费卡接口测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void DistributeStockAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 如果还未创建代金券批次 则创建新的代金券批次 并且激活 if (createStockResult is null) { StartStockAsyncTest(); } var out_request_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var requestData = new DistributeStockRequsetData(createStockResult.stock_id, out_request_no, TenPayV3Info.AppId, TenPayV3Info.MchId); var marketingApis = new MarketingApis(); distributeStockResult = marketingApis.DistributeStockAsync(openId, requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 发放代金券批次接口结果:" + distributeStockResult.ToJson(true)); Assert.IsNotNull(distributeStockResult); Assert.IsTrue(distributeStockResult.ResultCode.Success); Assert.IsTrue(distributeStockResult.VerifySignSuccess == true);//通过验证 }
public void SetBusifavorCouponCodesAsyncTest() { if (createBusifavorStockResult is null) { CreateBusifavorStockAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // TODO:流水号?这样是否有效? var upload_request_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); string[] coupon_code_list = { "" }; //TODO: 此处需要商家已有自己的优惠券系统生成code_list var requestData = new SetBusifavorCouponCodesRequestData(createBusifavorStockResult.stock_id, coupon_code_list, upload_request_no); var marketingApis = new MarketingApis(); var result = marketingApis.SetBusifavorCouponCodesAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 上传预存code结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void AddProfitsharingReceiverAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var openId = "{openId}";//TODO: 此处填入分账接受个人的openid var requestData = new AddProfitsharingReceiverRequestData(TenPayV3Info.AppId, "MERCHANT_ID", openId, null, "CUSTOM", "SenparcUnitTest"); var profitsharingApis = new ProfitsharingApis(); try { // receiver.type为MERCHANT_ID时,receiver.name必填 _ = profitsharingApis.AddProfitsharingReceiverAsync(requestData).GetAwaiter().GetResult(); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(TenpayApiRequestException)); Console.WriteLine(ex.Message); Assert.IsTrue(ex.Message.Contains("必填")); } // 修改数据 requestData.type = "PERSONAL_OPENID"; var result = profitsharingApis.AddProfitsharingReceiverAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 添加分账接收方接口测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void PayBusifavorReceiptsAsyncTest() { if (createBusifavorStockResult is null) { CreateBusifavorStockAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var coupon_code = "coupon_code"; // TODO: 发券似乎还是V2接口 或者 微信支付平台流量场景发放 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_2_1.shtml var transaction_id = "transaction_id"; // TODO: 填入现有订单的transaction_id var payer_merchant = "payer_merchant"; // TODO: 收款商户号 需要另一个收款的商户号 // TODO:流水号?这样是否有效? var out_subsidy_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var requestData = new PayBusifavorReceiptsRequestData(createBusifavorStockResult.stock_id, coupon_code, out_subsidy_no, transaction_id, payer_merchant, 100, "Senparc营销补差付款接口单元测试", out_subsidy_no); var marketingApis = new MarketingApis(); var result = marketingApis.PayBusifavorReceiptsAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 营销补差付款接口:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
/// <summary> /// 获取 APIv3 的公钥 /// </summary> /// <param name="senparcWeixinSettingForTenpayV3"></param> /// <param name="tenpaySerialNumber"></param> /// <returns></returns> public static async Task <string> GetAPIv3PublicKeyAsync(ISenparcWeixinSettingForTenpayV3 senparcWeixinSettingForTenpayV3, string tenpaySerialNumber) { var tenpayV3InfoKey = TenPayHelper.GetRegisterKey(senparcWeixinSettingForTenpayV3.TenPayV3_MchId, senparcWeixinSettingForTenpayV3.TenPayV3_SubMchId); var pubKey = await Data[tenpayV3InfoKey].GetPublicKeyAsync(tenpaySerialNumber, senparcWeixinSettingForTenpayV3); return(pubKey); }
public void UseBusifavorCouponAsyncTest() { if (createBusifavorStockResult is null) { CreateBusifavorStockAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // TODO:流水号?这样是否有效? var use_request_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var coupon_code = "coupon_code";// TODO: 发券似乎还是V2接口 或者 微信支付平台流量场景发放 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_2_1.shtml var requestData = new UseBusifavorCouponRequestData(coupon_code, createBusifavorStockResult.stock_id, TenPayV3Info.AppId, new TenpayDateTime(DateTime.Now), use_request_no, openId); var marketingApis = new MarketingApis(); var result = marketingApis.UseBusifavorCouponAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 核销商家券接口批次结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
/// <summary> /// 完结支付分订单测试 /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_18.shtml /// </summary> public void CompleteServiceOrderAsyncTest() { //如果未创建支付分订单 则创建支付分订单 if (createServiceOrderResult is null) { CreateServiceOrderAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; //服务时间段 var time_range = new CompleteServiceOrderRequestData.Time_Range(new TenpayDateTime(DateTime.Now), null, new TenpayDateTime(DateTime.Now.AddDays(1)), null); //付款项目列表 var post_payments = new CompleteServiceOrderRequestData.Post_Payment[] { new CompleteServiceOrderRequestData.Post_Payment("SenparcUnitTest名称测试", 1, "单元测试1分", null) }; var requestData = new CompleteServiceOrderRequestData(createServiceOrderResult.out_order_no, TenPayV3Info.AppId, createServiceOrderResult.service_id, post_payments, null, 1, time_range, null, null, null); PayScoreApis payScoreApis = new PayScoreApis(); var result = payScoreApis.CompleteServiceOrderAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 完结支付分订单测试:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
/// <summary> /// 检验签名,以确保回调是由微信支付发送。 /// 签名规则见微信官方文档 https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml。 /// return bool /// </summary> /// <param name="wechatpayTimestamp">HTTP头中的应答时间戳</param> /// <param name="wechatpayNonce">HTTP头中的应答随机串</param> /// <param name="wechatpaySignature">HTTP头中的应答签名</param> /// <param name="content">应答报文主体</param> /// <param name="pubKey">平台公钥 可为空</param> /// <returns></returns> public static async Task <bool> VerifyTenpaySign(string wechatpayTimestamp, string wechatpayNonce, string wechatpaySignature, string content, string serialNumber, ISenparcWeixinSettingForTenpayV3 senparcWeixinSettingForTenpayV3) { //string contentForSign = $"{wechatpayTimestamp}\n{wechatpayNonce}\n{content}\n"; var tenpayV3InfoKey = TenPayHelper.GetRegisterKey(senparcWeixinSettingForTenpayV3.TenPayV3_MchId, senparcWeixinSettingForTenpayV3.TenPayV3_SubMchId); var pubKey = await TenPayV3InfoCollection.Data[tenpayV3InfoKey].GetPublicKeyAsync(serialNumber, senparcWeixinSettingForTenpayV3); return(VerifyTenpaySign(wechatpayTimestamp, wechatpayNonce, wechatpaySignature, content, pubKey)); }
public void QueryComplaintsAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var complaintApis = new ComplaintApis(); var result = complaintApis.QueryComplaintsAsync(new TenpayDateTime(DateTime.Parse("2021-9-30")), new TenpayDateTime(DateTime.Now), TenPayV3Info.MchId).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 查询投诉单列表测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void QueryBusifavorNotifyUrlAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var marketingApis = new MarketingApis(); var result = marketingApis.QueryBusifavorNotifyUrlAsync(TenPayV3Info.MchId).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 查询商家券事件通知地址接口:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void QueryProfitsharingAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var businessCircleApis = new BusinessCircleApis(); var result = businessCircleApis.QueryUserAuthorizationAsync(TenPayV3Info.AppId, openId).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 商圈积分授权查询测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void QueryBusifavorCouponAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var coupon_code = "coupon_code";// TODO: 发券似乎还是V2接口 或者 微信支付平台流量场景发放 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_2_1.shtml var marketingApis = new MarketingApis(); var result = marketingApis.QueryBusifavorCouponAsync(coupon_code, TenPayV3Info.AppId, openId).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 查询用户单张券详情接口:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void CreateUniqueThresholdActivityAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 如果还未创建支付有礼活动 则建立支付有礼活动 if (createUniqueThresholdActivityResult is null) { CreateUniqueThresholdActivityAsyncTest(); } // TODO:流水号?这样是否有效? var out_request_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); //TODO: 此接口测试依赖商户券接口和图片上传接口 var activity_base_info = new CreateUniqueThresholdActivityRequestData.Activity_Base_Info("Senparc支付有礼单元测试活动", "活动副标题", "TODO:仅支持通过《图片上传API》接口获取的图片URL地址", null, new TenpayDateTime(DateTime.Now), new TenpayDateTime(DateTime.Now.AddHours(2)), null, out_request_no, "OFF_LINE_PAY", null, null); var award_send_rule = new CreateUniqueThresholdActivityRequestData.Award_Send_Rule(100, "SINGLE_COUPON", "BUSIFAVOR", new CreateUniqueThresholdActivityRequestData.Award_Send_Rule.Award_List[] { new(createBusifavorStockResult.stock_id, "TODO:原始图", "TODO:缩略图") }, "IN_SEVICE_COUPON_MERCHANT", null);
public void DeleteProfitsharingAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var openId = "{openId}";//TODO: 此处填入分账接受个人的openid var requestData = new DeleteProfitsharingReceiverRequestData(TenPayV3Info.AppId, "PERSONAL_OPENID", openId); var profitsharingApis = new ProfitsharingApis(); var result = profitsharingApis.DeleteProfitsharingAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 删除分账接收方接口测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void QueryPermissionByOpenidAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; //TODO:服务id获取 请阅读 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_1.shtml var serviceId = "{serviceId}"; PayScoreApis payScoreApis = new PayScoreApis(); var result = payScoreApis.QueryPermissionByOpenidAsync(serviceId, TenPayV3Info.AppId, openId).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 查询用户授权记录(openid)测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void SetBusifavorSetNotifyUrlAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var notify_url = "senparc.com/SetBusifavorCouponCodesAsyncTest";// TODO:这个url我随便设置的 var requestData = new SetBusifavorSetNotifyUrlRequestData(TenPayV3Info.MchId, notify_url); var marketingApis = new MarketingApis(); var result = marketingApis.SetBusifavorSetNotifyUrlAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 设置商家券事件通知地址接口:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
/// <summary> /// 查询支付分订单测试 /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_15.shtml /// </summary> public void QueryServiceOrderAsyncTest() { //如果未创建支付分订单 则创建支付分订单 if (createServiceOrderResult is null) { CreateServiceOrderAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; PayScoreApis payScoreApis = new PayScoreApis(); try { // out_order_no query_id都不传入的情况 _ = payScoreApis.QueryServiceOrderAsync(null, null, createServiceOrderResult.service_id, TenPayV3Info.AppId).GetAwaiter().GetResult(); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(TenpayApiRequestException)); Console.WriteLine(ex.Message); Assert.IsTrue(ex.Message.Contains("不允许都填写或都不填写")); } try { // out_order_no query_id一起传入情况 _ = payScoreApis.QueryServiceOrderAsync(createServiceOrderResult.out_order_no, "queryId", createServiceOrderResult.service_id, TenPayV3Info.AppId).GetAwaiter().GetResult(); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(TenpayApiRequestException)); Console.WriteLine(ex.Message); Assert.IsTrue(ex.Message.Contains("不允许都填写或都不填写")); } var result = payScoreApis.QueryServiceOrderAsync(createServiceOrderResult.out_order_no, null, createServiceOrderResult.service_id, TenPayV3Info.AppId).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 查询支付分订单测试:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void CreateBusifavorStockAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var transaction_id = "{transaction_id}";// 输入微信支付推送的商圈内交易通知里携带的微信订单号 var requestData = new NotifyBusinessCirclePointsRequestData(transaction_id, TenPayV3Info.AppId, openId, true, 1, new TenpayDateTime(DateTime.Now), null, null); var businessCircleApis = new BusinessCircleApis(); var result = businessCircleApis.NotifyBusinessCirclePointsAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 商圈积分同步接口测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void CompleteComplaintAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 此处输入投诉id var complaint_id = "{complaint_id}"; var requestData = new CompleteComplaintRequestData(complaint_id, TenPayV3Info.MchId); var complaintApis = new ComplaintApis(); var result = complaintApis.CompleteComplaintAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 反馈处理完成接口测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void QueryServiceAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 车牌号 var plate_number = "{plate_number}"; // 车牌颜色 var plate_color = "{plate_color}"; var vehicleParkingApis = new VehicleParkingApis(); var result = vehicleParkingApis.QueryServiceAsync(TenPayV3Info.AppId, plate_number, plate_color, openId).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 查询车牌服务开通信息测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void ReturnProfitsharingAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // TODO:流水号?这样是否有效? var out_return_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var requestData = new ReturnProfitsharingRequestData(createProfitsharingResult.order_id, createProfitsharingResult.out_order_no, out_return_no, createProfitsharingResult.receivers.First().account, 1, "分账退款接口单元测试"); var profitsharingApis = new ProfitsharingApis(); returnProfitsharingResult = profitsharingApis.ReturnProfitsharingAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 请求分账回退接口测试结果:" + returnProfitsharingResult.ToJson(true)); Assert.IsNotNull(returnProfitsharingResult); Assert.IsTrue(returnProfitsharingResult.ResultCode.Success); Assert.IsTrue(returnProfitsharingResult.VerifySignSuccess == true);//通过验证 }
public void SetNotifyUrlAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var marketingApis = new MarketingApis(); var notifyUrl = "https://sdk.weixin.senparc.com/TenPayRealV3/FavorNotifyCallback"; var requestData = new SetNotifyUrlRequsetData(TenPayV3Info.MchId, notifyUrl, null); var result = marketingApis.SetNotifyUrlAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 设置营销事件消息通知地址结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void QueryBusifavorCouponsAsyncTest() { if (createBusifavorStockResult is null) { CreateBusifavorStockAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var marketingApis = new MarketingApis(); var result = marketingApis.QueryBusifavorCouponsAsync(openId, TenPayV3Info.AppId, createBusifavorStockResult.stock_id, null, null, null, null).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 根据过滤条件查询商家券用户券接口:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void GivePermissionAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 服务单号 var authorization_code = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); //TODO:服务id获取 请阅读 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_1.shtml var serviceId = "{serviceId}"; var requestData = new GivePermissionRequestData(serviceId, TenPayV3Info.AppId, authorization_code, serviceId); PayScoreApis payScoreApis = new PayScoreApis(); var result = payScoreApis.GivePermissionAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 商户预授权测试测试结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }
public void Configure(IKernelServices kernelServices) { var services = kernelServices.Services; using var serviceProvider = services.BuildServiceProvider(); var mchs = serviceProvider.GetService <IOptions <PayMchOptions> >(); foreach (var item in mchs.Value.Mchs) { var wxMch = item.Value.FirstOrDefault(r => r.PayType == PayType.WxPay); if (wxMch == null) { continue; } // 需要先注册带证书的httpclient var key = TenPayHelper.GetRegisterKey(wxMch.MchId, null); services.AddCertHttpClient(key, wxMch.WxCertPwd, wxMch.WxCertPath); } }
public void QueryItemsAsyncTest() { var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; // 如果还未发放代金券 则创建代金券 if (createStockResult is null) { CreateStockAsyncTest(); } var marketingApis = new MarketingApis(); var result = marketingApis.QueryItemsAsync(0, 50, TenPayV3Info.MchId, createStockResult.stock_id).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 查询代金券可用单品接口结果:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }