studio
1:导包
//wechat
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:1.0.2'
2:微信的回调是在WXPayEntryActivity中完成的
注意必须放在包名.wxapi目录下
WXPayEntryActivity.class
/**
* 作者:haoran on https://github.com/woaigmz 2017/7/27.
* 邮箱:1549112908@qq.com
* 说明:
*/
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
protected static final String EXIT = "exit_application";
protected static final String EXIT_ACTION = "pay_finish";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.pay_result);
api = WXAPIFactory.createWXAPI(this, WeChatConfig.APP_ID);
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq req) {
finish();
}
/**
* 得到支付结果回调
*/
@Override
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
Log.d("hhhhhhh", "onPayFinish,errCode=" + resp.errCode);
if (resp.errCode == 0) {
ToastUtil.showLongToast( "支付成功");
//需求是支付成功后对应支付界面消失,这里就不用rxjava或事件总线了,粗暴一点
Intent intent = new Intent(EXIT_ACTION);
intent.putExtra(EXIT,EXIT);
sendBroadcast(intent);
this.finish();
} else if (resp.errCode == -1) {
ToastUtil.showLongToast( "配置错误");
this.finish();
} else if (resp.errCode == -2) {
ToastUtil.showLongToast( "用户取消");
this.finish();
}
} else {
ToastUtil.showLongToast(resp.errStr);
}
}
}
3:清单文件
权限
<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" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<activity android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop">
4:支付界面调用微信支付
通过自己服务器,拿到相关信息,注册后给微信发送支付请求
packageValues 都一样,可以写死
private static final String WX_PAY_ERRMSG_1 = "您没有安装微信,请安装微信客户端...";
5:签名
signingConfigs {
release {
storeFile file('I:/xxx.jks')
storePassword 'yhr123'
keyAlias 'key0'
keyPassword 'yhr123'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
gradlew assembledrelease 生成apk 运行后 通过微信提供的一个获取签名工具拿到签名 放在微信开发平台自己创建的应用下面
不管是debug,还是release,只要和微信那个界面一致就行,上线再修改成release签名
哈哈,这里就介绍完了,有问题给我留言哦,谢谢
~~