diff --git a/android/build.gradle b/android/build.gradle index baca716..5b47a45 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -73,6 +73,10 @@ repositories { dependencies { //noinspection GradleDynamicVersion implementation 'com.facebook.react:react-native:+' // From node_modules + + // 支付宝 SDK AAR 包所需的配置 + // implementation (name: 'alipaySdk-15.7.7-20200702160044', ext: 'aar') + implementation fileTree(dir: "libs", include: ["*.aar"]) } def configureReactNativePom(def pom) { diff --git a/android/libs/alipaySdk-15.7.7-20200702160044.aar b/android/libs/alipaySdk-15.7.7-20200702160044.aar new file mode 100644 index 0000000..4b93f2c Binary files /dev/null and b/android/libs/alipaySdk-15.7.7-20200702160044.aar differ diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index c8c443d..e599a7b 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,4 +1,7 @@ + + + diff --git a/android/src/main/java/com/uiwjs/AlipayModule.java b/android/src/main/java/com/uiwjs/AlipayModule.java index 2098962..d030791 100644 --- a/android/src/main/java/com/uiwjs/AlipayModule.java +++ b/android/src/main/java/com/uiwjs/AlipayModule.java @@ -1,10 +1,18 @@ package com.uiwjs; +import com.alipay.sdk.app.AuthTask; +import com.alipay.sdk.app.PayTask; +import com.alipay.sdk.app.EnvUtils; +import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.Callback; +import java.util.Map; + public class AlipayModule extends ReactContextBaseJavaModule { private final ReactApplicationContext reactContext; @@ -19,9 +27,37 @@ public class AlipayModule extends ReactContextBaseJavaModule { return "Alipay"; } + // @ReactMethod + // public void sampleMethod(String stringArgument, int numberArgument, Callback callback) { + // // TODO: Implement some actually useful functionality + // callback.invoke("Received numberArgument: " + numberArgument + " stringArgument: " + stringArgument); + // } + @ReactMethod - public void sampleMethod(String stringArgument, int numberArgument, Callback callback) { - // TODO: Implement some actually useful functionality - callback.invoke("Received numberArgument: " + numberArgument + " stringArgument: " + stringArgument); + public void setAlipaySandbox(Boolean isSandbox) { + if (isSandbox) { + EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX); + } else { + EnvUtils.setEnv(EnvUtils.EnvEnum.ONLINE); + } } + @ReactMethod + public void alipay(final String orderInfo, final Callback promise) { + Runnable payRunnable = new Runnable() { + @Override + public void run() { + PayTask alipay = new PayTask(getCurrentActivity()); + Map result = alipay.payV2(orderInfo, true); + WritableMap map = Arguments.createMap(); + map.putString("memo", result.get("memo")); + map.putString("result", result.get("result")); + map.putString("resultStatus", result.get("resultStatus")); + promise.invoke(map); + } + }; + // 必须异步调用 + Thread payThread = new Thread(payRunnable); + payThread.start(); + } + }