IntegrationGuide.md
4.82 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: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" />
3)为入口activity增加以下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.将InlandSDK工程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);