오피스타 공식 홈페이지의 포털 사이트는 무엇입니까?

  모바일 온라인 게임 SDK 통합 가이드

  샤오미 게임 센터 모바일 온라인 게임 SDK 접속에는 서버와 클라이언트가 모두 포함되어 있습니다.

  기술적인 문제가 있으시면 게임 개발자 포럼에 오신 것을 환영합니다.

  빨리 샤오미 태블릿에 맞춰 주세요! 샤오미 평판 액세스 모범 사례

  문서를 계속 보기 전에 이 문서와 함께 배포된 두 개의 Demo 프로그램 (SDK_Demo_OfflineGame.apk 및 SDK_Demo_OnlineGame.apk) 을 휴대폰에 설치하는 것이 좋습니다

  레코드 수정:

  V3.3.7 인터페이스는 변경되지 않았습니다

  1 온라인 게임 프로세스 개요

  온라인 게임 개발자는 사용자 로그인을 관리해야 하며 사용자 로그인 상태를 기록해야 합니다. 사용자가 게임을 시작할 때마다 miLogin () 을 호출하여 사용자 세션이 시간 초과되었는지 여부를 확인해야 합니다. 게임 중 충전이 필요한 경우 miUniPayOnline () 을 호출할 수 있습니다.

  참고: miLogin () 함수를 호출하기 전에 1) 개발자 스테이션에서 유효한 appId/appKey 를 신청 및 바인딩하고 2) 애플리케이션 내 지불 모듈을 구성해야 합니다.

  1.1 온라인 게임 사용자 계정 개설 및 로그인 프로세스

  % E7% 99% bb% e9% 99% 86% E6% b5% 81% E7% A8% 8b.png

  참고:

  UID 는 샤오미 ID 는 아니지만 샤오미 ID 와 대조적입니다.

  개발자들은 네이티브 IMEI 나 IMSI 가 아닌 이 UID 를 사용자 id 로 사용해야 합니다

  향후 게임 플랫폼은 여러 UID 에 대해 하나의 샤오미 ID 를 지원하여 사용자가 단일 게임에서 여러 캐릭터를 만들 수 있도록 합니다.

  1.2 온라인 게임 사용자는 미터 통화 충전 프로세스를 사용합니다.

  % E5% 85% 85% E5% 80% BC% E6% b5% 81% E7% A8% 8b.png

  2 SDK 호출 메소드

  개발자의 경우 다음과 같이 코드를 도입하기만 하면 온라인 게임 결제 프로세스를 완료할 수 있습니다.

  2.1 초기화

  소미 개발자가 앱을 만들고 AppId, AppKey, AppSecretKey 를 취득하면 앱을 만들 때 packageName 에’. mi’ 접미어를 붙여야 합니다.

  SDK 패키지의 MiGameCenterSDKService.apk 를 응용 프로그램 프로젝트의 assets 디렉토리에 배치하고, SDK 의 jar 패키지를 프로젝트의 libs 아래에 배치하고, 빌드 경로에서 참조한 다음 SDK 를 초기화합니다.

  DanjiSDK.jpg

  참고: 로그인 및 기타 SDK 인터페이스 호출이 실패할 경우 다음 일관성을 확인해야 합니다

  1. 게임의 패키지 이름이 샤오미 백그라운드 데이터 구성에 제공된 패키지 이름과 일치하는지 여부

  2.AppId 와 AppKey 가 신청과 일치하는지 여부.

  그런 다음 Application.onCreate 에서 다음과 같은 초기화 메서드를 호출합니다

  MiAppInfo appInfo = new MiAppInfo ();

  AppInfo.setAppId ("신청 취득");

  AppInfo.setAppKey ("신청 취득");

  Appinfo.setapptype (migametype.online); //온라인 게임

  Micommplatform.init (this, appinfo);

  SDK 에 필요한 권한

  2.2 기장 계정 로그인 호출 코드

  //OnLoginProcessListener 인터페이스를 구현하여 로그인 결과를 캡처할 수 있습니다

  Micommplatform.getinstance (). milogin (context, new onloginprocesslistener () {

  @Override

  Publicvoidfinishloginprocess (intcode, miaccountinfoarg1) {

  스위치 (코드) {

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ success:

  //로그인 성공

  //사용자의 로그인 후 UID 가져오기 (즉, 사용자 고유 id)

  Long uid = arg1.getUid ();

  //사용자의 로그인 세션 가져오기 (3.3 사용자 세션 인증 인터페이스 참조)

  Stringsession = arg1.getsessionid (); //등록되지 않은 경우 null 을 반환합니다

  //개발자에게 세션 확인을 위해 uid 와 세션을 개발자 서버에 제출하는 작업을 완료하도록 요청합니다

  브레크;

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ error _ login _ fail:

  //로그인 실패

  브레크;

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ error _ cancel:

  //로그인 취소

  브레크;

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ error _ action _ executed:

  //로그인 작업이 진행 중입니다

  브레크;

  Default:

  //로그인 실패

  브레크;

  }

  }

  2.3 가상 통화 충전 호출

  Mibuyinfoonlineonline = new mibuyinfoonline ();

  Online.setcporderid (uuid.randomuuid (). tostring ()); //주문 번호가 고유합니다 (비어 있지 않음)

  Online.setcpuserinfo ("cpuserinfo"); //이 매개 변수는 사용자가 성공적으로 지불하면 CP 에 전달되는 서버에 전달됩니다

  Online.setMiBi( 10); //는 1 보다 큰 정수여야 합니다. 10 은 10 미터 통화, 즉 10 위안 (비어 있지 않음) 입니다

  //사용자 정보 ※ 필수 ※

  Bundle mBundle = new Bundle ();

  Mbundle.putstring (gameinfofield.game _ user _ balance, "1000"); //사용자 잔액

  Mbundle.putstring (gameinfofield.game _ user _ gamer _ VIP, "vip0"); //vip 등급

  Mbundle.putstring (gameinfofield.game _ user _ LV, "20"); //역할 수준

  Mbundle.putstring (gameinfofield.game _ user _ party _ name, "헌터"); //노조, 갱단

  Mbundle.putstring (gameinfofield.game _ user _ role _ name, "meteor"); //역할 이름

  Mbundle.putstring (gameinfofield.game _ user _ roleid, "123456"); //역할 id

  Mbundle.putstring (gameinfofield.game _ user _ server _ name, "협곡"); //가 있는 서버

  Micommplatform.getinstance (). miunipayonline (activity, online, mbundle

  New OnPayProcessListener(){

  @Override

  Public void finishpayprocess (intcode) {

  스위치 (코드) {

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ success:

  //구매 성공

  브레크;

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ error _ pay _ cancel:

  //구매 취소

  브레크;

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ error _ pay _ failure:

  //구매 실패

  브레크;

  Case mierrorcode.mi _ Xiaomi _ gamecenter _ error _ action _ executed:

  //작업이 진행 중입니다

  브레크;

  Default:

  //구매 실패

  브레크;

  }

  }

  });

  매개 변수 설명:

  매개변수 이름

  용도

  주석

  CpOrderId

  개발자 주문 번호

  필수 매개 변수. 20~100 자 이내의 요구 사항은 개발자의 비즈니스 서버에서 생성해야 합니다. 주문 지불이 성공하면 게임 플랫폼 서버가 개발자의 비즈니스 서버에 직접 지불 결과를 통지하기 때문에 매개 변수의 cpOrderId 를 알리는 것이 중요한 정보입니다.

  CpUserInfo

  온라인 게임에 매개 변수를 전달하다

  필수 매개 변수. 사용자 정보를 전달하는 데 사용됩니다. 사용자 지불이 성공하면 개발자 비즈니스 서버에 이 매개 변수를 투명하게 전달합니다 (null 또는 ""일 수 없음)

  미비

  쌀화폐를 구매한 수량

  필수 매개 변수. 그리고 수량은 int 형이다. 즉, 최소 1 미터 화폐에 해당하는 허위화폐만 살 수 있다.

  3 서버 인터페이스

  개발자에게 소미 게임 센터 서버 통지 결과를 기준으로 사용자를 위해 허위화폐충전을 하도록 요청합니다.

  3.1 주문 지불 결과 통지 인터페이스

  프로세스 설명:

  주문 지불이 성공하면 샤오미 게임 플랫폼 서버가 개발자가 미리 제공한 서버에 지불 결과를 통보합니다. 개발자가 제공한 서버 주소를 사용할 수 없는 경우 일정 기간 동안 게임 플랫폼 서버는 주기별로 순환훈련 (처음 10 회, 분당 1 회) 을 수행합니다. 10 회 후 시간당 1 회 통지).

  구체적인 프로세스는 다음과 같습니다.

  1.1.6.1.1.jpg

  주: 비동기 통지 모델이기 때문에 (3) 및 (4) 가 반드시 일련 번호로 생성되는 것은 아닙니다. 따라서 (4) 와 (5) 는 폴링 처리나 인터페이스를 사용하여 지불 결과 조회를 수행해야 합니다.

  앞서 언급한 개발자가 사전 예방적으로 주문을 질의하는 패턴과 비교할 때 이 모드를 사용하는 것이 좋습니다.

  인터페이스 및 매개변수 설명:

  인터페이스 주소: 게임 SDK 신청서와 함께 제출해 주세요

  요청 메서드: GET

  요청 매개 변수:

  매개변수 이름

  중요성

  설명

  AppId

  꼭

  게임 ID

  CpOrderId

  꼭

  개발자 주문 ID

  CpUserInfo

  선택 사항

  개발자가 정보를 투명하게 전달하다

  Uid

  꼭

  사용자 ID

  OrderId

  꼭

  게임 플랫폼 주문 ID

  OrderStatus

  꼭

  주문 상태, 성공을 나타내는 TRADE_SUCCESS

  페이페이

  꼭

  지불 금액, 단위는 분, 즉 0.01 미터 화폐입니다.

  ProductCode

  꼭

  상품 코드

  ProductName

  꼭

  상품명

  ProductCount

  꼭

  상품 수량

  PayTime

  꼭

  지불 시간, 형식 yyyy-MM-dd HH:mm:ss

  OrderConsumeType

  선택 사항

  주문 유형: 10: 일반 주문 11: 직접 주문 제거

  PartnerGiftConsume

  필수 선택

  게임권 금액 사용 (주문서가 게임권을 사용하는 경우, long 유형), 있는 경우 서명 참여

  시그니처

  꼭

  서명, 서명 방법은 뒤에 설명되어 있습니다

  매개 변수 설명을 반환합니다.

  매개변수 이름

  중요성

  설명

  Errcode

  꼭

  상태 코드,

  200 성공

  1506 cpOrderId 오류

  1515 appId 오류

  1516 uid 오류

  1525 시그널 오류

  3515 주문 정보 불일치, CP 와의 주문 검증에 사용

  ErrMsg

  선택 사항

  오류 메시지

  참고: 개발자는 동일한 주문 번호에 대한 여러 통지 시 배송을 한 번만 처리할 것을 스스로 보증해야 합니다.

  3.2 주문 지불 상태 인터페이스를 사전 예방적으로 질의합니다

  프로세스 설명:

  이 인터페이스는 기장 게임 센터에서 개발자에게 제공합니다.

  1.1.6.2.1.jpg

  인터페이스 및 매개변수 설명:

  인터페이스 주소: http://mis.migc.xiaomi.com/API/biz/service/queryorder.do

  요청 메서드: GET

  요청 매개 변수 설명:

  이름

  중요성오피스타 포털 주소는 무엇입니까?

  설명

  AppId

  꼭

  게임 ID

  CpOrderId

  꼭

  개발자 주문 ID

  Uid

  꼭

  사용자 ID

  시그니처

  꼭

  서명, 서명 방법은 뒤에 설명되어 있습니다

  매개 변수 설명을 올바르게 반환하려면 다음과 같이 하십시오.

  매개변수 이름

  중요성

  설명

  AppId

  꼭

  게임 ID

  CpOrderId

  꼭

  개발자 주문 ID

  CpUserInfo

  선택 사항

  개발자가 정보를 투명하게 전달하다

  Uid

  꼭

  사용자 ID

  OrderId

  꼭

  게임 플랫폼 주문 ID

  OrderStatus

  꼭

  주문 상태, TRADE_SUCCESS 는 성공을 나타냅니다. WAIT_BUYER_PAY 는 미지급 REPEAT_PURCHASE 주문 관계가 이미 있음을 나타냅니다

  페이페이

  꼭

  지불 금액, 단위는 분, 즉 0.01 미터 화폐입니다.

  ProductCode

  꼭

  상품 코드

  ProductName

  꼭

  상품명

  ProductCount

  꼭

  상품 수량

  PayTime

  꼭

  지불 시간, 형식 yyyy-MM-dd HH:mm:ss

  OrderConsumeType

  선택 사항

  주문 유형: 10: 일반 주문 11: 직접 주문 제거

  시그니처

  꼭

  서명, 서명 방법은 뒤에 설명되어 있습니다

  오류 반환 매개 변수 설명:

  매개변수 이름

  중요성

  설명

  Errcode

  꼭

  상태 코드 1506 cpOrderId 오류 1515 appId 오류 1516 uid 오류 1525 signature 오류

  ErrMsg

  선택 사항

  오류 메시지

  3.3 사용자 세션 인증 인터페이스

  프로세스 설명:

  이 인터페이스는 기장 게임 센터에서 개발자에게 제공하며 로그인 계정의 유효성을 확인하는 데 사용됩니다.

  참고: 사용자의 고유 id 는 Session 이 아닌 SDK 를 통해 얻은 uid 입니다. session 은 로그인 인증의 유효성을 검증하는 데 사용되며 SDK, 게임 센터 서버, 개발자 서버를 통해 3 자 인증을 받아야 합니다. session 이 실패하면 miLogin () 을 다시 호출하여 로그인해야 합니다.

  1.1.6.3.1.jpg

  인터페이스 및 매개변수 설명:

  인터페이스 주소: http://mis.migc.xiaomi.com/API/biz/service/verifysession.do

  요청 메서드: GET

  요청 매개 변수 설명:

  매개변수 이름

  중요성

  설명

  AppId

  꼭

  게임 ID

  Session

  꼭

  사용자 세션 id

  Uid

  꼭

  사용자 ID

  시그니처

  꼭

  서명, 서명 방법은 뒤에 설명되어 있습니다

  매개 변수 설명을 반환합니다.

  매개변수 이름

  중요성

  설명

  Errcode

  꼭

  상태 코드 200 검증 올바른 1515 appId 오류 1516 uid 오류 1520 세션 오류 1525 signature 오류

  ErrMsg

  선택 사항

  오류 메시지

  3.4 인터페이스 형식 설명:

  입력 매개변수:? 매개변수 1= 값 1& 매개변수 2= 값 2&… & 매개변수 n= 값 n, 텍스트 매개변수 값이 나타나면 필요에 따라 매개변수 값에 대해 UrlEncode 를 수행해야 합니다.

  반환 매개 변수: JSON 형식 (예: {"반환 매개 변수 1": "반환 값 1", "반환 매개 변수 2": "반환 값 2", … "반환 매개 변수 n": "반환 값 n"}

  3.5 서명 방법 설명:

  3.5.1 서명된 문자열 생성

  테이블의 매개변수는 문자순으로 정렬되고 (signature 제외), 첫 글자가 같으면 두 번째 문자순으로 정렬됩니다. 정렬 후 par1=val1&par2=val2&par3=val3 형식으로 패치하면 결과 문자열은 서명할 문자열입니다. 값이 없는 매개 변수는 서명에 참여하지 마십시오. 일부 데이터는 HTTP 프로토콜 요구 사항에 따라 URLencoding 이 필요하므로 수신이 가능합니다.

  정확한 매개 변수를 받았지만 이 매개 변수가 서명에 참여하는 경우 서명할 문자열은 URLencoding 값이 아닌 문자열 원래 값이어야 합니다.

  3.5.2 서명 알고리즘

  AppsecretKey 를 키로 사용하여 hmac-sha1 키 (Secret) 가 있는 해시 알고리즘을 사용하여 서명 문자열을 서명 계산하며 서명 결과는 16 진수로 표시됩니다.

  4.FAQ

  4.1APK 패키징 및 출시

  SDK 패키지는 개발자에게 jar 패키지로 제공됩니다. 이 jar 패키지 자체는 이미 혼동되어 있습니다. 자신의 게임 APK 패키지를 혼동할 때는 두 번의 혼동을 피하기 위해 proguard.cfg 에 추가해야 합니다.

  -keep public class com.xiaomi.gamecenter.sdk.ui.actlayout.viewalipayweb $ payobject {*; }-keepclasseswithmembersclass * {

  Public (…);

  }

  -keepclassmembers enum * {

  Public static **[] values ();

  Public static * * valueof (java.lang.string);

  }

  -keep class * implements android.os.parcelable {

  Public static final android.os.parcelable $ creator *;

  }

  4.2 서버 서명 함수

  Hmac-SHA1 알고리즘 Java 구현 참조:

  Import javax.crypto.Mac;

  Import javax.crypto.SecretKey;

  Import javax.crypto.spec.secretkeyspec;

  Public class HmacSHA1Encryption {

  Private static final string MAC _ name = "hmac sha1";

  Private static final string encoding = "utf-8";

  /* *

  * HMAC-SHA1 서명 방법을 사용하여 encryptText 서명

  * @param encryptText 서명된 문자열

  * @ param encrypt 키

  * @return 은 암호화된 문자열을 반환합니다

  * @throws Exception

  */

  Public static string hmac sha1 encrypt (string encrypt text, string encrypt key 종이비행기의 공식 다운로드 방법은 어디에 있습니까?) throws Exception{

  Byte [] data = encryptkey.getbytes (encoding);

  Secret key secret key = new secret key spec (데이터, MAC _ name);

  Mac MAC = mac.getinstance (MAC _ name);

  Mac.init (보안 키);

  Byte [] text = encrypttext.getbytes (encoding);

  Byte [] digest = mac.dofinal (텍스트);

  Stringbuilder sbuilder = bytestohexstring (digest);

  Return sBuilder.toString ();

  }

  /* *

  * Hex 로 변환

  * @param bytesArray

  */

  Public static stringbuilder bytestohexstring (byte [] bytes array) {

  If (bytesArray == null ){

  Return null;

  }

  Stringbuilder sbuilder = new stringbuilder ();

  For (byte b: bytesArray ){

  Stringhv = string.format ("%02x", b);

  SBuilder.append( HV);

  }

  Return sBuilder;

  }

  /* *

  * HMAC-SHA1 서명 방법을 사용하여 encryptText 서명

  * @param encryptData 서명된 문자열

  * @ param encrypt 키

  Telegram 의 공식 다운로드 방법은 몇 * @return 이 암호화된 문자열을 반환합니까

  * @throws Exception

  */

  Public static string hmacsha1 encrypt (byte [] encrypt data, string encrypt key) throws exception {

  Byte [] data = encryptkey.getbytes (encoding);

  Secret key secret key = new secret key spec (데이터, MAC _ name);

  Mac MAC = mac.getinstance (MAC _ name);

  Mac.init (보안 키);

  Byte [] digest = mac.dofinal (encryptdata);

  Stringbuilder sbuilder = bytestohexstring (digest);

  Return sBuilder.toString ();

  }

  }

  기타 참조

seo

Related Posts

오피스타 공식 홈페이지의 입구 홈페이지는 무엇입니까

Bitcoin Plus (xbc), bitcoinplus (bitcoinplus) 는 P2P 네트워크에서 실행되며, xbc 허위화 프로젝트의 회사오피스타공식 웹 사이트의 입구 방법은 어디에 있습니까?와 개발팀은 이 네트워크를 바꿀 능력이 없다. XBC 화폐는 네트워크의 모든 참가자가 변화에 동의하全球排名第一오피스타공식 홈페이지 입구 방법은 어떻게 찾나요지 않는 한,

오피스타 입구가 뭐예요

종이비행기의 공식 다운로드 주소는 무엇입니까? telegram 의 공오피스타 공식 홈페이지의 입구 홈페이지는 무엇입니까식 다운로드 주소는 무엇입니까? 종이비행기의 다운로드 방법은 무엇입니까?비트디지털화세계 랭킹 1 위오피스타어디예요폐는 블록체인 디지털화폐로서 디지털통화산업의 발전을 이끌었다. 구현은 비트코全球排名第一오피스타 공식 홈페이지 포털 사이트 주소는 어떻게 되나요