RN对接京东支付sdk(Android)

article/2025/9/12 7:24:40

京东支付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 {@Overridepublic List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {return Collections.emptyList();}@Overridepublic 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() {@Overridepublic 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);}}}};@Overridepublic String getName() {return "JDPayModule";}@ReactMethodpublic 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'});}});}}

 


http://chatgpt.dhexx.cn/article/6SUEskqs.shtml

相关文章

京东支付功能流程

1&#xff1a;目前市场上支付API的第三方很多&#xff0c;主流的接口有 支付宝&#xff0c;微信&#xff0c;京东&#xff0c;云闪付&#xff0c;银联 等等 主要包含 付款码支付 &#xff0c; JSAPI支付&#xff0c; APP支付&#xff0c;H5支付 &#xff0c; 小程序支付&…

微信公众账号自动回复小程序链接

<a data-miniprogram-appid"appid" data-miniprogram-path"路径" href"可以不写">小程序</a>效果图 文章引用于&#xff1a; http://dy.163.com/v2/article/detail/DR1H8P840511AOT5.html

微信开发者工具预览/真机调试报错SyntaxError: Invalid or unexpected token [1.06.2210310][win32-x64]

项目在微信开发者工具上能正常运行&#xff0c;但是当点击【预览】或者【真机调试】就会报错&#xff1a; SyntaxError: Invalid or unexpected token [1.06.2210310][win32-x64] 如果是本地调试的话&#xff0c;将以下这些勾选上。

问题解决:微信开发者工具显示清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]

问题&#xff1a; 在编译之前&#xff0c;会进行清除全部缓存操作&#xff0c;但是点击后出现清除清除登录状态失败。 清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]原因&#xff1a; 未连接网络&#xff0c;或者被你连接的网络拦截。 解决&#xf…

公众号自动回复消息添加跳转小程序链接

业务说明&#xff1a; 是要实现在小程序授权公众号收发消息功能 解决方案&#xff1a; 在用户关注后自动回复消息&#xff08;因为要实现授权前提是用户必须先关注了公众&#xff09;&#xff0c;在消息中添加可跳转小程序的链接&#xff0c;就可以将小程序的参数传到授权页面进…

传奇GOM原版引擎支持光柱吗?

很多新手不会设置GOM原版引擎的地面特效&#xff0c;或者说不知道在什么地方设置地面特效功能&#xff0c;今天传奇工具网就把设置方法分享给你们&#xff0c;需要先说明&#xff0c;免费版是不支持设置地面特效的&#xff0c;只有商业版才有这个功能。(文章未附插件下载&#…

使用 create-react-app 创建项目报错 无法加载文件 C:\Users\admin\AppData\Roaming\npm\create-react-app.ps1,因为在此系统上禁止运

报错信息如上 解决步骤 //打开Windows PowerSell //运行: //Set-ExecutionPolicy -Scope CurrentUser //出现ExecutionPolicy: 然后填入RemoteSigned//然后执行get-ExecutionPolicy //发现变成了RemoteSigned&#xff0c;就成功了之后再使用 create-react-app 创建项目就ok啦…

微信支付 公众号关联商户号

1.进入https://mp.weixin.qq.com/ 开发–基本配置–获取appid 2.进入https://pay.weixin.qq.com/ 产品中心–APPID授权管理 3.在下图输入appid 4.进入https://mp.weixin.qq.com/ 5.确认授权&#xff0c;授权成功

小程序授权流程,小程序登录过期,小程序二次请求

写这篇文章&#xff0c;主要是因为前阵子&#xff08;其实就是一两周前&#xff09;被大佬要求画出授权时序图&#xff0c;然后我不出意外被教训了一顿&#xff0c;哈哈&#xff0c;经过一顿梳理&#xff0c;整出了下图&#xff1a; 上图为相应的时序图&#xff08;字丑&#x…

uniapp-小程序发券插件-领券进入微信卡包

