红包接入文档
使用说明
- 该文档针对studio集成,若您使用的是eclipse开发工具,请参照studio2eclipse文档把该项目转化成eclipse项目。
- 演示Demo JrmfPublishLibs中包含该module,您可以运行JrmfPublishLibs查看效果。
- Supportv421 以上。
产品功能说明
金融魔方红包依赖库是一款实现App快速集成发单聊红包、发群聊红包、拆红包并查看交易记录等功能的库。该类库支持支付宝、微信第三方付款,类库中已经引入了支付宝和微信的jar包,您只需要在您的Manifest文档中配置支付宝和微信的参数信息即可,下面会有详细介绍。
集成步骤
1. 把jrmfbaselib 和jrmfrplib以module的形式导入您的项目中,点击File>New>import module,打开如下页面:
2. 选择路径,找到下载好的jrmfbaselib,jrmfrplib点击finish,把这两个库分别导入到您的工程中。
3. jrmfbaselib包含了金融魔方所有产品共同的工具类、自定义view等内容,故jrmfrplib必须依赖jrmfbaselib
使用详解
渠道配置
渠道和红包名字配置:渠道是我司给客户分配的唯一识别id;红包名字为用户发红包时显示的名称,客户根据自己的需求来命名。
注意:如果您使用了其它金融魔方的产品,已经配置了渠道id,就无需再配置了。
- <!‐‐金融魔方渠道,JrmfPublishLibs中使用的渠道ID为closedbate,请您尽快申请属于您公司的渠道ID‐‐>
- <meta‐data
- android:name="JRMF_PARTNER_ID"
- android:value="closedbate"/>
- <meta‐data
- android:name="JRMF_PARTNER_NAME"
- android:value="测试红包"/>
初始化项目
您需要在您自定义的Application中初始化金融魔方的类库,示例代码如下:
- public class MyApplication extends Application {
- @Override
- public void onCreate() {
- super.onCreate();
- //设置为测试环境
- JrmfClient.isDebug(true);
- /**
- * 需要在Manifest.xml文件中初始化渠道id(JRMF_PARTNER_ID)和红包名称(JRMF_PARTNER_NAME)
- */
- JrmfClient.init(this);
- /**
- * 初始化项目,同时传入渠道id(JRMF_PARTNER_ID)和
- * 红包名称(JRMF_PARTNER_NAME)
- * 如果在Manifest.xml文件中配置了渠道id和红包名称
- * 请使用上面的方法初始化项目
- */
- //JrmfClient.init(this,"closedbate","测试红包");
- }}
功能介绍
发单个红包、发群聊红包、转账、转账收款、转账退款、抢单聊红包、抢群红包,查看交易记录以及更新用户信息(头像和昵称)功能都由JrmfRpClient提供。
红包功能
发群红包
- /**
- * 打开发送群组红包界面
- * @param context
- * 【必传】上下文对象
- * @param targetId
- * 【必传】目标ID(会话ID)
- * @param userid
- * 【必传】用户ID|当前用户ID
- * @param thirdToken
- * 【必传】三方签名令牌(服务端计算后给到app,服务端算法为md5(custUid+appsecret))
- * @param groupNum
- * 【必传】群组人数
- * @param username
- * 【可为NULL或""】用户昵称
- * @param usericon
- * 【可为NULL或""】用户头像URL
- * @param requestCode
- *【必传】在onActivityResult方法中回调
- */
- public static void sendGroupEnvelopeForResult(Context context, String targetId, String userid, String thirdToken, int groupNum, String username, String usericon, int requestCode);
发单聊红包
- /**
- * 打开发送单聊红包界面
- * @param context
- * 【必传】上下文对象
- * @param targetId
- * 【必传】目标ID(单聊会话ID)
- * @param userid
- * 【必传】用户ID|当前用户ID
- * @param thirdToken
- * 【必传】三方签名令牌(服务端计算后给到app,
- 服务端算法为md5(custUid+appsecret))
- * @param username
- * 【可为NULL或""】用户昵称
- * @param usericon
- * 【可为NULL或""】用户头像URL
- * @param requestCode
- * 【必传】在onActivityResult方法中回调
- */
- public static void sendSingleEnvelopeForResult(Context context, String targetId, String userid, String thirdToken, String username, String usericon, int requestCode)
抢群红包
- /**
- * 抢群红包
- * @param activity
- * [必传] 上下文
- * @param userid
- * [必传] 用户id
- * @param thirdToken
- * [必传]三方签名令牌(服务端计算后给到app,
- 服务端算法为md5(custUid+appsecret))
- * @param username
- * [可为空] 用户姓名
- * @param usericon
- * [可为空] 用户头像
- * @param envelopeId
- * [必传] 红包id
- *@param callBack
- * [必传] 抢红包回调接口
- */
- public static void openGroupRp(FragmentActivity activity, String userid, String thirdToken, String username, String usericon,String envelopeId,GrabRpCallBack callBack);
抢单聊红包
- /**
- * 打开单聊红包
- * @param activity
- * [必传] 上下文
- * @param userid
- * [必传] 用户id
- * @param thirdToken
- * [必传]三方签名令牌(服务端计算后给到app,
- 服务端算法为md5(custUid+appsecret))
- * @param username
- * [可为空] 用户姓名
- * @param usericon
- * [可为空] 用户头像
- * @param envelopeId
- * [必传] 红包id
- * @param callBack
- * [必传] 抢红包回调接口
- */
- public static void openSingleRp( FragmentActivity activity,
- String userid, String thirdToken, String username, String usericon, String envelopeId, GrabRpCallBack callBack)
查看红包详情(只针对群红包使用)
- /**
- * 打开红包详情,只针对群红包使用
- * @param fromActivity
- * [必传] 上下文
- * @param userId
- * [必传] 用户id
- * @param thirdToken
- * [必传]三方签名令牌(服务端计算后给到app,
- 服务端算法为md5(custUid+appsecret))
- * @param rpId
- * [必传] 红包id
- *@param username
- * [可为空] 用户昵称
- * @param usericon
- * [可为空] 用户头像
- */
- public static void openRpDetail(Activity fromActivity,
- String userId, String thirdToken, String rpId, String username, String usericon);
抢红包的回调接口 GrabRpCallBack
- @Override
- public void grabRpResult(GrabRpBean rpStatus) {
- int envelopeStatus = rpStatus.getEnvelopeStatus(); ToastUtil.showNoWaitToast(mContext,"红包状态:"+envelopeStatus);
- if (rpStatus.isHadGrabRp()){
- if (grabRpBean.getHasLeft() == 0) {
- // 抢到了最后一个红包
- } else {
- // 抢到了一个红包
- ToastUtil.showToast(mContext, "抢到了一个红包");
- }
- }
- }
转账功能
进入转账页面
- /**
- * 打开转账页面
- * @param activity
- * 【必传】上下文对象
- * @param targetId
- * 【必传】目标ID(用户ID)
- * @param userid
- * 【必传】用户ID|当前用户ID
- * @param thirdToken
- * 【必传】三方签名令牌(服务端计算后给到app, 服务端算法为md5(custUid+appsecret)
- * @param username
- * 【可为NULL或""】当前用户昵称
- * @param usericon
- * 【可为NULL或""】当前用户头像URL
- * @param recUserName
- * 【可为NULL或""】目标用户昵称
- * @param recUserIcon
- * 【可为NULL或""】目标用户头像URL
- * @param requestCode
- * 【必传】
- */
- public static void transAccountForResult(final Activity activity, final String targetId, final String userid, final String thirdToken, final String username, final String usericon,final String recUserName, final String recUserIcon, final int requestCode)
打开转账详情页面
- /**
- * 打开转账详情
- * @param activity
- * 上下文
- * @param userid
- * @param thirdToken
- * 【必传】三方签名令牌(服务端计算后给到app,
- * 服务端算法为md5(custUid+appsecret)
- * @param transferOrder
- * 【必传】转账单号
- * @param transCallBack
- * 【必传】转账回调接口
- */
- public static void openTransDetail(Activity activity, String userid, String thirdToken, String transferOrder, TransAccountCallBack transCallBack)
转账退款和确认收款回调接口
- JrmfRpClient.openTransDetail(this,USER_ID,thirdToken,MainActivity.
- transAccountBean.getTransferOrder(), new TransAccountCallBack() {
- @Override
- public void transResult(TransAccountBean transAccountBean) { if ("1" == transAccountBean.getTransferStatus()){
- //确认收钱
- ToastUtil.showToast(RedPacketActivity.this,"确认收钱成功"); }else if ("2" == transAccountBean.getTransferStatus()){
- //退款
- ToastUtil.showToast(RedPacketActivity.this,"退款成功");
- }
- }
- });
- TransAccountBean:有下面四个属性:
- transferOrder; // 转账单号
- transferDesc; // 转账描述
- transferAmount; // 转账金额;
- transferStatus; // 0:发起转账 1:已收款 2:退还
发红包和转账的回调
发红包和转账都通过请求码在onActivityResult中处理回调
- /**
- * 发红包成功的回调
- * @param requestCode
- * @param resultCode
- * @param data
- */
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data); switch (requestCode) {
- case SEND_GROUP:
- if (resultCode == RESULT_OK) {
- groupRpBean = JrmfRpClient.getEnvelopeInfo(data);
- }
- break;
- case SEND_SINGLE:
- // 发了单聊红包
- if (resultCode == RESULT_OK) {
- singleRpbean = JrmfRpClient.getEnvelopeInfo(data);
- }
- break;
- case TRANS_ACCOUNT:
- //转账
- if (resultCode == RESULT_OK){
- MainActivity.transAccountBean =
- JrmfRpClient.getTransAccountBean(data);
- ToastUtil.showLongToast(RedPacketActivity.this,"转账成功");
- }
- break;
- } }
- 发红包成功过后会得到EnvelopeBean,包含下面三个属性:
- envelopesID 红包id
- envelopeMessage 红包祝福语[例如:恭喜发财,大吉大利]
- envelopeName 红包名字
- 转账成功后会得到TransAccountBean:有下面四个属性:
- transferOrder; // 转账单号
- transferDesc; // 转账描述
- transferAmount; // 转账金额;
- transferStatus; // 0:发起转账 1:已收款 2:退还
查看交易记录
查看交易记录接口,如果您集成了钱包则无需使用该接口,因为钱包中有此功能
- /**
- * 打开查看交易记录
- * @param fromActivity
- * [必传] 上下文
- * @param userId
- * [必传] 用户id
- * @param thirdToken
- * [必传]三方签名令牌(服务端计算后给到app,
- 服务端算法为md5(custUid+appsecret))
- */
- public static void openTradeHistory(Activity fromActivity, String userId, String thirdToken);
更新用户信息
当您的用户昵称或者头像发生改变请调用该方法
该方法添加了回调接口,用户可以根据接口返回的model直接判断用户信息是否更新成功;
- /**
- * 更新用戶信息接口 此接口需要开发者自己回调处理
- * @param custUid
- * 【必传】用户ID|当前用户ID
- * @param thirdToken
- * 【必传】三方签名令牌(服务端计算后给到app, 服务端算法为md5(custUid+appsecret))
- * @param nickName
- * 【必传】将要更新的用户昵称
- *@param avatar
- * 【必传】将要更新的用户头像URL
- */
- JrmfRpClient.updateUserInfo(USER_ID, MainActivity.thirdToken,
- USER_NAME_UPDATE, USER_ICON, new OkHttpModelCallBack<BaseModel>() { @Override
- public void onSuccess(BaseModel baseModel) {
- if (baseModel.isSuccess()) {
- ToastUtil.showToast(RedPacketActivity.this,
- "更新用户信息成功");
- } else { ToastUtil.showToast(RedPacketActivity.this, "更新用户信息失败:" + baseModel.respmsg);
- } }
- @Override
- public void onFail(String result) {
- ToastUtil.showToast(RedPacketActivity.this,
- "更新用户信息失败");
- }
- });
其它功能
如果您的账号被登出或者其它场景需要关闭所有已经打开的Activity的情况,您可以调用如下方法去关闭我们
sdk中的Activity CusActivityManager.getInstance().finishAllActivity(); 好啦,所有的功能介绍完了,而且demo中还有详细的使用方式,大家可以打开看看。