1. 程式人生 > >iOS 微信支付接入最新的完整流程

iOS 微信支付接入最新的完整流程

前段時間,公司業務需要接入微信支付,博主就苦心鑽研了2天,終於搞通了,但最近 iOS 9 更新出來後,微信支付,又不可以使用了,具體解決方案我在後面會給出。當然,微信接入也有不少的坑啊 說多了全是淚,三巨頭的東西也不一定總是那麼好使!好了正題來了!

雖是基於iOS的,同時,安卓的接入也類似。

要完成手機APP跳轉到微信的APP進行微信支付,需要先進行如下操作:

1、先去微信的開放平臺()進行微信開發者賬號的註冊(建議公司統一註冊,儘量不要使用私人郵箱)。

2、新建一個APP應用,然後填寫必填的資訊提交稽核,這裡 一次性註冊iOS和安卓兩個版本的APP。

3、檢視已建立好的APP應用,進行申請“ 獲得微信支付能力 ”的功能,需要提交公司真實的相關營業執照等資訊證明。

提交申請後,經過一週左右,基本可以申請下來,沒有細節難點,應該都能搞定,實在不行,給你個機會,聯絡客服妹子吧!

一、伺服器的接入

首先,這一部分後臺接入,我們只需要根據後臺提供的介面,呼叫即可。在進行服務端對接之前,需要用到如下資訊:

/* 微信app key 這兩個就是我們上面申請的APP得到的*/
W_APP_ID
W_APP_SECRET
//商戶號
W_MCH_ID--這個也是需要登入商戶平臺進行獲得
//API金鑰,在商戶平臺設定
W_API_KEY--這個需要登入商戶平臺進行獲得

一、.net服務端的對接:

2、要先知道一點,下載回來的SDK是沒有具體包含“統一下單API”的,只包含了這個“刷卡支付、微信內網頁支付、掃碼支付”

3、下載回來的SDK中,第一次執行是執行不了的,需要對程式碼進行設定

  1)對上面四個引數進行配置,具體在lib\Config.cs檔案中

  2)遮蔽掉lib\HttpService.cs的代理訪問:(這東西基本可以不用使用到)

  技術分享

4、通過以上的幾步配置,基本可以運行了

5、還有一個點,我們點選Default.aspx頁面上的按鈕,連結過去的地址要注意一下,其實不是我們的測試工程,而是paysdk.weixin.qq.com的,這個需要改成是我們的測試功能才行(這個是比較吭的)。

6、如何對接“統一下單API”,最基本的做法就是開啟business\JsApiPay.cs檔案,然後拷貝GetUnifiedOrderResult方法直接用,但是如果拷貝這個方法用的時候,會提示“無許可權呼叫

”。其實最根本的錯誤在於我們傳遞的trade_type為JSAPI導致的,所以拷貝過來使用的時候,需要做如下的更新:(為什麼要這樣了,原因很簡單,這個方法的用途本來就是給JSAPI的,我們是要使用trade_type為APP進行呼叫,這些引數當然要變拉)

技術分享

只要這些欄位即可,其餘的可有可無,都不影響,到了這點,你執行“統一下單”功能,就會返回prepay_id了,也就是支付ID。

至此,通過這些設定,基本都可能成功。

二、iOS的對接

最常見的問題就是,我把官方的請求地址換成了自己之後,點選支付測試,跳轉到微信支付的頁面時,中間就只出現了一個“確定”按鈕,點選之後返回到原APP,提示“支付失敗,xxx -2”這樣的提示。

1、如果你有這些提示了,我可以很肯定的告訴你,你的sign錯了,而且是用錯了,你不應該直接用服務端返回的sign,這個根本不是一回事。

2、切記,客戶端的sign欄位,是要自己生成的,當然服務端哥們給力的話,也可以,記得協商好哈。

3、還要切記,服務端返回的那一串json,最有用而且最優價值的就唯一一個prepay_id,其餘的基本不需要。

4、官方的iOS SDK中,包含了兩個方法(sendpay_demo、sendpay),這也是最容易錯的,我們在對接的時候,選擇sendpay的方法,也就是這個:

技術分享

