前往官网注册账号创建应用
填写开发信息 这里需要应用的签名和包名;包名就只需要复制我们
build.gradle
中的applicationId即可,签名就需要我们通过签名工具去获取了,签名生成工具下载。
瞅一眼官方给出整个的支付流程
现在就只需要生成一个订单(一般都是在服务端做的操作)然后发起微信支付请求就可以实现微信支付了。
下单接口链接
URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
请求的参数点击这里即可
现在就可以来集成微信支付的SDK了安卓接入指南
- 在build.gradle文件中,添加如下依赖即可
dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'//包含统计功能
}
或者
dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'//不包含统计功能
}
- 在Manifest.xml中添加必要的权限支持:
<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"/>
接下来就是调起App支付了调起支付界面
客户端重要的代码
//将app注册到微信上
IWXAPI api = WXAPIFactory.createWXAPI(this,"APP_ID");
api.registerApp("APP_ID");
//创建支付对象信息
PayReq req = new PayReq();
req.appId = "APP_ID";
//使用开放平台的账户登录商户平台 进入账户中心->商户信息 即可看到
req.partnerId = "商户号";
//微信返回的支付交易会话ID
req.prepayId = "wx20170923578829050ad2bea30542412476";
//随机字符串,不长于32位。
req.nonceStr = String.valueOf(System.currentTimeMillis());
//需要转换成秒(10位数字)
req.timeStamp = System.currentTimeMillis() / 1000 + "";
req.packageValue = "Sign=WXPay";
//根据官网给出的签名算法生成
req.sign = "";
//暂时不知道是干嘛的但是却必须填,这里复制的是Demo中的
req.extData = "app data";
//在支付之前,如果应用没有注册到微信,应该先调用api.registerApp将应用注册到微信
api.sendReq(req);
接收支付结果使用官方给出的WXPayEntryActivity.java
就可以了,记得注册这个Activity。
/**
* 接收微信支付结果
*/
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, PayInfoMsg.CX_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) {
}
@Override
public void onResp(BaseResp resp) {
if (resp.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {
ToastUtils.showShortSafe("已取消支付");
} else if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
ToastUtils.showShortSafe("支付成功");
}
Log.e("微信支付, errCode = " + resp.errCode);
finish();
}
}