接入魅族支付

說是魅族支付,其實是魅族支付裏面包含了支付寶,微信支付。說到底就是錢先到魅族,後面再和我們分成的模式

一、配置部分

它是需要支持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包
如下圖所示:

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("未知錯誤");
                }
            }
        });

至此魅族支付就集成完了,要注意的是它支付後查詢支付狀態只有線上環境,因爲它回調地址只能配一個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章