Android基于环信自定义消息实现转账红包(一)

最近做了一个项目,需要实现转账红包功能。我这里接入的是环信,我自己做的过程中也比较坎坷,所以想把实现的方法整理了一下分享给大家(如果大家有更好的实现方法,欢迎评论区留言,废话不多说了开始上货,东西有点多所以分开写了)。

这里我先说下我的思路,我主要是通过环信的自定义类型消息还有仿照其他消息类型实现的,其中有一些需要与后台配合完成,我这里只说下Android这边具体干了什么。

 

1.首先我们需要将环信集成进入我们自己的项目,我也集成了环信的easeui,也实现了基础的聊天功能(这里我就不说如何集成了,因为比较简单基础,如果大家有需要我可以写一篇关于如何集成环信与easeui的文章,评论区留言即可)。

 

 

2.我们需要进行转账肯定需要在聊天页面的底部操作栏EaseChatInputMenu 中新建一个item,然后我们点击这个item进行发送红包或者转账操作。

我这里是在ChatFragment  的registerExtendMenuItem()中    发送视频的item直接更改的,大家可以自己加一个或者更改别的item

//这里判断了一下消息是群聊还是单聊,我们的功能是群聊不支持转账,前边是item的名字后面是item的图标
        if (chatType == Constant.CHATTYPE_SINGLE){
            inputMenu.registerExtendMenuItem("转账", R.drawable.em_chat_video_selector, ITEM_VIDEO, extendMenuItemClickListener);
        }

2.更改完之后我们需要在此item的点击事件中操作  onExtendMenuItemClick(int itemId, View view) 里

    @Override
    public boolean onExtendMenuItemClick(int itemId, View view) {
        switch (itemId) {
            case ITEM_VIDEO:
//我这里点击后直接进入转账页面就是输入金额页面,ZhuanzActivity这个就是我的转账页面,我这里需要传入接收红包的username,说白了就是你要发给谁,你就传谁的,后边的777(幸运三角)是我发送完事之后的回调需要用到的。样式啥的看项目需求,下面是我们项目的样式。
                startActivityForResult(new Intent(getActivity(),ZhuanzActivity.class).putExtra("toChatUsername", toChatUsername), 777);
        }
        return false;
    }

3.输入金额之后点击转账就,就会调起支付,这个支付需要大家自己按照自己项目的需求来做,我这里就只上一个支付成功后操作的代码,支付成功后我们需要构造一个消息体,也就是我开始说的自定义红包消息,构造好

之后我们需要以发送消息的方式发送出去,然后关闭转账页面,然后走页面回传的回调,也就是777(幸运三角),我们只需要在回调中刷新消息列表即可。

  private EMMessage customMessage;
    //开始构造自定义红包消息体
  customMessage = EMMessage.createSendMessage(EMMessage.Type.CUSTOM);
  EMCustomMessageBody customBody = new EMCustomMessageBody("红包转账");
  Map<String,String> params = new HashMap<>();
        //这是消息体内层的一些参数
        params.put("redPacketNum",money);//金额
        params.put("redPacketRemark",bz);//备注
        params.put("redPacketHxNo",redPacketHxNo);//红包编码,这个需要大家自己生成,唯一即可。
        customBody.setParams(params);
        customMessage.addBody(customBody);
        customMessage.setTo(toChatUsername);//这个就是我们从聊天页面传过来的数据
        //消息体的外层的一些参数
        customMessage.setAttribute("userNickName", userNickName);//用户名称
        customMessage.setAttribute("userAvatar", userHeadPic);//用户头像
        customMessage.setAttribute("redPacket",true);//这个是我们自定义需要的东西
