PayDemo - 支付寶和微信支付兩種方式集成

jopen 8年前發布 | 111K 次閱讀 PayDemo 移動開發

PayDemo

支付寶和微信支付兩種方式集成

做這兩個支付集成的時候遇到了一些坑,特此寫了一個小的DEMO供大家參考

1、支付寶的集成比較簡單,主要就是一些設置上的問題; 2、微信的集成比較坑爹,而且官方文檔寫的也不清不楚的,坑了我很久。

項目中使用的pod添加了三個第三方的框架:AFNetworking Masonry XMLDictionary

一些iOS9的設置就不在下面提了,大家自行百度吧。

支付寶支付

支付寶在官方文檔中寫的比較詳細,給的DEMO也很清楚,大家跟著步驟走一步一步都能實現集成。主要是以下幾個需要稍微注意一下

1、Header Search Paths的設置

添加支付寶官方庫,導入系統庫,其他的不需要設置太多。但是這一個必須要添加以下,不然openssl中的頭文件引用會出現問題。

在項目->Build Settings->Header Search Paths中添加下面一行

$(SRCROOT)/**/**/AlipaySDK 其中$(SRCROOT)是項目根目錄,AlipaySDK是官方庫所在的文件夾。中間路徑需要自己添加。

2、appScheme的設置

支付寶有三個地方需要設置而且要保持一致,不然支付完成就無法跳轉回應用。Demo中寫的是alipayPayDemo

1)項目->Info->URL Types->+->URL Schemes

2)info.plist->URL Types->URL Schemes 此項一般添加1)后就會自動添加,如有修改記得修改此處。因為修改1),此處不會跟著修改。

3)AlipayHelper.m->@selector(alipay:block:)方法中的局部參數appScheme

3、跟服務端的交互的地方

只有獲取訂單信息的時候才會跟服務進行交互,所需要的參數在Product中。測試中price一般情況下都給0.01

微信支付

微信的設置上沒太大問題,但是做的官方支持就非常差勁。而且還使用XML,這一條讓一些人可能就懵逼了。

客戶端需要做的兩步,如果服務端做了統一下單的功能就縮短為一步了。

1、統一下單

https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_1 ->API列表->統一下單 按照文檔要求appid,mch_id,nonce_str,sign,body,out_trade_no,total_fee,spbill_create_ip,notify_url,trade_type這十個參數是必須的。

其中appid,mch_id是微信給的;trade_type傳定值APP;nonce_str,spbill_create_ip是直接在手機上獲取到的;body,out_trade_no,total_fee這三個是從服務端上獲取的數據。sign根據以上鍵值對按照簽名規則得到的。

完成之后要轉化成XML格式上傳到微信服務器。

第一個比較坑的地方在這,如果直接使用AF的POST方式是不行的,總是會返回"XML格式錯誤"。必須使用NSMutableURLRequest添加method和body,然后用AFHTTPRequestOperation進行網絡請求才行。

然后接收到數據的返回。其中返回數據中有用的只有prepayid,其他的要么本地就有,要么就是惡心你的值。

https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_1 ->API列表->調起支付接口 文檔要求appid,partnerid,prepayid,package,noncestr,timestamp,sign這七個參數是必須的,但是DEMO中appid根本沒有用到,所以其實只需要六個參數,這是第二個坑爹的地方!!! partnerid就是第一步的mch_id,prepayid是上一步返回的最重要的數據,package傳定值Sign=WXPay,noncestr就是上一步中的nonce_str,timestamp這個按照規則生成十位的。

sign是最最最坑的地方,不是上一步返回的那個sign,不是上一步返回的那個sign,不是上一步返回的那個sign。他是根據上面的五個參數進行簽名得出的值。不然每次調用就只看見微信界面只有一個確定。

對于返回簽名錯誤的,可以對照他們的簽名測試工具檢驗。https://pay.weixin.qq.com/wiki/tools/signverify/

以上~

項目地址: https://github.com/ioswpf/PayDemo

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!