直入主題之前,請容我吐槽一下微*的官方東西:ASDFQ%#$%$#$%^FG@#$%DSFQ#$%.......;吐槽玩了!大家心照就好。
要完成手機APP跳轉到微信的APP進行微信支付,需要進行如下操作:
1、先去微信的開放平台(http://open.weixin.qq.com)進行開發者賬號的注冊。
2、新建一個APP應用,然后填寫必填信息提交審核。
3、進入APP應用,在接口信息中,進行申請“獲得微信支付能力”的功能,期間會提交相關的公司營業信息證明等。
通過以上三點,然后經過漫長的等待之后,基本都可以申請下來的,這里不細說申請細節了,講個大概,基本都能應付。
基本的對接流程在這里有細說(https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3)
在進行服務端對接之前,需要用到如下信息:
/* 微信app key 這兩個就是我們上面申請的APP得到的*/
W_APP_ID
W_APP_SECRET
//商戶號
W_MCH_ID--這個也是需要登錄商戶平台進行獲得
//API密鑰,在商戶平台設置
W_API_KEY--這個需要登錄商戶平台進行獲得
商戶平台的登錄地址(https://pay.weixin.qq.com/index.php)
一、.net服務端的對接:
1、直接上微信的SDK列表下載.net的SDK(https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_CS_v3.zip)
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”這樣的提示。
0、前言,先下載iOS SDK(https://pay.weixin.qq.com/wiki/doc/api/download/wechat_sdk_sample_ios_v3_pay.zip)
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替換掉,立馬就能正常使用支付功能,如下位置的參數替換成我們網絡請求返回的的就行了:
總結,希望此篇文章對正在做微信支付對接的哥們有幫助,也讓大家少走一些彎路,如果覺得合適,可以順手點個贊,以此鼓勵鼓勵。thanks