Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
61b4490
Merge branch 'gitignore' into develop
Mar 25, 2020
c6e14c2
Refactor Android to V2 embedding, bump Stripe SDK
Mar 25, 2020
df01708
Expose potentiallyAvailableNativePayNetworks
Mar 26, 2020
be82ccb
Bump Dart version
Mar 26, 2020
2be29f6
Few Kotlin fixes in the Android size
Mar 26, 2020
9971b67
Bump the iOS Project
Mar 26, 2020
d406e12
Continue refactor & add new iOS method to create a payment method fro…
Mar 28, 2020
844d182
Kotlin 1.3.71
ened Mar 29, 2020
982fc5b
Implement "createPaymentMethodFromGooglePay"
ened Mar 29, 2020
eb8e8f9
refactor a few bits in the android plugin handler
ened Mar 29, 2020
a3e4362
Remove unused test
ened Mar 29, 2020
b5ce49f
adds e2e testing preparation
ened Mar 29, 2020
ae370c7
Resolves issues in Android side when creating a payment method using …
Mar 30, 2020
835699c
Bump Android SDK to 14.3, iOS to 19.1
ened Apr 21, 2020
d809f48
Change the Stripe object retrieval
Apr 24, 2020
01e67a2
Merge branch 'stripe-14.2' into stripe-sdk-bump
Apr 24, 2020
68533fa
Ensure activity result listeners are cancelled at the right time
May 2, 2020
9bb9b1c
bump Stripe SDKs again
May 2, 2020
8f4fdff
Improve error handling (WIP)
May 2, 2020
c8b22e2
do not require payumentmethod id when confirming payment intent
May 19, 2020
ee6fc91
merged
Jun 8, 2020
d1de418
Tiny changes
Jun 8, 2020
3d54eab
ensure to return results for setOptions & setStripeAccount
Jun 12, 2020
5c9dae6
Merge branch 'master' into stripe-sdk-bump
Jun 12, 2020
f5130dd
Merge branch 'master' into stripe-sdk-bump
ened Dec 6, 2020
fe048c0
Merge branch 'stripe-sdk-bump' of github.com:ened/flutter_stripe_paym…
ened Dec 6, 2020
373583d
Use e2e replacement (integration_test)
Dec 17, 2020
379c716
Bump to minSdk21 as stripe Android requires it now
Dec 17, 2020
59be805
Bump key dependencies
Dec 17, 2020
360fd33
Migrate Android side to new methods & complete the transition to gene…
Dec 17, 2020
f1c6f1b
Migrate iOS side
Dec 17, 2020
e7ad8c7
Few cleanups
Dec 17, 2020
91f9d11
Merge branch 'stripe-sdk-bump' of github.com:ened/flutter_stripe_paym…
Dec 17, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.

version:
revision: 2294d75bfa8d067ba90230c0fc2268f3636d7584
channel: beta

project_type: plugin
15 changes: 10 additions & 5 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ buildscript {
}

dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.70"
classpath 'com.android.tools.build:gradle:3.6.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10"
classpath 'com.android.tools.build:gradle:3.6.3'
}
}

Expand Down Expand Up @@ -47,6 +47,11 @@ android {
disable 'InvalidPackage'
}

compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}

