Repository: hhjjj1010/cordova-plugin-alipay-v2 Branch: master Commit: 029780ca6407 Files: 16 Total size: 14.3 MB Directory structure: gitextract_t7zpw4hu/ ├── README.md ├── package.json ├── plugin.xml ├── src/ │ ├── android/ │ │ ├── PayResult.java │ │ ├── alipay.gradle │ │ ├── alipay.java │ │ └── lib/ │ │ └── alipaysdk-15.8.00.201112210139.aar │ └── ios/ │ ├── alipay.m │ └── lib/ │ ├── AlipaySDK.bundle/ │ │ └── bridge.js │ └── AlipaySDK.framework/ │ ├── AlipaySDK │ ├── AlipaySDK-inside-Info.plist │ └── Headers/ │ ├── AFServiceCenter.h │ ├── AFServiceResponse.h │ ├── APayAuthInfo.h │ └── AlipaySDK.h └── www/ └── alipay.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # cordova-plugin-alipay-v2(更新至alipaysdk-15.8.00.201112210139.aar) 支付宝的cordova插件其实在github上已经有很多了,但是都已经是以前的版本了。 在2016年11月的时候支付宝进行了一次更新,支付宝的SDK升级到2.0版本。 以前在app中使用支付宝进行支付叫做移动支付,11月之后更名为APP支付。 __本插件仅支持《APP支付》,不支持移动支付__ ## 2020-12-05 更新日志 - SDK 更新至alipaysdk-15.8.00.201112210139.aar。 - 将 AlipaySDK 中的 UIWebView 更换为 WKWebView。 - 支持 iOS Universal Link,提高支付稳定性。 ## 2019-07-31 更新日志 - Android SDK 更新至alipaySdk-15.6.5-20190718211148.aar。 - iOS SDK 已适配 iPhoneX,支持 IPv6_only 网络和 ATS 安全标准。 ## 2018-11-28 更新日志 最近总有人问在iOS上没有回调的问题,真机实测不存在该问题。 __*第一步:在Xcode中检查project的Bundle Identifier是否与其他项目重名。*__ __*第二步:在Xcode中检查project的URL Types上alipay的URL Schemes格式是否正确。*__ Xcode的URL Types上alipay的URL Schemes正确格式应为 __ali2xxxxxxxxxxxxxxx__。 2开头的这串数字是你的APP_ID,英文字母与数字之间没有任何符号!!! __*第三步:检查调用插件写法是否正确。*__ ionic1上的建议写法 ``` js var payInfo = "xxx"; cordova.plugins.alipay.payment(payInfo, function success(e){ // TODO 支付成功 },function error(e){ //TODO 支付失败 console.log("支付失败" + e.resultStatus); }); ``` ionic3上的建议写法 ```js let payInfo = "xxx"; cordova.plugins.alipay.payment(payInfo, (e) => { //TODO 支付成功 }, (e) => { //TODO 支付失败 console.log(e.resultStatus); }); ``` *** # 注意 插件从v1.0.0开始支持cordova-android 7.0.0,因为cordova-android 7.0.0更改了android项目的文件目录,所以不再兼容以前的老版本,升级前请务必注意。 如果项目是之前的cordova-android老版本,请安装插件以前的老版本,在安装的时候带上版本号即可,cordova-plugin-alipay-v2@0.0.4。 #功能说明 1. 根据支付宝的说明文档的建议,为保证安全,签名都放到后端去做,前端只需要接收后台传入签名字符串,使用该插件调用支付宝SDK完成支付 2. APP_ID:对应开放平台中应用的APPID,主要用于iOS平台Xcode构建URL Schemes *** # 支持平台 1. android (alipaySdk-15.6.5-20190718211148.aar) 2. iOS (Xcode版本须大于7.0,iOS版本须大于或等于9.0) *** # 安装 ## 在线安装 npm安装 ```shell cordova plugin add cordova-plugin-alipay-v2 --variable APP_ID=your AppId ``` git安装 ``` shell cordova plugin add https://github.com/hhjjj1010/cordova-plugin-alipay-v2.git --variable APP_ID=your AppId ``` ## 本地安装 下载插件到本地 ``` shell cordova plugin add /your/local/path --variable APP_ID=your AppId ``` *** # 使用 API ## 第一步:订单在服务端签名生成订单信息,具体请参考官网进行[订单签名](https://docs.open.alipay.com/204/105465/) ### 带有签名信息的订单信息示例 ``` js var payInfo = "app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22IQJZSRC1YMQB5HU%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fdomain.merchant.com%2Fpayment_notify&sign_type=RSA2×tamp=2016-08-25%2020%3A26%3A31&version=1.0&sign=cYmuUnKi5QdBsoZEAbMXVMmRWjsuUj%2By48A2DvWAVVBuYkiBj13CFDHu2vZQvmOfkjE0YqCUQE04kqm9Xg3tIX8tPeIGIFtsIyp%2FM45w1ZsDOiduBbduGfRo1XRsvAyVAv2hCrBLLrDI5Vi7uZZ77Lo5J0PpUUWwyQGt0M4cj8g%3D"; ``` ## 第二步:调用支付插件 __ionic1 代码示例__ ``` js cordova.plugins.alipay.payment(payInfo,function success(e){ // 支付成功 },function error(e){ //TODO 支付失败 console.log("支付失败" + e.resultStatus); }); ``` ### ionic3 代码示例 ionic3上使用时须在import结束后添加 declare let cordova。 ``` js cordova.plugins.alipay.payment(payInfo, (e) => { //TODO 支付成功 }, (e) => { //TODO 支付失败 console.log("支付失败" + e.resultStatus); }); ``` ### 回调函数参数说明 e.resultStatus 状态代码 e.result 本次操作返回的结果数据 e.memo 提示信息 e.resultStatus:9000 订单支付成功;8000 正在处理中;调用function success error.resultStatus:4000 订单支付失败;6001 用户中途取消;6002 网络连接出错 ;调用function error 当e.resultStatus为9000时,请去服务端验证支付结果,建议商户依赖异步通知 同步返回的结果必须放置到服务端进行验证,具体请查看[验证的规则](https://doc.open.alipay.com/doc2/detail.htmspm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&docType=1) 。 *** # TIPS ## 1. iOS上支付成功之后无法回调 Xcode的URL Types上alipay的URL Schemes正确格式应为ali2xxxxxxxxxxxxxxx。2开头的这串数字是你的APP_ID,英文字母与数字之间没有任何符号!!! ## 2. 沙箱环境 在我个人的开发过程中确实是没有使用到沙箱环境,都是直接真实支付1分钱来做测试。 如要使用沙箱环境,请自行参考[官方文档](https://docs.open.alipay.com/200/105311/)。 ================================================ FILE: package.json ================================================ { "name": "cordova-plugin-alipay-v2", "version": "2.0.0", "description": "a cordova plugin, a JS version of Alipay SDK(20190718211148)", "cordova": { "id": "cordova-plugin-alipay-v2", "platforms": [ "android", "ios" ] }, "keywords": [ "ecosystem:cordova", "cordova-android", "cordova-ios", "alipay", "cordova-plugin-alipay", "cordova-plugin-alipay-v2" ], "repository": { "type": "git", "url": "git+https://github.com/hhjjj1010/cordova-plugin-alipay-v2.git" }, "bugs": { "url": "https://github.com/hhjjj1010/cordova-plugin-alipay-v2/issues" }, "homepage": "https://github.com/hhjjj1010/cordova-plugin-alipay-v2#readme", "author": "hhjjj1010", "license": "ISC" } ================================================ FILE: plugin.xml ================================================ alipay CFBundleURLName alipay CFBundleURLSchemes ali$APP_ID ================================================ FILE: src/android/PayResult.java ================================================ package cn.hhjjj.alipay; import java.util.Map; import android.text.TextUtils; public class PayResult { private String resultStatus; private String result; private String memo; public PayResult(Map rawResult) { if (rawResult == null) { return; } for (String key : rawResult.keySet()) { if (TextUtils.equals(key, "resultStatus")) { resultStatus = rawResult.get(key); } else if (TextUtils.equals(key, "result")) { result = rawResult.get(key); } else if (TextUtils.equals(key, "memo")) { memo = rawResult.get(key); } } } @Override public String toString() { return "resultStatus={" + resultStatus + "};memo={" + memo + "};result={" + result + "}"; } /** * @return the resultStatus */ public String getResultStatus() { return resultStatus; } /** * @return the memo */ public String getMemo() { return memo; } /** * @return the result */ public String getResult() { return result; } } ================================================ FILE: src/android/alipay.gradle ================================================ repositories{ jcenter() flatDir{ dirs 'libs' } } dependencies { compile (name: 'alipaysdk-15.8.00.201112210139', ext: 'aar') } ================================================ FILE: src/android/alipay.java ================================================ package cn.hhjjj.alipay; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.CallbackContext; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.alipay.sdk.app.PayTask; import android.os.Handler; import android.os.Message; import android.util.Log; import java.util.Map; import android.widget.Toast; import android.text.TextUtils; import android.annotation.SuppressLint; /** * This class echoes a string called from JavaScript. */ public class alipay extends CordovaPlugin { private static final int SDK_PAY_FLAG = 1; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("payment")) { String orderInfo = args.getString(0); this.payment(orderInfo, callbackContext); return true; } return false; } private void payment(String orderInfo, final CallbackContext callbackContext) { final String payInfo = orderInfo; cordova.getThreadPool().execute(new Runnable() { @Override public void run() { PayTask alipay = new PayTask(cordova.getActivity()); Map result = alipay.payV2(payInfo, true); Log.i("msp", result.toString()); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); PayResult payResult = new PayResult(result); String resultInfo = payResult.getResult();// 同步返回需要验证的信息 String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 callbackContext.success(new JSONObject(result)); } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 callbackContext.error(new JSONObject(result)); } } }); } @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @SuppressWarnings("unused") public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: { @SuppressWarnings("unchecked") PayResult payResult = new PayResult((Map) msg.obj); /** 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。 */ String resultInfo = payResult.getResult();// 同步返回需要验证的信息 String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为9000则代表支付成功 // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 Toast.makeText(cordova.getActivity(), "支付成功" + resultStatus, Toast.LENGTH_SHORT); } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 Toast.makeText(cordova.getActivity(), "支付失败" + resultStatus, Toast.LENGTH_SHORT); } break; } default: break; } } ; }; } ================================================ FILE: src/ios/alipay.m ================================================ /********* alipay.m Cordova Plugin Implementation *******/ #import #import @interface alipay : CDVPlugin { // Member variables go here. NSString *app_id; NSString *callbackId; } - (void)payment:(CDVInvokedUrlCommand*)command; @end @implementation alipay #pragma mark "API" - (void)pluginInitialize { CDVViewController *viewController = (CDVViewController *)self.viewController; app_id = [viewController.settings objectForKey:@"alipayid"]; } - (void)payment:(CDVInvokedUrlCommand*)command { callbackId = command.callbackId; NSString* orderString = [command.arguments objectAtIndex:0]; NSString* appScheme = [NSString stringWithFormat:@"ali%@", app_id]; [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) { CDVPluginResult* pluginResult; if ([[resultDic objectForKey:@"resultStatus"] isEqual: @"9000"]) { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:resultDic]; [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId]; } else { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:resultDic]; [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId]; } }]; } - (void)handleOpenURL:(NSNotification *)notification { NSURL* url = [notification object]; if ([url isKindOfClass:[NSURL class]] && [url.scheme isEqualToString:[NSString stringWithFormat:@"ali%@", app_id]]) { [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { CDVPluginResult* pluginResult; if ([[resultDic objectForKey:@"resultStatus"] isEqual: @"9000"]) { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:resultDic]; [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId]; } else { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:resultDic]; [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId]; } }]; } } @end ================================================ FILE: src/ios/lib/AlipaySDK.bundle/bridge.js ================================================ !function(){if(!window.AlipayJSBridge){window.alipayjsbridgeSetTitle=function(e){document.title=e,t("alipayjsbridge://setTitle?title="+encodeURIComponent(e))},window.alipayjsbridgeRefresh=function(){t("alipayjsbridge://onRefresh?")},window.alipayjsbridgeBack=function(){t("alipayjsbridge://onBack?")},window.alipayjsbridgeExit=function(e){t("alipayjsbridge://onExit?bsucc="+e)},window.alipayjsbridgeShowBackButton=function(e){t("alipayjsbridge://showBackButton?bshow="+e)},window.AlipayJSBridge={version:"2.0",addListener:function(e,i){a[e]=i},hasListener:function(e){if(!a[e])return!1;return!0},callListener:function(e,i,n){var t;n&&(t=function(e){var i="";e&&(i=encodeURIComponent(JSON.stringify(e)));var a="func=h5JsFuncCallback&cbId="+n+"&data="+i;o(a)});var r=a[e];r?r(i,t):console.log("AlipayJSBridge: no h5JsFunc ",e+i)},callNativeFunc:function(e,a,t){var r="";t&&(r="cb_"+i+++"_"+(new Date).getTime(),n[r]=t);var d="";a&&(d=encodeURIComponent(JSON.stringify(a)));o("func="+e+"&cbId="+r+"&data="+d)},callBackFromNativeFunc:function(e,i){var a=n[e];a&&(a(i),delete n[i])}};var e,i=1,n={},a={};window.CustomEvent?e=new CustomEvent("alipayjsbridgeready"):(e=document.createEvent("Event")).initEvent("alipayjsbridgeready",!0,!0),document.dispatchEvent(e),setTimeout(function(){if(window.AlipayJSBridgeInitArray){var e=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 ================================================ FILE: src/ios/lib/AlipaySDK.framework/Headers/AFServiceResponse.h ================================================ // // 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 ================================================ FILE: src/ios/lib/AlipaySDK.framework/Headers/APayAuthInfo.h ================================================ // // APAuthInfo.h // APAuth // // Created by antfin on 17-10-24. // Copyright (c) 2017年 AntFin. All rights reserved. // #import @interface APayAuthInfo : NSObject @property(nonatomic, copy)NSString *appID; @property(nonatomic, copy)NSString *pid; @property(nonatomic, copy)NSString *redirectUri; /** * 初始化AuthInfo * * @param appIDStr 应用ID * @param pidStr 商户ID 可不填 * @param uriStr 授权的应用回调地址 比如:alidemo://auth * * @return authinfo实例 */ - (id)initWithAppID:(NSString *)appIDStr pid:(NSString *)pidStr redirectUri:(NSString *)uriStr; - (NSString *)description; - (NSString *)wapDescription; @end ================================================ FILE: src/ios/lib/AlipaySDK.framework/Headers/AlipaySDK.h ================================================ // // AlipaySDK.h // AlipaySDK // // Created by antfin on 17-10-24. // Copyright (c) 2017年 AntFin. All rights reserved. // //////////////////////////////////////////////////////// ///////////////// 支付宝标准版本支付SDK /////////////////// ///////// version:15.8.00 motify:2020.11.12/////////// //////////////////////////////////////////////////////// #import #import "APayAuthInfo.h" #import "AFServiceCenter.h" #import "AFServiceResponse.h" typedef void(^CompletionBlock)(NSDictionary *resultDic); typedef enum { ALIPAY_TIDFACTOR_IMEI, ALIPAY_TIDFACTOR_IMSI, ALIPAY_TIDFACTOR_TID, ALIPAY_TIDFACTOR_CLIENTKEY, ALIPAY_TIDFACTOR_VIMEI, ALIPAY_TIDFACTOR_VIMSI, ALIPAY_TIDFACTOR_CLIENTID, ALIPAY_TIDFACTOR_APDID, ALIPAY_TIDFACTOR_MAX } AlipayTidFactor; @interface AlipaySDK : NSObject /** * 创建支付单例服务 * * @return 返回单例对象 */ + (AlipaySDK *)defaultService; /** * 用于设置SDK使用的window,如果没有自行创建window无需设置此接口 */ @property (nonatomic, weak) UIWindow *targetWindow; ////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////支付宝支付相关接口///////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// /** * 支付接口 * * @param orderStr 支付订单信息字串 * @param schemeStr 调用支付的app注册在info.plist中的scheme * @param completionBlock 支付结果回调Block,用于wap支付结果回调 跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock */ - (void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock; /** * 支付接口 v2 * * @param orderStr 支付订单信息字串 * @param dynamicLaunch 是否使用动态配置策略跳转支付宝支付 * @param schemeStr 调用支付的app注册在info.plist中的scheme * @param completionBlock 支付结果回调Block,用于wap支付结果回调 跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock */ - (void)payOrder:(NSString *)orderStr dynamicLaunch:(BOOL)dynamicLaunch fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock; /** * 处理支付宝app支付后跳回商户app携带的支付结果Url * * @param resultUrl 支付宝app返回的支付结果url * @param completionBlock 支付结果回调 为nil时默认使用支付接口的completionBlock */ - (void)processOrderWithPaymentResult:(NSURL *)resultUrl standbyCallback:(CompletionBlock)completionBlock; /** * 获取交易token。 * * @return 交易token,若无则为空。 */ - (NSString *)fetchTradeToken; ////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////支付宝授权 2.0 相关接口//////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// /** * 快登授权2.0 * * @param infoStr 授权请求信息字串 * @param schemeStr 调用授权的app注册在info.plist中的scheme * @param completionBlock 授权结果回调,需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果 * 若在授权过程中,调用方应用被系统终止则此block无效(此时会调用'processAuth_V2Result:standbyCallback:'传入的standbyCallback) */ - (void)auth_V2WithInfo:(NSString *)infoStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock; /** * 处理支付宝app授权后跳回商户app携带的授权结果Url * * @param resultUrl 支付宝app返回的授权结果url * @param completionBlock 授权结果回调,用于处理跳转支付宝授权过程中商户APP被系统终止的情况 */ - (void)processAuth_V2Result:(NSURL *)resultUrl standbyCallback:(CompletionBlock)completionBlock; ////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////支付宝授权 1.0 相关接口//////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// /** * 快登授权 * @param authInfo 授权相关信息 * @param completionBlock 授权结果回调,若在授权过程中,调用方应用被系统终止,则此block无效, 需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果 */ - (void)authWithInfo:(APayAuthInfo *)authInfo callback:(CompletionBlock)completionBlock; /** * 处理支付宝app授权后跳回商户app携带的授权结果Url * * @param resultUrl 支付宝app返回的授权结果url * @param completionBlock 授权结果回调 */ - (void)processAuthResult:(NSURL *)resultUrl standbyCallback:(CompletionBlock)completionBlock; ////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////支付宝 h5 支付转 native 支付接口//////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// /** * 从h5链接中获取订单串并支付接口(自版本15.4.0起,推荐使用该接口) * * @param urlStr 拦截的 url string * * @return YES为成功获取订单信息并发起支付流程;NO为无法获取订单信息,输入url是普通url */ - (BOOL)payInterceptorWithUrl:(NSString *)urlStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock; ////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////支付宝 tid 相关信息获取接口///////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// /** * 获取当前tid相关信息 * * @return tid相关信息 */ - (NSString*)queryTidFactor:(AlipayTidFactor)factor; ////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////支付宝支付环境相关信息接口////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// /** * 是否已经使用过 * * @return YES为已经使用过,NO反之 */ - (BOOL)isLogined; /** * 获取当前版本号 * * @return 当前版本字符串 */ - (NSString *)currentVersion; /** * 測試所用,realse包无效 * * @param url 测试环境 */ - (void)setUrl:(NSString *)url; /** * 支付前主动更新本地配置 * * @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 ================================================ FILE: www/alipay.js ================================================ var exec = require('cordova/exec'); exports.payment = function(payInfo, success, error) { exec(success, error, "alipay", "payment", [payInfo]); };