[
  {
    "path": "README.md",
    "content": "# cordova-plugin-alipay-v2（更新至alipaysdk-15.8.00.201112210139.aar）\n支付宝的cordova插件其实在github上已经有很多了，但是都已经是以前的版本了。\n在2016年11月的时候支付宝进行了一次更新，支付宝的SDK升级到2.0版本。\n以前在app中使用支付宝进行支付叫做移动支付，11月之后更名为APP支付。\n\n__本插件仅支持《APP支付》，不支持移动支付__\n\n## 2020-12-05 更新日志\n- SDK 更新至alipaysdk-15.8.00.201112210139.aar。\n- 将 AlipaySDK 中的 UIWebView 更换为 WKWebView。\n- 支持 iOS Universal Link，提高支付稳定性。\n\n## 2019-07-31 更新日志\n- Android SDK 更新至alipaySdk-15.6.5-20190718211148.aar。\n- iOS SDK 已适配 iPhoneX，支持 IPv6_only 网络和 ATS 安全标准。\n\n## 2018-11-28 更新日志\n最近总有人问在iOS上没有回调的问题，真机实测不存在该问题。\n\n__*第一步：在Xcode中检查project的Bundle Identifier是否与其他项目重名。*__\n\n__*第二步：在Xcode中检查project的URL Types上alipay的URL Schemes格式是否正确。*__\nXcode的URL Types上alipay的URL Schemes正确格式应为 __ali2xxxxxxxxxxxxxxx__。\n2开头的这串数字是你的APP_ID，英文字母与数字之间没有任何符号！！！\n\n__*第三步：检查调用插件写法是否正确。*__\n\nionic1上的建议写法\n``` js\nvar payInfo = \"xxx\";\ncordova.plugins.alipay.payment(payInfo, function success(e){\n    // TODO 支付成功\n},function error(e){\n    //TODO 支付失败\n    console.log(\"支付失败\" + e.resultStatus);\n});\n```\nionic3上的建议写法\n\n```js\nlet payInfo = \"xxx\";\ncordova.plugins.alipay.payment(payInfo, (e) => {\n  //TODO 支付成功\n\n}, (e) => {\n  //TODO 支付失败\n  console.log(e.resultStatus);\n});\n```\n\n***\n\n# 注意\n插件从v1.0.0开始支持cordova-android 7.0.0，因为cordova-android 7.0.0更改了android项目的文件目录，所以不再兼容以前的老版本，升级前请务必注意。\n\n如果项目是之前的cordova-android老版本，请安装插件以前的老版本，在安装的时候带上版本号即可,cordova-plugin-alipay-v2@0.0.4。\n\n#功能说明\n1. 根据支付宝的说明文档的建议，为保证安全，签名都放到后端去做，前端只需要接收后台传入签名字符串，使用该插件调用支付宝SDK完成支付\n2. APP_ID：对应开放平台中应用的APPID，主要用于iOS平台Xcode构建URL Schemes\n\n***\n# 支持平台\n\n1. android （alipaySdk-15.6.5-20190718211148.aar）\n2. iOS （Xcode版本须大于7.0，iOS版本须大于或等于9.0）\n\n***\n# 安装\n## 在线安装\nnpm安装\n```shell\ncordova plugin add cordova-plugin-alipay-v2 --variable APP_ID=your AppId\n```\ngit安装\n``` shell\ncordova plugin add https://github.com/hhjjj1010/cordova-plugin-alipay-v2.git --variable APP_ID=your AppId\n```\n\n## 本地安装\n下载插件到本地\n``` shell\ncordova plugin add /your/local/path --variable APP_ID=your AppId\n```\n\n***\n# 使用 API\n## 第一步：订单在服务端签名生成订单信息，具体请参考官网进行[订单签名](https://docs.open.alipay.com/204/105465/)\n\n### 带有签名信息的订单信息示例\n``` js\nvar 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&notify_url=http%3A%2F%2Fdomain.merchant.com%2Fpayment_notify&sign_type=RSA2&timestamp=2016-08-25%2020%3A26%3A31&version=1.0&sign=cYmuUnKi5QdBsoZEAbMXVMmRWjsuUj%2By48A2DvWAVVBuYkiBj13CFDHu2vZQvmOfkjE0YqCUQE04kqm9Xg3tIX8tPeIGIFtsIyp%2FM45w1ZsDOiduBbduGfRo1XRsvAyVAv2hCrBLLrDI5Vi7uZZ77Lo5J0PpUUWwyQGt0M4cj8g%3D\";\n```\n\n## 第二步：调用支付插件\n\n__ionic1 代码示例__\n``` js\ncordova.plugins.alipay.payment(payInfo,function success(e){\n  // 支付成功\n\n},function error(e){\n  //TODO 支付失败\n  console.log(\"支付失败\" + e.resultStatus);\n});\n```\n\n### ionic3 代码示例\nionic3上使用时须在import结束后添加 declare let cordova。\n``` js\ncordova.plugins.alipay.payment(payInfo, (e) => {\n  //TODO 支付成功\n\n}, (e) => {\n      //TODO 支付失败\n      console.log(\"支付失败\" + e.resultStatus);\n    });\n```\n### 回调函数参数说明\ne.resultStatus  状态代码\ne.result  本次操作返回的结果数据\ne.memo 提示信息\n\ne.resultStatus：9000  订单支付成功；8000 正在处理中；调用function success\n\nerror.resultStatus：4000  订单支付失败；6001  用户中途取消；6002 网络连接出错 ；调用function error\n\n当e.resultStatus为9000时，请去服务端验证支付结果,建议商户依赖异步通知\n 同步返回的结果必须放置到服务端进行验证，具体请查看[验证的规则](https://doc.open.alipay.com/doc2/detail.htmspm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&docType=1) 。\n\n\n***\n# TIPS\n## 1. iOS上支付成功之后无法回调\nXcode的URL Types上alipay的URL Schemes正确格式应为ali2xxxxxxxxxxxxxxx。2开头的这串数字是你的APP_ID，英文字母与数字之间没有任何符号！！！\n\n## 2. 沙箱环境\n在我个人的开发过程中确实是没有使用到沙箱环境，都是直接真实支付1分钱来做测试。\n如要使用沙箱环境，请自行参考[官方文档](https://docs.open.alipay.com/200/105311/)。\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"cordova-plugin-alipay-v2\",\n  \"version\": \"2.0.0\",\n  \"description\": \"a cordova plugin, a JS version of Alipay SDK(20190718211148)\",\n  \"cordova\": {\n    \"id\": \"cordova-plugin-alipay-v2\",\n    \"platforms\": [\n      \"android\",\n      \"ios\"\n    ]\n  },\n  \"keywords\": [\n    \"ecosystem:cordova\",\n    \"cordova-android\",\n    \"cordova-ios\",\n    \"alipay\",\n    \"cordova-plugin-alipay\",\n    \"cordova-plugin-alipay-v2\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/hhjjj1010/cordova-plugin-alipay-v2.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/hhjjj1010/cordova-plugin-alipay-v2/issues\"\n  },\n  \"homepage\": \"https://github.com/hhjjj1010/cordova-plugin-alipay-v2#readme\",\n  \"author\": \"hhjjj1010\",\n  \"license\": \"ISC\"\n}\n"
  },
  {
    "path": "plugin.xml",
    "content": "<?xml version='1.0' encoding='utf-8'?>\n<plugin id=\"cordova-plugin-alipay-v2\" version=\"2.0.0\" xmlns=\"http://apache.org/cordova/ns/plugins/1.0\"\n        xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <name>alipay</name>\n    <preference name=\"APP_ID\"/>\n    <js-module name=\"alipay\" src=\"www/alipay.js\">\n        <clobbers target=\"cordova.plugins.alipay\"/>\n    </js-module>\n    <platform name=\"android\">\n        <config-file parent=\"/*\" target=\"res/xml/config.xml\">\n            <feature name=\"alipay\">\n                <param name=\"android-package\" value=\"cn.hhjjj.alipay.alipay\"/>\n            </feature>\n        </config-file>\n        <config-file parent=\"/*\" target=\"AndroidManifest.xml\">\n            <uses-permission android:name=\"android.permission.INTERNET\"/>\n            <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>\n            <uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>\n        </config-file>\n\n        <source-file src=\"src/android/alipay.java\" target-dir=\"src/cn/hhjjj/alipay\"/>\n        <source-file src=\"src/android/PayResult.java\" target-dir=\"src/cn/hhjjj/alipay\"/>\n        <lib-file src=\"src/android/lib/alipaysdk-15.8.00.201112210139.aar\" />\n        <framework src=\"src/android/alipay.gradle\" custom=\"true\" type=\"gradleReference\"/>\n\n    </platform>\n\n    <platform name=\"ios\">\n        <config-file parent=\"/*\" target=\"config.xml\">\n            <feature name=\"alipay\">\n                <param name=\"ios-package\" value=\"alipay\"/>\n            </feature>\n            <preference name=\"alipayid\" value=\"$APP_ID\"/>\n        </config-file>\n        <config-file target=\"*-Info.plist\" parent=\"CFBundleURLTypes\">\n            <array>\n                <dict>\n                    <key>CFBundleURLName</key>\n                    <string>alipay</string>\n                    <key>CFBundleURLSchemes</key>\n                    <array>\n                        <string>ali$APP_ID</string>\n                    </array>\n                </dict>\n            </array>\n        </config-file>\n\n        <framework src=\"CoreTelephony.framework\" weak=\"true\"/>\n        <framework src=\"SystemConfiguration.framework\" weak=\"true\"/>\n        <framework src=\"CoreMotion.framework\" weak=\"true\"/>\n        <framework src=\"CFNetwork.framework\" weak=\"true\"/>\n        <framework src=\"libc++.tbd\" weak=\"true\"/>\n        <framework src=\"libz.tbd\" weak=\"true\"/>\n        <framework src=\"CoreText.framework\" weak=\"true\"/>\n        <framework src=\"CoreGraphics.framework\" weak=\"true\"/>\n        <framework src=\"UIKit.framework\" weak=\"true\"/>\n        <framework src=\"QuartzCore.framework\" weak=\"true\"/>\n        <framework src=\"Foundation.framework\" weak=\"true\"/>\n\n        <framework src=\"src/ios/lib/AlipaySDK.framework\" custom=\"true\"/>\n        <resource-file src=\"src/ios/lib/AlipaySDK.bundle\"/>\n        <source-file src=\"src/ios/alipay.m\"/>\n    </platform>\n</plugin>\n"
  },
  {
    "path": "src/android/PayResult.java",
    "content": "package cn.hhjjj.alipay;\r\rimport java.util.Map;\r\rimport android.text.TextUtils;\r\rpublic class PayResult {\r    private String resultStatus;\r    private String result;\r    private String memo;\r\r    public PayResult(Map<String, String> rawResult) {\r        if (rawResult == null) {\r            return;\r        }\r\r        for (String key : rawResult.keySet()) {\r            if (TextUtils.equals(key, \"resultStatus\")) {\r                resultStatus = rawResult.get(key);\r            } else if (TextUtils.equals(key, \"result\")) {\r                result = rawResult.get(key);\r            } else if (TextUtils.equals(key, \"memo\")) {\r                memo = rawResult.get(key);\r            }\r        }\r    }\r\r    @Override\r    public String toString() {\r        return \"resultStatus={\" + resultStatus + \"};memo={\" + memo\r                + \"};result={\" + result + \"}\";\r    }\r\r\r    /**\r     * @return the resultStatus\r     */\r    public String getResultStatus() {\r        return resultStatus;\r    }\r\r    /**\r     * @return the memo\r     */\r    public String getMemo() {\r        return memo;\r    }\r\r    /**\r     * @return the result\r     */\r    public String getResult() {\r        return result;\r    }\r}\r"
  },
  {
    "path": "src/android/alipay.gradle",
    "content": "repositories{\n    jcenter()\n    flatDir{\n        dirs 'libs'\n    }\n}\n\ndependencies {\n    compile (name: 'alipaysdk-15.8.00.201112210139', ext: 'aar')\n}\n"
  },
  {
    "path": "src/android/alipay.java",
    "content": "package cn.hhjjj.alipay;\n\nimport org.apache.cordova.CordovaPlugin;\nimport org.apache.cordova.CallbackContext;\n\nimport org.json.JSONArray;\nimport org.json.JSONException;\nimport org.json.JSONObject;\n\nimport com.alipay.sdk.app.PayTask;\n\nimport android.os.Handler;\nimport android.os.Message;\nimport android.util.Log;\n\nimport java.util.Map;\n\nimport android.widget.Toast;\nimport android.text.TextUtils;\nimport android.annotation.SuppressLint;\n\n/**\n * This class echoes a string called from JavaScript.\n */\npublic class alipay extends CordovaPlugin {\n\n    private static final int SDK_PAY_FLAG = 1;\n\n    @Override\n    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {\n        if (action.equals(\"payment\")) {\n            String orderInfo = args.getString(0);\n            this.payment(orderInfo, callbackContext);\n            return true;\n        }\n        return false;\n    }\n\n    private void payment(String orderInfo, final CallbackContext callbackContext) {\n\n        final String payInfo = orderInfo;\n        cordova.getThreadPool().execute(new Runnable() {\n            @Override\n            public void run() {\n                PayTask alipay = new PayTask(cordova.getActivity());\n                Map<String, String> result = alipay.payV2(payInfo, true);\n                Log.i(\"msp\", result.toString());\n\n                Message msg = new Message();\n                msg.what = SDK_PAY_FLAG;\n                msg.obj = result;\n                mHandler.sendMessage(msg);\n\n                PayResult payResult = new PayResult(result);\n                String resultInfo = payResult.getResult();// 同步返回需要验证的信息\n                String resultStatus = payResult.getResultStatus();\n                // 判断resultStatus 为9000则代表支付成功\n                if (TextUtils.equals(resultStatus, \"9000\")) {\n                    // 该笔订单是否真实支付成功，需要依赖服务端的异步通知。\n                    callbackContext.success(new JSONObject(result));\n                } else {\n                    // 该笔订单真实的支付结果，需要依赖服务端的异步通知。\n                    callbackContext.error(new JSONObject(result));\n                }\n            }\n        });\n\n    }\n\n    @SuppressLint(\"HandlerLeak\")\n    private Handler mHandler = new Handler() {\n        @SuppressWarnings(\"unused\")\n        public void handleMessage(Message msg) {\n            switch (msg.what) {\n                case SDK_PAY_FLAG: {\n                    @SuppressWarnings(\"unchecked\")\n                    PayResult payResult = new PayResult((Map<String, String>) msg.obj);\n                    /**\n                     对于支付结果，请商户依赖服务端的异步通知结果。同步通知结果，仅作为支付结束的通知。\n                     */\n                    String resultInfo = payResult.getResult();// 同步返回需要验证的信息\n                    String resultStatus = payResult.getResultStatus();\n                    // 判断resultStatus 为9000则代表支付成功\n                    // 判断resultStatus 为9000则代表支付成功\n                    if (TextUtils.equals(resultStatus, \"9000\")) {\n                        // 该笔订单是否真实支付成功，需要依赖服务端的异步通知。\n                        Toast.makeText(cordova.getActivity(), \"支付成功\" + resultStatus, Toast.LENGTH_SHORT);\n                    } else {\n                        // 该笔订单真实的支付结果，需要依赖服务端的异步通知。\n                        Toast.makeText(cordova.getActivity(), \"支付失败\" + resultStatus, Toast.LENGTH_SHORT);\n                    }\n                    break;\n                }\n                default:\n                    break;\n            }\n        }\n\n        ;\n    };\n\n}\n"
  },
  {
    "path": "src/ios/alipay.m",
    "content": "/********* alipay.m Cordova Plugin Implementation *******/\n\n#import <Cordova/CDV.h>\n#import <AlipaySDK/AlipaySDK.h>\n\n@interface alipay : CDVPlugin {\n    // Member variables go here.\n    NSString *app_id;\n    NSString *callbackId;\n}\n\n- (void)payment:(CDVInvokedUrlCommand*)command;\n@end\n\n@implementation alipay\n\n#pragma mark \"API\"\n- (void)pluginInitialize {\n    CDVViewController *viewController = (CDVViewController *)self.viewController;\n    app_id = [viewController.settings objectForKey:@\"alipayid\"];\n}\n\n- (void)payment:(CDVInvokedUrlCommand*)command\n{\n    callbackId = command.callbackId;\n    NSString* orderString = [command.arguments objectAtIndex:0];\n    NSString* appScheme = [NSString stringWithFormat:@\"ali%@\", app_id];\n    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {\n        CDVPluginResult* pluginResult;\n        \n        if ([[resultDic objectForKey:@\"resultStatus\"]  isEqual: @\"9000\"]) {\n            pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:resultDic];\n            [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];\n        } else {\n            pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:resultDic];\n            [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];\n        }\n        \n    }];\n}\n\n- (void)handleOpenURL:(NSNotification *)notification {\n    NSURL* url = [notification object];\n    \n    if ([url isKindOfClass:[NSURL class]] && [url.scheme isEqualToString:[NSString stringWithFormat:@\"ali%@\", app_id]])\n    {\n        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {\n            \n            CDVPluginResult* pluginResult;\n            \n            if ([[resultDic objectForKey:@\"resultStatus\"] isEqual: @\"9000\"]) {\n                pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:resultDic];\n                [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];\n            } else {\n                pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:resultDic];\n                [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];\n            }\n        }];\n    }\n}\n\n@end\n"
  },
  {
    "path": "src/ios/lib/AlipaySDK.bundle/bridge.js",
    "content": "!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<e.length;i++)try{e[i](AlipayJSBridge)}catch(e){setTimeout(function(){throw e})}}},0)}function t(e){window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.MQPJSBridgeScheme&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage&&window.webkit.messageHandlers.MQPJSBridgeScheme.postMessage(e)}function o(e){t(\"alipayjsbridge://callNativeFunc?\"+e)}}();\n"
  },
  {
    "path": "src/ios/lib/AlipaySDK.framework/Headers/AFServiceCenter.h",
    "content": "//\n//  AFServiceCenter.h\n//  AFServiceSDK\n//\n//  Created by jiajunchen on 02/01/2018.\n//  Copyright © 2018 antfin. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@class AFServiceResponse;\n\n/**\n SDK支持的业务枚举值\n\n - AFServiceEInvoice: 电子发票\n - AFServiceAuth: 账户授权\n */\ntypedef NS_ENUM(NSUInteger, AFService) {\n    AFServiceEInvoice,\n    AFServiceAuth,\n    AFServiceDeduct\n};\n\n\nextern NSString * const kAFServiceOptionBizParams;      // 钱包服务调用入参\nextern NSString * const kAFServiceOptionCallbackScheme; // 业务回跳当前app的scheme\nextern NSString * const kAFServiceOptionNotUseLanding;  // 不使用支付宝提示下载页做补偿,为true时需要商户自己处理用户未安装支付宝的情况\nextern NSString * const kAFServiceBizParamsKeyUrl;      // 独立签约入参url\n\ntypedef void(^AFServiceResultBlock)(AFServiceResponse *response);\n\n@interface AFServiceCenter : NSObject\n\n/**\n 调用钱包服务\n\n @param service 业务service, 见AFService枚举值\n @param params  参数Dictionary, key值详情参见kAFServiceOptionBizParams、kAFServiceOptionCallbackScheme注释\n @param block   业务结果回调的block, block参数是AFServiceResponse类型，业务结果通过result属性获取,如果未用户未安装支付宝并且kAFServiceOptionNotUseLanding未设置为true,会使用H5landing页做补偿,这种情况下不会有block回调结果。\n */\n+ (void)callService:(AFService)service\n         withParams:(NSDictionary *)params\n      andCompletion:(AFServiceResultBlock)block;\n\n\n/**\n 处理钱包服务回跳APP的URL\n\n @param url 回跳URL\n @param block 业务结果回掉的block，详情见调用接口入参上的block。注意此接口上的block只有在跳转钱包后,当前APP被系统回收的情况下回跳才生效\n */\n+ (void)handleResponseURL:(NSURL *)url\n           withCompletion:(AFServiceResultBlock)block;\n\n@end\n"
  },
  {
    "path": "src/ios/lib/AlipaySDK.framework/Headers/AFServiceResponse.h",
    "content": "//\n//  AFServiceResponse.h\n//  AFServiceSDK\n//\n//  Created by jiajunchen on 08/01/2018.\n//  Copyright © 2018 antfin. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n/**\n 钱包服务调用结果状态吗\n\n - AFResSuccess: 默认值，业务调用成功，结果数据参见result字段\n - AFResInvalidService: service枚举值错误\n - AFResInvalidURL: 钱包回跳URL错误\n - AFResRepeatCall: 业务重复调用（3s内）\n - AFResOpenURLErr: 跳转失败\n */\ntypedef NS_ENUM(NSUInteger, AFResCode) {\n    AFResSuccess = 0,\n    AFResInvalidService = 100,\n    AFResInvalidURL,\n    AFResRepeatCall,\n    AFResOpenURLErr,\n};\n\n\n@interface AFServiceResponse : NSObject\n\n\n/**\n 业务调用状态吗\n */\n@property (nonatomic, assign) AFResCode responseCode;\n\n\n/**\n 业务结果Dictionary, 内容请参考具体业务方接入文档\n */\n@property (readonly) NSDictionary *result;\n\n@end\n"
  },
  {
    "path": "src/ios/lib/AlipaySDK.framework/Headers/APayAuthInfo.h",
    "content": "//\n//  APAuthInfo.h\n//  APAuth\n//\n//  Created by antfin on 17-10-24.\n//  Copyright (c) 2017年 AntFin. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@interface APayAuthInfo : NSObject\n\n@property(nonatomic, copy)NSString *appID;\n@property(nonatomic, copy)NSString *pid;\n@property(nonatomic, copy)NSString *redirectUri;\n\n/**\n *  初始化AuthInfo\n *\n *  @param appIDStr     应用ID\n *  @param pidStr       商户ID   可不填\n *  @param uriStr       授权的应用回调地址  比如：alidemo://auth\n *\n *  @return authinfo实例\n */\n- (id)initWithAppID:(NSString *)appIDStr\n                pid:(NSString *)pidStr\n        redirectUri:(NSString *)uriStr;\n\n- (NSString *)description;\n- (NSString *)wapDescription;\n\n@end\n"
  },
  {
    "path": "src/ios/lib/AlipaySDK.framework/Headers/AlipaySDK.h",
    "content": "//\n//  AlipaySDK.h\n//  AlipaySDK\n//\n//  Created by antfin on 17-10-24.\n//  Copyright (c) 2017年 AntFin. All rights reserved.\n//\n\n\n////////////////////////////////////////////////////////\n///////////////// 支付宝标准版本支付SDK ///////////////////\n///////// version:15.8.00  motify:2020.11.12///////////\n////////////////////////////////////////////////////////\n\n#import <UIKit/UIKit.h>\n#import \"APayAuthInfo.h\"\n#import \"AFServiceCenter.h\"\n#import \"AFServiceResponse.h\"\n\ntypedef void(^CompletionBlock)(NSDictionary *resultDic);\n\ntypedef enum {\n    ALIPAY_TIDFACTOR_IMEI,\n    ALIPAY_TIDFACTOR_IMSI,\n    ALIPAY_TIDFACTOR_TID,\n    ALIPAY_TIDFACTOR_CLIENTKEY,\n    ALIPAY_TIDFACTOR_VIMEI,\n    ALIPAY_TIDFACTOR_VIMSI,\n    ALIPAY_TIDFACTOR_CLIENTID,\n    ALIPAY_TIDFACTOR_APDID,\n    ALIPAY_TIDFACTOR_MAX\n} AlipayTidFactor;\n\n@interface AlipaySDK : NSObject\n\n/**\n *  创建支付单例服务\n *\n *  @return 返回单例对象\n */\n+ (AlipaySDK *)defaultService;\n\n/**\n *  用于设置SDK使用的window，如果没有自行创建window无需设置此接口\n */\n@property (nonatomic, weak) UIWindow *targetWindow;\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////支付宝支付相关接口/////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n *  支付接口\n *\n *  @param orderStr        支付订单信息字串\n *  @param schemeStr       调用支付的app注册在info.plist中的scheme\n *  @param completionBlock 支付结果回调Block，用于wap支付结果回调\n                           跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock\n */\n- (void)payOrder:(NSString *)orderStr\n      fromScheme:(NSString *)schemeStr\n        callback:(CompletionBlock)completionBlock;\n\n/**\n *  支付接口 v2\n *\n *  @param orderStr        支付订单信息字串\n *  @param dynamicLaunch   是否使用动态配置策略跳转支付宝支付\n *  @param schemeStr       调用支付的app注册在info.plist中的scheme\n *  @param completionBlock 支付结果回调Block，用于wap支付结果回调\n 跳转支付宝支付时只有当processOrderWithPaymentResult接口的completionBlock为nil时会使用这个bolock\n */\n- (void)payOrder:(NSString *)orderStr\n   dynamicLaunch:(BOOL)dynamicLaunch\n      fromScheme:(NSString *)schemeStr\n        callback:(CompletionBlock)completionBlock;\n\n/**\n *  处理支付宝app支付后跳回商户app携带的支付结果Url\n *\n *  @param resultUrl        支付宝app返回的支付结果url\n *  @param completionBlock  支付结果回调 为nil时默认使用支付接口的completionBlock\n */\n- (void)processOrderWithPaymentResult:(NSURL *)resultUrl\n                      standbyCallback:(CompletionBlock)completionBlock;\n\n/**\n *  获取交易token。\n *\n *  @return 交易token，若无则为空。\n */\n- (NSString *)fetchTradeToken;\n\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////支付宝授权 2.0 相关接口////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n *  快登授权2.0\n *\n *  @param infoStr          授权请求信息字串\n *  @param schemeStr        调用授权的app注册在info.plist中的scheme\n *  @param completionBlock  授权结果回调，需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果\n *                          若在授权过程中,调用方应用被系统终止则此block无效(此时会调用'processAuth_V2Result:standbyCallback:'传入的standbyCallback)\n */\n- (void)auth_V2WithInfo:(NSString *)infoStr\n             fromScheme:(NSString *)schemeStr\n               callback:(CompletionBlock)completionBlock;\n\n/**\n *  处理支付宝app授权后跳回商户app携带的授权结果Url\n *\n *  @param resultUrl        支付宝app返回的授权结果url\n *  @param completionBlock  授权结果回调,用于处理跳转支付宝授权过程中商户APP被系统终止的情况\n */\n- (void)processAuth_V2Result:(NSURL *)resultUrl\n             standbyCallback:(CompletionBlock)completionBlock;\n\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////支付宝授权 1.0 相关接口////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n *  快登授权\n *  @param authInfo         授权相关信息\n *  @param completionBlock  授权结果回调，若在授权过程中，调用方应用被系统终止，则此block无效，\n                            需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果\n */\n- (void)authWithInfo:(APayAuthInfo *)authInfo\n            callback:(CompletionBlock)completionBlock;\n\n/**\n *  处理支付宝app授权后跳回商户app携带的授权结果Url\n *\n *  @param resultUrl        支付宝app返回的授权结果url\n *  @param completionBlock  授权结果回调\n */\n- (void)processAuthResult:(NSURL *)resultUrl\n          standbyCallback:(CompletionBlock)completionBlock;\n\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////支付宝 h5 支付转 native 支付接口////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////////\n/**\n *  从h5链接中获取订单串并支付接口（自版本15.4.0起，推荐使用该接口）\n *\n *  @param urlStr     拦截的 url string\n *\n *  @return YES为成功获取订单信息并发起支付流程；NO为无法获取订单信息，输入url是普通url\n */\n- (BOOL)payInterceptorWithUrl:(NSString *)urlStr\n                   fromScheme:(NSString *)schemeStr\n                     callback:(CompletionBlock)completionBlock;\n\n\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////支付宝 tid 相关信息获取接口/////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n *  获取当前tid相关信息\n *\n *  @return tid相关信息\n */\n- (NSString*)queryTidFactor:(AlipayTidFactor)factor;\n\n\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////支付宝支付环境相关信息接口//////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n *  是否已经使用过\n *\n *  @return YES为已经使用过，NO反之\n */\n- (BOOL)isLogined;\n\n/**\n *  获取当前版本号\n *\n *  @return 当前版本字符串\n */\n- (NSString *)currentVersion;\n\n/**\n *  測試所用，realse包无效\n *\n *  @param url  测试环境\n */\n- (void)setUrl:(NSString *)url;\n\n/**\n *  支付前主动更新本地配置\n *\n *  @param block 更新请求结果回调\n */\n- (void)fetchSdkConfigWithBlock:(void(^)(BOOL success))block;\n\n\ntypedef void(^APLogBlock)(NSString *log);\n\n/**\n*   接收AlipaySDK的log信息\n*\n*  @param logBlock 打印log的回调block\n*/\n+ (void)startLogWithBlock:(APLogBlock)logBlock;\n\n/**\n*   停止输出log,会释放logBlock\n*\n*\n*/\n+ (void)stopLog;\n\n@end\n"
  },
  {
    "path": "www/alipay.js",
    "content": "var exec = require('cordova/exec');\n\nexports.payment = function(payInfo, success, error) {\n    exec(success, error, \"alipay\", \"payment\", [payInfo]);\n};\n"
  }
]