微信支付開發者文檔介接入

好了,多余的話不過多解釋,下面咋們大家一起來看看微信的SDK接入文檔
可能介入的不是太好,重在學習,學習哈,跟著我的思路來,一定要有耐心,微信坑很多,先看下參數(重要)

如果哥們急的話請點擊:http://www.lxweimin.com/p/1015841aae48(直接下載Demo填寫正確信息直接調起支付)

更新第二版Demo:http://www.lxweimin.com/p/1015841aae48

排版1:http://www.lxweimin.com/p/4ea5cb20abe7

Demo:鏈接:鏈接: https://pan.baidu.com/s/1eS1tyWM 密碼: 3xih

WRNING!!!!
在類:WX_DATA_XINHAO_HAN設置微信信息
在類AliPay_XINHAO_HAN_DATA設置支付寶信息

給一個獲取IP的地址: http://pv.sohu.com/cityjson?ie=utf-8
測試微信數據接口 : https://pay.weixin.qq.com/wiki/tools/signverify/
微信參數
appid: 你的APPID
mch_id : 商戶號
nonce_str : 生成的隨機字符串
body : 商品詳情
out_trade_no : 時間
total_fee : 金額
spbill_create_ip : IP地址
notify_url : 回調成功后調用的地址
trade_type : 支持類型(寫死 "APP")
步驟1:你先去注冊微信官網的一些信息然后獲取以下這3個東西
1.APPID 2.你的商戶號 3.秘鑰
就這幾個東西

信息

基礎信息 nonce_str : 生成的隨機字符串
隨機字符串生成:
一般都是固定的,自己也懶得寫所以找了一個,如果要自己寫的話給你提供一些思路
首先把 A-Z 0-9 寫到一個String數組中,然后通過Random取索引 for 32次即可
我們看下網上的吧


MD5

MD5方法
代碼復制
排版真難受,這玩意連個代碼引用都沒有??????

這個使用方法是這樣的

信息

代碼復制

//生成隨機字符串
public staticStringgenNonceStr() {
Random random =newRandom();
returnMD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes());
}

public final staticStringgetMessageDigest(byte[] buffer) {
charhexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
try{
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(buffer);
byte[] md = mdTemp.digest();
intj = md.length;
charstr[] =new char[j *2];
intk =0;
for(inti =0;i < j;i++) {
bytebyte0 = md[i];
str[k++] = hexDigits[byte0 >>>4&0xf];
str[k++] = hexDigits[byte0 &0xf];
}
return newString(str);
}catch(Exception e) {
return null;
}
}

基礎信息 out_trade_no : 時間
這個應該都會把,就是使用JAVA獲取你自己當前的時間格式為
比如:2017年7月17日就寫成2017717
基礎信息 spbill_create_ip : IP地址

使用網路訪問:http://pv.sohu.com/cityjson?ie=utf-8
會給你返回 var returnCitySN = {"cip": "219.144.202.177", "cid": "610100", "cname": "陜西省西安市"};
你自己截取一下就OK了
基礎信息 notify_url : 回調成功后調用的地址

后臺暫時沒有提供接口的話就隨便寫

基礎信息 mch_id : 商戶號
你的商戶號
基礎信息 body : 商品詳情
隨意寫
基礎信息 total_fee : 金額
隨意寫
好了基本的功能數據都介紹完了
導入微信的Sdk
Android Studio適用


compile'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

把剛才的幾個參數生成一下sign

[圖片上傳中。。。(4)]簽名生成

到這里了,你會問OrederSendInfo info是個什么鬼??????
記住:WX_DATA_XINHAO_HAN.API_KEY 是你自己的秘鑰

別急老規矩先復制代碼

//生成預支付隨機簽名
public staticStringgenSign(OrederSendInfo info) {
StringBuffer sb =newStringBuffer(info.toString());
if(WX_DATA_XINHAO_HAN.API_KEY.equals("")) {
Toast.makeText(UIUtils.getContext(),"APP_ID為空",Toast.LENGTH_LONG).show();
}
//拼接密鑰
sb.append("key=");
sb.append(WX_DATA_XINHAO_HAN.API_KEY);
String appSign = MD5.getMessageDigest(sb.toString().getBytes());
Log.e("Sign-------------","genSign: "+ appSign.toUpperCase());
returnappSign.toUpperCase();
}

好了現在給你解釋一下這個是個什么鬼OrederSendInfo info方法參數
這個其實就是一個Bean
看代碼