这两天有个需求,在小程序领券,然后该优惠券进入微信卡包. 官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_3_1.shtml 1.在小程序配置app.json 文件中加入如下配置&#xff1a; {"plugins": {"sendCoupon": {"version": …

wxFormBuilder + wxPython 工具开发第二章-日记本工具数据连接与展示

目录 前言 一、代码目录层级 二、数据库 三、数据表设计 四、展示数据 前言 上一章节已经介绍了如何将程序主窗口设计好生成python代码&#xff0c;运行成功的展示了窗体。 上一章内容地址&#xff1a; wxFormBuilder Python 工具开发第一章-拖出日记本图形界面_魂尾ac…

HBuidler运行小程序:rovider:wxf72d316417b6767f, version:1.0.1, AppID 不合法,invalid appid

解决&#xff1a; 这个是官方的demo,把对应的id值删掉就可以运行成功&#xff0c; 在微信开发者工具里&#xff0c;找到app.json, plugins里的2个广告配置删除可以运行成功。

wxFormBuilder + wxPython 工具开发第三章-日记本工具树节点增、改、删功能

目录 前言 一、添加树右击菜单 二、新增 1、实现二级日期节点新增 2、实现三级文章节点新增 三、修改 四、删除 前言 上一章节实现了对目记本表数据设计&#xff0c;数据库连接&#xff0c;数据展示的功能 wxFormBuilder Python 工具开发第二章-日记本工具数据连接与展…

进程和多线程的生命周期

进程和线程 进程 对于操作系统来说&#xff0c;一个任务就是一个进程&#xff08;Process&#xff09;。 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等。 内核观点&#xff1a;担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff09;的实…

Python 线程的生命周期

CPU 在轮换执行线程过程中&#xff0c;线程都经历了什么呢&#xff1f;线程从创建到消亡的整个过程&#xff0c;可能会历经 5 种状态&#xff0c;分别是新建、就绪、运行、阻塞和死亡&#xff0c;如图 1 所示。 图 1 线程状态转换图 线程的新建和就绪状态 无论是通过 Thread …

线程的生命周期和线程池的生命周期

目录 线程的生命周期 1、新建状态 2、就绪状态 3、运行状态 4、死亡状态 5、阻塞状态 线程池的生命周期 1、RUNNING 2、SHUTDOWN 3、STOP 4、TIDYING 5、TERMINATED 线程的生命周期 1、新建状态 通过new关键字创建出一个线程对象&#xff0c;没有启动之前&#xff…

Java多线程的生命周期

多线程的生命周期 1. 线程周期 NEW &#xff1a;新建状态。RUNNABLE&#xff1a;在JAVA虚拟机中执行的线程处于这个阶段BLOCKED&#xff1a;线程阻塞状态&#xff0c;被阻塞等待监视器锁定的线程处于这个状态。WAITING&#xff1a;正在等待另一个线程执行特定的动作的线程处于…

Java多线程(1):线程生命周期

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 从事Java开发这些年来&#xff0c;如果要问我Java当中最难的部分是什么&#xff1f;最有意思的部分是什么&#xff1f;最多人讨论的部分是什么&#xff1f;那我会…

多线程的生命周期

1、线程的生命周期及五种基本状态 新建状态&#xff08;New&#xff09;&#xff1a;当线程对象对创建后&#xff0c;即进入了新建状态&#xff0c;如&#xff1a;Thread t new Thread(); 就绪状态&#xff08;Runnable&#xff09;&#xff1a;当调用线程对象的start()方法&…

Java线程的生命周期(有代码演示)

文章目录 概览NEWRUNNABLEBLOCKEDWAITINGTIMED_WAITINGTERMINATED 概览 Java语言中&#xff0c;多线程是由线程的核心概念驱动的&#xff0c;而线程的生命周期会经历以下的不同状态。 Java java.lang.Thread类包含了一个静态类State&#xff0c;它定义了线程的状态&#xff…