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

好了,多余的話不過多解釋,下面咋們大家一起來看看微信的SDK接入文檔




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



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





排版2:http://www.lxweimin.com/p/c417ce674eb3

可能介入的不是太好,重在學習,學習哈,跟著我的思路來,一定要有耐心,微信坑很多,先看下參數(重要)

給一個獲取IP的地址: http://pv.sohu.com/cityjson?ie=utf-8

測試微信數據接口 : https://pay.weixin.qq.com/wiki/tools/signverify/

微信參數

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

WRNING!!!!

在類:WX_DATA_XINHAO_HAN設置微信信息

在類AliPay_XINHAO_HAN_DATA設置支付寶信息


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方法

代碼復制

排版真難受,這玩意連個代碼引用都沒有??????


這個使用方法是這樣的


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



簽名生成


到這里了,你會問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);

}

```

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


調起微信支付

開始填充數據


填充數據




特別感謝:掘墓人

博客地址:http://www.lxweimin.com/p/9a3127cfda4d

我通過他所給的DEMO集成出了一套及簡單的Demo


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


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


WXActivity


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


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


直接復制這段代碼

```

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;

}

```


使用是這樣的:


使用

第一個為你的商品描述,第二個為金額,回調只有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哈哈.


0.0
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 好了,多余的話不過多解釋,下面咋們大家一起來看看微信的SDK接入文檔可能介入的不是太好,重在學習,學習哈,跟著我的...
    XINHAO_HAN閱讀 1,997評論 0 0
  • 引言 秋高氣爽,天氣轉涼,正是學習工作做的好時候。(~ ̄▽ ̄)~~(~ ̄▽ ̄)~ 我是個phper最近在寫微信支付...
    恩就是這個名閱讀 8,026評論 2 15
  • 今天二月二,俗稱龍抬頭。不知是否是龍王發威,昨天一股春天景象的大晴天轉眼變成了春雨紛紛。這種天氣最容易在家里無所事...
    小米火燒nalakuvara閱讀 300評論 0 1
  • 這里說的,是辯論,而不是辯論賽。 不是那種唇槍舌劍大秀精妙語句的比賽,不是那種一心要把別人打倒證明自己正確的心態,...
    Shirley千墨閱讀 2,273評論 0 0
  • 到了廣州,又有了夏天的感覺,和同事聊了聊,似又離重慶近了些。原本上周末打算寫下這篇文字,奈何沒時間,只得一拖再拖,...
    大鵬_29wp閱讀 185評論 0 0