寫寫Android的微信支付揍鸟!

微信支付相信大家都接過,但是做過中間件的人來講微信就比較坑了阳藻,因?yàn)槲⑿胖Ц兜臅r候會去判斷包名是否和平臺上面的一致,現(xiàn)在SDK的解決方案只有兩種腥泥,一種是用H5來喚起微信支付,一種是插件形式,但今天寫的只是簡單的喚起微信支付立宜,至于SDK包名問題就有時間再寫了。
首先我們要接入微信支付先要去微信的開放平臺去申請對應(yīng)的參數(shù)橙数,包名和簽名要和微信的一致,不然會喚不起微信支付的崖技,至于這步就跳過了(一般都是專門負(fù)責(zé)去申請的),直接上教程迎献。

1腻贰、把開發(fā)工具包中l(wèi)ibs目錄下的libammsdk.jar復(fù)制到該目錄中

2、需要在AndroidManifest.xml 配置權(quán)限
<pre>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</pre>
3冀瓦、在你的包名相應(yīng)目錄下新建一個wxapi目錄写烤,并在該wxapi目錄下新增一個WXEntryActivity(沒有什么特別需要這個直接在文檔復(fù)制過去就好了)假如你的包名是:com.Android.test,新建后com.android.text.wxapi洲炊,在wxapi新建一個WXEntryActivity(我是直接copy過去的),包名必須是wxapi

4蓝厌、在你的AndroidManifest.xml 配置
<pre>
<activity android:name="com.shuguo.sgsdk.wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"
/>
</pre>
5古徒、微信需要的參數(shù)(后臺返回)
ps: 我是使用okHttp3框架訪問后臺的
<pre>

客戶端代碼:
// PAY_NET_URL 服務(wù)端地址
// 將參數(shù)發(fā)送到服務(wù)端 (要什么參數(shù)需要和后臺溝通下,這里不是一定的)
RequestCall requestCall = OkHttpUtils.get().url(Constants.PAY_NET_URL)
.addParams("userID", uid)
.addParams("appID", appid)
.addParams("productID", productID + "")
.addParams("productName", productName)
.addParams("productDesc", productDesc)
.addParams("money", price)
.addParams("roleID", roleID)
.addParams("roleName", roleName)
.addParams("serverID", serverId)
.addParams("serverName", serverName)
.addParams("payID", "" + 2)
.addParams("orderId", orderId)
.addParams("notifyUrl", payNotifyURL)
.build();
requestCall.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int i) {
Log.e("requestCall is onError", e.getMessage());
Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT).show();
}
// 服務(wù)端返回過來的數(shù)據(jù)用來喚起微信支付
@Override
public void onResponse(String jsonObject, int i) {
if (jsonObject != null) {
try {
// 這里使用Gson解析
WeChatJson json = new Gson().fromJson(jsonObject, WeChatJson.class);
if (json.getData() != null && json.getData().getExtension() != null) {
WeChatJson.DataBean.ExtensionBean extensionBean = json.getData().getExtension();
// 我把注冊到微信放在這里
api.registerApp(extensionBean.getAppid());
PayReq request = new PayReq();
request.appId = extensionBean.getAppid();
request.partnerId = extensionBean.getPartnerid();
request.prepayId = extensionBean.getPrepayid();
request.packageValue = extensionBean.getPackageX();
request.nonceStr = extensionBean.getNoncestr();
request.timeStamp = extensionBean.getTimestamp();
request.sign = extensionBean.getSign();
// 喚起微信支付
api.sendReq(request);
}
} catch (Exception e) {
Toast.makeText(mContext,"訂單獲取失敗",Toast.LENGTH_SHORT).show();
processTip.hide();
e.printStackTrace();
}finally {
}
}else {
}
}
});
</pre>
WeChatJson.java
<pre>
public class WeChatJson {
private DataBean data;
private int state;
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public static class DataBean {
private ExtensionBean extension;
private long orderID;
public String getAppID() {
return appID;
}
public void setAppID(String appID) {
this.appID = appID;
}
private String appID;
public ExtensionBean getExtension() {
return extension;
}
public void setExtension(ExtensionBean extension) {
this.extension = extension;
}
public long getOrderID() {
return orderID;
}
public void setOrderID(long orderID) {
this.orderID = orderID;
}
public static class ExtensionBean {
@SerializedName("package")
private String packageX;
private String appid;
private String sign;
private String partnerid;
private String prepayid;
private String noncestr;
private String timestamp;
public String getPackageX() {
return packageX;
}
public void setPackageX(String packageX) {
this.packageX = packageX;
}
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getPartnerid() {
return partnerid;
}
public void setPartnerid(String partnerid) {
this.partnerid = partnerid;
}
public String getPrepayid() {
return prepayid;
}
public void setPrepayid(String prepayid) {
this.prepayid = prepayid;
}
public String getNoncestr() {
return noncestr;
}
public void setNoncestr(String noncestr) {
this.noncestr = noncestr;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
}
}
}
</per>
到這里就結(jié)束了寺惫,如果喚不起微信支付西雀,請檢查請求參數(shù)和包名是否有誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艇肴,一起剝皮案震驚了整個濱河市叁温,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冲九,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莺奸,死亡現(xiàn)場離奇詭異冀宴,居然都是意外死亡氧腰,警方通過查閱死者的電腦和手機(jī)刨肃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門真友,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桅打,你說我怎么就攤上這事⊥ξ玻” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵姚炕,是天一觀的道長粹断。 經(jīng)常有香客問我调限,道長坠非,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任炎码,我火速辦了婚禮辅肾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘要尔。我一直安慰自己赵辕,他們只是感情好还惠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布蚕键。 她就那樣靜靜地躺著,像睡著了一般笆怠。 火紅的嫁衣襯著肌膚如雪蹬刷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天迂卢,我揣著相機(jī)與錄音冷守,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛充活,可吹牛的內(nèi)容都是我干的混卵。 我是一名探鬼主播幕随,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赘淮,長吁一口氣:“原來是場噩夢啊……” “哼梢卸!你這毒婦竟也來了蛤高?” 一聲冷哼從身側(cè)響起戴陡,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤恤批,失蹤者是張志新(化名)和其女友劉穎开皿,沒想到半個月后赋荆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窄潭,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嚷辅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片簸搞。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寺擂,靈堂內(nèi)的尸體忽然破棺而出怔软,到底是詐尸還是另有隱情爽雄,我是刑警寧澤沐鼠,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布饲梭,位于F島的核電站憔涉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏穿扳。R本人自食惡果不足惜矛物,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦糙及、人聲如沸丁鹉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宇姚。三九已至浑劳,卻和暖如春魔熏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镶骗。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留相寇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像战授,于是被迫代替她去往敵國和親植兰。 傳聞我的和親對象是個殘疾皇子份帐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容