日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

微信支付 (APP端开发)

發(fā)布時(shí)間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信支付 (APP端开发) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

詳見?https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

下面是我個(gè)人的筆記(紅色部分為自己的補(bǔ)充內(nèi)容)

Android開發(fā)要點(diǎn)說(shuō)明

1、后臺(tái)設(shè)置

商戶在微信開放平臺(tái)申請(qǐng)開發(fā)應(yīng)用后,微信開放平臺(tái)會(huì)生成APP的唯一標(biāo)識(shí)APPID。由于需要保證支付安全,需要在開放平臺(tái)綁定商戶應(yīng)用包名和應(yīng)用簽名,設(shè)置好后才能正常發(fā)起支付。設(shè)置界面在【開放平臺(tái)】中的欄目【管理中心 / 修改應(yīng)用 / 修改開發(fā)信息】里面,如圖8.8紅框內(nèi)所示。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖8.8

應(yīng)用包名:是在APP項(xiàng)目配置文件AndroidManifest.xml中聲明的package值,例如DEMO中的package="net.sourceforge.simcpux"。

應(yīng)用簽名:根據(jù)項(xiàng)目的應(yīng)用包名和編譯使用的keystore,可由簽名工具生成一個(gè)32位的md5串,在調(diào)試的手機(jī)上安裝簽名工具后,運(yùn)行可生成應(yīng)用簽名串,如圖8.9所示,綠色串即應(yīng)用簽名。簽名工具下載地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖8.9

2、注冊(cè)APPID

商戶APP工程中引入微信JAR包,調(diào)用API前,需要先向微信注冊(cè)您的APPID,代碼如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

// 將該app注冊(cè)到微信

msgApi.registerApp("wxd930ea5d5a258f4f");

3、調(diào)起支付

商戶服務(wù)器生成支付訂單,先調(diào)用統(tǒng)一下單API(詳見第7節(jié))生成預(yù)付單(app端調(diào)接口,服務(wù)端實(shí)現(xiàn)生成訂單的功能,服務(wù)端再將以下發(fā)起支付所需的數(shù)據(jù)返回給app端),獲取到prepay_id后將參數(shù)再次簽名傳輸給APP發(fā)起支付。以下是調(diào)起微信支付的關(guān)鍵代碼:

IWXAPI api; PayReq request = new PayReq(); request.appId = "wxd930ea5d5a258f4f"; request.partnerId = "1900000109"; request.prepayId= "1101000000140415649af9fc314aa427",; request.packageValue = "Sign=WXPay"; request.nonceStr= "1101000000140429eb40476f8896f4c9"; request.timeStamp= "1398746574"; request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B"; api.sendReq(request);

注意:該sign生成字段名列表見調(diào)起支付API

4、支付結(jié)果回調(diào)

參照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路徑中實(shí)現(xiàn)WXPayEntryActivity類(包名或類名不一致會(huì)造成無(wú)法回調(diào)),在WXPayEntryActivity類中實(shí)現(xiàn)onResp函數(shù),支付完成后,微信APP會(huì)返回到商戶APP并回調(diào)onResp函數(shù),開發(fā)者需要在該函數(shù)中接收通知,判斷返回錯(cuò)誤碼,如果支付成功則去后臺(tái)查詢支付結(jié)果再展示用戶實(shí)際支付結(jié)果。注意一定不能以客戶端返回作為用戶支付的結(jié)果,應(yīng)以服務(wù)器端的接收的支付通知或查詢API返回的結(jié)果為準(zhǔn)。代碼示例如下:

publicvoidonResp(BaseRespresp){if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){Log.d(TAG,"onPayFinish,errCode="+resp.errCode);AlertDialog.Builderbuilder=newAlertDialog.Builder(this);builder.setTitle(R.string.app_tip);} }

回調(diào)中errCode值列表:

名稱描述解決方案
0成功展示成功頁(yè)面
-1錯(cuò)誤可能的原因:簽名錯(cuò)誤、未注冊(cè)APPID、項(xiàng)目設(shè)置APPID不正確、注冊(cè)的APPID與設(shè)置的不匹配、其他異常等。
-2用戶取消無(wú)需處理。發(fā)生場(chǎng)景:用戶不支付了,點(diǎn)擊取消,返回APP。

應(yīng)用微信支付的項(xiàng)目:懶漢一點(diǎn)三
相關(guān)類:
SelectPayWayActivity.java
WXPayEntryActivity

?

注意支付回調(diào),寫在application的目錄下。寫在packname目錄下不會(huì)回調(diào)。

?

總結(jié)

以上是生活随笔為你收集整理的微信支付 (APP端开发)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。