public async Task PayOrderQueryTest()
        {
            using (WxpayApiClient httpClient = new WxpayApiClientBuilder()
                                               .SetApiConfig(GetMerchantApiConfig())
                                               .Build())
            {
                WxpayApiResult <PayOrderQueryResponseData> result = await httpClient.ExecutePayOrderQueryAsync(new PayOrderQueryRequestData()
                {
                    TransactionID = "FAKETRANSACTIONID"
                });

                Assert.Equal("FAIL", result.ReturnCode);
            }
        }
        public async Task PayUnifiedOrderTest()
        {
            using (WxpayApiClient httpClient = new WxpayApiClientBuilder()
                                               .SetApiConfig(GetMerchantApiConfig())
                                               .Build())
            {
                WxpayApiResult <PayUnifiedOrderResponseData> result = await httpClient.ExecutePayUnifiedOrderAsync(new PayUnifiedOrderRequestData()
                {
                    Body           = "测试商品",
                    OutTradeNumber = GetMerchantOrderNumber(),
                    TotalFee       = 1,
                    SpbillCreateIP = "127.0.0.1",
                    NotifyUrl      = "https://example.com/",
                    TradeType      = "JSAPI",
                    OpenID         = "FAKEOPENID"
                });

                Assert.Equal("FAIL", result.ReturnCode);
            }
        }
        public async Task SecapiPayRefundTest()
        {
            WxpayApiConfig apiConfig = GetMerchantApiConfig();

            byte[] certRawData = File.ReadAllBytes(@"./wxpay_cert.p12");
            using (HttpClient httpMessageInvoker = new WxpayApiHttpMessageInvoker(certRawData, apiConfig.MerchantID))
                using (WxpayApiClient httpClient = new WxpayApiClientBuilder()
                                                   .SetApiConfig(apiConfig)
                                                   .SetHttpMessageInvoker(httpMessageInvoker)
                                                   .Build())
                {
                    WxpayApiResult <SecapiPayRefundResponseData> result = await httpClient.ExecuteSecapiPayRefundAsync(new SecapiPayRefundRequestData()
                    {
                        TransactionID     = "FAKETRANSACTIONID",
                        OutRefundNumber   = GetMerchantOrderNumber(),
                        TotalFee          = 1,
                        RefundFee         = 1,
                        RefundDescription = "测试退款"
                    });

                    Assert.Equal("FAIL", result.ReturnCode);
                }
        }