说是魅族支付,其实是魅族支付里面包含了支付宝,微信支付。说到底就是钱先到魅族,后面再和我们分成的模式
一、配置部分
它是需要支持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("未知错误");
}
}
});
至此魅族支付就集成完了,要注意的是它支付后查询支付状态只有线上环境,因为它回调地址只能配一个。
网友评论