1,导入jar包,从微信官方网站上下载jar包,并导入到工程中
2,在开发者账户中添加应用,并开通支付功能,填入包名和签名,获取APPID
3,调起支付:
IWXAPI api = WXAPIFactory.createWXAPI(context, "appid");//注册sdk
PayReq req = new PayReq();
//请求参数
req.appId="appid";
req.prepayId=wxpb.getResultMap().getSignParams().getPrepayid();
req.partnerId=wxpb.getResultMap().getSignParams().getPartnerid();
req.nonceStr=wxpb.getResultMap().getSignParams().getNoncestr();
req.timeStamp=wxpb.getResultMap().getSignParams().getTimestamp();
req.packageValue="Sign=WXPay";
req.sign=wxpb.getResultMap().getSign();
//发起请求,调起支付
api.sendReq(req)
4,结果回调,注意包名和类名,包名。。。wxapi.WXPayEntryActivity
package com.shilian.collector.wxapi;
import android.content.Intent;
import android.os.Bundle;
import com.shilian.collector.R;
import com.shilian.collector.base.BaseActivity;
import com.shilian.collector.base.MyApplication;
import com.shilian.collector.personal.HaveOrderActivity;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
/**
* 微信支付的回调activity
* */
public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxpay_entry);
api= WXAPIFactory.createWXAPI(this,"wx2794b53f5c8aa6b7");
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq baseReq) {
}
//支付结果回调
@Override
public void onResp(BaseResp baseResp) {
if (baseResp.getType()== ConstantsAPI.COMMAND_PAY_BY_WX){
switch (baseResp.errCode){
case 0:
toast("支付成功");
//支付成功处理
finish();
break;
case -1:
toast("支付失败code:-1");
finish();
break;
case -2:
toast("支付取消code:-2");
finish();
break;
}
}
}
}
5,mainfest文件中注册activity,并添加属性
<activity android:name="com.shilian.collector.wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"/>
6,混淆规则
-keep class com.tencent.** { *;}
7,出现问题
掉不起支付,sendReq方法返回false,参数数错误,同一订单不同价格会导致prepayId为空,sendReq返回true,回调结果返回-1,一般为appid或对应的包名和签名有问题,或签名sign出错,或是其他参数给错,或者微信缓存错误,清除微信数据后重试。
不执行回调,包名或类名出错,注册时的属性不对。
2,在开发者账户中添加应用,并开通支付功能,填入包名和签名,获取APPID
3,调起支付:
IWXAPI api = WXAPIFactory.createWXAPI(context, "appid");//注册sdk
PayReq req = new PayReq();
//请求参数
req.appId="appid";
req.prepayId=wxpb.getResultMap().getSignParams().getPrepayid();
req.partnerId=wxpb.getResultMap().getSignParams().getPartnerid();
req.nonceStr=wxpb.getResultMap().getSignParams().getNoncestr();
req.timeStamp=wxpb.getResultMap().getSignParams().getTimestamp();
req.packageValue="Sign=WXPay";
req.sign=wxpb.getResultMap().getSign();
//发起请求,调起支付
api.sendReq(req)
4,结果回调,注意包名和类名,包名。。。wxapi.WXPayEntryActivity
package com.shilian.collector.wxapi;
import android.content.Intent;
import android.os.Bundle;
import com.shilian.collector.R;
import com.shilian.collector.base.BaseActivity;
import com.shilian.collector.base.MyApplication;
import com.shilian.collector.personal.HaveOrderActivity;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
/**
* 微信支付的回调activity
* */
public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxpay_entry);
api= WXAPIFactory.createWXAPI(this,"wx2794b53f5c8aa6b7");
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq baseReq) {
}
//支付结果回调
@Override
public void onResp(BaseResp baseResp) {
if (baseResp.getType()== ConstantsAPI.COMMAND_PAY_BY_WX){
switch (baseResp.errCode){
case 0:
toast("支付成功");
//支付成功处理
finish();
break;
case -1:
toast("支付失败code:-1");
finish();
break;
case -2:
toast("支付取消code:-2");
finish();
break;
}
}
}
}
5,mainfest文件中注册activity,并添加属性
<activity android:name="com.shilian.collector.wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"/>
6,混淆规则
-keep class com.tencent.** { *;}
7,出现问题
掉不起支付,sendReq方法返回false,参数数错误,同一订单不同价格会导致prepayId为空,sendReq返回true,回调结果返回-1,一般为appid或对应的包名和签名有问题,或签名sign出错,或是其他参数给错,或者微信缓存错误,清除微信数据后重试。
不执行回调,包名或类名出错,注册时的属性不对。