這次給大家?guī)砦⑿胖Ц兜耐丝罟δ荛_發(fā),微信支付退款功能開發(fā)的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來看一下。
先吐槽下微信的文檔和demo,重要的步驟信息沒有強(qiáng)調(diào)清楚,.net的demo就沒有跑成功過。
1.微信掃碼登錄
2.微信PC端支付
幾經(jīng)摸索才走通這個(gè)退款功能。下面介紹下微信支付退款功能的開發(fā)步驟:
一、下載證書并導(dǎo)入到系統(tǒng)
微信退款是需要證書的,這個(gè)證書不是官方demo中的證書,而是需要自己在微信商戶平臺(tái)中的api安全欄下載的證書,在官方的證書使用實(shí)例的一個(gè)word文檔看到下面話:C#有一點(diǎn)需要注意,除了在代碼中使用apiclient_cert.p12之外還需要將該證書導(dǎo)入操作系統(tǒng)才能使用,1、代碼中使用、;2、導(dǎo)入操作系統(tǒng),二者缺一不可。.NET版本需要大于2.0? 之前就是不知道這兩步,浪費(fèi)了太多時(shí)間。所以先下載證書:
下載的時(shí)候需要手機(jī)驗(yàn)證及登錄密碼。下載后找到apiclient_cert.p12這個(gè)證書,雙擊導(dǎo)入,導(dǎo)入的時(shí)候提示輸入密碼,這個(gè)密碼就是商戶ID,且必須是在自己的商戶平臺(tái)下載的證書。否則會(huì)出現(xiàn)密碼錯(cuò)誤的提示:
?導(dǎo)入正確的提示:
二、代碼退款
?這個(gè)地方可以直接用官方demo中的代碼,demo下載
?需要修改WxPayConfig中的幾個(gè)參數(shù):
? ??public?const?string?APPID?=?"wxf6dd794bcexxxx";????????public?const?string?MCHID?=?"xxxx";????????public?const?string?KEY?=?"xxxxx849ba56abbe56e05xxxxx";????????public?const?string?APPSECRET?=?"---";????????//=======【證書路徑設(shè)置】=====================================? ????????/*?證書路徑,注意應(yīng)該填寫絕對路徑(僅退款、撤銷訂單時(shí)需要)????????*/ ????????public?const?string?SSLCERT_PATH?=?"/WxPayAPI/cert/apiclient_cert.p12";????????public?const?string?SSLCERT_PASSWORD?=?"131xxxx";
上面的SSLCERT_PASSWORD就是MCHID,也就是商戶ID,SSLCERT_PASSWORD錯(cuò)誤會(huì)出現(xiàn)指定的網(wǎng)絡(luò)密碼不正確的提示:
接下來在控制器中增加一個(gè)退款方法,包含微信訂單號、商戶訂單號、總金額和退款金額。商戶訂單號和微信訂單號二選一。詳細(xì)參數(shù)
??public?ActionResult?DoRefund() ????????{????????????string?result?=?Refund.Run("","131667780120trade_no",?"1",?"1");????????????return?Content(result); ????????}
Refund類的Run方法:
?/*** ????????*?申請退款完整業(yè)務(wù)流程邏輯 ????????*?@param?transaction_id?微信訂單號(優(yōu)先使用) ????????*?@param?out_trade_no?商戶訂單號 ????????*?@param?total_fee?訂單總金額 ????????*?@param?refund_fee?退款金額 ????????*?@return?退款結(jié)果(xml格式)????????*/ ????????public?static?string?Run(string?transaction_id,?string?out_trade_no,?string?total_fee,?string?refund_fee) ????????{ ????????????Logger.Info("Refund?is?processing..."); ????????????WxPayData?data?=?new?WxPayData();????????????if?(!string.IsNullOrEmpty(transaction_id))//微信訂單號存在的條件下,則已微信訂單號為準(zhǔn)????????????{ ????????????????data.SetValue("transaction_id",?transaction_id); ????????????}????????????else//微信訂單號不存在,才根據(jù)商戶訂單號去退款????????????{ ????????????????data.SetValue("out_trade_no",?out_trade_no); ????????????} ????????????data.SetValue("total_fee",?int.Parse(total_fee));//訂單總金額 ????????????data.SetValue("refund_fee",?int.Parse(refund_fee));//退款金額 ????????????data.SetValue("out_refund_no",?out_trade_no);//隨機(jī)生成商戶退款單號 ????????????data.SetValue("op_user_id",?WxPayConfig.MCHID);//操作員,默認(rèn)為商戶號 ????????????WxPayData?result?=?WxPayApi.Refund(data);//提交退款申請給API,接收返回?cái)?shù)據(jù) ????????????Logger.Info("Refund?process?complete,?result?:?"?+?result.ToXml());????????????return?result.ToPrintStr(); ????????}
Refund:方法
?/** ????????*? ????????*?申請退款 ????????*?@param?WxPayData?inputObj?提交給申請退款A(yù)PI的參數(shù) ????????*?@param?int?timeOut?超時(shí)時(shí)間 ????????*?@throws?WxPayException ????????*?@return?成功時(shí)返回接口調(diào)用結(jié)果,其他拋異常????????*/ ????????public?static?WxPayData?Refund(WxPayData?inputObj,?int?timeOut?=?6) ????????{????????????string?url?=?"https://api.mch.weixin.qq.com/secapi/pay/refund";????????????//檢測必填參數(shù) ????????????if?(!inputObj.IsSet("out_trade_no")?&&?!inputObj.IsSet("transaction_id")) ????????????{????????????????throw?new?WxPayException("退款申請接口中,out_trade_no、transaction_id至少填一個(gè)!"); ????????????}????????????else?if?(!inputObj.IsSet("out_refund_no")) ????????????{????????????????throw?new?WxPayException("退款申請接口中,缺少必填參數(shù)out_refund_no!"); ????????????}????????????else?if?(!inputObj.IsSet("total_fee")) ????????????{????????????????throw?new?WxPayException("退款申請接口中,缺少必填參數(shù)total_fee!"); ????????????}????????????else?if?(!inputObj.IsSet("refund_fee")) ????????????{????????????????throw?new?WxPayException("退款申請接口中,缺少必填參數(shù)refund_fee!"); ????????????}????????????else?if?(!inputObj.IsSet("op_user_id")) ????????????{????????????????throw?new?WxPayException("退款申請接口中,缺少必填參數(shù)op_user_id!"); ????????????} ????????????inputObj.SetValue("appid",?WxPayConfig.APPID);//公眾賬號ID ????????????inputObj.SetValue("mch_id",?WxPayConfig.MCHID);//商戶號 ????????????inputObj.SetValue("nonce_str",?Guid.NewGuid().ToString().Replace("-",?""));//隨機(jī)字符串 ????????????inputObj.SetValue("sign",?inputObj.MakeSign());//簽名 ???????????? ????????????string?xml?=?inputObj.ToXml();????????????var?start?=?DateTime.Now; ????????????Log.Debug("WxPayApi",?"Refund?request?:?"?+?xml);????????????string?response?=?HttpService.Post(xml,?url,?true,?timeOut);//調(diào)用HTTP通信接口提交數(shù)據(jù)到API ????????????Log.Debug("WxPayApi",?"Refund?response?:?"?+?response);????????????var?end?=?DateTime.Now;????????????int?timeCost?=?(int)((end?-?start).TotalMilliseconds);//獲得接口耗時(shí)????????????//將xml格式的結(jié)果轉(zhuǎn)換為對象以返回 ????????????WxPayData?result?=?new?WxPayData(); ????????????result.FromXml(response); ????????????ReportCostTime(url,?timeCost,?result);//測速上報(bào) ????????????return?result; ????????}
生產(chǎn)環(huán)境中記得修改成自己的參數(shù)。如果參數(shù)都正確,將會(huì)返回:
而且,微信馬上回收到退款通知:
小結(jié):至此,退款功能已經(jīng)走通,其實(shí)如果參數(shù)和流程對了,這個(gè)地方還是很簡單的,微信的規(guī)定是可以申請一年內(nèi)交易的退款。
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注php中文網(wǎng)其它相關(guān)文章!
推薦閱讀:
jQuery、Angular、node中的Promise詳解
Atas ialah kandungan terperinci 微信支付的退款功能開發(fā). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Alat pengaturcaraan berbantukan AI ini telah menemui sejumlah besar alat pengaturcaraan berbantukan AI yang berguna dalam peringkat pembangunan AI yang pesat ini. Alat pengaturcaraan berbantukan AI boleh meningkatkan kecekapan pembangunan, meningkatkan kualiti kod dan mengurangkan kadar pepijat Ia adalah pembantu penting dalam proses pembangunan perisian moden. Hari ini Dayao akan berkongsi dengan anda 4 alat pengaturcaraan berbantukan AI (dan semua menyokong bahasa C# saya harap ia akan membantu semua orang). https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot ialah pembantu pengekodan AI yang membantu anda menulis kod dengan lebih pantas dan dengan sedikit usaha, supaya anda boleh lebih memfokuskan pada penyelesaian masalah dan kerjasama. Git

Dengan perkembangan pesat Internet, konsep media kendiri telah berakar umbi dalam hati orang ramai. Jadi, apakah sebenarnya media kendiri? Apakah ciri dan fungsi utamanya? Seterusnya, kita akan meneroka isu-isu ini satu demi satu. 1. Apakah sebenarnya media kendiri? Kami-media, seperti namanya, bermakna anda adalah media. Ia merujuk kepada pembawa maklumat yang melaluinya individu atau pasukan boleh mencipta, mengedit, menerbitkan dan menyebarkan kandungan secara bebas melalui platform Internet. Berbeza dengan media tradisional, seperti akhbar, televisyen, radio, dan lain-lain, media kendiri lebih interaktif dan diperibadikan, membolehkan semua orang menjadi pengeluar dan penyebar maklumat. 2. Apakah ciri dan fungsi utama media kendiri? 1. Ambang rendah: Peningkatan media kendiri telah menurunkan ambang untuk memasuki industri media Peralatan yang rumit dan pasukan profesional tidak lagi diperlukan.

Kedua-dua telefon bimbit vivox100s dan x100 adalah model yang mewakili dalam barisan produk telefon mudah alih vivo, masing-masing mewakili tahap teknologi canggih vivo dalam tempoh masa yang berbeza. Artikel ini akan menjalankan perbandingan terperinci antara kedua-dua telefon mudah alih ini dari segi perbandingan prestasi dan analisis fungsi untuk membantu pengguna memilih telefon mudah alih yang sesuai dengan mereka dengan lebih baik. Mula-mula, mari kita lihat perbandingan prestasi antara vivox100s dan x100. vivox100s dilengkapi dengan yang terbaru

1. Mula-mula, kita perlu membuka APP WeChat pada telefon mudah alih, dan kemudian klik untuk log masuk ke akaun WeChat, supaya kita memasuki halaman utama WeChat. 2. Klik butang [Saya] di penjuru kanan sebelah bawah halaman utama WeChat, kemudian pilih pilihan [Pembayaran] Kami klik untuk memasuki halaman pembayaran. 3. Selepas memasuki halaman [Pembayaran], klik pilihan [Dompet] untuk masuk dan klik [Bil] di penjuru kanan sebelah atas halaman [Dompet].

Pada 3 Mac 2022, kurang daripada sebulan selepas kelahiran pengaturcara AI pertama di dunia, Devin, pasukan NLP Universiti Princeton membangunkan pengaturcara AI sumber terbuka ejen SWE. Ia memanfaatkan model GPT-4 untuk menyelesaikan isu secara automatik dalam repositori GitHub. Prestasi ejen SWE pada set ujian bangku SWE adalah serupa dengan Devin, mengambil purata 93 saat dan menyelesaikan 12.29% masalah. Dengan berinteraksi dengan terminal khusus, ejen SWE boleh membuka dan mencari kandungan fail, menggunakan semakan sintaks automatik, mengedit baris tertentu dan menulis serta melaksanakan ujian. (Nota: Kandungan di atas adalah sedikit pelarasan bagi kandungan asal, tetapi maklumat utama dalam teks asal dikekalkan dan tidak melebihi had perkataan yang ditentukan.) SWE-A

Tutorial aplikasi mudah alih pembangunan bahasa Go Memandangkan pasaran aplikasi mudah alih terus berkembang pesat, semakin ramai pembangun mula meneroka cara menggunakan bahasa Go untuk membangunkan aplikasi mudah alih. Sebagai bahasa pengaturcaraan yang mudah dan cekap, bahasa Go juga telah menunjukkan potensi yang kukuh dalam pembangunan aplikasi mudah alih. Artikel ini akan memperkenalkan secara terperinci cara menggunakan bahasa Go untuk membangunkan aplikasi mudah alih dan melampirkan contoh kod khusus untuk membantu pembaca bermula dengan cepat dan mula membangunkan aplikasi mudah alih mereka sendiri. 1. Persediaan Sebelum memulakan, kita perlu menyediakan persekitaran dan alatan pembangunan. kepala

Dengan populariti Internet, membeli-belah dalam talian telah menjadi bahagian penting dalam kehidupan orang ramai. Kedai Douyin Douyin telah menarik sejumlah besar pengguna dengan model jualannya yang unik dan produk yang pelbagai. Walau bagaimanapun, semasa proses membeli-belah, sesetengah pengguna keliru tentang dasar pemulangan deposit Doudian. Memandangkan pengguna memberi lebih perhatian kepada keselamatan dan hak membeli-belah, Doudian memerlukan mekanisme bayaran balik yang lebih telus dan piawai untuk membina kepercayaan pengguna. Dengan mengoptimumkan proses bayaran balik dan mengukuhkan pengawasan pedagang, Doudian boleh meningkatkan pengalaman pengguna dan meningkatkan kesetiaan pengguna. Pengguna juga boleh memberi perhatian kepada peraturan platform dan berkomunikasi dengan peniaga untuk menyelesaikan isu bayaran balik deposit dengan berkesan dan memastikan hak dan kepentingan mereka sendiri tidak dirugikan. 1. Berapa lamakah masa yang diambil untuk deposit Doudian dipulangkan? Doudian ialah model beli-belah berdasarkan sistem kredit, yang memerlukan pengguna untuk

Ctrip menghimpunkan berjuta-juta hotel, syarikat penerbangan, syarikat penyewaan kereta dan penyedia perkhidmatan pelancongan di seluruh dunia untuk menyediakan pengguna dengan pelbagai pilihan perjalanan Hari ini saya akan bercakap tentang salah satu tutorial daftar keluar hotel perjalanan Ctrip Jika anda memerlukannya. belajar bersama. Langkah pertama proses daftar keluar hotel Ctrip ialah memasukkan APP Ctrip, pilih [Jadual Perjalanan] di bawah, dan kemudian klik [Butiran Pesanan] hotel yang telah kami tempah. Langkah 2: Klik [Batalkan Pesanan] di sudut kiri bawah. Langkah 3: Klik pada sebab pembatalan, dan kemudian klik [Batalkan Pesanan] di bahagian bawah.