//这些参数小伙伴们完全可以自己定义,如果只需要与ios端参数名字一致即可。(双端交互这块一定要做好)
//还有就是如果有群聊发红包的功能一定要设置发送消息的类型是群还是单聊,如果不设置默认单聊,群聊会显示不出来(下面这块,我用不着,单给大家写的)。
//        if (chatType == EaseConstant.CHATTYPE_GROUP){
//            customMessage.setChatType(EMMessage.ChatType.GroupChat);
//        }else if (chatType == EaseConstant.CHATTYPE_CHATROOM){
//            customMessage.setChatType(EMMessage.ChatType.ChatRoom);
//        }
//发送消息体
EMClient.getInstance().chatManager().sendMessage(customMessage);
//回传
this.setResult(RESULT_OK, intent);
//关闭转账页面
finish();
overridePendingTransition(com.hyphenate.easeui.R.anim.slide_in_from_left, com.hyphenate.easeui.R.anim.slide_out_to_right);

4.我们需要在EaseChatFragment  的 onActivityResult 中接收回传值

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            if (requestCode == 777){
                messageList.refresh();//刷新消息数据
            }
        }
    }

现在我们的准备工作做的差不多了,下一篇我们接着说一下红包消息体的内在,有点累,明天更。

谢谢大家的观看有哪里不懂的或者有什么疑问的,请在品论区留言,我会给大家一一解答。

下一篇链接:Android基于环信自定义消息实现转账红包(二)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio实现转账功能,可以通过以下步骤进行操作: 1. 创建数据库:首先,需要创建一个数据库来存储用户的银行账户信息和转账记录。可以使用Android提供的SQLite数据库来实现。可以创建一个BankOpenHelper类来管理数据库的创建和版本更新。 2. 创建表:在数据库中创建两个表,一个用于存储用户的银行账户信息,另一个用于存储转账记录。可以使用SQL语句在BankOpenHelper类的onCreate方法中创建这两个表。 3. 添加数据:可以在应用程序中提供一个界面,让用户输入转账的相关信息,例如转出账户、转入账户和转账金额。然后,将这些信息插入到转账记录表中。 4. 更新账户余额:在转账过程中,需要更新转出账户和转入账户的余额。可以使用SQL语句更新账户表中的余额字段。 5. 查询数据:可以提供一个界面,让用户查看转账记录和账户余额。可以使用SQL语句查询转账记录表和账户表中的数据,并将结果显示在界面上。 下面是一个简单的示例代码,演示了如何在Android Studio实现转账功能: ```java // 创建数据库 BankOpenHelper dbHelper = new BankOpenHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); // 创建转账记录表 String createTransferTable = "CREATE TABLE IF NOT EXISTS transfer (id INTEGER PRIMARY KEY AUTOINCREMENT, from_account TEXT, to_account TEXT, amount REAL)"; db.execSQL(createTransferTable); // 创建账户表 String createAccountTable = "CREATE TABLE IF NOT EXISTS account (id INTEGER PRIMARY KEY AUTOINCREMENT, account_number TEXT, balance REAL)"; db.execSQL(createAccountTable); // 添加转账记录 String fromAccount = "123456789"; String toAccount = "987654321"; double amount = 100.0; String insertTransferRecord = "INSERT INTO transfer (from_account, to_account, amount) VALUES ('" + fromAccount + "', '" + toAccount + "', " + amount + ")"; db.execSQL(insertTransferRecord); // 更新账户余额 String updateFromAccountBalance = "UPDATE account SET balance = balance - " + amount + " WHERE account_number = '" + fromAccount + "'";db.execSQL(updateFromAccountBalance); String updateToAccountBalance = "UPDATE account SET balance = balance + " + amount + " WHERE account_number = '" + toAccount + "'"; db.execSQL(updateToAccountBalance); // 查询转账记录 String queryTransferRecords = "SELECT * FROM transfer"; Cursor cursor = db.rawQuery(queryTransferRecords, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String fromAccount = cursor.getString(cursor.getColumnIndex("from_account")); String toAccount = cursor.getString(cursor.getColumnIndex("to_account")); double amount = cursor.getDouble(cursor.getColumnIndex("amount")); // 处理查询结果 } // 查询账户余额 String queryAccountBalance = "SELECT balance FROM account WHERE account_number = '" + fromAccount + "'"; Cursor cursor = db.rawQuery(queryAccountBalance, null); if (cursor.moveToFirst()) { double balance = cursor.getDouble(cursor.getColumnIndex("balance")); // 处理查询结果 } // 关闭数据库连接 db.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值