android微信支付详细步骤

Android微信支付集成教程
本文详细介绍了在Android客户端集成微信支付的过程,包括依赖导入、权限配置、回调处理及调起支付的方法,帮助开发者快速实现微信支付功能。

此篇仅限于android客户端集成微信支付

微信支付和支付宝相比的话里面的坑还是很多的,但是导包导的倒是很简单,就在在build.gradle文件中,添加一条依赖就行:

dependencies {
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}

dependencies {
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

然后是配置AndroidManifest.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"/>

还有记得添加

        <!-- 微信支付 -->
        <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop">

        </activity>

到这里所有的配置就完成了,然后就是写回调部分:

在项目中新建wxapi文件夹,里面添加WXPayEntryActivity.java文件,这个可以在demo里面找

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.example.administrator.yunleasepiano.R;
import com.example.administrator.yunleasepiano.application.Api;
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 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, Api.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) {
	}

	@SuppressLint("LongLogTag")
	@Override
	public void onResp(BaseResp resp) {
		Log.d(TAG, "返回的code, errCode = " + resp.errCode);
	}
}

里面APP_ID就是你申请的AppID,Log中的code就是返回的结果码,返回0成功,-1失败,-2用户取消支付

回调中errCode值列表:

名称描述解决方案
0成功展示成功页面
-1错误可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2用户取消无需处理。发生场景:用户不支付了,点击取消,返回APP。

 接下来就是调起支付的代码,在这之前后台会给你返回一些参数:

字段名变量名类型必填示例值描述
应用IDappidString(32)wx8888888888888888微信开放平台审核通过的应用APPID
商户号partneridString(32)1900000109微信支付分配的商户号
预支付交易会话IDprepayidString(32)WX1217752501201407033233368018微信返回的支付交易会话ID
扩展字段packageString(128)Sign=WXPay暂填写固定值Sign=WXPay
随机字符串noncestrString(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法
时间戳timestampString(10)1412000000时间戳,请见接口规则-参数规定
签名signString(32)C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法
{
    "code": 800,
    "msg": "成功",
    "obj": {
        "code": "",
        "data": {
            "appid": "wx51d5433c248dfeb9",
            "noncestr": "sGWaLxgAUWIamFHJ",
            "partnerid": "1420573002",
            "paysign": "578EA6BCAB4E4994359B13635FDE0110",
            "prepayId": "wx28180836957578f7f69bfc412778574479",
            "sign": "F346A21425D49EA4CF666848AB196EDF",
            "signtype": "MD5",
            "timeStamp": "1543399722"
        },
        "desc": "微信支付加载成功",
        "stateCode": "SUCCESS"
    }
}

咱们要调起支付要的就是这些参数

                        Gson gson = new Gson();
                        WacherBean weixinBean = gson.fromJson(response, WacherBean.class);
                        if (weixinBean.getCode() == 800) {
                            String appid = weixinBean.getObj().getData().getAppid();
                            String partnerid = weixinBean.getObj().getData().getPartnerid();
                            String prepayId = weixinBean.getObj().getData().getPrepayId();
                            String noncestr = weixinBean.getObj().getData().getNoncestr();
                            String timestamp = weixinBean.getObj().getData().getTimeStamp();
                            String sign = weixinBean.getObj().getData().getSign();
                            Log.e("传递的六个参数=", appid + "\n" + partnerid + "\n" + prepayId + "\n" + noncestr + "\n" + timestamp + "\n" + sign);
                            IWXAPI msgApi = WXAPIFactory.createWXAPI(ConfirmOrderActivity.this, null);
                            // 将该app注册到微信
                            msgApi.registerApp(appid);
                            PayReq request = new PayReq();
                            request.appId = appid;
                            request.partnerId = partnerid;
                            request.prepayId = prepayId;
                            request.packageValue = "Sign=WXPay";
                            request.nonceStr = noncestr;
                            request.timeStamp = timestamp;
                            request.sign = sign;
                            msgApi.sendReq(request);
                        }

如果公司后台给到了packageValue字段的话就用上,"Sign=WXPay"只是暂用值

如果返回的一直是-1,那就请后台的同事检查一下返回的数据是不是正确了

支付宝支付:https://blog.youkuaiyun.com/lanrenxiaowen/article/details/84573622

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值