简单的聊一聊微信支付的那些事

前往官网注册账号创建应用

  • 微信商户平台商家查看一些交易记录和余额提现
  • 微信开放平台给开发者提供的网站
  • 需要使用微信的支付功能肯定是要先去他的微信开放平台申请账号的,这些步骤这里就不讲了。
  • 注册成功之后会收到微信发的邮件,前往商户平台进行密钥设置之类的。
  • 有了账号那就可以创建一个应用,来获取我们的AppID同时要开通微信支付能力,如下图:

简单的聊一聊微信支付的那些事_第1张图片

填写开发信息 这里需要应用的签名和包名;包名就只需要复制我们build.gradle中的applicationId即可,签名就需要我们通过签名工具去获取了,签名生成工具下载。

简单的聊一聊微信支付的那些事_第2张图片

瞅一眼官方给出整个的支付流程

现在就只需要生成一个订单(一般都是在服务端做的操作)然后发起微信支付请求就可以实现微信支付了。

构造订单信息
统一下单:请求微信的接口生成支付订单,请求成功之后微信会返回我们发起微信请求所需要的参数

下单接口链接

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支付了调起支付界面

简单的聊一聊微信支付的那些事_第3张图片

客户端重要的代码

//将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();
    }
}

总结:总的来说重要的操作都在服务端生成订单这一块,然后拿到微信返回的一些数据来调起微信App支付;所以对于客户端这边基本没啥操作只需要发起一个请求就可以了再处理下支付的结果即可。

官方支付Demo下载

你可能感兴趣的:(Android)