微信支付(转载二)
?微信支付現(xiàn)在主要集成在:1、移動(dòng)應(yīng)用開發(fā)? 2、網(wǎng)站應(yīng)用開發(fā)? 3、公眾賬號(hào)開發(fā)
? ? ? ?本篇主要針對(duì)移動(dòng)應(yīng)用App集成微信支付,實(shí)際項(xiàng)目坑點(diǎn)分享!
一、既予之、與共之:平臺(tái)資源
?
1、微信開放平臺(tái):https://open.weixin.qq.com/
2、微信公眾平臺(tái):https://mp.weixin.qq.com/
3、微信支付指引和資源中心:微信支付接入指南和資源下載中心<強(qiáng)力推薦閱讀>
https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&lang=zh_CN
4、微信公眾平臺(tái)支付接口調(diào)試工具沙箱地址:可通過沙箱測(cè)試驗(yàn)證簽名的有效性
http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=pay/index
5、公眾平臺(tái)開發(fā)者問答系統(tǒng):在開發(fā)過程中有遇到什么問題,都可以上該平臺(tái)上找找是否有你需要的答案和解決方案。
http://mp.weixin.qq.com/qa/index.php?qa=questions
6、推薦兩個(gè)蠻給力的博主:
? ? ? 柳峰:http://blog.csdn.net/lyq8479??
<我接觸微信公眾平臺(tái),第一個(gè)公眾號(hào)的開發(fā)都是看他的博客進(jìn)行學(xué)習(xí)的,小呂強(qiáng)力推薦>?? 開發(fā)語言:JAVA
? ? ? 方倍工作室:http://www.cnblogs.com/txw1958/??? 開發(fā)語言:PHP
7、小呂在開發(fā)微信支付過程中收集的資源一簍筐<SDK /支付DEMO / IOS、Android接口文檔 V1.7最新版 /SDK API文檔 / Android應(yīng)用包名簽名APK工具>:免費(fèi)下載址:http://download.csdn.net/detail/l416112167/7665807
?
二、本篇將不用代碼等來介紹微信支付的整個(gè)流程過程,因?yàn)?/p>
? ? ? ??1、小呂已提供了上面的平臺(tái)資源鏈接、基本上只要你靜下心稍微閱讀第一個(gè)鏈接和第七個(gè)下載鏈接中小呂提供的【微信支付】APP支付(Android)接口文檔V1.7.doc
?<小呂閱讀過v1.2版、v1.5版、v1.7版 其中閱讀完1.7版后 解決了我在前面版本閱讀中所有的疑問> 就可以非常清晰的了解整個(gè)支付接口調(diào)用流程,畢竟為官方文檔,小呂也不可能會(huì)寫的比官方文檔還詳細(xì)。
? ? ? ? 2、小呂覺得微信提供的demo程序代碼也比較清晰。各位可自行下載查看。
?
? ? ? ? 3、下面是APP支付(Android)接口文檔V1.7.doc文檔中最具有代表性的幾張截圖展示:
? ? ? ? ? ? ? ?圖1、APP 支付的用戶交互:
? ? ? ? ? ?圖2、更直觀詳細(xì)的交互時(shí)序圖:
?
? ? ? ? ???圖3、文檔書簽截圖:
? ? ? ? ? ? ? ? ? ? ?
?
?
? ? ??整個(gè)微信支付開發(fā)過程給我的小結(jié)就是:文檔雖詳細(xì)、坑點(diǎn)卻不少<特別是針對(duì)Android開發(fā)者>。
?
?
三、避開坑點(diǎn),慷慨大道我走來:
? ? ? ?坑點(diǎn)1:運(yùn)行官方的demo程序?yàn)槭裁催€是沒調(diào)出支付界面?
正確運(yùn)行demo調(diào)出微信支付界面效果如下:
? ? ? ??
?
那為什么有些同事運(yùn)行demo程序提示能獲取到prepayid成功? 但是卻始終沒有見到如上圖的支付UI,就提示微信支付結(jié)果:-1 呢?
PS:這里備注說明一下:微信支付常見有3種支付結(jié)果code返回
resp.errCode== ?0 :表示支付成功
resp.errCode== -1 :表示支付失敗
resp.errCode== -2 :表示取消支付
原因:運(yùn)行時(shí)沒有使用、配置demo程序sdk demo工程目錄中的debug.keystore文件
運(yùn)行sdk ?demo工程正確步驟:
1、解壓sdk demo工程壓縮包,并導(dǎo)入到workspace,如下圖:
? ? ??
?
2、選擇Eclipse頂部菜單Window->Preferences,在彈出的對(duì)話框中,選擇Android目錄下的Build,如下圖:
? ? ? ? ??
?
指定Custom debugkeystore選項(xiàng)的路徑為sdk demo工程目錄中的debug.keystore文件,如下圖:
并應(yīng)用該配置。
?
3、運(yùn)行該sdk_sample工程。
?
?
? ? ? ? ?坑點(diǎn)2:項(xiàng)目中(非sdk demo程序)調(diào)用微信支付接口wxApi.sendReq(mPayRed)不起作用,還是調(diào)不出支付界面
問題產(chǎn)生原因分析:
1、首先需要確保商戶在微信開放平臺(tái)上的申請(qǐng)審核流程是否已完成。必須要在所有流程審核通過后才能進(jìn)行開發(fā)調(diào)式。即用戶能拿到appid/appsecret/appkey/partnerkey。
2、Android應(yīng)用需要在開放平臺(tái)綁定應(yīng)用包名和應(yīng)用簽名后才能正常使用。填寫不正確將無法正常調(diào)起支付。
? ? ?<IOS應(yīng)用不需要這一過程>
? ? 簽名工具下載地址:
https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
注意:比如我們的客戶商戶是用的自己的生產(chǎn)環(huán)境.keystore簽名文件對(duì)apk進(jìn)行的簽名,然后使用微信提供的包名簽名工具生成的應(yīng)用簽名字符串與應(yīng)用包名綁定后,那么Android開發(fā)者在調(diào)試應(yīng)用時(shí)也須要使用客戶商戶的.keystone文件對(duì)apk進(jìn)行簽名后才能調(diào)試程序,不然無法調(diào)起支付。<這點(diǎn)非常重要,小呂就被坑在這里>
可以使用Gen_Signature_Android.apk 校驗(yàn)應(yīng)用簽名字符串是否和商戶填寫的一致 如下圖:
3、校驗(yàn)訂單詳情package的擴(kuò)展字符串定義、app_signature的生成規(guī)則、添加prepayid再次簽名這三個(gè)過程是否都正確,可通過沙箱測(cè)試驗(yàn)證簽名的有效性, 沙箱地址:
http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=pay/index
4、簽名過程不可更改參數(shù)名稱<一個(gè)非常低級(jí)的錯(cuò)誤,但也是要注意的一個(gè)點(diǎn)>:
這里小呂就有遇到這樣一個(gè)烏龍,算是自己挖了坑給自己跳了
在添加prepayid再次簽名的過程中:如下圖
?
因?yàn)楹灻蠓祷亟oAPP的json字符串中有一個(gè)參數(shù)名為package,通常在手機(jī)端我們會(huì)將json字符串解析成java bean對(duì)象,但是package在java中是一個(gè)關(guān)鍵字,所以小呂想啊、在返回的json字符串中把package換個(gè)名字叫做packageValue吧,這樣就方便我直接把json解析成java對(duì)象了。就這樣問題就來啦,因?yàn)樵诤灻蓅ign的過程中原本叫做package的參數(shù)變成了packageValue,因此簽名生成的sign值自然就是錯(cuò)誤的,最終導(dǎo)致支付調(diào)不起。
?
?
? ? ? ? ?坑點(diǎn)3:支付成功后無法跳轉(zhuǎn)到相應(yīng)的通知Activity界面。
原文地址:http://blog.csdn.net/janice0529/article/details/38051987
總結(jié)
- 上一篇: MySQL中文全文检索
- 下一篇: Start – Modern minim