這個方法的東西其實是不完整,最明顯,我們把網路請求改了之後,再把所用到的引數賦值,然後就沒有然後了,根本調不起來,壓根就沒反應,原因是缺少了package引數值,這個是固定的(Sign=WXPay

技術分享

5、改了第四點之後,肯定是能呼叫起來的了,但是確不能支付,sign錯誤導致的,至此,你應該把注意力集中到sendpay_demo的方法中去,不要再使用sendpay方法了

只需要把剛才獲取的prepay_id替換掉,立馬就能正常使用支付功能,如下位置的引數替換成我們網路請求返回的的就行了:

技術分享技術分享

三、iOS9 白名單 微信支付提示未安裝微信 、支付寶不跳轉客戶端支付的解決方案

蘋果公司iOS 9系統策略更新,限制了http協議的訪問,此外應用需要在“Info.plist”中將要使用的URL Schemes列為白名單,才可正常檢查其他應用是否安裝。

受此影響,當你的應用在iOS 9中需要使用微信SDK的相關能力(分享、收藏、支付、登入等)時,需要在“Info.plist”裡增加如下程式碼:

<key>LSApplicationQueriesSchemes</key>

<array>

 <string>weixin</string>

 <string>wechat</string>

 <string>alipay</string>

</array>

<key>NSAppTransportSecurity</key>

<dict>

 <key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

完成後需使用Xcode 7編譯。

請注意:未升級到微信6.2.5及以上版本的使用者,在iOS 9下使用到微信相關功能時,仍可能無法成功。4

總結,希望此篇文章對正在做微信支付對接的哥們有幫助,也讓大家少走一些彎路,如果覺得合適,可以順手點個贊,以此鼓勵鼓勵。thanks


相關推薦

iOS 支付接入最新完整流程

前段時間,公司業務需要接入微信支付,博主就苦心鑽研了2天,終於搞通了,但最近 iOS 9 更新出來後,微信支付,又不可以使用了,具體解決方案我在後面會給出。當然,微信接入也有不少的坑啊 說多了全是淚,

iOS客戶端的支付接入

對於一個iOS的APP,如果有一些虛擬的商品或者服務需要通過線上支付來收費的話,一般有幾種主流的選擇。 如果是通過APP呼叫支付平臺APP的思路的話,一個是調起支付寶客戶端,一個則是調起微信支付。 實際上,從程式碼的角度,調起支付APP就是把一些關鍵的引數通過一定方式打包成為一個訂單,

java支付接入詳細流程

背景 由於專案是採用Java編寫的,微信包括微信支付大都是PHP相關,於是微信支付官方文件對java的支援就不是很友好,在網上找了很多文章,基本上沒有一篇是真正跑的通的,經過一番整理,先將java接入微信支付詳細流程總結出來以便後續使用。 步驟一 準備階段:已認證微訊號,且

支付支付接入詳細流程

隨著移動支付的普及,越來越多的App採用第三發支付,在這裡我們以支付寶為例,做一個快速整合! 1、首先,我們需要前往支付寶開放平臺,申請我們的支付功能:https://open.alipay.com/platform/home.htm 支付寶首頁 這裡 有兩個需要注意的

支付接入(Android/IOS(swift)/Java後臺)

除按照微信登入方式接入外還需進行如下操作: 建立 包名.wxapi.WXPayEntryActivity 檔案,保證內容如下(WechartUtils下面會給出): import android.app.Activity; import android.os.Bundle; imp

支付接入流程

微信支付是需要簽名的,跟支付寶一樣,可以在客戶端簽名,也可以在後臺簽名(當然,為了安全還是推薦在伺服器上做簽名,邏輯也比較好理解)時序圖:統一下單API、支付結果通知API和查詢訂單API等都涉及簽名過程,呼叫都必須在商戶伺服器端完成。商戶系統和微信支付系統主要互動說明:1.

iOS支付demo運行報錯解決如下

art llb readme ring -objc override 項目 技術 cep 要接入微信支付的小夥伴,首先要下載一份官方demo(APP微信支付官方Demo下載),然後打開工程,準備大幹一場。 1、編譯報錯 編譯的時候居然直接報錯了(orz) 錯誤提示:

Android app 第三方支付接入詳解

微信支付做了好幾遍了,都沒有出現什麼棘手的問題,下面一一為大家分享一下,歡迎吐槽。 還是老樣子,接入微信的支付要第一步新增微信支付官方的包libammsdk.jar 首先就處理略坑的一個問題,app應用簽名和包名的問題。 商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP的唯一標識AP

呼叫支付wx.chooseWXPay 詳細流程

 第一步:配置微信基本配置 /* * 獲取微信配置 以下的引數後臺提供 這裡切記,經常會報錯, 因為頁面的url的問題, 我這裡是後臺寫死的,根據不同的環境配置不同url * */ initWxConfig () {

App 支付出現 IOS 支付驗證簽名失敗 Android errCode =-1

遇到這個問題讓我很憂傷,排查了一下午 記得檢查 app_Key , 就是讓你自己寫的32位大小寫外加數字的那個,這個開始我自己亂寫的,後來查資料說可能會引起不能支付,這就很尷尬了。生成MD532 位,後來試了試,其實沒事,但是最好這樣吧,避免不必要的錯誤 公司可能申請了

iOS 支付SDK與友盟分享兩者同時整合時,出現的問題與解決之路。

這兩天改版一箇舊的APP,要舊貌換新顏,拿到app後進行編譯,一直報下面的錯誤。 報不認識的符號名PayReq錯誤。奇怪,啥也沒動就這樣,真不知道給的包是不是本來就是個報錯的工程。 不管怎樣,要對它修改就先要跑起來啊。   根據錯誤提示,判斷是libwec

iOS 支付SDK與友盟分享兩者同時集成時,出現的問題與解決之路。

說明 圖片 根據 red googl 包含 沒有 終端 手動添加 這兩天改版一個舊的APP,要舊貌換新顏,拿到app後進行編譯,一直報下面的錯誤。 報不認識的符號名PayReq錯誤。奇怪,啥也沒動就這樣,真不知道給的包是不是本來就是個報錯的工程。 不管怎樣,要對它修改就先要

PHP支付--接入支付SDK,生成訂單二維碼進行掃碼支付

在PHP開發微信支付中接入支付SDK,生成訂單二維碼進行掃碼支付,實際運用中做出一些整理,以便後期查閱。整體流程如下圖; 微信支付官方流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 1、當我們選擇使用掃碼支付,

Android app 第三方支付接入

微信支付做了好幾遍了,都沒有出現什麼棘手的問題,下面一一為大家分享一下,歡迎吐槽。 還是老樣子,接入微信的支付要第一步新增微信支付官方的包libammsdk.jar首先就處理略坑的一個問題,app應用簽名和包名的問題。商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP

iOS 支付,APPID未關聯PaySignKey

最近整合微信支付,iOS正常匯入庫,調起微信的時候出現這麼個情況 原因呢可能是因為後臺沒仔細看文件   prepayid這個欄位是訂單號,需要後臺調微信介面來獲取,正常應該長這個樣子prepayid=wx03162103469366a9464a766c37125

iOS支付開通具體申請步驟

本文章只記錄微信開放平臺註冊應用,稽核過程的具體步驟。接入微信支付SDK程式碼部分,參考微信開放平臺具體相關文件即可 2.建立移動應用:需要UI提供兩種尺寸的圖片  大概三個工作日左右,稽核通過,稽核通過之後就可以獲取應用的AppID,AppS

Android支付接入

前言:本文主要說明如何在Android專案中接入微信支付,介紹微信支付在專案中的配置,分析微信支付資料與其互動流程,分享個人遇到的坑,以幫助有需要的朋友能更快的在專案中進行微信支付的接入。 正文: 1,開發資質申請: 這個過程在本文中不詳細介紹,總的來說需要企業資質申請微信支

IOS-支付

今天博主有一個微信支付的需求,遇到了一些困難點,在此和大家分享,希望能夠共同進步. 1.申請AppID,匯入依賴庫,配置URL Scheme這裡就不深究了,各位看官請自行百度. 2.在AppDelegate中匯入標頭檔案,遵守WXApiDelegate,然後在launch裡註冊AppID. 3.在支付介面匯

支付接入完全解析之Android客戶端(2)

前段時間在一個App中接入了微信支付功能,想來也穩定執行快一個月了,回頭想想自己接入微信支付時候踩過的坑,決定寫一篇自己當初想要搜尋的文章,文章準備分3篇完成。 第一篇:微信支付前期準備 第二篇:微信支付接入客戶端部分(以Android為例

App支付接入(二)—— hbuilder前端程式碼

4、App接入微信支付,使用hbuilder中的支付 (2)在觸發支付事件中新增程式碼 // 獲取支付通道 plus.payment.getChannels(function(channels) { for (var i in channels) { v