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

在这里插入图片描述

四.使用

当你调用后台接口获取到订单的相关信息后,就可以调用支付接口了,具体代码如下:

 @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 1:
                    try{
                       JSONObject jo = (JSONObject) msg.obj;
                        if(jo!=null && jo.getInt("code")==1000){
                            JSONObject userInfo = jo.getJSONObject("data");
                            //判断有没有安装微信,没有就做相应提示
                            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();
                            }
                        }else{
                            Log.i(TAG, "handleMessage: "+jo.getString("msg"));
                            Toast.makeText(GoodPayment.this,jo.getString("msg"),Toast.LENGTH_SHORT).show();
                        }
                    }catch (JSONException je){
                        je.printStackTrace();
                    }
                    break;
            }
        }
    };
    //请求后台接口
    private void orderPayApp() {
        try{
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    Map<String,Object> params = new HashMap<>();
                    params.put("order_sn",order_sn);
                    params.put("order_total_amount",amount);
                    params.put("user_token",userToken);
                    //请求后台接口,params是提交的参数(根据你们自己后端提供的接口去调用噢)
                    JSONObject jo = Helper.httpRequestJson("orderPayApp",new JSONObject(params));

                    Message msg = handler.obtainMessage();
                    msg.what=1;
                    msg.obj=jo;
                    handler.sendMessage(msg);
                }
            }.start();
        }catch (Exception e){
            e.printStackTrace();
        }
    }                          

不出意外的话,通过上面的步骤,你就可以正常使用微信提供的APP支付啦。

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
对于Android应用接入微信支付,您需要按照以下步骤进行操作: 1. 在微信支付开放平台注册账号并登录。前往微信支付开放平台(https://pay.weixin.qq.com/)注册一个账号,并进行登录。 2. 创建应用并获取应用ID。在开放平台创建一个应用,并获取到对应的应用ID,这是后续接入过程的重要标识。 3. 配置应用信息。在应用管理页面填写应用的基本信息,包括应用名称、AppID、支付回调URL等。确保信息填写准确无误。 4. 下载SDK和文档。在开放平台下载对应的微信支付SDK和接入文档,以便后续进行接入操作。 5. 导入SDK到Android项目。将下载的微信支付SDK导入到您的Android项目,可以使用Gradle或手动导入的方式进行集成。 6. 配置权限和签名。在AndroidManifest.xml文件添加必要的权限声明,并确保应用的签名信息与在微信支付开放平台注册时填写的一致。 7. 实现支付功能。根据微信支付开放平台提供的接入文档,按照要求实现支付功能的相关代码逻辑。 8. 发起支付请求。在合适的时机,通过调用微信支付SDK提供的API发起支付请求,并传递必要的订单信息和回调参数。 9. 处理支付结果回调。在您的应用处理微信支付结果的回调通知,根据返回的支付结果状态进行相应的处理操作。 10. 测试和上线。在开发阶段进行测试,确保支付流程和结果正常。待测试通过后,提交应用上线并进行发布。 请注意,以上只是一个大致的流程概述,具体的接入步骤和代码实现会因应用的具体需求和技术栈而有所差异。建议您仔细阅读微信支付开放平台提供的官方文档,并根据文档的指引进行接入操作。如果遇到问题,可以参考文档的常见问题解答或联系微信支付开放平台的技术支持。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值