public classOrederSendInfo {
privateStringappid;
privateStringmch_id;
privateStringnonce_str;
privateStringbody;
privateStringout_trade_no;
privateStringtotal_fee;
privateStringspbill_create_ip;
privateStringnotify_url;
privateStringtrade_type;
privateStringsign;
publicOrederSendInfo(String appid,String mch_id,String nonce_str,String body,String out_trade_no,String total_fee,String spbill_create_ip,String notify_url,String trade_type) {
this.appid= appid;
this.mch_id= mch_id;
this.nonce_str= nonce_str;
this.body= body;
this.out_trade_no= out_trade_no;
this.total_fee= total_fee;
this.spbill_create_ip= spbill_create_ip;
this.notify_url= notify_url;
this.trade_type= trade_type;
}
publicStringgetAppid() {
returnappid;
}
public voidsetAppid(String appid) {
this.appid= appid;
}
publicStringgetMch_id() {
returnmch_id;
}
public voidsetMch_id(String mch_id) {
this.mch_id= mch_id;
}
publicStringgetNonce_str() {
returnnonce_str;
}
public voidsetNonce_str(String nonce_str) {
this.nonce_str= nonce_str;
}
publicStringgetBody() {
returnbody;
}
public voidsetBody(String body) {
this.body= body;
}
publicStringgetOut_trade_no() {
returnout_trade_no;
}
public voidsetOut_trade_no(String out_trade_no) {
this.out_trade_no= out_trade_no;
}
publicStringgetTotal_fee() {
returntotal_fee;
}
public voidsetTotal_fee(String total_fee) {
this.total_fee= total_fee;
}
publicStringgetSpbill_create_ip() {
returnspbill_create_ip;
}
public voidsetSpbill_create_ip(String spbill_create_ip) {
this.spbill_create_ip= spbill_create_ip;
}
publicStringgetNotify_url() {
returnnotify_url;
}
public voidsetNotify_url(String notify_url) {
this.notify_url= notify_url;
}
publicStringgetTrade_type() {
returntrade_type;
}
public voidsetTrade_type(String trade_type) {
this.trade_type= trade_type;
}
publicStringgetSign() {
returnsign;
}
public voidsetSign(String sign) {
this.sign= sign;
}
//注意排序規則ASCII排序(一般按照A-Z,a-z)就行
@Override
publicStringtoString() {
return"appid="+appid+'&'+
"body="+body+'&'+
"mch_id="+mch_id+'&'+
"nonce_str="+nonce_str+'&'+
"notify_url="+notify_url+'&'+
"out_trade_no="+out_trade_no+'&'+
"spbill_create_ip="+spbill_create_ip+'&'+
"total_fee="+total_fee+'&'+
"trade_type="+trade_type+'&';
}
}

//記住在你調用的時候一定要在這個Bean里邊賦值,明白不,然后傳遞給sign的方法簽名就生成成功了
簽名生成完成了

開始上傳數據獲取預支付接口

這里邊有個XStream你可能找不到
在Studio里邊加入這段

compile ('com.thoughtworks.xstream:xstream:1.4.7') {
excludegroup:'xmlpull',module:'xmlpull'
}

重新編譯一下

代碼復制

