写写Android的微信支付!

微信支付相信大家都接过,但是做过中间件的人来讲微信就比较坑了,因为微信支付的时候会去判断包名是否和平台上面的一致,现在SDK的解决方案只有两种,一种是用H5来唤起微信支付,一种是插件形式,但今天写的只是简单的唤起微信支付,至于SDK包名问题就有时间再写了。
首先我们要接入微信支付先要去微信的开放平台去申请对应的参数,包名和签名要和微信的一致,不然会唤不起微信支付的,至于这步就跳过了(一般都是专门负责去申请的),直接上教程。

1、把开发工具包中libs目录下的libammsdk.jar复制到该目录中

2、需要在AndroidManifest.xml 配置权限
<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、在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity(没有什么特别需要这个直接在文档复制过去就好了)假如你的包名是: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、微信需要的参数(后台返回)
ps: 我是使用okHttp3框架访问后台的
<pre>

客户端代码:
// PAY_NET_URL 服务端地址
// 将参数发送到服务端 (要什么参数需要和后台沟通下,这里不是一定的)
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();
}
// 服务端返回过来的数据用来唤起微信支付
@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>
到这里就结束了,如果唤不起微信支付,请检查请求参数和包名是否有误。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容