2017-11-24 2 views
0

Google의 인앱 결제를 테스트하고 있습니다. IabHelper를 사용하여 Google 인앱 결제 교육을받습니다.Google 인앱 결제, 서버에서 정보를 가져 오는 중에 오류가 발생했습니다. [DF-DFERH-01]

IabHelper를 성공적으로 설정했습니다.

그런 다음 IabHelper 구매 API를 호출합니다.

try { 
    mHelper.launchPurchaseFlow(mActivity, productID, RC_REQUEST, 
       mPurchaseFinishedListener, payload); 
} catch (IabAsyncInProgressException e) { 
    Log.d("GooglePay", "Error launching purchase flow. Another async operation in progress."); 
} 

, 나는 항상 팝업 창을 얻었다는 말한다 : "从 服务器 检索 信息 时 出错 [DF-DFERH-01].", 아래 그림과 같은. enter image description here

logcat 정보는 attated입니다.

+0

logcat 링크 : http : //note.youdao.com/noteshare? id = 654efa3f235e49e82023d7d11300ef13 – user2314244

+0

코드에서 'productID'는 무엇입니까? – rockstar

+0

@rockstar Google Play 스토어에서 구성된 실제 제품 ID를 사용합니다. 제품 ID가 맞는지 다시 확인했습니다. – user2314244

답변

0

나는이 문제를 결국 해결했다. 내 대답을 넣어 라. 나 같은 문제를 만난 사람들을 도울 수 있기를 바랍니다.

mHelper.launchPurchaseFlow (mActivity, productID, RC_REQUEST, mPurchaseFinishedListener, payload);

"payLoad"매개 변수가 너무 길어서 페이로드를 빈 문자열로 설정하면 문제가 해결되어 더 이상 df-dferh-01이 아닙니다.

VPN과 관련이 없으며 페이로드가 Google Play 서비스 인터페이스에 비해 너무 길기 때문에 google 라이브러리와 관련이 없습니다.

1

다음 단계를 사용하여 코드를 확인하십시오 :

STEP : sdk toolsdk managerGoogle Play Billing LibraryGoogle play services로 업데이트 한 체크

단계 : 2 는 안드로이드 프로젝트를 생성 및 결제를 추가 Android 프로젝트의 매니페스트 파일에 대한 사용 권한

<uses-permission android:name="com.android.vending.BILLING" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

STEP : 3 적합한 응용 프로그램 수준 폴더 >> 폴더 >> AIDL 폴더

2를 클릭하여 프로젝트

1.By에 AIDL 파일을 추가. in app 청구서 작성 디렉토리 또는 폴더 또는 패키지 작성 예 -> com.android.vending.billing

3. 붙여 넣기 파일을이 패키지에 복사하십시오.

그 InAppBillingService.aidl을 가져 오기위한 다른 인앱 결제에 IabHelper 같은 지원 클래스를 모든 당신이 얻을 것이다 오류를 수행 한 후,이 build.gradle로 이동 해결하고 는 com.android.vending.billing에 대한 디렉토리를 다시 조정 이는 디렉토리 또는 패키지를 생성 com.android.vending.billing시되지 올바른 형식

같은

sourceSets {{메인 aidl.srcDirs = 'SRC/주/AIDL']} }

단계 : 3 빌드의 종속 항목 업데이트.Gradle을 파일

단계 : 4 구글과 연결이 플레이 시작

/************Setting Up Google Play Billing in the Application***************/ 
    mHelper = new IabHelper(this, base64EncodedPublicKey); 

    // enable debug logging (for a production application, you should set this to false). 
    // mHelper.enableDebugLogging(true); 
    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
     public void onIabSetupFinished(@NonNull IabResult result) { 
      if (!result.isSuccess()) { 
       Log.d(TAG, "In-app Billing setup failed: " + result); 
       complain("In-app Billing setup failed:: " + result); 

      } else { 
       Log.d(TAG, "In-app Billing is set up OK"); 
      } 
     } 
    }); 
    /************Setting Up Google Play Billing in the Application***************/ 
(Base64EncodedPublicKey이 your license key from google play console을 의미 )

(이 제품에 적합한 지 확인 base64EncodedPublicKey 확인)

STEP : 5 테스트 목적의 사용을 위해

하는 ITEM_SKU을 다음 라이브 사용의 경우

static final String ITEM_SKU = "android.test.purchased"; 
static final int RC_REQUEST = 10001; 

작성중인 ProductID을 살고 있습니다.

STEP 6

  1. 는 구현 OnIabPurchaseFinishedListener

  2. 구현 결과

    @Override 
    protected void onActivityResult(int requestCode, int resultCode,Intent data) 
    { 
    if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { 
        super.onActivityResult(requestCode, resultCode, data); 
    } 
    } 
    
  3. 를 처리하기위한 방법을 구현 onActivityResultQueryInventoryFinishedListener

  4. 구현 OnConsumeFinishedListener

STEP : IabHelper의 구입 API를 호출 8

:

7 장치가 STEP

Google play services를 업데이트 한 확인하십시오.

mHelper.launchPurchaseFlow(mActivity, ITEM_SKU, 
       RC_REQUEST,mPurchaseFinishedListener, mPayload); 

단계 : 다음 링크를 참조하시기 바랍니다 자세한 내용은 9 :

https://developer.android.com/google/play/billing/billing_integrate.html#billing-permission

https://developer.android.com/google/play/billing/billing_library.html#connecting

은 내가 당신을 도울 바랍니다.

+0

이 단계를 확인하고 시도했지만 여전히 작동하지 않습니다. – user2314244

관련 문제