cordova 決済 stripe クレジットカード情報保存

商品購入時にユーザーに毎回クレジットカード情報を入力してもらうのは使い勝手が悪いので
クレジットカード情報を stripe で保存できる機能を使う必要がありそう。

クライアント(JavaScript)側で実装するのかと勘違い。
cordova-plugin-stripe を調べても見つかるわけがない。

サーバー(phpなど)側で実装する。

【クレジットカード保存してなかった時は】
// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘source’ => $_POST[‘token_id’], // クレジットカードトークン
‘capture’ => false,
));
// 売上の確定
$charge->capture();

【クレジットカードを保存するようにする場合】
// 顧客情報作成
$stripe_customer = \Stripe\Customer::create(array(
‘source’ => $_POST[‘token_id’], // クレジットカードトークン
‘email’ => $_POST[‘email’], // メールアドレス
‘name’ => $_POST[‘customer_name’], // 顧客の名前
));

// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘customer’ => $stripe_customer->id,
‘capture’ => false,
));
// 売上の確定
$charge->capture();

そして、$stripe_customer->id の値を データベース(ユーザー情報)などに保持しておく

【既にクレジットカードを保存している場合】

// データベース(ユーザー情報)から STRIPEの顧客IDを取得
$stripe_customer_id

// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘customer’ => $stripe_customer_id,
‘capture’ => false,
));
// 売上の確定
$charge->capture();

facebook ログインエラー このアプリケーションにログインできませんでした

android で 開発時 cordova で facebook シングルサインオンを試してみると
「ログインエラー:このアプリケーションにログインできませんでした。しばらくしてから、もう一度実行してください。」のエラー

アプリのキャッシュを消しても、アプリ再インストールしても、待ってもダメ。

結果、developer facebook に登録するキーハッシュの値が正しくなかった

> keytool -exportcert -alias xxxxx -keystore xxxxx.keystore | openssl sha1 -binary | openssl base64

-alias の部分も keystore 作成時に指定した 文字と同じでないと正しい、ハッシュキーは作成されない。

cordova で windows アプリ

コマンドで環境を作る前に、visualStudioで環境が作れるのかを試す。

空プロジェクトを実行しようとすると以下のエラーが

DEP0100: ターゲット デバイスで開発者モードが有効になっていることを確認してください。エラー 800704C7 のため、開発者ライセンスを取得できませんでした。

「windows+x」 → 「設定」 → 「開発者向け」 → 「開発者モード」を選択
することで、実行できました。

WindowsアプリでもユニバーサルWindowsプラットフォーム(UWP)だから
なのでしょうね。

cordova-plugin-firebase が急にバージョンチェックでコンパイルできない

以前までコンパイルできていたプロジェクトが以下のようなエラーになる。

The library com.google.android.gms:play-services-measurement-base is being requested by various other libraries at [[15.0.2,15.0.2]], but resolves to 15.0.4. Disable the plugin and check your dependencies tree using ./gradlew :app:dependencies.

ネットで色々と調べていると、
https://github.com/arnesson/cordova-plugin-firebase/issues/1066

cordova-plugin-firebase で利用される個々のライブラリのバージョンを指定する必要があるとのこと
とりあえず、
cordova platform rm android
cordova plugin rm cordova-plugin-firebase
cordova plugin add cordova-plugin-firebase@latest –save
plugins\cordova-plugin-firebase\plugin.xml を編集して
====================================
<framework src=”com.google.android.gms:play-services-tagmanager:16+” />
<framework src=”com.google.firebase:firebase-core:16.0.8″ />
<framework src=”com.google.firebase:firebase-messaging:17.5.0″ />
<framework src=”com.google.firebase:firebase-config:16.4.1″ />
<framework src=”com.google.firebase:firebase-perf:16.2.4″ />
====================================
cordova platform add android@latest

cordova run android
だが、別のエラーが
platforms\android\build.gradle を編集して
====================================
classpath ‘com.google.gms:google-services:4.1.0’

classpath ‘com.google.gms:google-services:4.2.0’
====================================
cordova run android
だが、別のエラーが

以下のプラグインも追加で必要そうだ。
cordova plugin add cordova-android-firebase-gradle-release@3.0.0
cordova plugin add cordova-android-play-services-gradle-release@3.0.0
※最新で 4.0.0 だったが、3.0.0 でないとエラー。詳しくは調べずに、3.0.0 に。

根本的に cordova-plugin-firebase の更新を待つべきかもしれないが
依存関係を無視するという方法があり
platforms\android\app\build.gradle を編集して
最終行に以下を追加
====================================
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
====================================
cordova run android
で実行はできた。プッシュ通知は安定して送られるのか?
この解決はあかんのだろう。

facebook 指定されたURLは、アプリケーションの設定で許可されていません

テストユーザーを登録したのに、件名のようなエラーがでる。
Androidでテストするには Androidのプラットフォーム追加を developer facebook で行っておかないといけない。

アプリIDはanroidで開発者登録しておいた方が良いし
Androidなら、キーハッシュが必要。

from origin ‘null’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

サーバーに通信したところ、件名のエラーが発生。
セキュリティの問題、不特定多数の端末からアクセスされる前提なので

.htaccess に以下を追加すれば大丈夫。
Header append Access-Control-Allow-Origin: *

No installed build tools found. Install the Android build tools version 19.1.0 or higher.

windowsマシンに新たにcordova環境を作ろうとして
Android Studio を入れたらAndroid SDK もインストールされると思って安心していたら
上記のエラー、パスは勝手に設定してくれないみたい。
以下のパスを追加
C:\androidのSDKパス\platform-tools

cordova-plugin-firebase iOS バナーが表示されない

window.FirebasePlugin.onNotificationOpen のイベントは届くのに バナーが表示されない。 firebase 側の問題なのかなと思っていたが、 xcode でコンパイルを Legacy Build にするとで直った。 File -> Project Settings -> Build System を New Build System (Default) を Legacy Build System にすることで対応