IntegrationGuide.md 5.39 KB

InlandSDK integration guide

本sdk包含登录和支付功能,支付包含微信支付,支付宝支付和银联支付,因此接入前请申请好各支付渠道的参数

1.获取gump分配的appid和appkey
2.导入InlandSDK库工程,并将自己的android工程设置引用此库工程
3.配置AndroidManifest.xml,分为3部分
1)确保有以下permission:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 以下是银联支付专用 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

2)需要在application内增加如下内容,**微信回调activity必须是 "项目包名.wxapi.WXPayEntryActivity",不可更改,且此activity需继承com.gump.inland.gamesdk.WXPayEntryBaseActivity**:

    <activity
        android:name="com.gump.inland.gamesdk.PassportBaseActivity"
        android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"
        android:theme="@style/Theme.TransparentWin" >
    </activity>
    <activity
        android:name="com.gump.inland.gamesdk.PaymentActivity"
        android:theme="@android:style/Theme.Light.NoTitleBar" >
    </activity>
    <!-- wx callback 需要根据规则配置,此处请勿直接拷贝-->
    <activity
        android:name="yourPackageName.wxapi.WXPayEntryActivity"
        android:exported="true" >
    </activity>
    <!-- unionPay -->
    <activity
        android:name="com.unionpay.uppay.PayActivity"
        android:configChanges="orientation|keyboardHidden"
        android:excludeFromRecents="true"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustResize" />
    <!-- alipay sdk begin -->
    <activity
        android:name="com.alipay.sdk.app.H5PayActivity"
        android:configChanges="orientation|keyboardHidden|navigation"
        android:exported="false"
        android:screenOrientation="behind"
        android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>
    <!-- alipay sdk end -->

3)入口activity增加**android:configChanges="orientation|screenSize|keyboardHidden|keyboard|screenLayout"**属性,并增加以下Intent-filter,**data scheme配置为微信appid**:

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <!-- 此处为微信的appid-->
        <data android:scheme="wxdb562d299ac311e0" />
    </intent-filter>

4.将InlandSDKRelease工程assets目录下的文件拷贝到游戏项目的assets目录下,此处为银联支付使用
5.代码接入:
1)sdk初始化,以下方法二选一

//若游戏不区分渠道使用此方法
InlandSDK.initializeSDK(gumpAPPId, GumpAPPKey);
//若游戏区分渠道使用此方法,传入渠道参数
InlandSDK.initializeSDK(gumpAppId,GumpAPPKey,channel);

2)注册登录状态回调:

Passport.getInstance().registerCallback(new InlandSDKCallback<GumpUser>() {

        @Override
        public void onSuccess(GumpUser result) {
            Logger.d(TAG, "gumpUser:" + result.toString());
            btnLogin.setVisibility(View.GONE);
            tvUserInfo.setText(formatUserInfo(result));
            btnPay.setVisibility(View.VISIBLE);
        }

        @Override
        public void onError(InlandSDKException error) {
            Logger.d(TAG, "login error:" + error.getMessage());
        }

        @Override
        public void onCancel() {
            Logger.d(TAG, "login be canceled");
        }
    });

3)执行登录操作

Passport.getInstance().login(MainActivity.this);

4)支付操作

    PayRequest payRequest = new PayRequest();
    payRequest.setPrice(1);
    payRequest.setProduct("玄冥剑");
    payRequest.setExtOrder("p100201508311730");
    payRequest.setGumpUid(Passport.getInstance().getGumpUser().getUid());
    InlandSDK.purchase(MainActivity.this, payRequest, new PurchaseCallback() {

    @Override
    public void onPurchaseError(Exception e) {
        Logger.w(TAG, "purchase error:" + e.getMessage());
        tvPurchaseResult.setText("purchase occured an error:" + e.getMessage());
    }

    @Override
    public void onPurchaseSuccess(String gumpTransId, String extOrder) {
        Logger.d(TAG, "purchase success:" + gumpTransId + ",extorder:" + extOrder);
        tvPurchaseResult.setText("purchase " + gumpTransId + " success,extorder:" + extOrder);
    }

    @Override
    public void onPurchaseCanceled() {
        Logger.d(TAG, "purchase be canceled");
        tvPurchaseResult.setText("purchase be canceled");
    }
  });

5)配置onActivityResult拦截处理,请在activity的onActivityResult方法内增加InlandSDK的处理方法onActivityResult,当此方法返回true时,说明结果已处理,否则说明未对结果进行处理

if (!InlandSDK.onActivityResult(requestCode, resultCode, data))
        super.onActivityResult(requestCode, resultCode, data);