buildTypes {
release {
// TODO: Add your own signing config for the release build.
Expand All @@ -68,8 +73,8 @@ android {
}

dependencies {
api 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.70'
api 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'com.stripe:stripe-android:10.4.6'
implementation 'com.google.android.gms:play-services-wallet:18.0.0'
implementation 'com.stripe:stripe-android:16.1.1'
implementation 'com.google.android.gms:play-services-wallet:18.1.2'
}
20 changes: 1 addition & 19 deletions android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.jonasbark.stripepayment">
package="de.jonasbark.stripe_payment">

<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
Expand All @@ -9,24 +9,6 @@
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />

<activity
android:name="com.gettipsi.stripe.OpenBrowserActivity"
android:exported="false"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:exported="true"
android:launchMode="singleTask"
android:name="com.gettipsi.stripe.RedirectUriReceiver"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="${tipsiStripeRedirectScheme}" />
</intent-filter>
</activity>
</application>

</manifest>
47 changes: 33 additions & 14 deletions android/src/main/java/com/facebook/react/bridge/Promise.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,46 @@
package com.facebook.react.bridge;

import android.os.Handler;
import io.flutter.plugin.common.MethodChannel;

/**
* Created by FFuF, Jonas Bark on 2019-10-02.
*/
/** Created by FFuF, Jonas Bark on 2019-10-02. */
public class Promise {

final MethodChannel.Result result;
private final MethodChannel.Result result;

public Promise(MethodChannel.Result result) {
this.result = result;
}
private final Handler handler = new Handler();

public void resolve(Object result) {
this.result.success(result);
}
private Runnable whenComplete;

public Promise(MethodChannel.Result result) {
this.result = result;
}

public void setWhenComplete(Runnable whenComplete) {
this.whenComplete = whenComplete;
}

public void reject(String errorCode, String message) {
this.result.error(errorCode, message, null);
public void resolve(Object result) {
this.result.success(result);

if (whenComplete != null) {
handler.post(whenComplete);
}
}

public void reject(String errorCode) {
reject(errorCode, null, null);
}

public void reject(String errorCode, String message) {
reject(errorCode, message, null);
}

public void reject(String errorCode, String message, Object details) {
result.error(errorCode, message, details);

public void reject(String errorCode) {
this.reject(errorCode, null);
if (whenComplete != null) {
handler.post(whenComplete);
}
}
}
55 changes: 46 additions & 9 deletions android/src/main/java/com/gettipsi/stripe/Errors.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package com.gettipsi.stripe;

import android.util.Log;
import androidx.annotation.NonNull;

import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReadableMap;
import com.gettipsi.stripe.util.ArgCheck;

import com.stripe.android.StripeError;
import com.stripe.android.exception.StripeException;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
* Created by ngoriachev on 30/07/2018.
*/

/** Created by ngoriachev on 30/07/2018. */
public final class Errors {

private static final String TAG = "Errors";
private static final Map<String, String> exceptionNameToErrorCode = new HashMap<>();

public static final String CANCELLED = "cancelled";
Expand All @@ -32,15 +32,53 @@ public final class Errors {
exceptionNameToErrorCode.put("APIException", "api");
}

public static void raiseFlutterError(Exception e, Promise promise) {
if (e instanceof StripeException) {
final StripeException se = (StripeException) e;
final Map<String, Object> details = new HashMap<>();

String code = e.getClass().toString();
if (se.getStripeError() != null) {
details.put("stripeError", decode(se.getStripeError()));
code = se.getStripeError().getCode();
}

if (se.getRequestId() != null) {
details.put("requestId", se.getRequestId());
}
details.put("statusCode", se.getStatusCode());

promise.reject(code, e.getMessage(), details);
}
}
private static String toString(Object o, String nullDefault) {
return (o != null) ? o.toString() : nullDefault;
}

private static Map<String, Object> decode(StripeError error) {
final Map<String, Object> map = new HashMap<>();

map.put("type", toString(error.getType(), ""));
map.put("message", toString(error.getMessage(), ""));
map.put("code", toString(error.getCode(), ""));
map.put("param", toString(error.getParam(), ""));
map.put("declineCode", toString(error.getDeclineCode(), ""));
map.put("charge", toString(error.getCharge(), ""));
map.put("docUrl", toString(error.getDocUrl(), ""));

return map;
}

public static String toErrorCode(@NonNull Exception exception) {
ArgCheck.nonNull(exception);
String simpleName = exception.getClass().getSimpleName();
Log.d(TAG, "Simple Error Name: " + simpleName);
String errorCode = exceptionNameToErrorCode.get(simpleName);

if (errorCode == null) {
errorCode = simpleName;
}
// ArgCheck.nonNull(errorCode, simpleName);
// ArgCheck.nonNull(errorCode, simpleName);

return errorCode;
}
Expand All @@ -52,5 +90,4 @@ static String getErrorCode(@NonNull ReadableMap errorCodes, @NonNull String erro
static String getDescription(@NonNull ReadableMap errorCodes, @NonNull String errorKey) {
return errorCodes.getMap(errorKey).getString("description");
}

}
Loading