Example #1
0
        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);//通过验证
        }
Example #2
0
        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);//通过验证
        }
Example #3
0
        /// <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);//通过验证
        }
Example #4
0
        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);//通过验证
        }
Example #6
0
        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);//通过验证
        }
Example #8
0
        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);
        }
Example #10
0
        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);//通过验证
        }
Example #11
0
        /// <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);//通过验证
        }
Example #12
0
        /// <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));
        }
Example #13
0
        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);//通过验证
        }
Example #14
0
        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);//通过验证
        }
Example #15
0
        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);//通过验证
        }
Example #16
0
        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);//通过验证
        }
Example #17
0
        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);//通过验证
        }
Example #19
0
        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);//通过验证
        }
Example #20
0
        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);//通过验证
        }
Example #21
0
        /// <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);//通过验证
        }
Example #22
0
        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);//通过验证
        }
Example #23
0
        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);//通过验证
        }
Example #24
0
        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);//通过验证
        }
Example #27
0
        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);//通过验证
        }
Example #28
0
        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);//通过验证
        }
Example #29
0
        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);//通过验证
        }