/// <summary> /// 取消支付分订单接口 /// <para>微信支付分订单创建之后,由于某些原因导致订单不能正常支付时,可使用此接口取消订单。</para> /// <para>订单为以下状态时可以取消订单:CREATED(已创单)、DOING(进行中)(包括商户完结支付分订单后,且支付分订单收款状态为待支付USER_PAYING)。</para> /// <para>更多详细请参考 https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_16.shtml </para> /// </summary> /// <param name="data">微信支付需要POST的Data数据</param> /// <param name="timeOut">超时时间,单位为ms</param> /// <returns></returns> public async Task <CancelServiceOrderReturnJson> CancelServiceOrderAsync(CancelServiceOrderRequestData data, int timeOut = Config.TIME_OUT) { var url = ReurnPayApiUrl($"https://api.mch.weixin.qq.com/{{0}}v3/payscore/serviceorder/{data.out_order_no}/cancel"); TenPayApiRequest tenPayApiRequest = new(_tenpayV3Setting); return(await tenPayApiRequest.RequestAsync <CancelServiceOrderReturnJson>(url, data, timeOut)); }
/// <summary> /// 取消支付分订单测试 /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_17.shtml /// </summary> public void CancelServiceOrderAsyncTest() { //如果未创建支付分订单 则创建支付分订单 if (createServiceOrderResult is null) { CreateServiceOrderAsyncTest(); } var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting); var TenPayV3Info = TenPayV3InfoCollection.Data[key]; var requestData = new CancelServiceOrderRequestData(createServiceOrderResult.out_order_no, TenPayV3Info.AppId, createServiceOrderResult.service_id, "SenparcUnitTest"); PayScoreApis payScoreApis = new PayScoreApis(); var result = payScoreApis.CancelServiceOrderAsync(requestData).GetAwaiter().GetResult(); Console.WriteLine("微信支付 V3 取消支付分订单测试:" + result.ToJson(true)); Assert.IsNotNull(result); Assert.IsTrue(result.ResultCode.Success); Assert.IsTrue(result.VerifySignSuccess == true);//通过验证 }