首先 清单文件
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />然后依赖:
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'//微信支付有一个必须在 包名为wxapi 下的activity wxapi前面的包名 是注册这个APP应用的包名 不需要你管的:
这个类 直接去官网copy:
appid 是公司申请给你的 也不用你管 除非全套你做的。这个类我进行了一些改动 你拿来用就可以了 把APPID加上去就好
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.Toast; 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; public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private String APPID = ""; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ///setContentView(R.layout.pay_result); api = WXAPIFactory.createWXAPI(this, APPID); 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) { } @Override public void onResp(BaseResp resp) { if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { if (resp.errCode == 0) { Toast.makeText(this, "支付成功", Toast.LENGTH_LONG).show(); } else if (resp.errCode == -2) { Toast.makeText(this, "取消支付", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "支付失败", Toast.LENGTH_LONG).show(); } finish(); } } }上面的类 主要用于支付成功 失败 取消的回调
下面 我们怎么唤起支付呢
只需要一个方法就可以了(你可以弄成一个点击事件去触发):
public void wxpay(WxPayBean wxPayBean) { IWXAPI api = WXAPIFactory.createWXAPI(this, appid); api.registerApp(appid); PayReq payReq = new PayReq(); payReq.appId = appid; payReq.partnerId = wxPayBean.getData().getWeichatpaySignedParamObj().getPartnerid(); payReq.prepayId = wxPayBean.getData().getWeichatpaySignedParamObj().getPrepayid(); payReq.packageValue = wxPayBean.getData().getWeichatpaySignedParamObj().getPackagestr(); payReq.nonceStr = wxPayBean.getData().getWeichatpaySignedParamObj().getNoncestr(); payReq.timeStamp = wxPayBean.getData().getWeichatpaySignedParamObj().getTimestamp(); payReq.sign = wxPayBean.getData().getWeichatpaySignedParamObj().getSign(); api.sendReq(payReq); }这样就唤起支付了 这个javabean是你请求后台 他们会给你的 然后把数据塞进去 点击按钮执行这个方法就跳到支付界面了 ,就会去唤醒刚才的回调activity
好了 微信支付就这么简单:
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop" />如果不加 expored="true" launchMode="singTop" 就会不执行回调!!!!!!!!!!!!!