반응형

IOS InappPurchase in delphi...

 

델파이 환경에서 IOS 비소모성 상품 인앱 결제를 구현해보겠습니다.

 

애플 App Store Connect 에서 앱을 등록 후 

 

앱 내 구입 - 관리에서 상품을 등록해줍니다.

여기서 제품 ID가 중요합니다.

 

테스트 하기 위해선 Sandbox에 등록을 해야 합니다.

이렇게 해야 과금 없이 테스트로 진행할 수 있습니다.

이것 역시 App Store Connet - 사용자 및 액세스 - 메뉴 하단 Sandbox - 테스터

사용자를 등록합니다. 단, 기존에 Apple 에 등록되어 있는 계정과 중복되어선 안됩니다!

 

위와 같이 등록을 해주시고 코드를 이제 살펴보겠습니다.

우선 델파이에서 인앱 컴포넌트를 추가합니다.

검색이 안되는 경우 맨위 상단 uses 절에 FMX.InAppPurchase을 추가합니다.

델파이에서 컴포넌트 추가

procedure TMainForm.iosInAppPurchase(Sender: TObject);
begin
  InAppPurchase1.ProductIDs.Add('Test'); // 등록한 제품 ID
  InAppPurchase1.OnSetupComplete := InAppPurchaseSetupComplete;
  InAppPurchase1.SetupInAppPurchase;
end;

procedure TMainForm.InAppPurchaseSetupComplete(Sender: TObject);
begin
  InAppPurchase1.QueryProducts;
  InAppPurchase1.RestorePurchasedProducts;
end;

저같은 경우 위와 같은 함수를 만들어서 처음 FormCreate 시 실행하게 하였습니다.

여기서 RestorePurchasedProducts을 참고하셔야 합니다.

안드로이드 같은 경우 알아서 재구매를 해주지만 IOS 같은 경우 비소모성 상품인 경우 위와 같이

RestorePurchasedProducts를 호출하여 결제 여부를 확인해줘서 이미 결제했을 경우 결제 처리가 됩니다.

 

{IFDEF IOS}
  try
    if InAppPurchase1.IsSetupComplete then
    begin
      if InAppPurchase1.IsProductPurchased('TEST') then
        begin
          결제 성공 시 이동
        end
      else
        begin
          if InAppPurchase1.CanMakeInAppPurchases then
             begin
                 InAppPurchase1.PurchaseProduct('TEST');
             end;
        end;
    end;
  except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
{ENDIF}

IsSetupComplete을 통해 Boolen값을 반환 받은 뒤

IsProductPurchased으로 이미 구입이 된 상품이면 다음을 처리하고 그렇지 않은 경우

CanMakeInAppPurchases 처리 후 PurchaseProduct('제품 ID')로 결제 루틴에 들어간다.

 

[참고] http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_the_iOS_In-App_Purchase_Service#Prerequisites

[참고] http://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_the_iOS_In-App_Purchase_Service

반응형

+ Recent posts