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