public static voidUnfiedOrder(OrederSendInfo orederSendInfo, finalListerner listerner) {
//生成sign簽名
String sign = WXpayUtils.genSign(orederSendInfo);
//生成所需參數,為xml格式
orederSendInfo.setSign(sign.toUpperCase());
XStream xstream =newXStream();
xstream.alias("xml",OrederSendInfo.class);
finalString xml = xstream.toXML(orederSendInfo).replaceAll("__","_");
Log.e("xml---------------","UnfiedOrder: "+ xml);
//調起接口,獲取預支付ID
OkHttpUtils.ResultCallback resultCallback =newOkHttpUtils.ResultCallback() {
@Override
public voidonSuccess(String response) {
Log.e("返回的數據","onSuccess: "+ response);
String data = response;
data = data.replaceAll("","");
listerner.Success(data);
}
@Override
public voidonFailure(Exception e) {
listerner.Faiulre(e.toString());
}
};
try{
OkHttpUtils.post(WX_DATA_XINHAO_HAN.UNIFIED_ORDER,resultCallback, newString(xml.getBytes("UTF-8"),"ISO8859-1"));
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
}

至于里邊的Listnener
在這里

代碼復制

public interfaceListerner {
voidSuccess(String data);
voidFaiulre(String data);
}

拿到微信端的數據之后,直接掉起微信支付

[圖片上傳中。。。(7)]調起微信支付

開始填充數據

[圖片上傳中。。。(8)]填充數據

特別感謝:掘墓人
博客地址:http://www.lxweimin.com/p/9a3127cfda4d
我通過他所給的DEMO集成出了一套及簡單的Demo

下載地址: 鏈接: https://pan.baidu.com/s/1c2zURjq 密碼: jpr5

使用方法:你的這幾個部位可能會報錯注意,注意!!!!!!!!!!

[圖片上傳中。。。(9)]WXActivity

因為微信很吊,你必須按照人家的來,直接在我那個工具包下創建一個Activity名字叫WXEntryActivity

你在你自己創建的Activity-->WXEntryActivity的這個方法下

[圖片上傳中。。。(10)]

直接復制這段代碼

WxMain.setStringOnListener(WXEntryActivity.this);
//如果是支付
WxMain.WXMessage wxMessage;
if(baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
intcode = baseResp.errCode;
switch(code) {
case0:
if(wxMessage!=null)
wxMessage.message("支付成功",0,"0.0");
//支付成功
break;
case-1:
if(wxMessage!=null)
wxMessage.message("支付失敗",-1,"0.0");
//支付失敗
finish();
break;
case-2:
if(wxMessage!=null)
wxMessage.message("支付取消",-2,"0.0");
//支付取消
finish();
break;
default:
if(wxMessage!=null)
wxMessage.message("支付失敗",-3,"0.0");
//支付失敗
setResult(RESULT_OK);
finish();
break;
}
return;
}

使用是這樣的:

[圖片上傳中。。。(11)]使用

第一個為你的商品描述,第二個為金額,回調只有0是成功的
0 成功
-1 支付失敗
-2 支付取消
-3 支付失敗
使用的話直接復制進去就可以了
總而言之微信相比之下還要比支付寶麻煩
說白了就是加密數據發送再給你解析一下數據然后在調起支付,大致就這兩個步驟
工具可能會用到的東西
compile'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
compile ('com.thoughtworks.xstream:xstream:1.4.7') {
excludegroup:'xmlpull',module:'xmlpull'
}
compile'com.zhy:okhttputils:2.4.1'

第二個如果你自己想拼的話就不用了,工具里邊是XML的解析器生成的XML
有時間會給大家講解一些OKHttp底層RXJAVA ,Kotlin,Android源碼,
一起加油,0.0哈哈.
現推出豪華午餐,微信+支付寶

鏈接:http://pan.baidu.com/s/1sldR6O1 密碼:ggzg

使用方法:

 PayMain.AliPayAndWxPay(type, OrderSettlementActivity.this, "紅紅火火恍恍惚惚哈哈", "0.01", requestBean.order.orderId, new WxMain.WXMessage() {
                        @Override
                        public void message(String str, int code, String error) {
                            switch (code) {
                                case 1:
                                    UIUtils.runOnUIToast("支付成功");
                                    finish();

                                    break;
                                case 2:
                                case 3:
                                case -11:
                                case 4:
                                    UIUtils.runOnUIToast(str);
                                    break;

                            }
                        }
                    });


type  = PayMain.WX_PAY//微信支付
type  = PayMain.ALI_PAY//支付寶支付

[圖片上傳中。。。(12)]0.0

![2BXPQ4P[35Z7VW6]N)WN$8.png

Demo中的東西可能很多,是我自定義的一些控件,如果不需要全部刪除即可.

下載Demo

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容

  • 好了,多余的話不過多解釋,下面咋們大家一起來看看微信的SDK接入文檔 如果哥們急的話請調到:https://www...
    XINHAO_HAN閱讀 1,151評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,677評論 25 708
  • ???本文的作者是看房狗原創志愿者小玄子,房子是租來的,但生活不是。她的系列租房故事,汪會一直連載,故事始于201...
    看房狗閱讀 232評論 0 1
  • 二十四年不見的戰友阿君來烏,都是新兵連的戰友,大家把酒言歡,暢飲甚歡,我不飲酒,不善言辭,頻頻舉茶敬杯,時間拉遠的...
    助學大漠閱讀 394評論 0 1
  • 當你憤怒的時候,世界將沒有一個角落是和平。 當你憤怒的時候,周邊將沒有一個面孔是親切。 當你憤怒的時候,你內心深處...
    舒陌染閱讀 509評論 0 2