APP如何接入微信支付?
APP接入微信支付,是如何接入的 ?
核心概念理解
在開始前,先理解微信支付在APP內(nèi)的角色模型:
商戶: 你自己(公司)。
微信支付商戶平臺(tái): 你的資金和配置管理中心(pay.weixin.qq.com)。
微信開放平臺(tái): 你的APP信息管理中心(open.weixin.qq.com),APP支付必須在這里創(chuàng)建應(yīng)用。
用戶: 使用你APP的消費(fèi)者。
流程: 你的APP(前端) -> 你的商戶服務(wù)器(后端) -> 微信支付服務(wù)器 -> 返回支付憑證 -> 調(diào)起微信SDK完成支付。
接入全流程步驟
第一步:前期準(zhǔn)備(賬號(hào)與資料)
1:注冊(cè)公司主體: 微信支付要求企業(yè)或個(gè)體工商戶資質(zhì),個(gè)人無法申請(qǐng)。
2:申請(qǐng)微信支付商戶號(hào):
前往 微信支付商戶平臺(tái) 注冊(cè)申請(qǐng)。
需要營(yíng)業(yè)執(zhí)照、法人身份證、對(duì)公賬戶等信息。
審核通過后,你會(huì)獲得重要的五參數(shù):
mchid: 商戶號(hào)
appid: 關(guān)聯(lián)的公眾號(hào)/小程序/APP的AppID(注意:APP支付需使用開放平臺(tái)的AppID)
api_v3_key: 用于解密回調(diào)通知的密鑰
serial_no: 商戶API證書序列號(hào)
private_key: 商戶API私鑰(從商戶平臺(tái)下載的證書文件里獲取)
3:注冊(cè)微信開放平臺(tái)并創(chuàng)建APP:
前往 微信開放平臺(tái) 創(chuàng)建移動(dòng)應(yīng)用,通過審核后獲得 開放平臺(tái)AppID。
關(guān)鍵操作: 在開放平臺(tái)的應(yīng)用詳情中,將你的 微信支付商戶號(hào) 與這個(gè) APP 進(jìn)行綁定。這樣支付權(quán)限才通。
4:獲取開放平臺(tái)AppKey: 在開放平臺(tái)中生成,用于獲取用戶登錄授權(quán)等(支付本身不直接用它,但常需登錄態(tài))。
第二步:技術(shù)集成(以Android/iOS原生為例)
核心:在你的APP中集成微信支付SDK,在你的服務(wù)器端實(shí)現(xiàn)下單、驗(yàn)簽邏輯。
1:客戶端(APP)集成:
下載SDK: 從微信開放平臺(tái)官網(wǎng)下載對(duì)應(yīng)平臺(tái)(iOS/Android)的SDK。
集成配置:
Android: 將SDK庫(kù)引入項(xiàng)目;在AndroidManifest.xml中注冊(cè)支付Activity;在應(yīng)用包名對(duì)應(yīng)的目錄下創(chuàng)建wxapi包,并創(chuàng)建WXPayEntryActivity類處理支付結(jié)果回調(diào)。
iOS: 將WechatOpenSDK添加到項(xiàng)目;在Info.plist中添加URL Types(URL Schemes為你APP的AppID);在AppDelegate中處理OpenURL回調(diào)。
調(diào)用支付: 在你的支付頁面,當(dāng)用戶點(diǎn)擊支付時(shí),客戶端應(yīng)請(qǐng)求你自己的后端服務(wù)器獲取支付參數(shù)(見下文),然后用此參數(shù)調(diào)用微信SDK的支付方法。
Android: IWXAPI.sendReq(payReq)
iOS: WXApi.sendReq(payReq)
2:服務(wù)器端(你的后端)開發(fā):
這是安全的關(guān)鍵,絕對(duì)不要在APP內(nèi)直接生成支付簽名!所有與微信服務(wù)器的敏感交互都應(yīng)通過你的后端。
下單接口: 當(dāng)你的APP發(fā)起支付請(qǐng)求時(shí),你的后端需要調(diào)用微信支付的 【統(tǒng)一下單API】(或現(xiàn)在的V3版合單下單API)。
構(gòu)造請(qǐng)求參數(shù),包括:appid(開放平臺(tái)的)、mchid、out_trade_no(你生成的唯一訂單號(hào))、description、total_fee、notify_url(支付結(jié)果異步回調(diào)地址,最重要!)等。
使用你的private_key對(duì)參數(shù)進(jìn)行簽名(V2使用MD5或HMAC-SHA256,V3使用SHA256-RSA)。
將簽名后的請(qǐng)求發(fā)送給微信支付服務(wù)器。
返回預(yù)付單信息: 微信支付服務(wù)器會(huì)返回一個(gè)包含prepay_id的響應(yīng)。你的后端用這個(gè)prepay_id和必要參數(shù),再次簽名,生成一個(gè)客戶端調(diào)起支付所需的參數(shù)包(通常包含appId, partnerId, prepayId, nonceStr, timeStamp, package, sign等),返回給你的APP。
處理異步通知: 用戶支付成功后,微信支付服務(wù)器會(huì)向你的notify_url發(fā)送一個(gè)POST請(qǐng)求,通知你支付結(jié)果。你的后端必須:
驗(yàn)證此通知的簽名(確保來自微信)。
處理業(yè)務(wù)邏輯(更新訂單狀態(tài)為已支付,發(fā)放商品等)。
給微信返回一個(gè)成功的XML或JSON響應(yīng)(<xml><return_code><![CDATA[SUCCESS]]></return_code></xml> 或V3格式),否則微信會(huì)重復(fù)通知。
第三步:測(cè)試與上線
1:沙箱測(cè)試: 微信支付提供沙箱環(huán)境,可用于模擬支付流程。但更常用的是...
2:真實(shí)場(chǎng)景測(cè)試:
在 微信商戶平臺(tái) -> 產(chǎn)品中心 -> APP支付 中,配置 測(cè)試白名單。將測(cè)試人員的微信賬號(hào)(OpenID)添加到白名單。
使用測(cè)試白名單賬號(hào),安裝你的測(cè)試包,進(jìn)行真實(shí)的1分錢支付測(cè)試。務(wù)必完整測(cè)試支付成功、失敗、取消等各種流程,并驗(yàn)證異步通知和訂單狀態(tài)更新。
3:上線前檢查:
確保商戶平臺(tái)的所有配置(如API密鑰、通知URL)正確。
確保開放平臺(tái)的APP信息已審核通過,且綁定了正確的商戶號(hào)。
移除測(cè)試白名單。
4:申請(qǐng)正式上線: 測(cè)試無誤后,在微信開放平臺(tái)提交你的APP審核,審核通過后即可發(fā)布。
上一篇:windows系統(tǒng):網(wǎng)站安裝ssl后,安卓手機(jī)打開正常,蘋果手機(jī)不信任ssl的解決辦法
