Android中微信支付接入的完整教程来了
Posted kaolagirl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中微信支付接入的完整教程来了相关的知识,希望对你有一定的参考价值。
在讲解微信支付之前,最重要的也是关键的一点就是一定先把签名配置好,否则后面调不起微信支付界面【查看配置签名】 ,当然,如果你已经弄好了,就开始吧!
一.添加gradle依赖
在app module目录下的build.gralde中添加
dependencies {
//微信支付SDK
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
gralde构建完成之后,再做下一步的操作
二.在AndroidManifest.xml中添加相关权限
<!-- 网络请求 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
三.创建wxapi目录,并创建WXPayEntryActivity
有些文件可以直接从官方的demo里拷贝【官网】
1、在你的工程里面,你需要将demo里面的lib文件的拷贝到你的工程libs里面
2、在你的包的根目录下,创建wxapi这个package包(命名一定是wxapi,否则后面回调不成),然后再创建WXPayEntryActivity这个类
WXPayEntryActivity实现IWXAPIEventHandler接口,这个Activity页面就是支付结果的回调页面,下面是它最简单地实现:
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_w_x_pay_entry);
// 1.将app注册到微信端
api = WXAPIFactory.createWXAPI(this, Config.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 baseReq) {
}
@Override
public void onResp(BaseResp baseResp) {
// 2.接收传过来的参数
PayResp resp = (PayResp) baseResp;
String order_id = resp.extData;
// 3. 根据状态去做相应的处理
if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
switch (baseResp.errCode) {
case 0://支付成功
paySuccess(order_id); //支付成功页面返回或点击返回商家所做的事情
break;
case -1://错误,可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等
Toast.makeText(this, "支付错误", Toast.LENGTH_SHORT).show();
break;
case -2://用户取消,无需处理。发生场景:用户不支付了,点击取消,返回APP。
Toast.makeText(this, "用户取消了订单", Toast.LENGTH_SHORT).show();
break;
}
finish();//这里需要关闭该页面
}
}
/**
* 支付成功处理 (api)
* @param order_id
*/
private void paySuccess(String order_id){
//支付成功后要做的事....
}
}
3、将demo里面的AppRegister这个广播接受者拷贝到项目里面任意的位置,我还是放在创建的wxapi这个包里面的
4、别忘了在清单文件注册广播和Activity
四.使用
当你从服务端获取到订单的相关信息后,就可以调用支付接口了,具体代码如下:
//判断有没有安装微信,没有就做相应提示
//userInfo是从后台获取到的对象
if(api.isWXAppInstalled()){
PayReq req = new PayReq();
req.appId = userInfo.getString("appId");
req.partnerId = userInfo.getString("partnerId");
req.prepayId = userInfo.getString("prepayId");
req.packageValue = userInfo.getString("packageValue");
req.nonceStr = userInfo.getString("nonceStr");
req.timeStamp = userInfo.getString("timeStamp");
req.sign = userInfo.getString("sign");
req.extData=order_id;
api.sendReq(req);
}else{
Log.i(TAG, "handleMessage: "+"未安装微信,请安装微信支付");
Toast.makeText(GoodPayment.this,"未安装微信,请安装微信支付",Toast.LENGTH_SHORT).show();
}
不出意外的话,通过上面接口的调用,你就可以正常使用微信提供的APP支付啦。
以上是关于Android中微信支付接入的完整教程来了的主要内容,如果未能解决你的问题,请参考以下文章