欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

微信支付退款和退款結果查詢接口簡單實現(.Net 7.0)


2024年8月7日 15:32 本文熱度 1115

前言

相較于支付寶,微信支付對 .Net 的支持就沒那么充分,官方沒有提供 SDK。

 

但值得慶幸的是,在社區有大佬封裝了 v3 版 .Net SDK。

原文鏈接:https://developers.weixin.qq.com/community/develop/article/doc/00020aadc384a0a5f01c3526b56813。

SDK 名稱:SKIT.FlurlHttpClient.Wechat.TenpayV3,支持 .NET Core / Framework,完整封裝全部 v3 API。

本文也將以此 SDK 來應用,主要介紹退款和退款狀態查詢兩個接口。

一、接入準備

1.1 引入 SDK

名稱:SKIT.FlurlHttpClient.Wechat.TenpayV3,支持 .Net Standard 2.0、.Net Framework 4.6.2-4.7.1、.Net 6.0 等版本。

NuGet 簡介地址:https://www.nuget.org/packages/SKIT.FlurlHttpClient.Wechat.TenpayV3。

 

簡介:基于 Flurl.Http 的微信支付 API v3 版客戶端,支持商戶(直連)、合作伙伴(服務商、渠道商、機構、銀行)模式,支持基礎支付、代金券、商家券、委托營銷、消費卡、支付有禮、銀行定向促活、微信支付分、微信先享卡、支付即服務、點金計劃、智慧商圈、電商收付通、平臺收付通、二級商戶進件、小微商戶進件、消費者投訴、商戶風控管理、商戶違規通知、批量轉賬到零錢、銀行組件、海關報關、融合錢包、微工卡、電子發票、電子小票、車主平臺、教育續費通、校園輕松付等功能。

1.2 必要的賬戶信息

 

關于微信的服務商和普通商戶:

普通商戶

資金由微信直接與商戶結算,不涉及資金凍結和分賬;

可獨立申請,可自行通過接口進行支付、退款等操作;

適合大型企業或品牌商戶,有自己技術團隊和支付系統。

服務商

資金會先被微信凍結,服務商發起分賬后微信才進行分賬;

可免費申請不限個數的子商戶,但服務商的商戶號需要每年支付認證費用;

自身不能直接收款,需通過申請的“特約商戶”才能收款;

“特約商戶”可以像普通商戶一樣收款,但退款接口必須由服務商發起;

適合于提供支付解決方案給多個特約商戶的第三方機構,特別是那些需要處理多商戶分賬或收取服務費的復雜場景。

特別注意:特約商戶,也就是服務商下邊的子商戶,是沒有權限直接調用退款接口的,只能根據服務商的賬戶信息加上子商戶號來。

二、接口調用

2.1 根據賬戶信息創建共用客戶端對象 

var manager = new InMemoryCertificateManager();

var options = new WechatTenpayClientOptions()

{

    MerchantId = "商戶號", // 商戶號

    MerchantV3Secret = "商戶 API v3 密鑰", // 商戶 API v3 密鑰

    MerchantCertificateSerialNumber = "商戶 API 證書序列號", // 商戶 API 證書序列號

    MerchantCertificatePrivateKey = "-----BEGIN PRIVATE KEY-----\r\nMIIEv ... ... Q71AG\r\n-----END PRIVATE KEY-----", // 商戶 API 證書私鑰

    PlatformCertificateManager = manager

};

var client = new WechatTenpayClient(options);

2.2 退款接口

以下是退款接口的代碼,其中入參僅示例了必要的字段,其他詳情見官方文檔。

官方文檔:https://pay.weixin.qq.com/docs/merchant/apis/refund/refunds/create.html

var request = new CreateRefundDomesticRefundRequest()

{

    //OutTradeNumber = "商戶訂單號", // 【商戶訂單號】 原支付交易對應的商戶訂單號,與transaction_id二選一

    TransactionId = "微信訂單號", // 【微信支付訂單號】 原支付交易對應的微信訂單號,與out_trade_no二選一

    // 商戶自定義退款唯一標識,要做好記錄,退款狀態查詢時入參必填

    OutRefundNumber = $"WX{DateTime.Now.ToString("yyyyMMddHHmmssffffff")}", 

    Reason = "測試退款080611",

    //NotifyUrl = "https://...", // 回調地址

    Amount = new CreateRefundDomesticRefundRequest.Types.Amount()

    {

        Total = 100, // 單位:分

        Refund = 99, // 單位:分

        Currency = "CNY" // 【退款幣種】 目前只支持人民幣:CNY。

    },

};

//string json = Json_Object.ObjectToJsonstr(request);

var response = await client.ExecuteCreateRefundDomesticRefundAsync(request);

if (response.IsSuccessful())

{

    Console.WriteLine("RefundId:", response.RefundId); // 【微信支付退款號】 微信支付退款號

    Console.WriteLine("OutRefundNumber:", response.OutRefundNumber); // 【商戶退款單號】 商戶系統內部的退款單號,商戶系統內部唯一

    Console.WriteLine("TransactionId:", response.TransactionId); // 【微信支付訂單號】

    Console.WriteLine("OutRefundNumber:", response.OutTradeNumber); // 【商戶訂單號】 原支付交易對應的商戶訂單號

}

else

{

    Console.WriteLine("HTTP 狀態:" + response.GetRawStatus());

    Console.WriteLine("錯誤代碼:" + response.ErrorCode);

    Console.WriteLine("錯誤描述:" + response.ErrorMessage);

}

2.3 退款狀態查詢接口

以下是退款狀態查詢接口的代碼,入參實際上就只有一個:商戶退款單號。文檔中是要求直接跟在接口請求路徑之后,SDK 中是封裝到 Request 模型中。

官方文檔:https://pay.weixin.qq.com/docs/merchant/apis/refund/refunds/query-by-out-refund-no.html

var request = new GetRefundDomesticRefundByOutRefundNumberRequest()

{

    OutRefundNumber = "WX20240806104450972506",

};

//string json = Json_Object.ObjectToJsonstr(request);

var response = await client.ExecuteGetRefundDomesticRefundByOutRefundNumberAsync(request);

if (response.IsSuccessful())

{

    Console.WriteLine("RefundId:", response.RefundId); // 【微信支付退款號】 微信支付退款號

    Console.WriteLine("OutRefundNumber:", response.OutRefundNumber); // 【商戶退款單號】 商戶系統內部的退款單號,商戶系統內部唯一

    Console.WriteLine("OutRefundNumber:", response.TransactionId); // 【微信支付訂單號】

    Console.WriteLine("OutRefundNumber:", response.OutTradeNumber); // 【商戶訂單號】 原支付交易對應的商戶訂單號

}

else

{

    Console.WriteLine("HTTP 狀態:" + response.GetRawStatus());

    Console.WriteLine("錯誤代碼:" + response.ErrorCode);

    Console.WriteLine("錯誤描述:" + response.ErrorMessage);

}

2.4 接口的 Request、Response 模型的對應邏輯

下面列一下以上使用到的兩個接口信息:

 

由上表對照可以看出,對應的模型實際上就是以接口地址為基礎的,其他接口就可以按照這個邏輯去一一對應。

轉載本文請注明原文鏈接:https://www.cnblogs.com/hnzhengfy/p/18339226/Wecha_refunds 



該文章在 2024/8/8 8:56:32 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved