Пример #1
0
        /// <summary>
        /// 请求分账回退接口
        /// <para>如果订单已经分账,在退款时,可以先调此接口,将已分账的资金从分账接收方的账户回退给分账方,再发起退款。/para>
        /// <para>更多详细请参考 https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_3.shtml </para>
        /// </summary>
        /// <param name="data">微信支付需要POST的Data数据</param>
        /// <param name="timeOut">超时时间,单位为ms </param>
        /// <returns></returns>
        public async Task <ReturnProfitsharingReturnJson> ReturnProfitsharingAsync(ReturnProfitsharingRequestData data, int timeOut = Config.TIME_OUT)
        {
            var url = ReurnPayApiUrl("https://api.mch.weixin.qq.com/{0}v3/profitsharing/return-orders");
            TenPayApiRequest tenPayApiRequest = new(_tenpayV3Setting);

            return(await tenPayApiRequest.RequestAsync <ReturnProfitsharingReturnJson>(url, data, timeOut));
        }
        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);//通过验证
        }