결제 시스템 달기
https://devdactic.com/ionic-in-app-purchase-capacitor
npm i @ionic-native/core
npm i @ionic-native/in-app-purchase-2
npm i cordova-plugin-purchase@11 // 최신버젼은 13버젼이나 ionic-native/in-app-purchase-2 와 호환이 되지 않으므로 11을 선택한다.
module.ts
import { InAppPurchase2 } from '@ionic-native/in-app-purchase-2/ngx';
@NgModule({
providers: [
InAppPurchase2,
],
})
component.ts
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
import { Platform } from '@ionic/angular';
import { InAppPurchase2, IAPProduct } from '@ionic-native/in-app-purchase-2/ngx';
export class PointPage implements OnInit {
products: IAPProduct[] = [];
constructor(
private store: InAppPurchase2,
public plt: Platform,
private ref: ChangeDetectorRef,
) {
super(injector);
this.getMyInfo();
this.plt.ready().then(() => {
this.store.verbosity = this.store.DEBUG;
this.registerProducts();
this.setupListeners();
this.store.ready(() => {
this.products = this.store.products;
this.ref.detectChanges();
});
});
}
// 결제관련 시작
registerProducts() {
this.store.register({
id: [상품아이디],
type: this.store.CONSUMABLE,
});
....................
this.store.refresh();
}
setupListeners() {
// General query to all products
this.store.when('product')
.approved((p: IAPProduct) => {
this.ref.detectChanges();
return p.verify();
})
.verified((p: IAPProduct) => p.finish());
}
/**
* user restore click
*/
restore() {
this.store.refresh();
}
// 결제 버튼을 누를 경우
public payment(product) {
if (this.plt.is('capacitor')) {
this.store.order(product).then(p => {
// Purchase in progress!
}, (e: any) => {
console.log(e);
});
}
}
}
capacitor.config.json 이부분은 더이상 필요없다고 하는데..?
{
"plugins": {
"cordova-plugin-purchase": {
"BILLING_KEY":"MIIB......AB"
}
},
}
android
AndroidManifest.xml
<uses-permission android:name="com.android.vending.BILLING" />
Google Play Console에서 처리하기
- 작업중인 app > Monetize > Products > In-app products 에서 상품등록
- Google Play Console > Setup > License testing 에서 테스트할 이메일 입력
결제 관련 에러
- 이미 보유하고 있는 아이템입니다.
이는 1회성 아이템(INAPP)을 만드는 중 발생하는데, 이 아이템이 소비되지 않았기 때문이다. 1회성 결제의 지속성을 부여하려면 결제 완료 후 소비로직을 적용해야한다.
- 이 버전의 애플리케이션에서는 google play를 통한 결제를 사용할 수 없습니다.
여러가지 경우가 있을 수 있으나 본인의 경우는 Google Play Console > Setup > License testing 에서 테스트 정보를 입력함으로서 에러를 해결하였다.