diff --git a/.DS_Store b/.DS_Store
index c171d40..95008b0 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/README.md b/README.md
index 9189783..97f12b1 100644
--- a/README.md
+++ b/README.md
@@ -88,6 +88,16 @@ $ react-native link react-native-puti-pay
#### Android
+在android/app/build.gradle下
+```
+ repositories {
+ flatDir {
+ dirs 'libs','../../node_modules/react-native-puti-pay/android/libs'
+ }
+}
+
+```
+
在包名目录下创建wxapi文件夹,新建一个名为`WXPayEntryActivity`的activity继承 `com.puti.paylib`包名下的`XWXPayEntryActivity`。
```
@@ -169,4 +179,4 @@ $ react-native link react-native-puti-pay
2. ios 支付完没有返回商家按钮
ios应用间跳转判断跳转到哪个应用是通过上面ios配置第三部设置的URL Scheme区分的。`XPay.setWxId()`,`XPay.setAlipayScheme()` 方法都是通过支付的sdk将Scheme传给微信支付宝,支付成功后才能正确跳转回应用,也才有返回商家按钮
- 所有要是没有此功能,请再对照文档检查一遍
+ 所有要是没有此功能,请再对照文档检查一遍
diff --git a/android/.DS_Store b/android/.DS_Store
index bc8ff35..5100725 100644
Binary files a/android/.DS_Store and b/android/.DS_Store differ
diff --git a/android/.gradle/7.0-rc-1/dependencies-accessors/dependencies-accessors.lock b/android/.gradle/7.0-rc-1/dependencies-accessors/dependencies-accessors.lock
new file mode 100644
index 0000000..727b5e8
Binary files /dev/null and b/android/.gradle/7.0-rc-1/dependencies-accessors/dependencies-accessors.lock differ
diff --git a/android/.gradle/7.0-rc-1/dependencies-accessors/gc.properties b/android/.gradle/7.0-rc-1/dependencies-accessors/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/android/.gradle/7.0-rc-1/fileChanges/last-build.bin b/android/.gradle/7.0-rc-1/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/android/.gradle/7.0-rc-1/fileChanges/last-build.bin differ
diff --git a/android/.gradle/7.0-rc-1/fileHashes/fileHashes.lock b/android/.gradle/7.0-rc-1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..f5a26da
Binary files /dev/null and b/android/.gradle/7.0-rc-1/fileHashes/fileHashes.lock differ
diff --git a/android/.gradle/7.0-rc-1/gc.properties b/android/.gradle/7.0-rc-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/android/.gradle/checksums/checksums.lock b/android/.gradle/checksums/checksums.lock
new file mode 100644
index 0000000..2ee2fdf
Binary files /dev/null and b/android/.gradle/checksums/checksums.lock differ
diff --git a/android/.gradle/configuration-cache/gc.properties b/android/.gradle/configuration-cache/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/android/.gradle/vcs-1/gc.properties b/android/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/android/.project b/android/.project
new file mode 100644
index 0000000..ce3ae0a
--- /dev/null
+++ b/android/.project
@@ -0,0 +1,28 @@
+
+
+ android
+ Project android created by Buildship.
+
+
+
+
+ org.eclipse.buildship.core.gradleprojectbuilder
+
+
+
+
+
+ org.eclipse.buildship.core.gradleprojectnature
+
+
+
+ 1631606901641
+
+ 30
+
+ org.eclipse.core.resources.regexFilterMatcher
+ node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
+
+
+
+
diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 0000000..e0001ef
--- /dev/null
+++ b/android/.settings/org.eclipse.buildship.core.prefs
@@ -0,0 +1,13 @@
+arguments=
+auto.sync=false
+build.scans.enabled=false
+connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(7.0-rc-1))
+connection.project.dir=
+eclipse.preferences.version=1
+gradle.user.home=
+java.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home
+jvm.arguments=
+offline.mode=false
+override.workspace.settings=true
+show.console.view=true
+show.executions.view=true
diff --git a/android/build.gradle b/android/build.gradle
index cb2b0d0..046229c 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -14,6 +14,13 @@ android {
versionCode 1
versionName "1.0"
}
+ repositories {
+ flatDir {
+ dirs 'libs'
+ }
+ }
+ sourceSets.main.jniLibs.srcDirs=['libs']
+
buildTypes {
release {
minifyEnabled false
@@ -23,8 +30,9 @@ android {
}
dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.facebook.react:react-native:+'
// From node_modules
- compile files('libs/alipaySdk-20180601.jar')
+ compile (name: 'alipaysdk-15.8.03.210428205839', ext: 'aar')
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
diff --git a/android/libs/alipaySdk-20180601.jar b/android/libs/alipaySdk-20180601.jar
deleted file mode 100644
index 8af9c90..0000000
Binary files a/android/libs/alipaySdk-20180601.jar and /dev/null differ
diff --git a/android/libs/alipaysdk-15.8.03.210428205839.aar b/android/libs/alipaysdk-15.8.03.210428205839.aar
new file mode 100644
index 0000000..b2cf3f4
Binary files /dev/null and b/android/libs/alipaysdk-15.8.03.210428205839.aar differ
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index d9e2366..c15b4ae 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -13,18 +13,6 @@
android:label="@string/app_name"
android:supportsRtl="true">
-
-
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 0000000..2c74caf
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,29 @@
+type wxParams = {
+ partnerId: string;
+ prepayId: string;
+ packageValue: string;
+ nonceStr: string;
+ timeStamp: string;
+ sign: string;
+};
+type aliRes = {
+ memo: string;
+ result: string;
+ resultStatus: string;
+};
+type wxRes = {
+ errStr: string;
+ errCode: string;
+ type: string;
+};
+export declare class XPay {
+ static alipay: (orderInfo: string, callback: (res: aliRes) => void) => void;
+
+ static setWxId: (id: string) => void;
+
+ static setAlipayScheme: (scheme: string) => void;
+
+ static setAlipaySandbox: (isSandBox: boolean) => void;
+
+ static wxPay: (params: wxParams, callback: (res: wxRes) => void) => void;
+}
diff --git a/index.js b/index.js
index 0c00e18..45341fd 100644
--- a/index.js
+++ b/index.js
@@ -4,47 +4,44 @@
* GitHub:https://github.com/puti94
* Email:1059592160@qq.com
*/
-import {NativeModules, Platform} from 'react-native'
+import { NativeModules, Platform } from "react-native";
-export default class XPay {
-
- /**
- * 支付宝Android端支付
- * @param orderInfo 订单号
- * @param callback 支付宝回调结果 详情见 https://docs.open.alipay.com/204/105301
- */
- static alipay(orderInfo, callback) {
- NativeModules.PutiPay.alipay(orderInfo, callback)
- }
+export class XPay {
+ /**
+ * 支付宝Android端支付
+ * @param orderInfo 订单号
+ * @param callback 支付宝回调结果 详情见 https://docs.open.alipay.com/204/105301
+ */
+ static alipay(orderInfo, callback) {
+ NativeModules.PutiPay.alipay(orderInfo, callback);
+ }
+ /**
+ * 设置微信APPID
+ * @param id
+ */
+ static setWxId(id) {
+ NativeModules.PutiPay.setWxId(id);
+ }
- /**
- * 设置微信APPID
- * @param id
- */
- static setWxId(id) {
- NativeModules.PutiPay.setWxId(id);
- }
-
- /**
- * 设置支付宝跳转Scheme
- * @param scheme
- */
- static setAlipayScheme(scheme) {
- if (Platform.OS === 'ios')
- NativeModules.PutiPay.setAlipayScheme(scheme);
- }
+ /**
+ * 设置支付宝跳转Scheme
+ * @param scheme
+ */
+ static setAlipayScheme(scheme) {
+ if (Platform.OS === "ios") NativeModules.PutiPay.setAlipayScheme(scheme);
+ }
- /**
- * 设置支付宝沙箱环境,仅Android
- * @param isSandBox
- */
- static setAlipaySandbox(isSandBox) {
- if (Platform.OS === 'android')
- NativeModules.PutiPay.setAlipaySandbox(isSandBox);
- }
+ /**
+ * 设置支付宝沙箱环境,仅Android
+ * @param isSandBox
+ */
+ static setAlipaySandbox(isSandBox) {
+ if (Platform.OS === "android")
+ NativeModules.PutiPay.setAlipaySandbox(isSandBox);
+ }
- /**
+ /**
* 微信支付
* 传入参数示例
* {
@@ -62,7 +59,7 @@ export default class XPay {
* -1:原因:支付错误,可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等
* -2: 原因 用户取消,无需处理。发生场景:用户不支付了,点击取消,返回APP
*/
- static wxPay(params, callBack) {
- NativeModules.PutiPay.wxPay(params, callBack)
- }
-}
\ No newline at end of file
+ static wxPay(params, callBack) {
+ NativeModules.PutiPay.wxPay(params, callBack);
+ }
+}
diff --git a/ios/AlipaySDK.bundle/bridge.js b/ios/AlipaySDK.bundle/bridge.js
old mode 100755
new mode 100644
index c3d3c21..0d37a94
--- a/ios/AlipaySDK.bundle/bridge.js
+++ b/ios/AlipaySDK.bundle/bridge.js
@@ -1 +1 @@
-(function(){if(window.AlipayJSBridge){return}function alipayjsbridgeFunc(url){var iframe=document.createElement("iframe");iframe.style.width="1px";iframe.style.height="1px";iframe.style.display="none";iframe.src=url;document.body.appendChild(iframe);setTimeout(function(){document.body.removeChild(iframe)},100)}window.alipayjsbridgeSetTitle=function(title){document.title=title;alipayjsbridgeFunc("alipayjsbridge://setTitle?title="+encodeURIComponent(title))};window.alipayjsbridgeRefresh=function(){alipayjsbridgeFunc("alipayjsbridge://onRefresh?")};window.alipayjsbridgeBack=function(){alipayjsbridgeFunc("alipayjsbridge://onBack?")};window.alipayjsbridgeExit=function(bsucc){alipayjsbridgeFunc("alipayjsbridge://onExit?bsucc="+bsucc)};window.alipayjsbridgeShowBackButton=function(bshow){alipayjsbridgeFunc("alipayjsbridge://showBackButton?bshow="+bshow)};window.AlipayJSBridge={version:"2.0",addListener:addListener,hasListener:hasListener,callListener:callListener,callNativeFunc:callNativeFunc,callBackFromNativeFunc:callBackFromNativeFunc};var uniqueId=1;var h5JsCallbackMap={};function iframeCall(paramStr){var iframe=document.createElement("iframe");iframe.style.width="1px";iframe.style.height="1px";iframe.style.display="none";iframe.src="alipayjsbridge://callNativeFunc?"+paramStr;var parent=document.body||document.documentElement;parent.appendChild(iframe);setTimeout(function(){parent.removeChild(iframe)},0)}function callNativeFunc(nativeFuncName,data,h5JsCallback){var h5JsCallbackId="";if(h5JsCallback){h5JsCallbackId="cb_"+(uniqueId++)+"_"+new Date().getTime();h5JsCallbackMap[h5JsCallbackId]=h5JsCallback}var dataStr="";if(data){dataStr=encodeURIComponent(JSON.stringify(data))}var paramStr="func="+nativeFuncName+"&cbId="+h5JsCallbackId+"&data="+dataStr;iframeCall(paramStr)}function callBackFromNativeFunc(h5JsCallbackId,data){var h5JsCallback=h5JsCallbackMap[h5JsCallbackId];if(h5JsCallback){h5JsCallback(data);delete h5JsCallbackMap[callbackId]}}var h5ListenerMap={};function addListener(jsFuncName,jsFunc){h5ListenerMap[jsFuncName]=jsFunc}function hasListener(jsFuncName){var jsFunc=h5ListenerMap[jsFuncName];if(!jsFunc){return false}return true}function callListener(h5JsFuncName,data,nativeCallbackId){var responseCallback;if(nativeCallbackId){responseCallback=function(responseData){var dataStr="";if(responseData){dataStr=encodeURIComponent(JSON.stringify(responseData))}var paramStr="func=h5JsFuncCallback"+"&cbId="+nativeCallbackId+"&data="+dataStr;iframeCall(paramStr)}}var h5JsFunc=h5ListenerMap[h5JsFuncName];if(!h5JsFunc){console.log("AlipayJSBridge: no h5JsFunc ",h5JsFuncName+data)}else{h5JsFunc(data,responseCallback)}}var event;if(window.CustomEvent){event=new CustomEvent("alipayjsbridgeready")}else{event=document.createEvent("Event");event.initEvent("alipayjsbridgeready",true,true)}document.dispatchEvent(event);setTimeout(excuteH5InitFuncs,0);function excuteH5InitFuncs(){if(window.AlipayJSBridgeInitArray){var h5InitFuncs=window.AlipayJSBridgeInitArray;delete window.AlipayJSBridgeInitArray;for(var i=0;i
+
+@class AFServiceResponse;
+
+/**
+ SDK支持的业务枚举值
+
+ - AFServiceEInvoice: 电子发票
+ - AFServiceAuth: 账户授权
+ */
+typedef NS_ENUM(NSUInteger, AFService) {
+ AFServiceEInvoice,
+ AFServiceAuth,
+ AFServiceDeduct
+};
+
+
+extern NSString * const kAFServiceOptionBizParams; // 钱包服务调用入参
+extern NSString * const kAFServiceOptionCallbackScheme; // 业务回跳当前app的scheme
+extern NSString * const kAFServiceOptionNotUseLanding; // 不使用支付宝提示下载页做补偿,为true时需要商户自己处理用户未安装支付宝的情况
+extern NSString * const kAFServiceBizParamsKeyUrl; // 独立签约入参url
+
+typedef void(^AFServiceResultBlock)(AFServiceResponse *response);
+
+@interface AFServiceCenter : NSObject
+
+/**
+ 调用钱包服务
+
+ @param service 业务service, 见AFService枚举值
+ @param params 参数Dictionary, key值详情参见kAFServiceOptionBizParams、kAFServiceOptionCallbackScheme注释
+ @param block 业务结果回调的block, block参数是AFServiceResponse类型,业务结果通过result属性获取,如果未用户未安装支付宝并且kAFServiceOptionNotUseLanding未设置为true,会使用H5landing页做补偿,这种情况下不会有block回调结果。
+ */
++ (void)callService:(AFService)service
+ withParams:(NSDictionary *)params
+ andCompletion:(AFServiceResultBlock)block;
+
+
+/**
+ 处理钱包服务回跳APP的URL
+
+ @param url 回跳URL
+ @param block 业务结果回掉的block,详情见调用接口入参上的block。注意此接口上的block只有在跳转钱包后,当前APP被系统回收的情况下回跳才生效
+ */
++ (void)handleResponseURL:(NSURL *)url
+ withCompletion:(AFServiceResultBlock)block;
+
+@end
diff --git a/ios/AlipaySDK.framework/Headers/AFServiceResponse.h b/ios/AlipaySDK.framework/Headers/AFServiceResponse.h
new file mode 100644
index 0000000..801fbf8
--- /dev/null
+++ b/ios/AlipaySDK.framework/Headers/AFServiceResponse.h
@@ -0,0 +1,43 @@
+//
+// AFServiceResponse.h
+// AFServiceSDK
+//
+// Created by jiajunchen on 08/01/2018.
+// Copyright © 2018 antfin. All rights reserved.
+//
+
+#import
+
+/**
+ 钱包服务调用结果状态吗
+
+ - AFResSuccess: 默认值,业务调用成功,结果数据参见result字段
+ - AFResInvalidService: service枚举值错误
+ - AFResInvalidURL: 钱包回跳URL错误
+ - AFResRepeatCall: 业务重复调用(3s内)
+ - AFResOpenURLErr: 跳转失败
+ */
+typedef NS_ENUM(NSUInteger, AFResCode) {
+ AFResSuccess = 0,
+ AFResInvalidService = 100,
+ AFResInvalidURL,
+ AFResRepeatCall,
+ AFResOpenURLErr,
+};
+
+
+@interface AFServiceResponse : NSObject
+
+
+/**
+ 业务调用状态吗
+ */
+@property (nonatomic, assign) AFResCode responseCode;
+
+
+/**
+ 业务结果Dictionary, 内容请参考具体业务方接入文档
+ */
+@property (readonly) NSDictionary *result;
+
+@end
diff --git a/ios/AlipaySDK.framework/Headers/AlipaySDK.h b/ios/AlipaySDK.framework/Headers/AlipaySDK.h
index 6b3f762..27dc781 100644
--- a/ios/AlipaySDK.framework/Headers/AlipaySDK.h
+++ b/ios/AlipaySDK.framework/Headers/AlipaySDK.h
@@ -9,11 +9,13 @@
////////////////////////////////////////////////////////
///////////////// 支付宝标准版本支付SDK ///////////////////
-/////////// version:15.5.9 motify:2018.11.26///////////
+///////// version:15.8.03 motify:2021.04.29///////////
////////////////////////////////////////////////////////
#import
#import "APayAuthInfo.h"
+#import "AFServiceCenter.h"
+#import "AFServiceResponse.h"
typedef void(^CompletionBlock)(NSDictionary *resultDic);
@@ -99,8 +101,8 @@ typedef enum {
*
* @param infoStr 授权请求信息字串
* @param schemeStr 调用授权的app注册在info.plist中的scheme
- * @param completionBlock 授权结果回调,若在授权过程中,调用方应用被系统终止,则此block无效,
- 需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
+ * @param completionBlock 授权结果回调,需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
+ * 若在授权过程中,调用方应用被系统终止则此block无效(此时会调用'processAuth_V2Result:standbyCallback:'传入的standbyCallback)
*/
- (void)auth_V2WithInfo:(NSString *)infoStr
fromScheme:(NSString *)schemeStr
@@ -110,7 +112,7 @@ typedef enum {
* 处理支付宝app授权后跳回商户app携带的授权结果Url
*
* @param resultUrl 支付宝app返回的授权结果url
- * @param completionBlock 授权结果回调
+ * @param completionBlock 授权结果回调,用于处理跳转支付宝授权过程中商户APP被系统终止的情况
*/
- (void)processAuth_V2Result:(NSURL *)resultUrl
standbyCallback:(CompletionBlock)completionBlock;
@@ -200,4 +202,22 @@ typedef enum {
* @param block 更新请求结果回调
*/
- (void)fetchSdkConfigWithBlock:(void(^)(BOOL success))block;
+
+
+typedef void(^APLogBlock)(NSString *log);
+
+/**
+* 接收AlipaySDK的log信息
+*
+* @param logBlock 打印log的回调block
+*/
++ (void)startLogWithBlock:(APLogBlock)logBlock;
+
+/**
+* 停止输出log,会释放logBlock
+*
+*
+*/
++ (void)stopLog;
+
@end
diff --git a/package.json b/package.json
index 6ff4f8e..796a4cc 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,7 @@
"version": "1.4.0",
"description": "微信和支付宝支付的react-native模块",
"main": "index.js",
+ "types": "index.d.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},