<commit_before># Appmartアプリ内課金: PhoneGap

![last-version](http://img.shields.io/badge/last%20version-1.1-green.svg "last version:1.1") 

![license apache 2.0](http://img.shields.io/badge/license-apache%202.0-brightgreen.svg "licence apache 2.0")

PhoneGapアプリ用のAppmartアプリ内課金システムのプラグインです。このサンプルをfork・cloneしていただき、自由にご利用ください。 

このサンプルの対象サービスは:

+ アプリ内課金：都度決済 

---


## Ready-to-useサンプル


### プロジェクト設定 

> サンプルをclone

```shell
cd /home/user/your_directory
git clone https://github.com/info-appmart/appmartPhoneGapPlugin.git
```

> Workspaceに追加 (eclipse)

- File => Import => Existing Android Code Int Workspace
- 先ほどcloneしたプロジェクトを選択


> PhoneGapプロジェクトに導入（eclipse）

PhoneGapプロジェクトに右クリック　=>　properties => Android　 ⇒　Libraries => Add => Pluginを選択

### プラグイン組み込み

> Activityクラスを変更

###### Oncreate methodを更新

```java

private MyJavascriptInterface mc;
	
//開発者情報
public String devId = "YOUR_DEVELOPPER_ID";
public String licenceKey = "YOUR_LICENCE_KEY";
public String publicKey= "YOUR_PUBLIC_KEY";
public String appId= "YOUR_APP_ID";

@Override
public void onCreate(Bundle savedInstanceState){
	
    super.onCreate(savedInstanceState);

    //追記
    super.init();
    mc = new MyJavascriptInterface(this);
    appView.addJavascriptInterface(mc, "appmart");
    
    loadUrl(launchUrl);
}
    
```


###### JavascripInterfaceクラスを作成 (Activityクラス内に追加)


```java
class MyJavascriptInterface{
	
	Context mContext;
	PhoneGapPlugin plugin;
	    	
	/* constructor */
	public MyJavascriptInterface(Context context){
		mContext= context;
	}
		
	/* 決済実行 */
	@JavascriptInterface
	public void doSettlement(String serviceId){
		
		AppmartResultInterface callback = new AppmartResultInterface(){
			
			//決済ID
			String transactionId;

			@Override
			public void settlementError(int errorCode) {
				Toast.makeText(mContext, "エラー発生：　errorCode: "+errorCode, Toast.LENGTH_LONG).show();					
			}

			@Override
			public void settlementWaitValidation(String transactionId) {
				
				// 決済IDを保存
				this.transactionId = transactionId;
				
				//TODO ユーザーにコンテンツを提供
				
				//決済を確定
				plugin.confirmSettlement();
				
			}

			@Override
			public void settlementValidated(boolean result) {
				if(result)
				Toast.makeText(mContext, "決済が確定されました。決済ID: "+transactionId, Toast.LENGTH_LONG).show();
				else
				Toast.makeText(mContext, "決済が確定されませんでした", Toast.LENGTH_LONG).show();					
			}
			
		};
		    		
		
		plugin = PhoneGapPlugin.getInstance(mContext); 		
		plugin.setParameters(devId, licenceKey, publicKey, appId);
		plugin.doSettlement(serviceId, callback);
	}
	
}
```


> htmlを変更


```html
<script>       

	var alreadyClicked = new Array(); 

    function do_settlement(obj, itemId){

    	for (var i = 0; i < alreadyClicked.length; i ++) {
        		if(alreadyClicked[i] == itemId.id){
        			alert("既にクリックされました");
        			return;
        		}        		
        	}
        	
    	//重複クリック防止
		alreadyClicked.push(itemId.id);

    	//決済	
    	window.appmart.doSettlement(itemId);
    }
</script>

<button id="first_button" onclick="do_settlement(this, 'your_service_id')" value="settlement">Settlement</button>

```
<commit_msg>edit README<commit_after># Appmartアプリ内課金: PhoneGap

![last-version](http://img.shields.io/badge/last%20version-1.1-green.svg "last version:1.1") 

![license apache 2.0](http://img.shields.io/badge/license-apache%202.0-brightgreen.svg "licence apache 2.0")

PhoneGapアプリ用のAppmartアプリ内課金システムのプラグインです。このサンプルをfork・cloneしていただき、自由にご利用ください。 

このサンプルの対象サービスは:

+ アプリ内課金：都度決済 

---


## Ready-to-useサンプル


### プロジェクト設定 

> サンプルをclone

```shell
cd /home/user/your_directory
git clone https://github.com/info-appmart/appmart-inbilling-phonegap
```

> Workspaceに追加 (eclipse)

- File => Import => Existing Android Code Int Workspace
- 先ほどcloneしたプロジェクトを選択


> PhoneGapプロジェクトに導入（eclipse）

PhoneGapプロジェクトに右クリック　=>　properties => Android　 ⇒　Libraries => Add => Pluginを選択

### プラグイン組み込み

> Activityクラスを変更

###### Oncreate methodを更新

```java

private MyJavascriptInterface mc;
	
//開発者情報
public String devId = "YOUR_DEVELOPPER_ID";
public String licenceKey = "YOUR_LICENCE_KEY";
public String publicKey= "YOUR_PUBLIC_KEY";
public String appId= "YOUR_APP_ID";

@Override
public void onCreate(Bundle savedInstanceState){
	
    super.onCreate(savedInstanceState);

    //追記
    super.init();
    mc = new MyJavascriptInterface(this);
    appView.addJavascriptInterface(mc, "appmart");
    
    loadUrl(launchUrl);
}
    
```


###### JavascripInterfaceクラスを作成 (Activityクラス内に追加)


```java
class MyJavascriptInterface{
	
	Context mContext;
	PhoneGapPlugin plugin;
	    	
	/* constructor */
	public MyJavascriptInterface(Context context){
		mContext= context;
	}
		
	/* 決済実行 */
	@JavascriptInterface
	public void doSettlement(String serviceId){
		
		AppmartResultInterface callback = new AppmartResultInterface(){
			
			//決済ID
			String transactionId;

			/* エラー発生時呼び出し */
			@Override
			public void settlementError(int errorCode) {
				Toast.makeText(mContext, "エラー発生：　errorCode: "+errorCode, Toast.LENGTH_LONG).show();					
			}

			/* 決済画面から戻ってきた時に呼び出し（決済はまだ未確定！）　*/
			@Override
			public void settlementWaitValidation(String transactionId) {
				
				// 決済IDを保存
				this.transactionId = transactionId;
				
				//TODO ユーザーにコンテンツを提供
				
				//決済を確定
				plugin.confirmSettlement();
				
			}

			/* 決済が確定された際に呼び出し */
			@Override
			public void settlementValidated(boolean result) {
				if(result)
				Toast.makeText(mContext, "決済が確定されました。決済ID: "+transactionId, Toast.LENGTH_LONG).show();
				else
				Toast.makeText(mContext, "決済が確定されませんでした", Toast.LENGTH_LONG).show();					
			}
			
		};
		    		
		
		plugin = PhoneGapPlugin.getInstance(mContext); 		
		plugin.setParameters(devId, licenceKey, publicKey, appId);
		plugin.doSettlement(serviceId, callback);
	}
	
}
```


> HTMLを変更


```html
<script>       

	var alreadyClicked = new Array(); 

    function do_settlement(obj, itemId){

    	for (var i = 0; i < alreadyClicked.length; i ++) {
        		if(alreadyClicked[i] == itemId.id){
        			alert("既にクリックされました");
        			return;
        		}        		
        	}
        	
    	//重複クリック防止
		alreadyClicked.push(itemId.id);

    	//決済	
    	window.appmart.doSettlement(itemId);
    }
</script>

<button id="first_button" onclick="do_settlement(this, 'your_service_id')" value="settlement">Settlement</button>

```

{'fraction_non_alphanumeric': 0.12371460211991774, 'fraction_numerical': 0.004746084480303749, 'mean_word_length': 3.531899641577061, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 33, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4273500', 'n_tokens_mistral': 2902, 'n_tokens_neox': 2539, 'n_words': 372}