Android整合微信支付
我個人將整合微信支付的過程分成4個步驟: 微信官方api文件:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
1.配置各種資訊
2.拼湊預訂單資訊,訪問微信伺服器生成預訂單,主要是為了得到prepared_id —– 建議在自己的伺服器操作
3.根據得到的prepared_id及其他資訊進行二次簽名,調起微信sdk支付 — 前部分建議在伺服器操作,後面部分在app端操作
4.根據回撥的支付結果執行不同的邏輯
接下來具體說說各個步驟
1、配置各種資訊 如在支付Activity中PayActivity(名字自己定)和微信回撥的WXPayEntryActivity(這個類的名字不允許改變,包名固定為你應用的包名+wxapi)功能清單檔案配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<!--微信支付回撥介面-->
<intent-filter>
<category
android:name= "android.intent.category.DEFAULT" >
<data
android:scheme= "你的應用appid" >
<!-- 需修改 --> </data></category></action></intent-filter>
</activity>
<!--微信支付介面-->
<intent-filter>
<category
android:name= "android.intent.category.DEFAULT" >
<data
android:scheme= "你的應用appid" >
<!-- 需修改 -->
</data></category></action></intent-filter> </activity>
|
當然,許可權什麼的就不說了,別忘了哈
2.拼湊預訂單資訊,訪問微信伺服器生成預訂單,主要是為了得到prepared_id,如下的程式碼是在客戶端生成的例項,如果不需要在客戶端操作,請無視
生成預訂單有10個必選引數分別為 (注意引數名不能改變,post請求,以xml格式)
appid(應用id)、 mch_id(商戶號)、 nonce_str(隨機字串,參照我下面的程式碼生成)、 sign(簽名,參照我下面的程式碼簽名)、 body(商品描述)、
out_trade_no(商戶訂單號,自己生成,唯一)、 total_fee(總金額,單位:分,不能像支付寶有0.01這種)、 spbill_create_ip(終端ip,參照下面ipv4的獲取)、 notify_url(微信支付結果非同步通知的地址)、 trade_type(交易型別,app的填APP即可)
官方的引數示例
1 2 3 4 5 6 7 8 9 10 11 12 |
<xml>
wx2421b1c4370ec43b</appid>
支付測試</attach>APP支付測試
<mch_id> 10000100 </mch_id>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>http: //wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php</notify_url>
<out_trade_no> 1415659990 </out_trade_no>
<spbill_create_ip> 14.23 . 150.211 </spbill_create_ip>
|