說是魅族支付,其實是魅族支付裏面包含了支付寶,微信支付。說到底就是錢先到魅族,後面再和我們分成的模式
一、配置部分
它是需要支持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("未知錯誤");
}
}
});
至此魅族支付就集成完了,要注意的是它支付後查詢支付狀態只有線上環境,因爲它回調地址只能配一個。