Android 从零开始实现微信支付

一般的企业软件开发都会涉及到微信以及支付宝支付,下面就来说一下我从零开始做微信支付的路

开放平台:https://open.weixin.qq.com

首先必不可少的你要有账号,注册,登录,添加一个app信息之后,就开始集成微信支付了

开发步骤文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

1.下载jar包,导入项目里面

地址:微信支付Jar下载

2.依据开发步骤文档里面,完善app信息,包括包名,签名,下载地址等信息

3.在项目目录下创建wxapi包并WXPayEntryActivity文件(建议从demo复制过来,然后修改),最后目录结构为:

视图为android视图,切换成package目录更容易观看(项目包太多不好截图)


4.Manifest.xml配置文件配置WXPayEntryActivity这个activity

  <!--微信支付配置-->
        <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar" />

5.在application中.注册应用到微信(如果是新建的application类文件的话,记得在配置文件中声明该类)

    /**
     * 向微信注册
     */
    private void initWxPay() {
        final IWXAPI msgApi = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
        // 将该app注册到微信
        boolean test = msgApi.registerApp(Constants.APP_ID);
        Lg.e("app init", "微信注册结果:" + test);
    }

6.请求自己的服务器进行签名操作(服务器拿到请求,会加签调用统一下单接口,拿到返回数据,然后加签返回给前端)

因为我们后台服务器接口也是自己写的,所以我只让前端 上传了body(商品详细) out_trade_no(订单号) total_fee(总金额 单位为分)这三个参数

7 .调起支付

IWXAPI api;

PayReq request = new PayReq();

request.appId = "wxd930ea5d5a258f4f";

request.partnerId = "1900000109";

request.prepayId= "1101000000140415649af9fc314aa427",;

request.packageValue = "Sign=WXPay";

request.nonceStr= "1101000000140429eb40476f8896f4c9";

request.timeStamp= "1398746574";

request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";

api.sendReq(req);

这些参数都可以用后台返回的,当然了.如果你比较苦逼.没有后台,那只有你来完成统一下单操作.然后得到预支付单号以及签名进行支付了

8.支付结果回调

回调是写在WXPayEntryActivity里面的,不过要依据自身需求对逻辑进行分别处理了

我的该文件:(仅供参考)

package com.hd.ytb.wxapi;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.hd.ytb.R;
import com.hd.ytb.activitys.activity_sms.SmsRechargeActivity;
import com.hd.ytb.app.Constants;
import com.hd.ytb.utils.Lg;
import com.hd.ytb.utils.Tst;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelbase.BaseResp;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    public static final int PAY_STATUS_SUCCESS = 0;//支付成功
    public static final int PAY_STATUS_FAIL = -1;//支付遇到问题
    public static final int PAY_STATUS_CANCEL = -2;//支付取消
    private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";

    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);

        api = WXAPIFactory.createWXAPI(this, Constants.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) {
        Lg.d(TAG, "onPayFinish, errCode = " + resp.errCode);
        int errorCode = resp.errCode;
        switch (errorCode) {
            case PAY_STATUS_SUCCESS:
                Tst.showShort(getApplicationContext(), "支付成功");
                if (SmsRechargeActivity.isSmsWxPay) {
                    SmsRechargeActivity.sendResult2ThisContext(WXPayEntryActivity.this, errorCode);
                }
                break;
            case PAY_STATUS_FAIL:
                Tst.showShort(getApplicationContext(), "支付遇到问题");
                break;
            case PAY_STATUS_CANCEL:
                Tst.showShort(getApplicationContext(), "支付取消");
                break;
            default:
                break;
        }
        onBackPressed();
    }
}

差不多这样就集成了微信支付了,that's all enjoy it

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值