美文网首页
接入魅族支付

接入魅族支付

作者: 你的益达233 | 来源:发表于2021-07-27 09:57 被阅读0次

说是魅族支付,其实是魅族支付里面包含了支付宝,微信支付。说到底就是钱先到魅族,后面再和我们分成的模式

一、配置部分

它是需要支持kotlin的

1、根目录的build.gradle
buildscript {
ext.kotlin_version = '1.3.0'
repositories {
    maven{ url 'http://maven.aliyun.com/repository/public/'}
    maven{ url 'http://maven.aliyun.com/repository/google/'}
    maven{ url 'http://maven.aliyun.com/repository/gradle-plugin/'}
    maven{ url 'http://maven.aliyun.com/repository/central/'}
    
    maven { url "https://jitpack.io" }

    //jcenter仓库
    jcenter{ url 'http://jcenter.bintray.com'}
    google()
    
}
apply from: 'thirdparty-lib/config.gradle'
dependencies {
    classpath externalAndroidBuildGradlePlugin
    
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

}
}

关键是"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

2、app下的build.gradle

首先在libs建meizu文件夹,放魅族的aar包
如下图所示:

魅族pay.png

build.gradle文件修改:

 repositories {
    flatDir {
        dirs 'libs','libs/meizu'
    }
}

// 魅族支付,遍历 'libs/meizu' 下的所有 `aar` 并引用
def meizuLibs = project.file('libs/meizu')
meizuLibs.traverse(nameFilter: ~/.*\.aar/) { file ->
    def name = file.getName().replace('.aar', '')
    implementation(name: name, ext: 'aar')
}
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "io.reactivex.rxjava2:rxjava:2.2.6"
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"  

二、使用范例

新版的魅族支付需要魅族账号登陆这一过程了。不过也不用担心,它sdk做了大部分工作,我们只要调方法即可

// 未登录魅族帐号用到
public static final int ACTIVITY_REQUEST_CODE_AUTH = 2020;

/**
 *
 * date: 2019/3/27 10:56
 * desc: 魅族支付,登录魅族帐号
 * voucher_id : 代金券 id
 * id  :选择商品的 id (当为脱单圈捐赠的时候,此参数为金额)
 * payType :商品类型
 **/
public static void invokeSdkToLogin(final Context mContext, final int voucher_id, final int id, final View payView, final int payType, final BaseBuyPresenter presenter) {
    MzAppCenterPlatform.getInstance().login(ACTIVITY_REQUEST_CODE_AUTH, (Activity) mContext,
            new ILoginResultListener() {
                @Override
                public void onError(int i, String s) {
                    Toast.makeText(mContext, "登录失败", Toast.LENGTH_SHORT).show();
                    LogUtils.i("登录失败","code = [" + i + "], message = [" + s + "]");
                }

                @Override
                public void onLoginSuccess() {
                    presenter.getMiezuPayOrder(voucher_id,id,payView,payType);
                }
            });
}

登陆成功后再获取魅族支付订单

获取到订单后,封装一个PayInfo

PayInfo payInfo = new PayInfo(bean.getCreateTime(), bean.getTradeNo(), bean.getProductId(),bean.getProductName(),
                bean.getProductBody(), bean.getProductUnit(), bean.getBuyAmount(), bean.getPerPrice(), bean.getTotalFee(), bean.getNotifyUrl(),"");

        MzAppCenterPlatform.getInstance().payV2((Activity)getIView().getContext(), payInfo, new IPayResultListener() {
            @Override
            public void onSuccess() {
                //这个只是本地支付成功,订单成功后查询支付状态
                
                    meizuOrderQuery(bean.getTradeNo());
                

            }

            @Override
            public void onFailed(int i, String s) {
                //取消订单
                orderCancel(new CancelBody(bean.getTradeNo()));
                if (i == PayResult.CODE_ERROR_USER_CANCEL) {
                    //用户取消
                    getIView().toast("用户取消");
                } else if (i == -1) {
                    //网络问题
                    getIView().toast("无法连接网络,请检查网络设置");
                } else {
                    getIView().toast("未知错误");
                }
            }
        });

至此魅族支付就集成完了,要注意的是它支付后查询支付状态只有线上环境,因为它回调地址只能配一个。

相关文章

网友评论

      本文标题:接入魅族支付

      本文链接:https://www.haomeiwen.com/subject/wunnmltx.html