RN对接京东支付sdk(Android)

京东支付Android接入说明文档

1、根据 京东支付Android接入说明文档 集成sdk依赖的jar包,配置相关的内容(主要根据文档一步一步配置就行,这里就不细说了,本章主要是关于使用RN调用sdk)

 

2、在../android/app/src/java 下面创建一个类实现接口 ReactPackage 包管理器,并把上面创建的类加到原生模块(NativeModule)列表中

JDPayPackage.java
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 JDPayPackage 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 JDPayModule(reactContext));

        return modules;
     }
 }
JDPayModule.java
import android.app.Activity;
import android.content.Intent;
import android.util.Log;

import com.facebook.react.bridge.ActivityEventListener;
import com.facebook.react.bridge.BaseActivityEventListener;
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.Callback;
import com.jdpaysdk.author.Constants;
import com.jdpaysdk.author.JDPayAuthor;

public class JDPayModule extends ReactContextBaseJavaModule{

    private static Activity ma;
    private static Callback callback;

    public static void initSocialSDK(Activity activity){
        ma = activity;
    }

    public JDPayModule(ReactApplicationContext reactContext) {
        super(reactContext);
        reactContext.addActivityEventListener(mActivityEventListener);
    }

    private final ActivityEventListener mActivityEventListener = new BaseActivityEventListener() {
        @Override
        public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
            if(data != null){
                if (Constants.PAY_RESPONSE_CODE == resultCode) {//返回信息接收
                    String result = data.getStringExtra(JDPayAuthor.JDPAY_RESULT);
                    Log.d("JD_PAY", "支付结果:" + result);
                    callback.invoke(result);
                }
            }
        }
    };

    @Override
    public String getName() {
        return "JDPayModule";
    }


    @ReactMethod
    public void addEvent(ReadableMap payParams, Callback returnCallback) {
        Log.d("JD_PAY", "入参:" + payParams.toString());
        JDPayAuthor jdPayAuthor = new JDPayAuthor();
        String extraInfo = "";//json数据格式,
        jdPayAuthor.author(ma, payParams.getString("orderId"), payParams.getString("merchant"), payParams.getString("appId"), payParams.getString("signData"), extraInfo);
        callback = returnCallback;
    }

}

3、MainActivity里初始化一个页面容器

 4、将创建的包管理器添加到 ReactPackage 列表中(getPackages 方法)

 

5、唤起京东支付 (jdpay接口需要生成一个京东订单,返回商户id、订单id和京东支付MD5的密钥)

MD5的密钥需要通过MD5进行加密生产签名

   const { code, context, message } = await webapi.jdpay(tid);
    if (code == config.SUCCESS_CODE) {
      const text =
        'merchant=' +
        context.merchant +
        '&orderId=' +
        context.orderId +
        '&key=' +
        Const.MD5_KET;
      const signData = MD5.hex_md5(text).toLowerCase();
      const payRequest = {
        orderId: context.orderId,
        merchant: context.merchant,
        appId: Const.APP_ID,
        signData: signData
      };
      let JDPayModule;
      if (Platform.OS === 'Android') {
        JDPayModule = NativeModules.JDPayModule;
        JDPayModule.addEvent(payRequest, (result) => {
          console.log('result====>', result);
          if (JSON.parse(result).payStatus == 'JDP_PAY_SUCCESS') {
            msg.emit('router: goToNext', {
              routeName: 'PaySuccess',
              tid: tid,
              payType: 'online'
            });
          }
        });
      }
    }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值