1、完成对支付宝的申请这都不多说了 根据教程来就可以
附上支付宝文档https://opendocs.alipay.com/support/01razc
2、在react native 项目下android/app/build.graddle中添加代码
dependencies {
compile fileTree(dir: "libs", include: ["*.aar"]) // 若有这一行,则自动将libs下的所有jar包引入
compile files('libs/alipaysdk-15.8.06.211122170115.aar') //集成支付宝sdk添加这一行```
}
3、在android/app/目录下新建libs目录 存放从支付宝下载的sdk (alipaysdk-15.8.06.211122170115.aar)
附上连接 https://opendocs.alipay.com/open/02no45 可能以后会变 这个名字要跟第二步中的名字相同
4、在android/app/src/main/androidManifest.xml 中添加一下配置
<!-- 支付宝权限声明 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 支付宝 activity 声明 -->(用了aar 就没必要添加了)
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
5、修改android/build.gradle 下的gradle 的版本为4.0.1
6、修改android/gradle/wrapper/gradle-wrapper.properties下的distributionUrl 为gradle-6.2-all.zip版本
--------接下来进入我们java 部分-------
7、创建zhifubao包 在包下面创建ZhifubaoModule.java
package com.xxx.alipay; // 注意这里com.xxx要修改成你的包名
import com.alipay.sdk.app.PayTask;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableMap;
import java.util.Map;
public class ZhifubaoModule extends ReactContextBaseJavaModule {
public AlipayModule(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "Alipay";
}
@ReactMethod
public void pay(final String orderInfo, final Promise promise) {
//EnvUtils.EnvEnum.SANDBOX 设置为沙箱
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
Runnable payRunnable = new Runnable() {
@Override
public void run() {
WritableMap map = Arguments.createMap();
PayTask alipay = new PayTask(getCurrentActivity());
Map<String, String> result = alipay.payV2(orderInfo,true);
for (Map.Entry<String, String> entry: result.entrySet())
map.putString(entry.getKey(), entry.getValue());
promise.resolve(map);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
}
}
注意 是不是用沙箱就在这第7步
8、在同包下创建ZhifubaoPackage
package cn.*.alipay; //注意这里要修改你自己的包名
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ZhifubaoPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new AlipayModule(reactContext));
return modules;
}
}
9、
在react native 项目中创建 引入x.js
import { NativeModules } from 'react-native';
export default NativeModules.Alipay;
10、使用
”参数“ 服务端传递的
let ret = await Alipay.pay("参数")
至此完美结束