日本3级片-日本3级网站-日本888 xxxx-日本888xxxx-国产91久久精品一区二区-国产91久久久久久久免费

沈陽(yáng)網(wǎng)站建設(shè)_網(wǎng)絡(luò)推廣_沈陽(yáng)微信運(yùn)營(yíng)
024-22523145
13610827802
您當(dāng)前所在的位置:啟達(dá)傳媒 > 新聞資訊 > 行業(yè)資訊

微信小程序開(kāi)發(fā)中的支付功能集成指南

發(fā)表日期:2024.10.30文章編輯:?jiǎn)⑦_(dá)傳媒編輯瀏覽次數(shù):1045 標(biāo)簽:

一、準(zhǔn)備階段

注冊(cè)微信支付商戶號(hào)

在微信支付商戶平臺(tái)(https://pay.weixin.qq.com/index.php/home/login)注冊(cè)并進(jìn)行資質(zhì)審核和簽約。這個(gè)商戶號(hào)將成為公司收款賬戶,需要填寫超級(jí)管理員信息并上傳企業(yè)資料(如營(yíng)業(yè)執(zhí)照、對(duì)公銀行賬戶信息、法人身份證)。

小程序關(guān)聯(lián)商戶號(hào)

登錄微信公眾平臺(tái)(https://mp.weixin.qq.com/wxopen/devprofile/get),在左側(cè)功能項(xiàng)找到“微信支付”,選擇“商戶號(hào)管理”,將小程序與商戶號(hào)關(guān)聯(lián)。如果已經(jīng)關(guān)聯(lián),會(huì)顯示已關(guān)聯(lián)的商戶號(hào)信息。

配置小程序合法域名

在微信小程序后臺(tái)配置合法域名,包括API接口域名、上傳文件接口域名等。這是為了確保小程序能夠正常訪問(wèn)后端服務(wù)器。

二、開(kāi)發(fā)流程

獲取OpenID

OpenID是用戶的唯一標(biāo)識(shí),通過(guò)臨時(shí)登錄憑證code獲取。在小程序中調(diào)用wx.login接口,獲取到用戶的code(5分鐘有效期),然后將code傳遞給后端接口,通過(guò)后端服務(wù)器換取OpenID。

javascript

wx.login({??

? success: (res) => {??

? ? console.log(res.code, 'code');??

? ? let userCode = res.code; // 將code傳遞給服務(wù)器??

? ? // 調(diào)用后端接口,將code傳遞給接口會(huì)返回openid, unionid, phone等??

? }??

});

后端生成預(yù)支付訂單

后端服務(wù)器調(diào)用微信支付的統(tǒng)一下單接口(https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1),生成預(yù)支付訂單,并獲取預(yù)支付交易會(huì)話標(biāo)識(shí)prepay_id。這一步涉及復(fù)雜的簽名和加密過(guò)程,確保訂單信息的安全性。

javascript

app.post('/get-pay-params', async (req, res) => {??

? const { outTradeNo } = req.body;??

? try {??

? ? const order = await createPrepayOrder(outTradeNo, 1, '測(cè)試商品');??

? ? const payParams = generateSignature(order, config.partner_key);??

? ? res.json(payParams);??

? } catch (err) {??

? ? console.error('生成支付參數(shù)失敗:', err);??

? ? res.status(500).send('Failed to generate payment params.');??

? }??

});??

?

function generateSignature(order, key) {??

? const params = {??

? ? appId: config.appid,??

? ? nonceStr: Math.random().toString(36).substring(2),??

? ? package: `prepay_id=${order.prepay_id}`,??

? ? signType: 'MD5',??

? ? timeStamp: `${Math.round(Date.now() / 1000)}`??

? };??

? const stringToSign = Object.keys(params).sort().map(k => `${k}=${params[k]}`).join('&') + `&key=${key}`;??

? const sign = crypto.createHash('md5').update(stringToSign).digest('hex').toUpperCase();??

? return { ...params, paySign: sign };??

}

前端獲取支付參數(shù)并發(fā)起支付

前端小程序需要從后端獲取預(yù)支付訂單的相關(guān)參數(shù)(包括時(shí)間戳timeStamp、隨機(jī)字符串nonceStr、預(yù)支付IDpackage、簽名算法signType、簽名paySign等),然后使用這些參數(shù)調(diào)用wx.requestPayment接口發(fā)起支付請(qǐng)求。

javascript

Page({??

? data: {??

? ? payParams: {}??

? },??

? getPayParams: function() {??

? ? wx.request({??

? ? ? url: 'https://your-backend.com/get-pay-params',??

? ? ? method: 'POST',??

? ? ? data: { outTradeNo: '1234567890' },??

? ? ? success: (res) => {??

? ? ? ? const { package: pkg, nonceStr, signType, paySign, timeStamp } = res.data;??

? ? ? ? this.setData({??

? ? ? ? ? payParams: { pkg, nonceStr, signType, paySign, timeStamp }??

? ? ? ? });??

? ? ? },??

? ? ? fail: (err) => {??

? ? ? ? console.error('獲取支付參數(shù)失敗:', err);??

? ? ? }??

? ? });??

? },??

? onPay: function() {??

? ? wx.requestPayment({??

? ? ? ...this.data.payParams,??

? ? ? success: (res) => {??

? ? ? ? console.log('支付成功:', res);??

? ? ? },??

? ? ? fail: (err) => {??

? ? ? ? console.error('支付失敗:', err);??

? ? ? }??

? ? });??

? }??

});

處理支付回調(diào)

當(dāng)支付成功時(shí),微信會(huì)向商戶的后端服務(wù)器發(fā)送異步通知。商戶需要處理這些通知,更新數(shù)據(jù)庫(kù)中的訂單狀態(tài)。

javascript

app.post('/notify', (req, res) => {??

? const { transaction_id, out_trade_no, result_code, return_code } = req.query;??

? if (return_code === 'SUCCESS' && result_code === 'SUCCESS') {??

? ? // 更新數(shù)據(jù)庫(kù)中的訂單狀態(tài)??

? ? updateOrderStatus(out_trade_no, 'paid').then(() => {??

? ? ? res.send('SUCCESS');??

? ? }).catch((err) => {??

? ? ? console.error('更新訂單狀態(tài)失敗:', err);??

? ? ? res.send('FAIL');??

? ? });??

? } else {??

? ? console.error('支付回調(diào)失敗:', req.query);??

? ? res.send('FAIL');??

? }??

});

三、具體實(shí)現(xiàn)中的注意事項(xiàng)

支付參數(shù)的安全性和完整性

在調(diào)用wx.requestPayment時(shí),需要確保傳入的支付參數(shù)是準(zhǔn)確和完整的。這些參數(shù)包括時(shí)間戳、隨機(jī)字符串、預(yù)支付ID、簽名算法和簽名等,任何一個(gè)參數(shù)的錯(cuò)誤都可能導(dǎo)致支付失敗。

支付流程的順暢性

支付流程應(yīng)該盡可能順暢,減少用戶等待時(shí)間。提供清晰的支付提示和支付結(jié)果反饋,讓用戶能夠及時(shí)了解支付狀態(tài)。

錯(cuò)誤處理

在支付過(guò)程中,可能會(huì)遇到各種錯(cuò)誤,如網(wǎng)絡(luò)錯(cuò)誤、支付參數(shù)錯(cuò)誤、支付失敗等。開(kāi)發(fā)者需要在代碼中做好錯(cuò)誤處理,給用戶友好的提示,并盡可能提供解決方案。

支付結(jié)果的驗(yàn)證

在處理支付回調(diào)時(shí),需要驗(yàn)證支付結(jié)果的真實(shí)性和有效性。可以通過(guò)校驗(yàn)支付通知中的簽名、對(duì)比訂單號(hào)等方式來(lái)確保支付結(jié)果的真實(shí)性。

四、總結(jié)

微信支付功能是小程序商城開(kāi)發(fā)的核心功能之一,通過(guò)集成微信支付,可以為用戶提供便捷的支付手段,提升用戶體驗(yàn)。在集成微信支付功能時(shí),需要做好準(zhǔn)備工作,包括注冊(cè)微信支付商戶號(hào)、小程序關(guān)聯(lián)商戶號(hào)、配置小程序合法域名等。在開(kāi)發(fā)流程中,需要獲取OpenID、后端生成預(yù)支付訂單、前端獲取支付參數(shù)并發(fā)起支付、處理支付回調(diào)等步驟。在具體實(shí)現(xiàn)中,需要注意支付參數(shù)的安全性和完整性、支付流程的順暢性、錯(cuò)誤處理以及支付結(jié)果的驗(yàn)證等方面。

通過(guò)本文的介紹,相信讀者已經(jīng)對(duì)如何在微信小程序開(kāi)發(fā)中集成支付功能有了全面的了解。希望這些內(nèi)容能夠幫助開(kāi)發(fā)者更好地實(shí)現(xiàn)微信小程序的支付功能,為用戶提供更好的服務(wù)。

如沒(méi)特殊注明,文章均為啟達(dá)傳媒原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://www.ascbj.com.cn/index.php?m=&c=News&a=detail&id=1266
相關(guān)新聞

移動(dòng)網(wǎng)站建設(shè)已占主導(dǎo)

根據(jù)統(tǒng)計(jì)數(shù)字,到2015年底,我國(guó)手機(jī)的生產(chǎn)量累積達(dá)到5億部,智能手機(jī)的快速發(fā)展,改變了很多行業(yè),如購(gòu)物、O2O、...

日期:2016.02.16 瀏覽次數(shù):12149

網(wǎng)站建設(shè)對(duì)于企業(yè)的發(fā)展有哪些幫助?

網(wǎng)絡(luò)是一個(gè)個(gè)還比較年輕的新媒體,作為一個(gè)還不是特別成熟的物種,大多數(shù)人已經(jīng)習(xí)慣了它的存在卻沒(méi)有充分的掌握它的用途。...

日期:2016.02.19 瀏覽次數(shù):12669

成大事必須依靠的5種人和10種能力!

如果您的企業(yè)也在面臨這些問(wèn)題。需要的人招不來(lái),想要的人留不住;管理層的執(zhí)行力差,總是抱怨員工工作態(tài)度不好,而又無(wú)能...

日期:2016.03.01 瀏覽次數(shù):12247

京東家電發(fā)布新戰(zhàn)略 拓展線下渠道完善O2O

3月1日下午消息,京東家電今日下午在北京召開(kāi)發(fā)布會(huì),會(huì)上京東家電宣布2016年工作重點(diǎn)將放在拓展線下市場(chǎng)。除繼續(xù)推...

日期:2016.03.01 瀏覽次數(shù):11957

汪峰連續(xù)創(chuàng)業(yè),在線音樂(lè)春天真的來(lái)臨?

昨天,汪峰主導(dǎo)的互聯(lián)網(wǎng)音樂(lè)平臺(tái)第一個(gè)產(chǎn)品正式上線,這是一個(gè)名叫imixdio的網(wǎng)絡(luò)電臺(tái),根據(jù)介紹,這個(gè)“全新數(shù)字...

日期:2016.03.01 瀏覽次數(shù):12027

國(guó)內(nèi)孵化器太多,創(chuàng)業(yè)者可能不夠用了

一個(gè)令人震驚的事實(shí)是,近段時(shí)間遍地開(kāi)花的孵化器數(shù)量,可能已經(jīng)趕上創(chuàng)業(yè)者的數(shù)量了。這是一個(gè)人人爭(zhēng)相染指的行業(yè),但它卻...

日期:2016.03.02 瀏覽次數(shù):12434