From 38a677fcfe7fc9a63bea908fb15711371ae5f129 Mon Sep 17 00:00:00 2001 From: feibisi Date: Wed, 8 Oct 2025 11:24:35 +0800 Subject: [PATCH 1/3] Add English README and update Chinese README Added a new English documentation file (README-EN.md) for the Woo Alipay WooCommerce payment gateway plugin. Updated the original README.md to improve and clarify the Chinese documentation, including more detailed setup, configuration, and template override instructions. --- README-EN.md | 147 +++++++++++++++++++++++++++++++++++++++ README.md | 193 ++++++++++++++++++++++++--------------------------- 2 files changed, 238 insertions(+), 102 deletions(-) create mode 100755 README-EN.md mode change 100755 => 100644 README.md diff --git a/README-EN.md b/README-EN.md new file mode 100755 index 00000000..1c194004 --- /dev/null +++ b/README-EN.md @@ -0,0 +1,147 @@ +# Payment gateway for WooCommerce - Woo Alipay + +* [General Description](#user-content-general-description) + * [Requirements](#user-content-requirements) + * [Overview](#user-content-overview) +* [Settings](#user-content-settings) + * [Gateway settings](#user-content-gateway-settings) +* [Gateway configuration help](#user-content-gateway-configuration-help) + * [Configuration process overview](#user-content-configuration-process-overview) + * [Register features, website URL and callback](#user-content-register-features-website-url-and-callback) + * [Key management](#user-content-key-management + ) +* [Templates](#user-content-templates) + +## General Description + +Woo Alipay adds an Alipay China payment gateway to WooCommerce-powered websites. +This Mainland China gateway allows customers to pay both in mobile browsers or from their computer. + +### Requirements + +* A [China Mainland Alipay merchant account](https://b.alipay.com/). +* The Payment products "支付产品" Computer website payment "电脑网站支付" and Mobile website payment "手机网站支付" enabled. + +### Overview + +This plugin adds the following major features to WooCommerce: + +* **Payment of WooCommerce orders in mobile web browser app:** calls the Alipay mobile app for a seamless experience. +* **Payment of WooCommerce orders standard in web browser:** authentication performed via credentials or QR code on desktop/laptop. +* **Refund of WooCommerce orders:** possibility to refund orders manually in a few clicks, and support for automatic refund in case the transaction failed. +* **Multi-currency support:** using an exchange rate against Chinese Yuan configured in the settings. + +Compatible with [WooCommerce Multilingual](https://wordpress.org/plugins/woocommerce-multilingual/), [WPML](http://wpml.org/), [Ultimate Member](https://wordpress.org/plugins/ultimate-member/), and any caching plugin compatible with WooCommerce. + +## Settings + +The settings below are added to WooCommerce and WP Weixin when the plugin is active. + +### Gateway settings + +The following settings can be accessed in WooCommerce > Settings > Payments > Alipay: + +| Name | Type | Description | +| --------------------------------------- |:--------:| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Enable/Disable | checkbox | Used to enable/disable the payment gateway. | +| Checkout page title | text | Title displayed for the payment gateway on the checkout page. | +| Checkout page description | text | Description displayed for the payment gateway on the checkout page. | +| Alipay App ID | text | The App ID found in Alipay Open Platform. | +| Alipay public key | textarea | The Alipay public key generated in the Alipay Open Platform ("支付宝公钥"). | +| Alipay Merchant application private key | textarea | The private key generated with the provided Alipay tool application or the `openssl` command line.
This key is secret and is not recorded in Alipay Open Platform - **DO NOT SHARE THIS VALUE WITH ANYONE**.| +| Sandbox | checkbox | If checked, Run Alipay in sandbox mode, with the settings found in [https://openhome.alipay.com/platform/appDaily.htm](https://openhome.alipay.com/platform/appDaily.htm). | +| Exchange Rate | number | Exchange rate against Chinese Yuan (shows if the store currency is not set to Chinese Yuan) | + +## Gateway configuration help + +### Configuration process overview + +* Go to the [Alipay Open Platform](https://openhome.alipay.com/platform/developerIndex.htm) and log in. +* If necessary, create a new app by following the options under the create application "创建应用" menu: website & mobile application "网页&移动应用" > payment access "支付接入". The application type "应用类型" should be web page application "网页应用" and the website URL "网址url" should be `https://[[your-homepage-url]]` where `[[your-homepage-url]]` is the home URL of your website. Creating an app will require one or two working day(s) audit of your website content by Alipay. +* Once the app is created, go to the app information page - accessible directly via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Activate payment features and configure the app with the gateway information (see ["Register features, website URL and callback"](#user-content-register-features-website-url-and-callback) below). +* If necessary, generate the application public and private keys, register the application public key in the Alipay Open Platform, and generate the Alipay public key (see ["Key management"](#user-content-key-management) below). +* Fill in the configuration fields below. + + +### Register features, website URL and callback +To communicate with the payment gateway, Alipay needs some features activated, to know your website URL, and to be aware of the WooCommerce gateway callback endpoint. + +* Go to the app overview page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/overview` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the add feature button "添加功能" and add the computer website payment "电脑网站支付" and the mobile website payment "手机网站支付" features - these features need to have been activated beforehand (process not describe in this guide - see the Payment products "支付产品" [Computer website payment "电脑网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001000) and [Mobile website payment "手机网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001001)). +* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the setup link "设置" (or modify link "修改") of the application gateway "应用网关" field. +* In the application gateway "应用网关" modal, enter `https://[[your-domain.com]]` (replace `[[your-domain.com]]` with the domain or subdomain running WordPress and Woo Alipay) and click the confirm "确定" button. +* Click the setup link "设置" (or modify link "修改") of the authorization callback address "授权回调地址" field. +* In the authorization callback address "授权回调地址" modal, enter `https` in the callback address type "回调地址类型" field, `https://[[your-homepage-url]]/wc-api/WC_Alipay/]]` in the callback address "回调地址" field (replace `[[your-homepage-url]]` with the home URL of your website), and leave the verify domain only "只验证域名" checkbox unchecked for added security, then click the confirm "确定" button. + +### Key management + +#### 1 - Generating keys: + +To complete the payment gateway configuration, you need to generate an application public key, an application private key and an Alipay public key. + +___ + +##### Generate the application keys with the Alipay Open Platform Development Assistant application (option 1): + +* Go to the [Alipay tools documentation page](https://docs.open.alipay.com/291/106097/) and download the Alipay Open Platform Development Assistant application for the operating system of your choice (Windows or MacOS). +* Within the Alipay Open Platform Development Assistant application, in the "生成密钥" section (default screen when opening the Assistant), select "UTF-8" and "PKCS1非Java使用" options and click the "生成密钥" button to populate the text areas. +* Copy the application public key displayed in the "应用公钥" text area in a text file on your computer (referred to as `alipay_app_public_key.txt` below). +* Copy the application private key displayed in the "应用私钥" text area in a text file on your computer (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. + +___ + +##### Generate the application keys with openssl command line in a terminal (option 2): + +* Type `openssl` to open the OpenSSL command line tool. +* Type `genrsa -out alipay_app_private_key.txt 2048` to generate the application private key file (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. +* Type `rsa -in alipay_app_private_key.txt -pubout -out alipay_app_public_key.txt` to generate the application public key file (referred to as `alipay_app_public_key.txt` below). +* Type `exit` to quit the command line tool. +* Open both files with a text editor, remove all the header, footer, space and carriage return characters to have each key as a single-line long string, and save the files. + +___ + +##### Register the application public key in Alipay Open Platform and generate the Alipay public key (requires completing option 1 or option 2 above): + +* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. +* Use the associated phone number or password to authenticate. +* In the signature key configuration form (加签管理 | 1 - 加签内容配置), select the public key option "公钥". +* Paste the content of the previously saved file `alipay_app_public_key.txt` in the "填写公钥字符" text area. +* Click the "保存设置" button to register the application public key and generate the Alipay public key. + +___ + +#### 2 - Using the application private key and finding the Alipay public key: + +* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. +* If necessary, use the associated Alipay account's phone number or password to authenticate. +* In the signature completed configuration form (加签管理 | 2 - 加签配置完成), copy the Alipay public key displayed under "支付宝公钥". +* Paste the Alipay public key in the "Alipay public key" field below. +* Paste the content of the previously saved file `alipay_app_private_key.txt` in the "Alipay merchant application private key" field below. +* Click the "Save changes" button. + +## Templates + +The following template file is selected using the `locate_template()` and included with `load_template()` functions provided by WordPress. This means it can be overloaded in the active WordPress theme. Developers may place their custom template file in the following directories under the theme's folder (in order of selection priority): + +* `plugins/woo-alipay/` +* `woo-alipay/` +* `woocommerce/woo-alipay/` +* at the root of the theme's folder + +___ + +### redirected-pay + +``` +redirected-pay.php +``` + +**Description** +The template of the page displayed when users are redirected before payment. The template acts as a placeholder before showing the Alipay payment UI. + +**Associated style enqueued with key:** +`woo-alipay-main-style` diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 1c194004..800e0a7e --- a/README.md +++ b/README.md @@ -1,147 +1,136 @@ -# Payment gateway for WooCommerce - Woo Alipay +# WooCommerce 支付宝支付网关插件 - Woo Alipay -* [General Description](#user-content-general-description) - * [Requirements](#user-content-requirements) - * [Overview](#user-content-overview) -* [Settings](#user-content-settings) - * [Gateway settings](#user-content-gateway-settings) -* [Gateway configuration help](#user-content-gateway-configuration-help) - * [Configuration process overview](#user-content-configuration-process-overview) - * [Register features, website URL and callback](#user-content-register-features-website-url-and-callback) - * [Key management](#user-content-key-management - ) -* [Templates](#user-content-templates) +* [总体描述](#user-content-总体描述) + * [系统要求](#user-content-系统要求) + * [功能概述](#user-content-功能概述) + * [设置说明](#user-content-设置说明) + * [网关设置](#user-content-网关设置) + * [网关配置帮助](#user-content-网关配置帮助) + * [配置流程概述](#user-content-配置流程概述) + * [注册功能、网站URL和回调](#user-content-注册功能网站url和回调) + * [密钥管理](#user-content-密钥管理) +* [模板文件](#user-content-模板文件) -## General Description +## 总体描述 -Woo Alipay adds an Alipay China payment gateway to WooCommerce-powered websites. -This Mainland China gateway allows customers to pay both in mobile browsers or from their computer. +Woo Alipay 为 WooCommerce 驱动的网站添加了支付宝中国支付网关。 +这个中国大陆网关允许客户在移动浏览器或电脑上进行支付。 -### Requirements +### 系统要求 -* A [China Mainland Alipay merchant account](https://b.alipay.com/). -* The Payment products "支付产品" Computer website payment "电脑网站支付" and Mobile website payment "手机网站支付" enabled. +* [中国大陆支付宝商户账户](https://b.alipay.com/) +* 已启用支付产品"电脑网站支付"和"手机网站支付" -### Overview +### 功能概述 -This plugin adds the following major features to WooCommerce: +此插件为 WooCommerce 添加了以下主要功能: -* **Payment of WooCommerce orders in mobile web browser app:** calls the Alipay mobile app for a seamless experience. -* **Payment of WooCommerce orders standard in web browser:** authentication performed via credentials or QR code on desktop/laptop. -* **Refund of WooCommerce orders:** possibility to refund orders manually in a few clicks, and support for automatic refund in case the transaction failed. -* **Multi-currency support:** using an exchange rate against Chinese Yuan configured in the settings. +* **移动网页浏览器支付 WooCommerce 订单:** 调用支付宝移动应用,提供无缝体验。 +* **标准网页浏览器支付 WooCommerce 订单:** 在台式机/笔记本电脑上通过凭据或二维码进行身份验证。 +* **WooCommerce 订单退款:** 可以在几次点击中手动退款订单,并支持交易失败时的自动退款。 +* **多货币支持:** 使用设置中配置的相对于人民币的汇率。 -Compatible with [WooCommerce Multilingual](https://wordpress.org/plugins/woocommerce-multilingual/), [WPML](http://wpml.org/), [Ultimate Member](https://wordpress.org/plugins/ultimate-member/), and any caching plugin compatible with WooCommerce. +兼容 [WooCommerce Multilingual](https://wordpress.org/plugins/woocommerce-multilingual/)、[WPML](http://wpml.org/)、[Ultimate Member](https://wordpress.org/plugins/ultimate-member/) 和任何与 WooCommerce 兼容的缓存插件。 -## Settings +## 设置说明 -The settings below are added to WooCommerce and WP Weixin when the plugin is active. +插件激活后,以下设置将被添加到 WooCommerce 和 WP Weixin 中。 -### Gateway settings +### 网关设置 -The following settings can be accessed in WooCommerce > Settings > Payments > Alipay: +以下设置可在 WooCommerce > 设置 > 付款 > 支付宝 中访问: -| Name | Type | Description | +| 名称 | 类型 | 描述 | | --------------------------------------- |:--------:| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Enable/Disable | checkbox | Used to enable/disable the payment gateway. | -| Checkout page title | text | Title displayed for the payment gateway on the checkout page. | -| Checkout page description | text | Description displayed for the payment gateway on the checkout page. | -| Alipay App ID | text | The App ID found in Alipay Open Platform. | -| Alipay public key | textarea | The Alipay public key generated in the Alipay Open Platform ("支付宝公钥"). | -| Alipay Merchant application private key | textarea | The private key generated with the provided Alipay tool application or the `openssl` command line.
This key is secret and is not recorded in Alipay Open Platform - **DO NOT SHARE THIS VALUE WITH ANYONE**.| -| Sandbox | checkbox | If checked, Run Alipay in sandbox mode, with the settings found in [https://openhome.alipay.com/platform/appDaily.htm](https://openhome.alipay.com/platform/appDaily.htm). | -| Exchange Rate | number | Exchange rate against Chinese Yuan (shows if the store currency is not set to Chinese Yuan) | +| 启用/禁用 | 复选框 | 用于启用/禁用支付网关。 | +| 结账页面标题 | 文本 | 在结账页面上为支付网关显示的标题。 | +| 结账页面描述 | 文本 | 在结账页面上为支付网关显示的描述。 | +| 支付宝应用 ID | 文本 | 在支付宝开放平台中找到的应用 ID。 | +| 支付宝公钥 | 文本区域 | 在支付宝开放平台中生成的支付宝公钥 ("支付宝公钥")。 | +| 支付宝商户应用私钥 | 文本区域 | 使用提供的支付宝工具应用程序或 `openssl` 命令行生成的私钥。
此密钥是保密的,不会记录在支付宝开放平台中 - **请勿与任何人共享此值**。| +| 沙盒模式 | 复选框 | 如果选中,在沙盒模式下运行支付宝,使用在 [https://openhome.alipay.com/platform/appDaily.htm](https://openhome.alipay.com/platform/appDaily.htm) 中找到的设置。 | +| 汇率 | 数字 | 相对于人民币的汇率(如果商店货币未设置为人民币则显示) | -## Gateway configuration help +## 网关配置帮助 -### Configuration process overview +### 配置流程概述 -* Go to the [Alipay Open Platform](https://openhome.alipay.com/platform/developerIndex.htm) and log in. -* If necessary, create a new app by following the options under the create application "创建应用" menu: website & mobile application "网页&移动应用" > payment access "支付接入". The application type "应用类型" should be web page application "网页应用" and the website URL "网址url" should be `https://[[your-homepage-url]]` where `[[your-homepage-url]]` is the home URL of your website. Creating an app will require one or two working day(s) audit of your website content by Alipay. -* Once the app is created, go to the app information page - accessible directly via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Activate payment features and configure the app with the gateway information (see ["Register features, website URL and callback"](#user-content-register-features-website-url-and-callback) below). -* If necessary, generate the application public and private keys, register the application public key in the Alipay Open Platform, and generate the Alipay public key (see ["Key management"](#user-content-key-management) below). -* Fill in the configuration fields below. +* 前往 [支付宝开放平台](https://openhome.alipay.com/platform/developerIndex.htm) 并登录。 +* 如有必要,通过按照创建应用"创建应用"菜单下的选项创建新应用:网页&移动应用 > 支付接入。应用类型应为网页应用,网站 URL 应为 `https://[[您的网站首页地址]]`,其中 `[[您的网站首页地址]]` 是您网站的主 URL。创建应用将需要支付宝对您的网站内容进行一到两个工作日的审核。 +* 应用创建后,转到应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 直接访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 +* 激活支付功能并使用网关信息配置应用(参见下面的["注册功能、网站 URL 和回调"](#user-content-注册功能网站url和回调))。 +* 如有必要,生成应用公钥和私钥,在支付宝开放平台注册应用公钥,并生成支付宝公钥(参见下面的["密钥管理"](#user-content-密钥管理))。 +* 填写下面的配置字段。 +### 注册功能、网站 URL 和回调 -### Register features, website URL and callback -To communicate with the payment gateway, Alipay needs some features activated, to know your website URL, and to be aware of the WooCommerce gateway callback endpoint. +为了与支付网关通信,支付宝需要激活一些功能,了解您的网站 URL,并知道 WooCommerce 网关回调端点。 -* Go to the app overview page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/overview` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the add feature button "添加功能" and add the computer website payment "电脑网站支付" and the mobile website payment "手机网站支付" features - these features need to have been activated beforehand (process not describe in this guide - see the Payment products "支付产品" [Computer website payment "电脑网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001000) and [Mobile website payment "手机网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001001)). -* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the setup link "设置" (or modify link "修改") of the application gateway "应用网关" field. -* In the application gateway "应用网关" modal, enter `https://[[your-domain.com]]` (replace `[[your-domain.com]]` with the domain or subdomain running WordPress and Woo Alipay) and click the confirm "确定" button. -* Click the setup link "设置" (or modify link "修改") of the authorization callback address "授权回调地址" field. -* In the authorization callback address "授权回调地址" modal, enter `https` in the callback address type "回调地址类型" field, `https://[[your-homepage-url]]/wc-api/WC_Alipay/]]` in the callback address "回调地址" field (replace `[[your-homepage-url]]` with the home URL of your website), and leave the verify domain only "只验证域名" checkbox unchecked for added security, then click the confirm "确定" button. +* 前往应用概览页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/overview` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 +* 点击添加功能按钮"添加功能"并添加电脑网站支付和手机网站支付功能 - 这些功能需要事先激活(本指南中不描述此过程 - 参见支付产品[电脑网站支付](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001000)和[手机网站支付](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001001))。 +* 前往应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 +* 点击应用网关字段的设置链接"设置"(或修改链接"修改")。 +* 在应用网关模态框中,输入 `https://[[您的域名]]`(将 `[[您的域名]]` 替换为运行 WordPress 和 Woo Alipay 的域名或子域名),然后点击确认"确定"按钮。 +* 点击授权回调地址字段的设置链接"设置"(或修改链接"修改")。 +* 在授权回调地址模态框中,在回调地址类型字段中输入 `https`,在回调地址字段中输入 `https://[[您的网站首页地址]]/wc-api/WC_Alipay/`(将 `[[您的网站首页地址]]` 替换为您网站的主 URL),取消勾选只验证域名复选框以增加安全性,然后点击确认"确定"按钮。 -### Key management +### 密钥管理 -#### 1 - Generating keys: +#### 1 - 生成密钥: -To complete the payment gateway configuration, you need to generate an application public key, an application private key and an Alipay public key. +要完成支付网关配置,您需要生成应用公钥、应用私钥和支付宝公钥。 -___ +##### 使用支付宝开放平台开发助手应用程序生成应用密钥(选项 1): -##### Generate the application keys with the Alipay Open Platform Development Assistant application (option 1): +* 前往 [支付宝工具文档页面](https://docs.open.alipay.com/291/106097/) 并下载适用于您选择的操作系统(Windows 或 MacOS)的支付宝开放平台开发助手应用程序。 +* 在支付宝开放平台开发助手应用程序中,在"生成密钥"部分(打开助手的默认屏幕),选择"UTF-8"和"PKCS1非Java使用"选项,然后点击"生成密钥"按钮以填充文本区域。 +* 将"应用公钥"文本区域中显示的应用公钥复制到计算机上的文本文件中(下文称为 `alipay_app_public_key.txt`)。 +* 将"应用私钥"文本区域中显示的应用私钥复制到计算机上的文本文件中(下文称为 `alipay_app_private_key.txt`) - **请勿与任何人共享此值**。 -* Go to the [Alipay tools documentation page](https://docs.open.alipay.com/291/106097/) and download the Alipay Open Platform Development Assistant application for the operating system of your choice (Windows or MacOS). -* Within the Alipay Open Platform Development Assistant application, in the "生成密钥" section (default screen when opening the Assistant), select "UTF-8" and "PKCS1非Java使用" options and click the "生成密钥" button to populate the text areas. -* Copy the application public key displayed in the "应用公钥" text area in a text file on your computer (referred to as `alipay_app_public_key.txt` below). -* Copy the application private key displayed in the "应用私钥" text area in a text file on your computer (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. +##### 在终端中使用 openssl 命令行生成应用密钥(选项 2): -___ +* 输入 `openssl` 以打开 OpenSSL 命令行工具。 +* 输入 `genrsa -out alipay_app_private_key.txt 2048` 生成应用私钥文件(下文称为 `alipay_app_private_key.txt`) - **请勿与任何人共享此值**。 +* 输入 `rsa -in alipay_app_private_key.txt -pubout -out alipay_app_public_key.txt` 生成应用公钥文件(下文称为 `alipay_app_public_key.txt`)。 +* 输入 `exit` 退出命令行工具。 +* 使用文本编辑器打开两个文件,删除所有头部、尾部、空格和回车符,使每个密钥成为单行长字符串,然后保存文件。 -##### Generate the application keys with openssl command line in a terminal (option 2): +##### 在支付宝开放平台注册应用公钥并生成支付宝公钥(需要完成上面的选项 1 或选项 2): -* Type `openssl` to open the OpenSSL command line tool. -* Type `genrsa -out alipay_app_private_key.txt 2048` to generate the application private key file (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. -* Type `rsa -in alipay_app_private_key.txt -pubout -out alipay_app_public_key.txt` to generate the application public key file (referred to as `alipay_app_public_key.txt` below). -* Type `exit` to quit the command line tool. -* Open both files with a text editor, remove all the header, footer, space and carriage return characters to have each key as a single-line long string, and save the files. +* 前往应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 +* 点击"接口加签方式" > "设置/查看"链接以打开配置模态框。 +* 使用关联的手机号码或密码进行身份验证。 +* 在签名密钥配置表单(加签管理 | 1 - 加签内容配置)中,选择公钥选项"公钥"。 +* 将先前保存的文件 `alipay_app_public_key.txt` 的内容粘贴到"填写公钥字符"文本区域中。 +* 点击"保存设置"按钮以注册应用公钥并生成支付宝公钥。 -___ +#### 2 - 使用应用私钥和查找支付宝公钥: -##### Register the application public key in Alipay Open Platform and generate the Alipay public key (requires completing option 1 or option 2 above): +* 前往应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 +* 点击"接口加签方式" > "设置/查看"链接以打开配置模态框。 +* 如有必要,使用关联的支付宝账户的手机号码或密码进行身份验证。 +* 在签名完成配置表单(加签管理 | 2 - 加签配置完成)中,复制"支付宝公钥"下显示的支付宝公钥。 +* 将支付宝公钥粘贴到下面的"支付宝公钥"字段中。 +* 将先前保存的文件 `alipay_app_private_key.txt` 的内容粘贴到下面的"支付宝商户应用私钥"字段中。 +* 点击"保存更改"按钮。 -* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. -* Use the associated phone number or password to authenticate. -* In the signature key configuration form (加签管理 | 1 - 加签内容配置), select the public key option "公钥". -* Paste the content of the previously saved file `alipay_app_public_key.txt` in the "填写公钥字符" text area. -* Click the "保存设置" button to register the application public key and generate the Alipay public key. +## 模板文件 -___ - -#### 2 - Using the application private key and finding the Alipay public key: - -* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. -* If necessary, use the associated Alipay account's phone number or password to authenticate. -* In the signature completed configuration form (加签管理 | 2 - 加签配置完成), copy the Alipay public key displayed under "支付宝公钥". -* Paste the Alipay public key in the "Alipay public key" field below. -* Paste the content of the previously saved file `alipay_app_private_key.txt` in the "Alipay merchant application private key" field below. -* Click the "Save changes" button. - -## Templates - -The following template file is selected using the `locate_template()` and included with `load_template()` functions provided by WordPress. This means it can be overloaded in the active WordPress theme. Developers may place their custom template file in the following directories under the theme's folder (in order of selection priority): +以下模板文件使用 WordPress 提供的 `locate_template()` 函数选择,并使用 `load_template()` 函数包含。这意味着它可以在活动的 WordPress 主题中重载。开发人员可以将自定义模板文件放在主题文件夹下的以下目录中(按选择优先级顺序): * `plugins/woo-alipay/` * `woo-alipay/` * `woocommerce/woo-alipay/` -* at the root of the theme's folder - -___ +* 主题文件夹的根目录 ### redirected-pay ``` redirected-pay.php -``` +``` -**Description** -The template of the page displayed when users are redirected before payment. The template acts as a placeholder before showing the Alipay payment UI. +**描述** +用户在支付前被重定向时显示的页面模板。该模板在显示支付宝支付 UI 之前充当占位符。 -**Associated style enqueued with key:** -`woo-alipay-main-style` +**关联的样式队列键:** +`woo-alipay-main-style` \ No newline at end of file From 8e4209943381a031d39330cc88f4844fdfc0e7be Mon Sep 17 00:00:00 2001 From: feibisi Date: Wed, 8 Oct 2025 11:30:06 +0800 Subject: [PATCH 2/3] Update README files with enhanced features and documentation Expanded both English and Chinese README files with detailed feature lists, installation instructions, compatibility notes, FAQ, support, and contribution guidelines. Added badges for WordPress, WooCommerce, and license, and clarified plugin scope and advanced capabilities for Woo Alipay. --- README-EN.md | 102 +++++++++++++++++++++++++++++++++++++++++++++------ README.md | 102 ++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 183 insertions(+), 21 deletions(-) diff --git a/README-EN.md b/README-EN.md index 1c194004..77bfaa49 100755 --- a/README-EN.md +++ b/README-EN.md @@ -1,7 +1,15 @@ -# Payment gateway for WooCommerce - Woo Alipay +# Woo Alipay - Payment Gateway for WooCommerce + +[![WordPress Version](https://img.shields.io/badge/WordPress-6.0%2B-blue.svg)](https://wordpress.org/) +[![WooCommerce Version](https://img.shields.io/badge/WooCommerce-10.2.2%2B-green.svg)](https://woocommerce.com/) +[![License](https://img.shields.io/badge/License-GPL%20v2%2B-brightgreen.svg)](https://opensource.org/licenses/GPL-2.0+) + +A comprehensive Alipay payment gateway integration for WooCommerce, supporting Mainland China payment methods with advanced features and modern WooCommerce compatibility. * [General Description](#user-content-general-description) * [Requirements](#user-content-requirements) + * [Features](#user-content-features) + * [Installation](#user-content-installation) * [Overview](#user-content-overview) * [Settings](#user-content-settings) * [Gateway settings](#user-content-gateway-settings) @@ -22,16 +30,47 @@ This Mainland China gateway allows customers to pay both in mobile browsers or f * A [China Mainland Alipay merchant account](https://b.alipay.com/). * The Payment products "支付产品" Computer website payment "电脑网站支付" and Mobile website payment "手机网站支付" enabled. +### Features + +This plugin provides comprehensive Alipay payment integration with the following features: + +#### Payment Methods +- **Mobile Web Payment:** Seamless payment experience via Alipay mobile app +- **Computer Web Payment:** Desktop/laptop payment through credentials or QR code authentication +- **Installment Payment:** Support for Alipay Huabei installment payments +- **Face-to-Face Payment:** QR code scanning payment for retail scenarios + +#### Advanced Features +- **WooCommerce Blocks Support:** Full compatibility with WooCommerce Checkout Block +- **HPOS Compatibility:** Support for WooCommerce High-Performance Order Storage +- **Order Management:** Advanced order query, timeout handling, and status synchronization +- **Smart Refunds:** Manual and automatic refund processing with failed transaction recovery +- **Webhook Reliability:** Retry mechanism for handling webhook failures +- **Multi-Currency Support:** Automatic currency conversion with configurable exchange rates + +#### Integration & Compatibility +- **Multilingual Ready:** Compatible with WPML and WooCommerce Multilingual +- **Plugin Compatibility:** Works with Ultimate Member and WooCommerce-compatible caching plugins +- **Modern Architecture:** Built with Alipay Easy SDK for improved performance and reliability + +### Installation + +1. **Download the Plugin** + Download the plugin zip file from [Wenpai.org](https://wenpai.org/plugins/woo-alipay) or the GitHub repository. + +2. **Install via WordPress Admin** + - Navigate to **Plugins → Add New → Upload Plugin** + - Choose the downloaded zip file and click "Install Now" + - Activate the plugin after installation + +3. **Configure Alipay Settings** + - Go to **WooCommerce → Settings → Payments → Alipay** + - Enable the payment gateway and configure your Alipay credentials + - Follow the configuration guide below to set up your Alipay account + ### Overview -This plugin adds the following major features to WooCommerce: - -* **Payment of WooCommerce orders in mobile web browser app:** calls the Alipay mobile app for a seamless experience. -* **Payment of WooCommerce orders standard in web browser:** authentication performed via credentials or QR code on desktop/laptop. -* **Refund of WooCommerce orders:** possibility to refund orders manually in a few clicks, and support for automatic refund in case the transaction failed. -* **Multi-currency support:** using an exchange rate against Chinese Yuan configured in the settings. - -Compatible with [WooCommerce Multilingual](https://wordpress.org/plugins/woocommerce-multilingual/), [WPML](http://wpml.org/), [Ultimate Member](https://wordpress.org/plugins/ultimate-member/), and any caching plugin compatible with WooCommerce. +Woo Alipay seamlessly integrates with WooCommerce to provide a robust payment solution for Chinese customers. The plugin handles the complete payment lifecycle from order creation to payment confirmation and refund processing, ensuring a smooth experience for both merchants and customers. ## Settings @@ -143,5 +182,46 @@ redirected-pay.php **Description** The template of the page displayed when users are redirected before payment. The template acts as a placeholder before showing the Alipay payment UI. -**Associated style enqueued with key:** -`woo-alipay-main-style` +**Associated style enqueued with key:** +`woo-alipay-main-style` + +## FAQ + +### Q: Does this plugin support Alipay International payments? +A: No, this plugin is specifically designed for Alipay Mainland China payments. For international payments, you would need a different Alipay solution. + +### Q: What WooCommerce versions are supported? +A: The plugin supports WooCommerce 10.2.2 and later, including full compatibility with WooCommerce Blocks and High-Performance Order Storage (HPOS). + +### Q: Can I use this plugin outside of China? +A: The plugin is designed for merchants who have a China Mainland Alipay merchant account. Geographic restrictions may apply based on your Alipay account configuration. + +### Q: How do I handle payment failures or timeouts? +A: The plugin includes automatic order timeout handling and webhook retry mechanisms. You can configure timeout settings in the plugin's admin panel. + +### Q: Is multi-currency support available? +A: Yes, the plugin supports multi-currency payments with automatic conversion to Chinese Yuan using configurable exchange rates. + +### Q: Can I customize the payment redirect page? +A: Yes, the plugin provides template overrides. You can customize the `redirected-pay.php` template in your theme as described in the Templates section. + +## Support + +- **Official Website:** [WooCN.com](https://woocn.com/) +- **Plugin Page:** [Wenpai.org](https://wenpai.org/plugins/woo-alipay) +- **Documentation:** [Plugin Documentation](https://wenpai.org/plugins/woo-alipay) +- **Issues & Support:** For technical support and bug reports, please contact through the official website or GitHub repository. + +## License + +This plugin is released under the GNU General Public License v2.0 or later. See [LICENSE](LICENSE) file for details. + +## Contributing + +Contributions are welcome! Please feel free to submit pull requests or report issues on the GitHub repository. + +--- + +**Version:** 3.2.0 +**Last Updated:** 2025 +**Author:** WooCN.com diff --git a/README.md b/README.md index 800e0a7e..136a6aab 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,15 @@ -# WooCommerce 支付宝支付网关插件 - Woo Alipay +# Woo Alipay - WooCommerce 支付宝支付网关插件 + +[![WordPress 版本](https://img.shields.io/badge/WordPress-6.0%2B-blue.svg)](https://wordpress.org/) +[![WooCommerce 版本](https://img.shields.io/badge/WooCommerce-10.2.2%2B-green.svg)](https://woocommerce.com/) +[![许可证](https://img.shields.io/badge/License-GPL%20v2%2B-brightgreen.svg)](https://opensource.org/licenses/GPL-2.0+) + +为 WooCommerce 提供全面的支付宝支付网关集成,支持中国大陆支付方式,具备先进功能和现代 WooCommerce 兼容性。 * [总体描述](#user-content-总体描述) * [系统要求](#user-content-系统要求) + * [功能特性](#user-content-功能特性) + * [安装说明](#user-content-安装说明) * [功能概述](#user-content-功能概述) * [设置说明](#user-content-设置说明) * [网关设置](#user-content-网关设置) @@ -10,6 +18,8 @@ * [注册功能、网站URL和回调](#user-content-注册功能网站url和回调) * [密钥管理](#user-content-密钥管理) * [模板文件](#user-content-模板文件) +* [常见问题](#user-content-常见问题) +* [技术支持](#user-content-技术支持) ## 总体描述 @@ -21,16 +31,47 @@ Woo Alipay 为 WooCommerce 驱动的网站添加了支付宝中国支付网关 * [中国大陆支付宝商户账户](https://b.alipay.com/) * 已启用支付产品"电脑网站支付"和"手机网站支付" +### 功能特性 + +此插件提供全面的支付宝支付集成,具备以下功能: + +#### 支付方式 +- **移动网页支付:** 通过支付宝移动应用提供无缝支付体验 +- **电脑网页支付:** 在台式机/笔记本电脑上通过凭据或二维码进行身份验证 +- **分期付款:** 支持支付宝花呗分期付款 +- **当面付:** 零售场景下的二维码扫描支付 + +#### 高级功能 +- **WooCommerce 区块支持:** 完全兼容 WooCommerce 结账区块 +- **HPOS 兼容性:** 支持 WooCommerce 高性能订单存储 +- **订单管理:** 高级订单查询、超时处理和状态同步 +- **智能退款:** 手动和自动退款处理,支持失败交易恢复 +- **Webhook 可靠性:** 处理 webhook 失败的重试机制 +- **多货币支持:** 使用可配置汇率自动货币转换 + +#### 集成与兼容性 +- **多语言就绪:** 兼容 WPML 和 WooCommerce 多语言 +- **插件兼容性:** 适用于 Ultimate Member 和 WooCommerce 兼容的缓存插件 +- **现代架构:** 基于支付宝 Easy SDK 构建,提供改进的性能和可靠性 + +### 安装说明 + +1. **下载插件** + 从 [Wenpai.org](https://wenpai.org/plugins/woo-alipay) 或 GitHub 仓库下载插件 zip 文件。 + +2. **通过 WordPress 管理后台安装** + - 导航到 **插件 → 安装插件 → 上传插件** + - 选择下载的 zip 文件并点击"立即安装" + - 安装后激活插件 + +3. **配置支付宝设置** + - 前往 **WooCommerce → 设置 → 付款 → 支付宝** + - 启用支付网关并配置您的支付宝凭据 + - 按照下面的配置指南设置您的支付宝账户 + ### 功能概述 -此插件为 WooCommerce 添加了以下主要功能: - -* **移动网页浏览器支付 WooCommerce 订单:** 调用支付宝移动应用,提供无缝体验。 -* **标准网页浏览器支付 WooCommerce 订单:** 在台式机/笔记本电脑上通过凭据或二维码进行身份验证。 -* **WooCommerce 订单退款:** 可以在几次点击中手动退款订单,并支持交易失败时的自动退款。 -* **多货币支持:** 使用设置中配置的相对于人民币的汇率。 - -兼容 [WooCommerce Multilingual](https://wordpress.org/plugins/woocommerce-multilingual/)、[WPML](http://wpml.org/)、[Ultimate Member](https://wordpress.org/plugins/ultimate-member/) 和任何与 WooCommerce 兼容的缓存插件。 +Woo Alipay 与 WooCommerce 无缝集成,为中国客户提供强大的支付解决方案。插件处理从订单创建到付款确认和退款处理的完整支付生命周期,确保为商家和客户提供顺畅的体验。 ## 设置说明 @@ -133,4 +174,45 @@ redirected-pay.php 用户在支付前被重定向时显示的页面模板。该模板在显示支付宝支付 UI 之前充当占位符。 **关联的样式队列键:** -`woo-alipay-main-style` \ No newline at end of file +`woo-alipay-main-style` + +## 常见问题 + +### 问:此插件是否支持支付宝国际支付? +答:不支持,此插件专为支付宝中国大陆支付设计。如需国际支付,您需要使用不同的支付宝解决方案。 + +### 问:支持哪些 WooCommerce 版本? +答:插件支持 WooCommerce 10.2.2 及更高版本,包括与 WooCommerce 区块和高性能订单存储(HPOS)的完全兼容性。 + +### 问:我可以在国外使用此插件吗? +答:插件适用于拥有中国大陆支付宝商户账户的商家。根据您的支付宝账户配置,可能会适用地域限制。 + +### 问:如何处理支付失败或超时? +答:插件包括自动订单超时处理和 webhook 重试机制。您可以在插件的管理面板中配置超时设置。 + +### 问:是否支持多货币? +答:是的,插件支持多货币付款,使用可配置汇率自动转换为人民币。 + +### 问:可以自定义付款重定向页面吗? +答:是的,插件提供模板覆盖。您可以按照模板文件部分的说明在主题中自定义 `redirected-pay.php` 模板。 + +## 技术支持 + +- **官方网站:** [WooCN.com](https://woocn.com/) +- **插件页面:** [Wenpai.org](https://wenpai.org/plugins/woo-alipay) +- **文档:** [插件文档](https://wenpai.org/plugins/woo-alipay) +- **问题与支持:** 有关技术支持和错误报告,请通过官方网站或 GitHub 仓库联系。 + +## 许可证 + +此插件根据 GNU 通用公共许可证 v2.0 或更高版本发布。详情请参阅 [LICENSE](LICENSE) 文件。 + +## 贡献 + +欢迎贡献!请随时提交拉取请求或在 GitHub 仓库上报告问题。 + +--- + +**版本:** 3.2.0 +**最后更新:** 2025年 +**作者:** WooCN.com \ No newline at end of file From b963cf90f3fa46e26b76d7da5b7fb1b8bc803c50 Mon Sep 17 00:00:00 2001 From: feibisi Date: Wed, 8 Oct 2025 15:07:18 +0800 Subject: [PATCH 3/3] Remove Alipay EasySDK and related files Deleted all Alipay EasySDK vendor libraries (PHP, Java, C#), related assets, CSS/JS, and configuration files. Added new gateway enablement and subscription UI files, and updated main plugin classes. This refactors the codebase to remove dependency on Alipay EasySDK and associated payment methods. --- README-EN.md | 227 -- README.md | 275 +-- assets/images/alipay-barcode-icon.svg | 202 ++ assets/images/alipay-f2f-icon.svg | 93 + assets/images/alipay-huabei-icon.svg | 74 + composer.lock | 832 -------- css/alipay-facetopay.css | 201 -- css/alipay-installment.css | 120 -- enable-gateways.php | 30 + inc/class-wc-alipay-agreement.php | 140 ++ ...ass-wc-alipay-facetopay-blocks-support.php | 71 - inc/class-wc-alipay-facetopay.php | 568 ----- ...s-wc-alipay-installment-blocks-support.php | 104 - inc/class-wc-alipay-installment.php | 641 ------ inc/class-wc-alipay-subscription-ui.php | 53 + inc/class-wc-alipay.php | 228 +- inc/class-woo-alipay.php | 175 +- inc/templates/payment-qrcode.php | 66 - js/admin/main.js | 1 + js/alipay-facetopay.js | 209 -- js/alipay-installment.js | 38 - js/frontend/blocks-facetopay.asset.php | 9 - js/frontend/blocks-facetopay.js | 81 - js/frontend/blocks-installment.asset.php | 9 - js/frontend/blocks-installment.js | 169 -- vendor/adbario/php-dot-notation/LICENSE.md | 21 - vendor/adbario/php-dot-notation/composer.json | 29 - vendor/adbario/php-dot-notation/src/Dot.php | 623 ------ .../adbario/php-dot-notation/src/helpers.php | 24 - vendor/alibabacloud/tea-fileform/.gitignore | 12 - vendor/alibabacloud/tea-fileform/.php_cs.dist | 65 - vendor/alibabacloud/tea-fileform/README-CN.md | 31 - vendor/alibabacloud/tea-fileform/README.md | 31 - .../alibabacloud/tea-fileform/composer.json | 44 - vendor/alibabacloud/tea-fileform/phpunit.xml | 32 - .../tea-fileform/src/FileForm.php | 16 - .../tea-fileform/src/FileForm/FileField.php | 22 - .../tea-fileform/src/FileFormStream.php | 321 --- .../tea-fileform/tests/FileFormTest.php | 81 - .../tea-fileform/tests/bootstrap.php | 3 - vendor/alibabacloud/tea/.php_cs.dist | 65 - vendor/alibabacloud/tea/CHANGELOG.md | 148 -- vendor/alibabacloud/tea/LICENSE.md | 13 - vendor/alibabacloud/tea/README.md | 16 - vendor/alibabacloud/tea/composer.json | 80 - .../tea/src/Exception/TeaError.php | 53 - .../tea/src/Exception/TeaRetryError.php | 21 - .../tea/src/Exception/TeaUnableRetryError.php | 41 - vendor/alibabacloud/tea/src/Helper.php | 112 - vendor/alibabacloud/tea/src/Model.php | 114 - vendor/alibabacloud/tea/src/Parameter.php | 50 - vendor/alibabacloud/tea/src/Request.php | 123 -- vendor/alibabacloud/tea/src/Response.php | 372 ---- vendor/alibabacloud/tea/src/Tea.php | 287 --- vendor/alipaysdk/easysdk/.gitattributes | 1 - vendor/alipaysdk/easysdk/.gitignore | 16 - vendor/alipaysdk/easysdk/APIDoc.md | 822 -------- vendor/alipaysdk/easysdk/CHANGELOG | 182 -- vendor/alipaysdk/easysdk/LICENSE | 21 - vendor/alipaysdk/easysdk/README.md | 203 -- vendor/alipaysdk/easysdk/composer.json | 49 - .../easysdk/csharp/AlipayEasySDK.sln | 23 - .../csharp/AlipayEasySDK/AlipayEasySDK.csproj | 32 - .../csharp/AlipayEasySDK/Base/Image/Client.cs | 324 --- ...lipayOfflineMaterialImageUploadResponse.cs | 45 - .../csharp/AlipayEasySDK/Base/OAuth/Client.cs | 528 ----- .../Models/AlipaySystemOauthTokenResponse.cs | 57 - .../AlipayEasySDK/Base/Qrcode/Client.cs | 318 --- .../AlipayOpenAppQrcodeCreateResponse.cs | 41 - .../csharp/AlipayEasySDK/Base/Video/Client.cs | 324 --- ...lipayOfflineMaterialImageUploadResponse.cs | 45 - .../csharp/AlipayEasySDK/Factory/Factory.cs | 244 --- .../Marketing/OpenLife/Client.cs | 1832 ----------------- .../AlipayOpenPublicLifeMsgRecallResponse.cs | 37 - ...yOpenPublicMessageContentCreateResponse.cs | 45 - ...yOpenPublicMessageContentModifyResponse.cs | 45 - ...ipayOpenPublicMessageSingleSendResponse.cs | 37 - ...lipayOpenPublicMessageTotalSendResponse.cs | 41 - ...yOpenPublicSettingCategoryQueryResponse.cs | 45 - ...icTemplateMessageIndustryModifyResponse.cs | 37 - .../Marketing/OpenLife/Models/Article.cs | 34 - .../Marketing/OpenLife/Models/Context.cs | 42 - .../Marketing/OpenLife/Models/Keyword.cs | 22 - .../Marketing/OpenLife/Models/Template.cs | 22 - .../Marketing/OpenLife/Models/Text.cs | 22 - .../AlipayEasySDK/Marketing/Pass/Client.cs | 964 --------- .../Models/AlipayPassInstanceAddResponse.cs | 45 - .../AlipayPassInstanceUpdateResponse.cs | 45 - .../Models/AlipayPassTemplateAddResponse.cs | 45 - .../AlipayPassTemplateUpdateResponse.cs | 45 - .../Marketing/TemplateMessage/Client.cs | 322 --- ...yOpenAppMiniTemplatemessageSendResponse.cs | 37 - .../Member/Identification/Client.cs | 562 ----- .../AlipayUserCertifyOpenCertifyResponse.cs | 21 - ...AlipayUserCertifyOpenInitializeResponse.cs | 41 - .../AlipayUserCertifyOpenQueryResponse.cs | 49 - .../Identification/Models/IdentityParam.cs | 30 - .../Identification/Models/MerchantConfig.cs | 18 - .../AlipayEasySDK/Payment/App/Client.cs | 135 -- .../App/Models/AlipayTradeAppPayResponse.cs | 21 - .../AlipayEasySDK/Payment/Common/Client.cs | 1598 -------------- ...DataserviceBillDownloadurlQueryResponse.cs | 41 - .../Models/AlipayTradeCancelResponse.cs | 61 - .../Common/Models/AlipayTradeCloseResponse.cs | 45 - .../Models/AlipayTradeCreateResponse.cs | 45 - .../AlipayTradeFastpayRefundQueryResponse.cs | 109 - .../Common/Models/AlipayTradeQueryResponse.cs | 177 -- .../Models/AlipayTradeRefundResponse.cs | 97 - .../Common/Models/PresetPayToolInfo.cs | 22 - .../Common/Models/RefundRoyaltyResult.cs | 42 - .../Payment/Common/Models/TradeFundBill.cs | 34 - .../Common/Models/TradeSettleDetail.cs | 38 - .../Payment/Common/Models/TradeSettleInfo.cs | 18 - .../Payment/FaceToFace/Client.cs | 536 ----- .../Models/AlipayTradePayResponse.cs | 165 -- .../Models/AlipayTradePrecreateResponse.cs | 45 - .../FaceToFace/Models/TradeFundBill.cs | 30 - .../FaceToFace/Models/VoucherDetail.cs | 58 - .../AlipayEasySDK/Payment/Huabei/Client.cs | 324 --- .../Models/AlipayTradeCreateResponse.cs | 45 - .../Payment/Huabei/Models/HuabeiConfig.cs | 22 - .../AlipayEasySDK/Payment/Page/Client.cs | 139 -- .../Page/Models/AlipayTradePagePayResponse.cs | 21 - .../AlipayEasySDK/Payment/Wap/Client.cs | 140 -- .../Wap/Models/AlipayTradeWapPayResponse.cs | 21 - .../AlipayEasySDK/Security/TextRisk/Client.cs | 314 --- ...AlipaySecurityRiskContentDetectResponse.cs | 49 - .../csharp/AlipayEasySDK/Util/AES/Client.cs | 114 - .../AlipayEasySDK/Util/Generic/Client.cs | 304 --- .../Models/AlipayOpenApiGenericResponse.cs | 37 - vendor/alipaysdk/easysdk/csharp/README.md | 248 --- .../csharp/UnitTest/Base/Image/ClientTest.cs | 32 - .../csharp/UnitTest/Base/OAuth/ClientTest.cs | 42 - .../csharp/UnitTest/Base/Qrcode/ClientTest.cs | 31 - .../csharp/UnitTest/Base/Video/ClientTest.cs | 32 - .../csharp/UnitTest/Factory/FactoryTest.cs | 33 - .../Fixture/alipayCertPublicKey_RSA2.crt | 22 - .../UnitTest/Fixture/alipayRootCert.crt | 88 - .../appCertPublicKey_2019051064521003.crt | 23 - .../csharp/UnitTest/Fixture/privateKey.json | 4 - .../csharp/UnitTest/Fixture/sample.mp4 | Bin 1057149 -> 0 bytes .../csharp/UnitTest/Fixture/sample.png | Bin 203065 -> 0 bytes .../UnitTest/Marketing/OpenLife/ClientTest.cs | 205 -- .../UnitTest/Marketing/Pass/ClientTest.cs | 100 - .../Marketing/TemplateMessage/ClientTest.cs | 34 - .../Member/Identification/ClientTest.cs | 72 - .../csharp/UnitTest/Payment/App/ClientTest.cs | 54 - .../UnitTest/Payment/Common/ClientTest.cs | 154 -- .../UnitTest/Payment/FaceToFace/ClientTest.cs | 51 - .../UnitTest/Payment/Huabei/ClientTest.cs | 39 - .../UnitTest/Payment/Page/ClientTest.cs | 50 - .../csharp/UnitTest/Payment/Wap/ClientTest.cs | 65 - .../UnitTest/Security/TextRisk/ClientTest.cs | 31 - .../easysdk/csharp/UnitTest/TestAccount.cs | 87 - .../easysdk/csharp/UnitTest/UnitTest.csproj | 50 - .../csharp/UnitTest/Util/AES/ClientTest.cs | 31 - .../UnitTest/Util/Generic/ClientTest.cs | 79 - vendor/alipaysdk/easysdk/java/README.md | 233 --- vendor/alipaysdk/easysdk/java/pom.xml | 195 -- .../com/alipay/easysdk/base/image/Client.java | 178 -- ...payOfflineMaterialImageUploadResponse.java | 97 - .../com/alipay/easysdk/base/oauth/Client.java | 261 --- .../AlipaySystemOauthTokenResponse.java | 133 -- .../alipay/easysdk/base/qrcode/Client.java | 176 -- .../AlipayOpenAppQrcodeCreateResponse.java | 85 - .../com/alipay/easysdk/base/video/Client.java | 178 -- ...payOfflineMaterialImageUploadResponse.java | 97 - .../com/alipay/easysdk/factory/Factory.java | 231 --- .../easysdk/factory/MultipleFactory.java | 201 -- .../easysdk/kms/aliyun/AliyunKMSClient.java | 286 --- .../easysdk/kms/aliyun/AliyunKMSConfig.java | 72 - .../easysdk/kms/aliyun/AliyunKMSSigner.java | 45 - .../easysdk/kms/aliyun/AliyunRpcClient.java | 353 ---- .../credentials/AccessKeyCredentials.java | 42 - .../credentials/BasicSessionCredentials.java | 51 - .../credentials/EcsRamRoleCredentials.java | 47 - .../kms/aliyun/credentials/ICredentials.java | 7 - .../exceptions/CredentialException.java | 11 - .../http/CompatibleUrlConnClient.java | 155 -- .../http/CompositeX509TrustManager.java | 22 - .../aliyun/credentials/http/FormatType.java | 29 - .../aliyun/credentials/http/HttpMessage.java | 182 -- .../aliyun/credentials/http/HttpRequest.java | 40 - .../aliyun/credentials/http/HttpResponse.java | 33 - .../aliyun/credentials/http/MethodType.java | 17 - .../http/TrueHostnameVerifier.java | 11 - .../provider/CredentialsProviderFactory.java | 7 - .../ECSMetadataServiceCredentialsFetcher.java | 110 - .../EcsRamRoleCredentialsProvider.java | 42 - .../provider/ICredentialsProvider.java | 7 - .../RamRoleArnCredentialsProvider.java | 97 - .../provider/StaticCredentialsProvider.java | 16 - .../credentials/utils/AcsURLEncoder.java | 17 - .../aliyun/credentials/utils/Base64Utils.java | 33 - .../credentials/utils/CredentialType.java | 8 - .../credentials/utils/HmacSHA1Signer.java | 41 - .../credentials/utils/ParameterUtils.java | 81 - .../aliyun/credentials/utils/StringUtils.java | 7 - .../aliyun/models/AsymmetricSignRequest.java | 26 - .../aliyun/models/AsymmetricSignResponse.java | 26 - .../aliyun/models/GetPublicKeyRequest.java | 18 - .../aliyun/models/GetPublicKeyResponse.java | 26 - .../kms/aliyun/models/RuntimeOptions.java | 26 - .../easysdk/marketing/openlife/Client.java | 793 ------- ...AlipayOpenPublicLifeMsgRecallResponse.java | 73 - ...penPublicMessageContentCreateResponse.java | 97 - ...penPublicMessageContentModifyResponse.java | 97 - ...ayOpenPublicMessageSingleSendResponse.java | 73 - ...payOpenPublicMessageTotalSendResponse.java | 85 - ...penPublicSettingCategoryQueryResponse.java | 97 - ...TemplateMessageIndustryModifyResponse.java | 73 - .../marketing/openlife/models/Article.java | 69 - .../marketing/openlife/models/Context.java | 92 - .../marketing/openlife/models/Keyword.java | 36 - .../marketing/openlife/models/Template.java | 36 - .../marketing/openlife/models/Text.java | 36 - .../alipay/easysdk/marketing/pass/Client.java | 439 ---- .../models/AlipayPassInstanceAddResponse.java | 97 - .../AlipayPassInstanceUpdateResponse.java | 97 - .../models/AlipayPassTemplateAddResponse.java | 97 - .../AlipayPassTemplateUpdateResponse.java | 97 - .../marketing/templatemessage/Client.java | 178 -- ...penAppMiniTemplatemessageSendResponse.java | 73 - .../easysdk/member/identification/Client.java | 287 --- .../AlipayUserCertifyOpenCertifyResponse.java | 25 - ...ipayUserCertifyOpenInitializeResponse.java | 85 - .../AlipayUserCertifyOpenQueryResponse.java | 109 - .../identification/models/IdentityParam.java | 60 - .../identification/models/MerchantConfig.java | 24 - .../alipay/easysdk/payment/app/Client.java | 115 -- .../app/models/AlipayTradeAppPayResponse.java | 25 - .../alipay/easysdk/payment/common/Client.java | 698 ------- ...taserviceBillDownloadurlQueryResponse.java | 85 - .../models/AlipayTradeCancelResponse.java | 145 -- .../models/AlipayTradeCloseResponse.java | 97 - .../models/AlipayTradeCreateResponse.java | 97 - ...AlipayTradeFastpayRefundQueryResponse.java | 289 --- .../models/AlipayTradeQueryResponse.java | 493 ----- .../models/AlipayTradeRefundResponse.java | 253 --- .../common/models/PresetPayToolInfo.java | 36 - .../common/models/RefundRoyaltyResult.java | 96 - .../payment/common/models/TradeFundBill.java | 72 - .../common/models/TradeSettleDetail.java | 84 - .../common/models/TradeSettleInfo.java | 24 - .../easysdk/payment/facetoface/Client.java | 265 --- .../models/AlipayTradePayResponse.java | 457 ---- .../models/AlipayTradePrecreateResponse.java | 97 - .../facetoface/models/TradeFundBill.java | 60 - .../facetoface/models/VoucherDetail.java | 144 -- .../alipay/easysdk/payment/huabei/Client.java | 179 -- .../models/AlipayTradeCreateResponse.java | 97 - .../payment/huabei/models/HuabeiConfig.java | 36 - .../alipay/easysdk/payment/page/Client.java | 118 -- .../models/AlipayTradePagePayResponse.java | 25 - .../alipay/easysdk/payment/wap/Client.java | 119 -- .../wap/models/AlipayTradeWapPayResponse.java | 25 - .../easysdk/security/textrisk/Client.java | 174 -- ...ipaySecurityRiskContentDetectResponse.java | 109 - .../com/alipay/easysdk/util/aes/Client.java | 97 - .../alipay/easysdk/util/generic/Client.java | 273 --- .../models/AlipayOpenApiGenericResponse.java | 73 - .../AlipayOpenApiGenericSDKResponse.java | 25 - .../java/com/alipay/easysdk/TestAccount.java | 134 -- .../alipay/easysdk/base/image/ClientTest.java | 38 - .../alipay/easysdk/base/oauth/ClientTest.java | 44 - .../easysdk/base/qrcode/ClientTest.java | 34 - .../alipay/easysdk/base/video/ClientTest.java | 38 - .../marketing/openlife/ClientTest.java | 202 -- .../easysdk/marketing/pass/ClientTest.java | 100 - .../marketing/templatemessage/ClientTest.java | 39 - .../member/identification/ClientTest.java | 74 - .../multipleFactory/MultipleFactoryTest.java | 62 - .../easysdk/payment/app/ClientTest.java | 62 - .../easysdk/payment/common/ClientTest.java | 154 -- .../payment/facetoface/ClientTest.java | 56 - .../easysdk/payment/huabei/ClientTest.java | 45 - .../easysdk/payment/page/ClientTest.java | 58 - .../easysdk/payment/wap/ClientTest.java | 74 - .../easysdk/security/textrisk/ClientTest.java | 36 - .../alipay/easysdk/util/aes/ClientTest.java | 36 - .../easysdk/util/generic/ClientTest.java | 117 -- .../fixture/alipayCertPublicKey_RSA2.crt | 43 - .../test/resources/fixture/alipayRootCert.crt | 88 - .../resources/fixture/aliyunAccessKey.json | 4 - .../appCertPublicKey_2021002177673029.crt | 24 - .../test/resources/fixture/privateKey.json | 4 - .../src/test/resources/fixture/sample.mp4 | Bin 1057149 -> 0 bytes .../src/test/resources/fixture/sample.png | Bin 203065 -> 0 bytes .../easysdk/kernel/csharp/EasySDKKernel.sln | 17 - .../csharp/EasySDKKernel/EasySDKKernel.csproj | 23 - .../EasySDKKernel/Kernel/AlipayConstants.cs | 65 - .../EasySDKKernel/Kernel/CertEnvironment.cs | 81 - .../csharp/EasySDKKernel/Kernel/Client.cs | 521 ----- .../csharp/EasySDKKernel/Kernel/Config.cs | 106 - .../csharp/EasySDKKernel/Kernel/Context.cs | 46 - .../csharp/EasySDKKernel/Kernel/Util/AES.cs | 88 - .../Kernel/Util/AntCertificationUtil.cs | 326 --- .../Kernel/Util/ArgumentValidator.cs | 34 - .../Kernel/Util/DictionaryUtil.cs | 63 - .../EasySDKKernel/Kernel/Util/JsonUtil.cs | 53 - .../Kernel/Util/MultipartUtil.cs | 79 - .../EasySDKKernel/Kernel/Util/PageUtil.cs | 59 - .../Kernel/Util/ResponseChecker.cs | 31 - .../Kernel/Util/SignContentExtractor.cs | 213 -- .../EasySDKKernel/Kernel/Util/Signer.cs | 260 --- vendor/alipaysdk/easysdk/kernel/java/pom.xml | 215 -- .../easysdk/kernel/AlipayConstants.java | 75 - .../easysdk/kernel/CertEnvironment.java | 82 - .../com/alipay/easysdk/kernel/Client.java | 493 ----- .../com/alipay/easysdk/kernel/Config.java | 110 - .../com/alipay/easysdk/kernel/Context.java | 81 - .../com/alipay/easysdk/kernel/util/AES.java | 88 - .../kernel/util/AntCertificationUtil.java | 396 ---- .../alipay/easysdk/kernel/util/JsonUtil.java | 51 - .../easysdk/kernel/util/MultipartUtil.java | 77 - .../alipay/easysdk/kernel/util/PageUtil.java | 59 - .../easysdk/kernel/util/ResponseChecker.java | 39 - .../kernel/util/SignContentExtractor.java | 203 -- .../alipay/easysdk/kernel/util/Signer.java | 115 -- vendor/alipaysdk/easysdk/php/README.md | 227 -- .../easysdk/php/src/Base/Image/Client.php | 198 -- ...ipayOfflineMaterialImageUploadResponse.php | 117 -- .../easysdk/php/src/Base/OAuth/Client.php | 283 --- .../Models/AlipaySystemOauthTokenResponse.php | 156 -- .../easysdk/php/src/Base/Qrcode/Client.php | 196 -- .../AlipayOpenAppQrcodeCreateResponse.php | 104 - .../easysdk/php/src/Base/Video/Client.php | 198 -- ...ipayOfflineMaterialImageUploadResponse.php | 117 -- .../php/src/Kernel/AlipayConstants.php | 63 - .../php/src/Kernel/CertEnvironment.php | 60 - .../easysdk/php/src/Kernel/Config.php | 26 - .../easysdk/php/src/Kernel/EasySDKKernel.php | 466 ----- .../Kernel/Exceptions/RuntimeException.php | 10 - .../easysdk/php/src/Kernel/Factory.php | 245 --- .../php/src/Kernel/MultipleFactory.php | 249 --- .../easysdk/php/src/Kernel/Util/AES.php | 94 - .../php/src/Kernel/Util/AlipayEncrypt.php | 12 - .../src/Kernel/Util/AntCertificationUtil.php | 612 ------ .../easysdk/php/src/Kernel/Util/JsonUtil.php | 56 - .../easysdk/php/src/Kernel/Util/PageUtil.php | 60 - .../php/src/Kernel/Util/ResponseChecker.php | 19 - .../src/Kernel/Util/SignContentExtractor.php | 58 - .../easysdk/php/src/Kernel/Util/Signer.php | 72 - .../php/src/Marketing/OpenLife/Client.php | 866 -------- .../AlipayOpenPublicLifeMsgRecallResponse.php | 91 - ...OpenPublicMessageContentCreateResponse.php | 117 -- ...OpenPublicMessageContentModifyResponse.php | 117 -- ...payOpenPublicMessageSingleSendResponse.php | 91 - ...ipayOpenPublicMessageTotalSendResponse.php | 104 - ...OpenPublicSettingCategoryQueryResponse.php | 117 -- ...cTemplateMessageIndustryModifyResponse.php | 91 - .../src/Marketing/OpenLife/Models/Article.php | 87 - .../src/Marketing/OpenLife/Models/Context.php | 114 - .../src/Marketing/OpenLife/Models/Keyword.php | 51 - .../Marketing/OpenLife/Models/Template.php | 53 - .../src/Marketing/OpenLife/Models/Text.php | 51 - .../easysdk/php/src/Marketing/Pass/Client.php | 482 ----- .../Models/AlipayPassInstanceAddResponse.php | 117 -- .../AlipayPassInstanceUpdateResponse.php | 117 -- .../Models/AlipayPassTemplateAddResponse.php | 117 -- .../AlipayPassTemplateUpdateResponse.php | 117 -- .../src/Marketing/TemplateMessage/Client.php | 200 -- ...OpenAppMiniTemplatemessageSendResponse.php | 91 - .../php/src/Member/Identification/Client.php | 321 --- .../AlipayUserCertifyOpenCertifyResponse.php | 39 - ...lipayUserCertifyOpenInitializeResponse.php | 104 - .../AlipayUserCertifyOpenQueryResponse.php | 130 -- .../Identification/Models/IdentityParam.php | 77 - .../Identification/Models/MerchantConfig.php | 38 - .../easysdk/php/src/Payment/App/Client.php | 129 -- .../App/Models/AlipayTradeAppPayResponse.php | 39 - .../easysdk/php/src/Payment/Common/Client.php | 757 ------- ...ataserviceBillDownloadurlQueryResponse.php | 104 - .../Models/AlipayTradeCancelResponse.php | 169 -- .../Models/AlipayTradeCloseResponse.php | 117 -- .../Models/AlipayTradeCreateResponse.php | 117 -- .../AlipayTradeFastpayRefundQueryResponse.php | 352 ---- .../Models/AlipayTradeQueryResponse.php | 573 ------ .../Models/AlipayTradeRefundResponse.php | 313 --- .../Common/Models/PresetPayToolInfo.php | 53 - .../Common/Models/RefundRoyaltyResult.php | 116 -- .../Payment/Common/Models/TradeFundBill.php | 90 - .../Common/Models/TradeSettleDetail.php | 103 - .../Payment/Common/Models/TradeSettleInfo.php | 52 - .../php/src/Payment/FaceToFace/Client.php | 293 --- .../Models/AlipayTradePayResponse.php | 534 ----- .../Models/AlipayTradePrecreateResponse.php | 117 -- .../FaceToFace/Models/TradeFundBill.php | 77 - .../FaceToFace/Models/VoucherDetail.php | 168 -- .../easysdk/php/src/Payment/Huabei/Client.php | 202 -- .../Models/AlipayTradeCreateResponse.php | 117 -- .../Payment/Huabei/Models/HuabeiConfig.php | 51 - .../easysdk/php/src/Payment/Page/Client.php | 133 -- .../Models/AlipayTradePagePayResponse.php | 39 - .../easysdk/php/src/Payment/Wap/Client.php | 135 -- .../Wap/Models/AlipayTradeWapPayResponse.php | 39 - .../php/src/Security/TextRisk/Client.php | 192 -- ...lipaySecurityRiskContentDetectResponse.php | 132 -- .../easysdk/php/src/Util/AES/Client.php | 111 - .../easysdk/php/src/Util/Generic/Client.php | 309 --- .../Models/AlipayOpenApiGenericResponse.php | 91 - .../AlipayOpenApiGenericSDKResponse.php | 39 - .../easysdk/php/test/TestAccount.php | 45 - .../php/test/base/image/ClientTest.php | 23 - .../php/test/base/oauth/ClientTest.php | 37 - .../php/test/base/qrcode/ClientTest.php | 20 - .../php/test/base/video/ClientTest.php | 24 - .../test/marketing/openlife/ClientTest.php | 145 -- .../php/test/marketing/pass/ClientTest.php | 102 - .../marketing/templatemessage/ClientTest.php | 27 - .../test/member/identification/ClientTest.php | 55 - .../php/test/multipleFactory/ClientTest.php | 35 - .../php/test/payment/app/ClientTest.php | 39 - .../php/test/payment/common/ClientTest.php | 93 - .../test/payment/facetoface/ClientTest.php | 42 - .../php/test/payment/huabei/ClientTest.php | 25 - .../php/test/payment/page/ClientTest.php | 36 - .../php/test/payment/wap/ClientTest.php | 41 - .../fixture/alipayCertPublicKey_RSA2.crt | 22 - .../test/resources/fixture/alipayRootCert.crt | 88 - .../appCertPublicKey_2019051064521003.crt | 23 - .../test/resources/fixture/privateKey.json | 4 - .../php/test/resources/fixture/sample.mp4 | Bin 1057149 -> 0 bytes .../php/test/resources/fixture/sample.png | Bin 203065 -> 0 bytes .../php/test/security/textrisk/ClientTest.php | 20 - .../easysdk/php/test/util/aes/ClientTest.php | 27 - .../php/test/util/generic/ClientTest.php | 95 - .../alipaysdk/easysdk/tea/base/image/Teafile | 26 - .../alipaysdk/easysdk/tea/base/image/main.tea | 88 - .../alipaysdk/easysdk/tea/base/oauth/Teafile | 26 - .../alipaysdk/easysdk/tea/base/oauth/main.tea | 150 -- .../alipaysdk/easysdk/tea/base/qrcode/Teafile | 26 - .../easysdk/tea/base/qrcode/main.tea | 83 - .../alipaysdk/easysdk/tea/base/video/Teafile | 26 - .../alipaysdk/easysdk/tea/base/video/main.tea | 88 - vendor/alipaysdk/easysdk/tea/kernel/Teafile | 22 - vendor/alipaysdk/easysdk/tea/kernel/main.tea | 50 - .../easysdk/tea/marketing/openlife/Teafile | 26 - .../easysdk/tea/marketing/openlife/main.tea | 644 ------ .../easysdk/tea/marketing/pass/Teafile | 26 - .../easysdk/tea/marketing/pass/main.tea | 317 --- .../tea/marketing/templateMessage/Teafile | 26 - .../tea/marketing/templateMessage/main.tea | 83 - .../easysdk/tea/member/identification/Teafile | 26 - .../tea/member/identification/main.tea | 204 -- .../alipaysdk/easysdk/tea/payment/app/Teafile | 26 - .../easysdk/tea/payment/app/main.tea | 42 - .../easysdk/tea/payment/common/Teafile | 26 - .../easysdk/tea/payment/common/main.tea | 650 ------ .../easysdk/tea/payment/faceToFace/Teafile | 26 - .../easysdk/tea/payment/faceToFace/main.tea | 215 -- .../easysdk/tea/payment/huabei/Teafile | 26 - .../easysdk/tea/payment/huabei/main.tea | 91 - .../easysdk/tea/payment/page/Teafile | 26 - .../easysdk/tea/payment/page/main.tea | 44 - .../alipaysdk/easysdk/tea/payment/wap/Teafile | 26 - .../easysdk/tea/payment/wap/main.tea | 45 - .../easysdk/tea/security/textRisk/Teafile | 26 - .../easysdk/tea/security/textRisk/main.tea | 82 - vendor/alipaysdk/easysdk/tea/trans/Teafile | 26 - vendor/alipaysdk/easysdk/tea/trans/main.tea | 94 - vendor/alipaysdk/easysdk/tea/util/aes/Teafile | 26 - .../alipaysdk/easysdk/tea/util/aes/main.tea | 15 - .../easysdk/tea/util/generic/Teafile | 26 - .../easysdk/tea/util/generic/main.tea | 157 -- vendor/autoload.php | 22 - vendor/composer/ClassLoader.php | 579 ------ vendor/composer/InstalledVersions.php | 396 ---- vendor/composer/LICENSE | 21 - vendor/composer/autoload_classmap.php | 10 - vendor/composer/autoload_files.php | 13 - vendor/composer/autoload_namespaces.php | 9 - vendor/composer/autoload_psr4.php | 18 - vendor/composer/autoload_real.php | 50 - vendor/composer/autoload_static.php | 90 - vendor/composer/installed.json | 855 -------- vendor/composer/installed.php | 149 -- vendor/composer/platform_check.php | 26 - vendor/guzzlehttp/guzzle/CHANGELOG.md | 1683 --------------- vendor/guzzlehttp/guzzle/LICENSE | 27 - vendor/guzzlehttp/guzzle/README.md | 94 - vendor/guzzlehttp/guzzle/UPGRADING.md | 1253 ----------- vendor/guzzlehttp/guzzle/composer.json | 131 -- vendor/guzzlehttp/guzzle/package-lock.json | 6 - .../guzzlehttp/guzzle/src/BodySummarizer.php | 28 - .../guzzle/src/BodySummarizerInterface.php | 13 - vendor/guzzlehttp/guzzle/src/Client.php | 483 ----- .../guzzlehttp/guzzle/src/ClientInterface.php | 84 - vendor/guzzlehttp/guzzle/src/ClientTrait.php | 241 --- .../guzzle/src/Cookie/CookieJar.php | 307 --- .../guzzle/src/Cookie/CookieJarInterface.php | 80 - .../guzzle/src/Cookie/FileCookieJar.php | 101 - .../guzzle/src/Cookie/SessionCookieJar.php | 77 - .../guzzle/src/Cookie/SetCookie.php | 492 ----- .../src/Exception/BadResponseException.php | 39 - .../guzzle/src/Exception/ClientException.php | 10 - .../guzzle/src/Exception/ConnectException.php | 56 - .../guzzle/src/Exception/GuzzleException.php | 9 - .../Exception/InvalidArgumentException.php | 7 - .../guzzle/src/Exception/RequestException.php | 150 -- .../guzzle/src/Exception/ServerException.php | 10 - .../Exception/TooManyRedirectsException.php | 7 - .../src/Exception/TransferException.php | 7 - .../guzzle/src/Handler/CurlFactory.php | 741 ------- .../src/Handler/CurlFactoryInterface.php | 25 - .../guzzle/src/Handler/CurlHandler.php | 49 - .../guzzle/src/Handler/CurlMultiHandler.php | 287 --- .../guzzle/src/Handler/EasyHandle.php | 112 - .../guzzle/src/Handler/HeaderProcessor.php | 42 - .../guzzle/src/Handler/MockHandler.php | 212 -- .../guzzlehttp/guzzle/src/Handler/Proxy.php | 51 - .../guzzle/src/Handler/StreamHandler.php | 634 ------ vendor/guzzlehttp/guzzle/src/HandlerStack.php | 275 --- .../guzzle/src/MessageFormatter.php | 199 -- .../guzzle/src/MessageFormatterInterface.php | 18 - vendor/guzzlehttp/guzzle/src/Middleware.php | 268 --- vendor/guzzlehttp/guzzle/src/Pool.php | 125 -- .../guzzle/src/PrepareBodyMiddleware.php | 105 - .../guzzle/src/RedirectMiddleware.php | 228 -- .../guzzlehttp/guzzle/src/RequestOptions.php | 274 --- .../guzzlehttp/guzzle/src/RetryMiddleware.php | 119 -- .../guzzlehttp/guzzle/src/TransferStats.php | 133 -- vendor/guzzlehttp/guzzle/src/Utils.php | 384 ---- vendor/guzzlehttp/guzzle/src/functions.php | 167 -- .../guzzle/src/functions_include.php | 6 - vendor/guzzlehttp/promises/CHANGELOG.md | 187 -- vendor/guzzlehttp/promises/LICENSE | 24 - vendor/guzzlehttp/promises/README.md | 559 ----- vendor/guzzlehttp/promises/composer.json | 58 - .../promises/src/AggregateException.php | 19 - .../promises/src/CancellationException.php | 12 - vendor/guzzlehttp/promises/src/Coroutine.php | 162 -- vendor/guzzlehttp/promises/src/Create.php | 79 - vendor/guzzlehttp/promises/src/Each.php | 81 - .../guzzlehttp/promises/src/EachPromise.php | 248 --- .../promises/src/FulfilledPromise.php | 89 - vendor/guzzlehttp/promises/src/Is.php | 40 - vendor/guzzlehttp/promises/src/Promise.php | 281 --- .../promises/src/PromiseInterface.php | 91 - .../promises/src/PromisorInterface.php | 16 - .../promises/src/RejectedPromise.php | 95 - .../promises/src/RejectionException.php | 49 - vendor/guzzlehttp/promises/src/TaskQueue.php | 71 - .../promises/src/TaskQueueInterface.php | 24 - vendor/guzzlehttp/promises/src/Utils.php | 261 --- vendor/guzzlehttp/psr7/CHANGELOG.md | 485 ----- vendor/guzzlehttp/psr7/LICENSE | 26 - vendor/guzzlehttp/psr7/README.md | 887 -------- vendor/guzzlehttp/psr7/composer.json | 93 - vendor/guzzlehttp/psr7/src/AppendStream.php | 248 --- vendor/guzzlehttp/psr7/src/BufferStream.php | 147 -- vendor/guzzlehttp/psr7/src/CachingStream.php | 153 -- vendor/guzzlehttp/psr7/src/DroppingStream.php | 49 - .../src/Exception/MalformedUriException.php | 14 - vendor/guzzlehttp/psr7/src/FnStream.php | 180 -- vendor/guzzlehttp/psr7/src/Header.php | 134 -- vendor/guzzlehttp/psr7/src/HttpFactory.php | 94 - vendor/guzzlehttp/psr7/src/InflateStream.php | 37 - vendor/guzzlehttp/psr7/src/LazyOpenStream.php | 49 - vendor/guzzlehttp/psr7/src/LimitStream.php | 157 -- vendor/guzzlehttp/psr7/src/Message.php | 246 --- vendor/guzzlehttp/psr7/src/MessageTrait.php | 261 --- vendor/guzzlehttp/psr7/src/MimeType.php | 1259 ----------- .../guzzlehttp/psr7/src/MultipartStream.php | 165 -- vendor/guzzlehttp/psr7/src/NoSeekStream.php | 28 - vendor/guzzlehttp/psr7/src/PumpStream.php | 179 -- vendor/guzzlehttp/psr7/src/Query.php | 118 -- vendor/guzzlehttp/psr7/src/Request.php | 159 -- vendor/guzzlehttp/psr7/src/Response.php | 161 -- vendor/guzzlehttp/psr7/src/Rfc7230.php | 23 - vendor/guzzlehttp/psr7/src/ServerRequest.php | 340 --- vendor/guzzlehttp/psr7/src/Stream.php | 283 --- .../psr7/src/StreamDecoratorTrait.php | 156 -- vendor/guzzlehttp/psr7/src/StreamWrapper.php | 207 -- vendor/guzzlehttp/psr7/src/UploadedFile.php | 211 -- vendor/guzzlehttp/psr7/src/Uri.php | 743 ------- vendor/guzzlehttp/psr7/src/UriComparator.php | 52 - vendor/guzzlehttp/psr7/src/UriNormalizer.php | 220 -- vendor/guzzlehttp/psr7/src/UriResolver.php | 211 -- vendor/guzzlehttp/psr7/src/Utils.php | 477 ----- vendor/psr/http-client/CHANGELOG.md | 31 - vendor/psr/http-client/LICENSE | 19 - vendor/psr/http-client/README.md | 12 - vendor/psr/http-client/composer.json | 30 - .../src/ClientExceptionInterface.php | 10 - .../psr/http-client/src/ClientInterface.php | 20 - .../src/NetworkExceptionInterface.php | 24 - .../src/RequestExceptionInterface.php | 24 - vendor/psr/http-factory/LICENSE | 21 - vendor/psr/http-factory/README.md | 12 - vendor/psr/http-factory/composer.json | 38 - .../src/RequestFactoryInterface.php | 18 - .../src/ResponseFactoryInterface.php | 18 - .../src/ServerRequestFactoryInterface.php | 24 - .../src/StreamFactoryInterface.php | 45 - .../src/UploadedFileFactoryInterface.php | 34 - .../http-factory/src/UriFactoryInterface.php | 17 - vendor/psr/http-message/CHANGELOG.md | 36 - vendor/psr/http-message/LICENSE | 19 - vendor/psr/http-message/README.md | 16 - vendor/psr/http-message/composer.json | 26 - .../psr/http-message/docs/PSR7-Interfaces.md | 130 -- vendor/psr/http-message/docs/PSR7-Usage.md | 159 -- .../psr/http-message/src/MessageInterface.php | 187 -- .../psr/http-message/src/RequestInterface.php | 130 -- .../http-message/src/ResponseInterface.php | 68 - .../src/ServerRequestInterface.php | 261 --- .../psr/http-message/src/StreamInterface.php | 158 -- .../src/UploadedFileInterface.php | 123 -- vendor/psr/http-message/src/UriInterface.php | 324 --- vendor/ralouphie/getallheaders/LICENSE | 21 - vendor/ralouphie/getallheaders/README.md | 27 - vendor/ralouphie/getallheaders/composer.json | 26 - .../getallheaders/src/getallheaders.php | 46 - .../deprecation-contracts/CHANGELOG.md | 5 - vendor/symfony/deprecation-contracts/LICENSE | 19 - .../symfony/deprecation-contracts/README.md | 26 - .../deprecation-contracts/composer.json | 35 - .../deprecation-contracts/function.php | 27 - woo-alipay.php | 19 +- 620 files changed, 1050 insertions(+), 81989 deletions(-) delete mode 100755 README-EN.md mode change 100644 => 100755 README.md create mode 100644 assets/images/alipay-barcode-icon.svg create mode 100644 assets/images/alipay-f2f-icon.svg create mode 100644 assets/images/alipay-huabei-icon.svg delete mode 100644 composer.lock delete mode 100644 css/alipay-facetopay.css delete mode 100644 css/alipay-installment.css create mode 100644 enable-gateways.php create mode 100644 inc/class-wc-alipay-agreement.php delete mode 100644 inc/class-wc-alipay-facetopay-blocks-support.php delete mode 100644 inc/class-wc-alipay-facetopay.php delete mode 100644 inc/class-wc-alipay-installment-blocks-support.php delete mode 100644 inc/class-wc-alipay-installment.php create mode 100644 inc/class-wc-alipay-subscription-ui.php delete mode 100644 inc/templates/payment-qrcode.php delete mode 100644 js/alipay-facetopay.js delete mode 100644 js/alipay-installment.js delete mode 100644 js/frontend/blocks-facetopay.asset.php delete mode 100644 js/frontend/blocks-facetopay.js delete mode 100644 js/frontend/blocks-installment.asset.php delete mode 100644 js/frontend/blocks-installment.js delete mode 100644 vendor/adbario/php-dot-notation/LICENSE.md delete mode 100644 vendor/adbario/php-dot-notation/composer.json delete mode 100644 vendor/adbario/php-dot-notation/src/Dot.php delete mode 100644 vendor/adbario/php-dot-notation/src/helpers.php delete mode 100644 vendor/alibabacloud/tea-fileform/.gitignore delete mode 100644 vendor/alibabacloud/tea-fileform/.php_cs.dist delete mode 100644 vendor/alibabacloud/tea-fileform/README-CN.md delete mode 100644 vendor/alibabacloud/tea-fileform/README.md delete mode 100644 vendor/alibabacloud/tea-fileform/composer.json delete mode 100644 vendor/alibabacloud/tea-fileform/phpunit.xml delete mode 100644 vendor/alibabacloud/tea-fileform/src/FileForm.php delete mode 100644 vendor/alibabacloud/tea-fileform/src/FileForm/FileField.php delete mode 100644 vendor/alibabacloud/tea-fileform/src/FileFormStream.php delete mode 100644 vendor/alibabacloud/tea-fileform/tests/FileFormTest.php delete mode 100644 vendor/alibabacloud/tea-fileform/tests/bootstrap.php delete mode 100644 vendor/alibabacloud/tea/.php_cs.dist delete mode 100644 vendor/alibabacloud/tea/CHANGELOG.md delete mode 100644 vendor/alibabacloud/tea/LICENSE.md delete mode 100644 vendor/alibabacloud/tea/README.md delete mode 100644 vendor/alibabacloud/tea/composer.json delete mode 100644 vendor/alibabacloud/tea/src/Exception/TeaError.php delete mode 100644 vendor/alibabacloud/tea/src/Exception/TeaRetryError.php delete mode 100644 vendor/alibabacloud/tea/src/Exception/TeaUnableRetryError.php delete mode 100644 vendor/alibabacloud/tea/src/Helper.php delete mode 100644 vendor/alibabacloud/tea/src/Model.php delete mode 100644 vendor/alibabacloud/tea/src/Parameter.php delete mode 100644 vendor/alibabacloud/tea/src/Request.php delete mode 100644 vendor/alibabacloud/tea/src/Response.php delete mode 100644 vendor/alibabacloud/tea/src/Tea.php delete mode 100644 vendor/alipaysdk/easysdk/.gitattributes delete mode 100644 vendor/alipaysdk/easysdk/.gitignore delete mode 100644 vendor/alipaysdk/easysdk/APIDoc.md delete mode 100644 vendor/alipaysdk/easysdk/CHANGELOG delete mode 100644 vendor/alipaysdk/easysdk/LICENSE delete mode 100644 vendor/alipaysdk/easysdk/README.md delete mode 100755 vendor/alipaysdk/easysdk/composer.json delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK.sln delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/AlipayEasySDK.csproj delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Models/AlipaySystemOauthTokenResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Factory/Factory.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Article.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Context.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Keyword.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Template.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Text.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceAddResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateAddResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/IdentityParam.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/MerchantConfig.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Models/AlipayTradeAppPayResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCancelResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCloseResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCreateResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeQueryResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeRefundResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/PresetPayToolInfo.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/RefundRoyaltyResult.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeFundBill.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleDetail.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleInfo.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePayResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/TradeFundBill.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/VoucherDetail.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/AlipayTradeCreateResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/HuabeiConfig.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Models/AlipayTradePagePayResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Models/AlipayTradeWapPayResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/AES/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Models/AlipayOpenApiGenericResponse.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/README.md delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Image/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Base/OAuth/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Qrcode/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Video/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Factory/FactoryTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayCertPublicKey_RSA2.crt delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayRootCert.crt delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/appCertPublicKey_2019051064521003.crt delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/privateKey.json delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/sample.mp4 delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/sample.png delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/OpenLife/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/Pass/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/TemplateMessage/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Member/Identification/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/App/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Common/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/FaceToFace/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Huabei/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Page/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Wap/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Security/TextRisk/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/TestAccount.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/UnitTest.csproj delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Util/AES/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/csharp/UnitTest/Util/Generic/ClientTest.cs delete mode 100644 vendor/alipaysdk/easysdk/java/README.md delete mode 100644 vendor/alipaysdk/easysdk/java/pom.xml delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/models/AlipayOfflineMaterialImageUploadResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/models/AlipaySystemOauthTokenResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/models/AlipayOpenAppQrcodeCreateResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/models/AlipayOfflineMaterialImageUploadResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/Factory.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/MultipleFactory.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSClient.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSConfig.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSSigner.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunRpcClient.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/AccessKeyCredentials.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/BasicSessionCredentials.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/EcsRamRoleCredentials.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/ICredentials.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/exceptions/CredentialException.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompatibleUrlConnClient.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompositeX509TrustManager.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/FormatType.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpMessage.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpRequest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/MethodType.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/TrueHostnameVerifier.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/CredentialsProviderFactory.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ECSMetadataServiceCredentialsFetcher.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/EcsRamRoleCredentialsProvider.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ICredentialsProvider.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/RamRoleArnCredentialsProvider.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/StaticCredentialsProvider.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/AcsURLEncoder.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/Base64Utils.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/CredentialType.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/HmacSHA1Signer.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/ParameterUtils.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/StringUtils.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignRequest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyRequest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/RuntimeOptions.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicLifeMsgRecallResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentCreateResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentModifyResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageSingleSendResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageTotalSendResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicSettingCategoryQueryResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Article.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Context.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Keyword.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Template.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Text.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceAddResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceUpdateResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateAddResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateUpdateResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/models/AlipayOpenAppMiniTemplatemessageSendResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenCertifyResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenInitializeResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenQueryResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/IdentityParam.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/MerchantConfig.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/models/AlipayTradeAppPayResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayDataDataserviceBillDownloadurlQueryResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCancelResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCloseResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCreateResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeFastpayRefundQueryResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeQueryResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeRefundResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/PresetPayToolInfo.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/RefundRoyaltyResult.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeFundBill.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleDetail.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleInfo.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePayResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePrecreateResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/TradeFundBill.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/VoucherDetail.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/AlipayTradeCreateResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/HuabeiConfig.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/models/AlipayTradePagePayResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/models/AlipayTradeWapPayResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/models/AlipaySecurityRiskContentDetectResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/aes/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/Client.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericSDKResponse.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/TestAccount.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/image/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/oauth/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/qrcode/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/video/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/openlife/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/pass/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/templatemessage/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/member/identification/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/multipleFactory/MultipleFactoryTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/app/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/common/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/facetoface/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/huabei/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/page/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/wap/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/security/textrisk/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/aes/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/generic/ClientTest.java delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayCertPublicKey_RSA2.crt delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayRootCert.crt delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/resources/fixture/aliyunAccessKey.json delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/resources/fixture/appCertPublicKey_2021002177673029.crt delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/resources/fixture/privateKey.json delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/resources/fixture/sample.mp4 delete mode 100644 vendor/alipaysdk/easysdk/java/src/test/resources/fixture/sample.png delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel.sln delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/EasySDKKernel.csproj delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/AlipayConstants.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/CertEnvironment.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Client.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Config.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Context.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AES.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AntCertificationUtil.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ArgumentValidator.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/DictionaryUtil.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/JsonUtil.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/MultipartUtil.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/PageUtil.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ResponseChecker.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/SignContentExtractor.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/Signer.cs delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/pom.xml delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/AlipayConstants.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/CertEnvironment.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Client.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Config.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Context.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AES.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AntCertificationUtil.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/JsonUtil.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/MultipartUtil.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/PageUtil.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/ResponseChecker.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/SignContentExtractor.java delete mode 100644 vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/Signer.java delete mode 100644 vendor/alipaysdk/easysdk/php/README.md delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/Image/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/OAuth/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/OAuth/Models/AlipaySystemOauthTokenResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/Video/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/AlipayConstants.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/CertEnvironment.php delete mode 100755 vendor/alipaysdk/easysdk/php/src/Kernel/Config.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/EasySDKKernel.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Exceptions/RuntimeException.php delete mode 100755 vendor/alipaysdk/easysdk/php/src/Kernel/Factory.php delete mode 100755 vendor/alipaysdk/easysdk/php/src/Kernel/MultipleFactory.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/AES.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/AlipayEncrypt.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/AntCertificationUtil.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/JsonUtil.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/PageUtil.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/ResponseChecker.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/SignContentExtractor.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Kernel/Util/Signer.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Article.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Context.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Keyword.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Template.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Text.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceAddResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateAddResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Member/Identification/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/IdentityParam.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/MerchantConfig.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/App/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/App/Models/AlipayTradeAppPayResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCancelResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCloseResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCreateResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeQueryResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeRefundResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/PresetPayToolInfo.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/RefundRoyaltyResult.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeFundBill.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleDetail.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleInfo.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePayResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/TradeFundBill.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/VoucherDetail.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/AlipayTradeCreateResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/HuabeiConfig.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Page/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Page/Models/AlipayTradePagePayResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Wap/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Payment/Wap/Models/AlipayTradeWapPayResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Util/AES/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Util/Generic/Client.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericSDKResponse.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/TestAccount.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/base/image/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/base/oauth/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/base/qrcode/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/base/video/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/marketing/openlife/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/marketing/pass/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/marketing/templatemessage/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/member/identification/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/multipleFactory/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/payment/app/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/payment/common/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/payment/facetoface/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/payment/huabei/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/payment/page/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/payment/wap/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayCertPublicKey_RSA2.crt delete mode 100644 vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayRootCert.crt delete mode 100644 vendor/alipaysdk/easysdk/php/test/resources/fixture/appCertPublicKey_2019051064521003.crt delete mode 100644 vendor/alipaysdk/easysdk/php/test/resources/fixture/privateKey.json delete mode 100644 vendor/alipaysdk/easysdk/php/test/resources/fixture/sample.mp4 delete mode 100755 vendor/alipaysdk/easysdk/php/test/resources/fixture/sample.png delete mode 100644 vendor/alipaysdk/easysdk/php/test/security/textrisk/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/util/aes/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/php/test/util/generic/ClientTest.php delete mode 100644 vendor/alipaysdk/easysdk/tea/base/image/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/base/image/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/base/oauth/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/base/oauth/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/base/qrcode/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/base/qrcode/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/base/video/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/base/video/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/kernel/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/kernel/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/marketing/openlife/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/marketing/openlife/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/marketing/pass/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/marketing/pass/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/marketing/templateMessage/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/marketing/templateMessage/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/member/identification/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/member/identification/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/app/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/app/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/common/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/common/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/faceToFace/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/faceToFace/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/huabei/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/huabei/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/page/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/page/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/wap/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/payment/wap/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/security/textRisk/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/security/textRisk/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/trans/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/trans/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/util/aes/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/util/aes/main.tea delete mode 100644 vendor/alipaysdk/easysdk/tea/util/generic/Teafile delete mode 100644 vendor/alipaysdk/easysdk/tea/util/generic/main.tea delete mode 100644 vendor/autoload.php delete mode 100644 vendor/composer/ClassLoader.php delete mode 100644 vendor/composer/InstalledVersions.php delete mode 100644 vendor/composer/LICENSE delete mode 100644 vendor/composer/autoload_classmap.php delete mode 100644 vendor/composer/autoload_files.php delete mode 100644 vendor/composer/autoload_namespaces.php delete mode 100644 vendor/composer/autoload_psr4.php delete mode 100644 vendor/composer/autoload_real.php delete mode 100644 vendor/composer/autoload_static.php delete mode 100644 vendor/composer/installed.json delete mode 100644 vendor/composer/installed.php delete mode 100644 vendor/composer/platform_check.php delete mode 100644 vendor/guzzlehttp/guzzle/CHANGELOG.md delete mode 100644 vendor/guzzlehttp/guzzle/LICENSE delete mode 100644 vendor/guzzlehttp/guzzle/README.md delete mode 100644 vendor/guzzlehttp/guzzle/UPGRADING.md delete mode 100644 vendor/guzzlehttp/guzzle/composer.json delete mode 100644 vendor/guzzlehttp/guzzle/package-lock.json delete mode 100644 vendor/guzzlehttp/guzzle/src/BodySummarizer.php delete mode 100644 vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Client.php delete mode 100644 vendor/guzzlehttp/guzzle/src/ClientInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/ClientTrait.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ClientException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/RequestException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ServerException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/TransferException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/Proxy.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/HandlerStack.php delete mode 100644 vendor/guzzlehttp/guzzle/src/MessageFormatter.php delete mode 100644 vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Middleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Pool.php delete mode 100644 vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/RequestOptions.php delete mode 100644 vendor/guzzlehttp/guzzle/src/RetryMiddleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/TransferStats.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Utils.php delete mode 100644 vendor/guzzlehttp/guzzle/src/functions.php delete mode 100644 vendor/guzzlehttp/guzzle/src/functions_include.php delete mode 100644 vendor/guzzlehttp/promises/CHANGELOG.md delete mode 100644 vendor/guzzlehttp/promises/LICENSE delete mode 100644 vendor/guzzlehttp/promises/README.md delete mode 100644 vendor/guzzlehttp/promises/composer.json delete mode 100644 vendor/guzzlehttp/promises/src/AggregateException.php delete mode 100644 vendor/guzzlehttp/promises/src/CancellationException.php delete mode 100644 vendor/guzzlehttp/promises/src/Coroutine.php delete mode 100644 vendor/guzzlehttp/promises/src/Create.php delete mode 100644 vendor/guzzlehttp/promises/src/Each.php delete mode 100644 vendor/guzzlehttp/promises/src/EachPromise.php delete mode 100644 vendor/guzzlehttp/promises/src/FulfilledPromise.php delete mode 100644 vendor/guzzlehttp/promises/src/Is.php delete mode 100644 vendor/guzzlehttp/promises/src/Promise.php delete mode 100644 vendor/guzzlehttp/promises/src/PromiseInterface.php delete mode 100644 vendor/guzzlehttp/promises/src/PromisorInterface.php delete mode 100644 vendor/guzzlehttp/promises/src/RejectedPromise.php delete mode 100644 vendor/guzzlehttp/promises/src/RejectionException.php delete mode 100644 vendor/guzzlehttp/promises/src/TaskQueue.php delete mode 100644 vendor/guzzlehttp/promises/src/TaskQueueInterface.php delete mode 100644 vendor/guzzlehttp/promises/src/Utils.php delete mode 100644 vendor/guzzlehttp/psr7/CHANGELOG.md delete mode 100644 vendor/guzzlehttp/psr7/LICENSE delete mode 100644 vendor/guzzlehttp/psr7/README.md delete mode 100644 vendor/guzzlehttp/psr7/composer.json delete mode 100644 vendor/guzzlehttp/psr7/src/AppendStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/BufferStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/CachingStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/DroppingStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php delete mode 100644 vendor/guzzlehttp/psr7/src/FnStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/Header.php delete mode 100644 vendor/guzzlehttp/psr7/src/HttpFactory.php delete mode 100644 vendor/guzzlehttp/psr7/src/InflateStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/LazyOpenStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/LimitStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/Message.php delete mode 100644 vendor/guzzlehttp/psr7/src/MessageTrait.php delete mode 100644 vendor/guzzlehttp/psr7/src/MimeType.php delete mode 100644 vendor/guzzlehttp/psr7/src/MultipartStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/NoSeekStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/PumpStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/Query.php delete mode 100644 vendor/guzzlehttp/psr7/src/Request.php delete mode 100644 vendor/guzzlehttp/psr7/src/Response.php delete mode 100644 vendor/guzzlehttp/psr7/src/Rfc7230.php delete mode 100644 vendor/guzzlehttp/psr7/src/ServerRequest.php delete mode 100644 vendor/guzzlehttp/psr7/src/Stream.php delete mode 100644 vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php delete mode 100644 vendor/guzzlehttp/psr7/src/StreamWrapper.php delete mode 100644 vendor/guzzlehttp/psr7/src/UploadedFile.php delete mode 100644 vendor/guzzlehttp/psr7/src/Uri.php delete mode 100644 vendor/guzzlehttp/psr7/src/UriComparator.php delete mode 100644 vendor/guzzlehttp/psr7/src/UriNormalizer.php delete mode 100644 vendor/guzzlehttp/psr7/src/UriResolver.php delete mode 100644 vendor/guzzlehttp/psr7/src/Utils.php delete mode 100644 vendor/psr/http-client/CHANGELOG.md delete mode 100644 vendor/psr/http-client/LICENSE delete mode 100644 vendor/psr/http-client/README.md delete mode 100644 vendor/psr/http-client/composer.json delete mode 100644 vendor/psr/http-client/src/ClientExceptionInterface.php delete mode 100644 vendor/psr/http-client/src/ClientInterface.php delete mode 100644 vendor/psr/http-client/src/NetworkExceptionInterface.php delete mode 100644 vendor/psr/http-client/src/RequestExceptionInterface.php delete mode 100644 vendor/psr/http-factory/LICENSE delete mode 100644 vendor/psr/http-factory/README.md delete mode 100644 vendor/psr/http-factory/composer.json delete mode 100644 vendor/psr/http-factory/src/RequestFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/ResponseFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/ServerRequestFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/StreamFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/UploadedFileFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/UriFactoryInterface.php delete mode 100644 vendor/psr/http-message/CHANGELOG.md delete mode 100644 vendor/psr/http-message/LICENSE delete mode 100644 vendor/psr/http-message/README.md delete mode 100644 vendor/psr/http-message/composer.json delete mode 100644 vendor/psr/http-message/docs/PSR7-Interfaces.md delete mode 100644 vendor/psr/http-message/docs/PSR7-Usage.md delete mode 100644 vendor/psr/http-message/src/MessageInterface.php delete mode 100644 vendor/psr/http-message/src/RequestInterface.php delete mode 100644 vendor/psr/http-message/src/ResponseInterface.php delete mode 100644 vendor/psr/http-message/src/ServerRequestInterface.php delete mode 100644 vendor/psr/http-message/src/StreamInterface.php delete mode 100644 vendor/psr/http-message/src/UploadedFileInterface.php delete mode 100644 vendor/psr/http-message/src/UriInterface.php delete mode 100644 vendor/ralouphie/getallheaders/LICENSE delete mode 100644 vendor/ralouphie/getallheaders/README.md delete mode 100644 vendor/ralouphie/getallheaders/composer.json delete mode 100644 vendor/ralouphie/getallheaders/src/getallheaders.php delete mode 100644 vendor/symfony/deprecation-contracts/CHANGELOG.md delete mode 100644 vendor/symfony/deprecation-contracts/LICENSE delete mode 100644 vendor/symfony/deprecation-contracts/README.md delete mode 100644 vendor/symfony/deprecation-contracts/composer.json delete mode 100644 vendor/symfony/deprecation-contracts/function.php diff --git a/README-EN.md b/README-EN.md deleted file mode 100755 index 77bfaa49..00000000 --- a/README-EN.md +++ /dev/null @@ -1,227 +0,0 @@ -# Woo Alipay - Payment Gateway for WooCommerce - -[![WordPress Version](https://img.shields.io/badge/WordPress-6.0%2B-blue.svg)](https://wordpress.org/) -[![WooCommerce Version](https://img.shields.io/badge/WooCommerce-10.2.2%2B-green.svg)](https://woocommerce.com/) -[![License](https://img.shields.io/badge/License-GPL%20v2%2B-brightgreen.svg)](https://opensource.org/licenses/GPL-2.0+) - -A comprehensive Alipay payment gateway integration for WooCommerce, supporting Mainland China payment methods with advanced features and modern WooCommerce compatibility. - -* [General Description](#user-content-general-description) - * [Requirements](#user-content-requirements) - * [Features](#user-content-features) - * [Installation](#user-content-installation) - * [Overview](#user-content-overview) -* [Settings](#user-content-settings) - * [Gateway settings](#user-content-gateway-settings) -* [Gateway configuration help](#user-content-gateway-configuration-help) - * [Configuration process overview](#user-content-configuration-process-overview) - * [Register features, website URL and callback](#user-content-register-features-website-url-and-callback) - * [Key management](#user-content-key-management - ) -* [Templates](#user-content-templates) - -## General Description - -Woo Alipay adds an Alipay China payment gateway to WooCommerce-powered websites. -This Mainland China gateway allows customers to pay both in mobile browsers or from their computer. - -### Requirements - -* A [China Mainland Alipay merchant account](https://b.alipay.com/). -* The Payment products "支付产品" Computer website payment "电脑网站支付" and Mobile website payment "手机网站支付" enabled. - -### Features - -This plugin provides comprehensive Alipay payment integration with the following features: - -#### Payment Methods -- **Mobile Web Payment:** Seamless payment experience via Alipay mobile app -- **Computer Web Payment:** Desktop/laptop payment through credentials or QR code authentication -- **Installment Payment:** Support for Alipay Huabei installment payments -- **Face-to-Face Payment:** QR code scanning payment for retail scenarios - -#### Advanced Features -- **WooCommerce Blocks Support:** Full compatibility with WooCommerce Checkout Block -- **HPOS Compatibility:** Support for WooCommerce High-Performance Order Storage -- **Order Management:** Advanced order query, timeout handling, and status synchronization -- **Smart Refunds:** Manual and automatic refund processing with failed transaction recovery -- **Webhook Reliability:** Retry mechanism for handling webhook failures -- **Multi-Currency Support:** Automatic currency conversion with configurable exchange rates - -#### Integration & Compatibility -- **Multilingual Ready:** Compatible with WPML and WooCommerce Multilingual -- **Plugin Compatibility:** Works with Ultimate Member and WooCommerce-compatible caching plugins -- **Modern Architecture:** Built with Alipay Easy SDK for improved performance and reliability - -### Installation - -1. **Download the Plugin** - Download the plugin zip file from [Wenpai.org](https://wenpai.org/plugins/woo-alipay) or the GitHub repository. - -2. **Install via WordPress Admin** - - Navigate to **Plugins → Add New → Upload Plugin** - - Choose the downloaded zip file and click "Install Now" - - Activate the plugin after installation - -3. **Configure Alipay Settings** - - Go to **WooCommerce → Settings → Payments → Alipay** - - Enable the payment gateway and configure your Alipay credentials - - Follow the configuration guide below to set up your Alipay account - -### Overview - -Woo Alipay seamlessly integrates with WooCommerce to provide a robust payment solution for Chinese customers. The plugin handles the complete payment lifecycle from order creation to payment confirmation and refund processing, ensuring a smooth experience for both merchants and customers. - -## Settings - -The settings below are added to WooCommerce and WP Weixin when the plugin is active. - -### Gateway settings - -The following settings can be accessed in WooCommerce > Settings > Payments > Alipay: - -| Name | Type | Description | -| --------------------------------------- |:--------:| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Enable/Disable | checkbox | Used to enable/disable the payment gateway. | -| Checkout page title | text | Title displayed for the payment gateway on the checkout page. | -| Checkout page description | text | Description displayed for the payment gateway on the checkout page. | -| Alipay App ID | text | The App ID found in Alipay Open Platform. | -| Alipay public key | textarea | The Alipay public key generated in the Alipay Open Platform ("支付宝公钥"). | -| Alipay Merchant application private key | textarea | The private key generated with the provided Alipay tool application or the `openssl` command line.
This key is secret and is not recorded in Alipay Open Platform - **DO NOT SHARE THIS VALUE WITH ANYONE**.| -| Sandbox | checkbox | If checked, Run Alipay in sandbox mode, with the settings found in [https://openhome.alipay.com/platform/appDaily.htm](https://openhome.alipay.com/platform/appDaily.htm). | -| Exchange Rate | number | Exchange rate against Chinese Yuan (shows if the store currency is not set to Chinese Yuan) | - -## Gateway configuration help - -### Configuration process overview - -* Go to the [Alipay Open Platform](https://openhome.alipay.com/platform/developerIndex.htm) and log in. -* If necessary, create a new app by following the options under the create application "创建应用" menu: website & mobile application "网页&移动应用" > payment access "支付接入". The application type "应用类型" should be web page application "网页应用" and the website URL "网址url" should be `https://[[your-homepage-url]]` where `[[your-homepage-url]]` is the home URL of your website. Creating an app will require one or two working day(s) audit of your website content by Alipay. -* Once the app is created, go to the app information page - accessible directly via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Activate payment features and configure the app with the gateway information (see ["Register features, website URL and callback"](#user-content-register-features-website-url-and-callback) below). -* If necessary, generate the application public and private keys, register the application public key in the Alipay Open Platform, and generate the Alipay public key (see ["Key management"](#user-content-key-management) below). -* Fill in the configuration fields below. - - -### Register features, website URL and callback -To communicate with the payment gateway, Alipay needs some features activated, to know your website URL, and to be aware of the WooCommerce gateway callback endpoint. - -* Go to the app overview page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/overview` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the add feature button "添加功能" and add the computer website payment "电脑网站支付" and the mobile website payment "手机网站支付" features - these features need to have been activated beforehand (process not describe in this guide - see the Payment products "支付产品" [Computer website payment "电脑网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001000) and [Mobile website payment "手机网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001001)). -* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the setup link "设置" (or modify link "修改") of the application gateway "应用网关" field. -* In the application gateway "应用网关" modal, enter `https://[[your-domain.com]]` (replace `[[your-domain.com]]` with the domain or subdomain running WordPress and Woo Alipay) and click the confirm "确定" button. -* Click the setup link "设置" (or modify link "修改") of the authorization callback address "授权回调地址" field. -* In the authorization callback address "授权回调地址" modal, enter `https` in the callback address type "回调地址类型" field, `https://[[your-homepage-url]]/wc-api/WC_Alipay/]]` in the callback address "回调地址" field (replace `[[your-homepage-url]]` with the home URL of your website), and leave the verify domain only "只验证域名" checkbox unchecked for added security, then click the confirm "确定" button. - -### Key management - -#### 1 - Generating keys: - -To complete the payment gateway configuration, you need to generate an application public key, an application private key and an Alipay public key. - -___ - -##### Generate the application keys with the Alipay Open Platform Development Assistant application (option 1): - -* Go to the [Alipay tools documentation page](https://docs.open.alipay.com/291/106097/) and download the Alipay Open Platform Development Assistant application for the operating system of your choice (Windows or MacOS). -* Within the Alipay Open Platform Development Assistant application, in the "生成密钥" section (default screen when opening the Assistant), select "UTF-8" and "PKCS1非Java使用" options and click the "生成密钥" button to populate the text areas. -* Copy the application public key displayed in the "应用公钥" text area in a text file on your computer (referred to as `alipay_app_public_key.txt` below). -* Copy the application private key displayed in the "应用私钥" text area in a text file on your computer (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. - -___ - -##### Generate the application keys with openssl command line in a terminal (option 2): - -* Type `openssl` to open the OpenSSL command line tool. -* Type `genrsa -out alipay_app_private_key.txt 2048` to generate the application private key file (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. -* Type `rsa -in alipay_app_private_key.txt -pubout -out alipay_app_public_key.txt` to generate the application public key file (referred to as `alipay_app_public_key.txt` below). -* Type `exit` to quit the command line tool. -* Open both files with a text editor, remove all the header, footer, space and carriage return characters to have each key as a single-line long string, and save the files. - -___ - -##### Register the application public key in Alipay Open Platform and generate the Alipay public key (requires completing option 1 or option 2 above): - -* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. -* Use the associated phone number or password to authenticate. -* In the signature key configuration form (加签管理 | 1 - 加签内容配置), select the public key option "公钥". -* Paste the content of the previously saved file `alipay_app_public_key.txt` in the "填写公钥字符" text area. -* Click the "保存设置" button to register the application public key and generate the Alipay public key. - -___ - -#### 2 - Using the application private key and finding the Alipay public key: - -* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). -* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. -* If necessary, use the associated Alipay account's phone number or password to authenticate. -* In the signature completed configuration form (加签管理 | 2 - 加签配置完成), copy the Alipay public key displayed under "支付宝公钥". -* Paste the Alipay public key in the "Alipay public key" field below. -* Paste the content of the previously saved file `alipay_app_private_key.txt` in the "Alipay merchant application private key" field below. -* Click the "Save changes" button. - -## Templates - -The following template file is selected using the `locate_template()` and included with `load_template()` functions provided by WordPress. This means it can be overloaded in the active WordPress theme. Developers may place their custom template file in the following directories under the theme's folder (in order of selection priority): - -* `plugins/woo-alipay/` -* `woo-alipay/` -* `woocommerce/woo-alipay/` -* at the root of the theme's folder - -___ - -### redirected-pay - -``` -redirected-pay.php -``` - -**Description** -The template of the page displayed when users are redirected before payment. The template acts as a placeholder before showing the Alipay payment UI. - -**Associated style enqueued with key:** -`woo-alipay-main-style` - -## FAQ - -### Q: Does this plugin support Alipay International payments? -A: No, this plugin is specifically designed for Alipay Mainland China payments. For international payments, you would need a different Alipay solution. - -### Q: What WooCommerce versions are supported? -A: The plugin supports WooCommerce 10.2.2 and later, including full compatibility with WooCommerce Blocks and High-Performance Order Storage (HPOS). - -### Q: Can I use this plugin outside of China? -A: The plugin is designed for merchants who have a China Mainland Alipay merchant account. Geographic restrictions may apply based on your Alipay account configuration. - -### Q: How do I handle payment failures or timeouts? -A: The plugin includes automatic order timeout handling and webhook retry mechanisms. You can configure timeout settings in the plugin's admin panel. - -### Q: Is multi-currency support available? -A: Yes, the plugin supports multi-currency payments with automatic conversion to Chinese Yuan using configurable exchange rates. - -### Q: Can I customize the payment redirect page? -A: Yes, the plugin provides template overrides. You can customize the `redirected-pay.php` template in your theme as described in the Templates section. - -## Support - -- **Official Website:** [WooCN.com](https://woocn.com/) -- **Plugin Page:** [Wenpai.org](https://wenpai.org/plugins/woo-alipay) -- **Documentation:** [Plugin Documentation](https://wenpai.org/plugins/woo-alipay) -- **Issues & Support:** For technical support and bug reports, please contact through the official website or GitHub repository. - -## License - -This plugin is released under the GNU General Public License v2.0 or later. See [LICENSE](LICENSE) file for details. - -## Contributing - -Contributions are welcome! Please feel free to submit pull requests or report issues on the GitHub repository. - ---- - -**Version:** 3.2.0 -**Last Updated:** 2025 -**Author:** WooCN.com diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 136a6aab..1c194004 --- a/README.md +++ b/README.md @@ -1,218 +1,147 @@ -# Woo Alipay - WooCommerce 支付宝支付网关插件 +# Payment gateway for WooCommerce - Woo Alipay -[![WordPress 版本](https://img.shields.io/badge/WordPress-6.0%2B-blue.svg)](https://wordpress.org/) -[![WooCommerce 版本](https://img.shields.io/badge/WooCommerce-10.2.2%2B-green.svg)](https://woocommerce.com/) -[![许可证](https://img.shields.io/badge/License-GPL%20v2%2B-brightgreen.svg)](https://opensource.org/licenses/GPL-2.0+) +* [General Description](#user-content-general-description) + * [Requirements](#user-content-requirements) + * [Overview](#user-content-overview) +* [Settings](#user-content-settings) + * [Gateway settings](#user-content-gateway-settings) +* [Gateway configuration help](#user-content-gateway-configuration-help) + * [Configuration process overview](#user-content-configuration-process-overview) + * [Register features, website URL and callback](#user-content-register-features-website-url-and-callback) + * [Key management](#user-content-key-management + ) +* [Templates](#user-content-templates) -为 WooCommerce 提供全面的支付宝支付网关集成,支持中国大陆支付方式,具备先进功能和现代 WooCommerce 兼容性。 +## General Description -* [总体描述](#user-content-总体描述) - * [系统要求](#user-content-系统要求) - * [功能特性](#user-content-功能特性) - * [安装说明](#user-content-安装说明) - * [功能概述](#user-content-功能概述) - * [设置说明](#user-content-设置说明) - * [网关设置](#user-content-网关设置) - * [网关配置帮助](#user-content-网关配置帮助) - * [配置流程概述](#user-content-配置流程概述) - * [注册功能、网站URL和回调](#user-content-注册功能网站url和回调) - * [密钥管理](#user-content-密钥管理) -* [模板文件](#user-content-模板文件) -* [常见问题](#user-content-常见问题) -* [技术支持](#user-content-技术支持) +Woo Alipay adds an Alipay China payment gateway to WooCommerce-powered websites. +This Mainland China gateway allows customers to pay both in mobile browsers or from their computer. -## 总体描述 +### Requirements -Woo Alipay 为 WooCommerce 驱动的网站添加了支付宝中国支付网关。 -这个中国大陆网关允许客户在移动浏览器或电脑上进行支付。 +* A [China Mainland Alipay merchant account](https://b.alipay.com/). +* The Payment products "支付产品" Computer website payment "电脑网站支付" and Mobile website payment "手机网站支付" enabled. -### 系统要求 +### Overview -* [中国大陆支付宝商户账户](https://b.alipay.com/) -* 已启用支付产品"电脑网站支付"和"手机网站支付" +This plugin adds the following major features to WooCommerce: -### 功能特性 +* **Payment of WooCommerce orders in mobile web browser app:** calls the Alipay mobile app for a seamless experience. +* **Payment of WooCommerce orders standard in web browser:** authentication performed via credentials or QR code on desktop/laptop. +* **Refund of WooCommerce orders:** possibility to refund orders manually in a few clicks, and support for automatic refund in case the transaction failed. +* **Multi-currency support:** using an exchange rate against Chinese Yuan configured in the settings. -此插件提供全面的支付宝支付集成,具备以下功能: +Compatible with [WooCommerce Multilingual](https://wordpress.org/plugins/woocommerce-multilingual/), [WPML](http://wpml.org/), [Ultimate Member](https://wordpress.org/plugins/ultimate-member/), and any caching plugin compatible with WooCommerce. -#### 支付方式 -- **移动网页支付:** 通过支付宝移动应用提供无缝支付体验 -- **电脑网页支付:** 在台式机/笔记本电脑上通过凭据或二维码进行身份验证 -- **分期付款:** 支持支付宝花呗分期付款 -- **当面付:** 零售场景下的二维码扫描支付 +## Settings -#### 高级功能 -- **WooCommerce 区块支持:** 完全兼容 WooCommerce 结账区块 -- **HPOS 兼容性:** 支持 WooCommerce 高性能订单存储 -- **订单管理:** 高级订单查询、超时处理和状态同步 -- **智能退款:** 手动和自动退款处理,支持失败交易恢复 -- **Webhook 可靠性:** 处理 webhook 失败的重试机制 -- **多货币支持:** 使用可配置汇率自动货币转换 +The settings below are added to WooCommerce and WP Weixin when the plugin is active. -#### 集成与兼容性 -- **多语言就绪:** 兼容 WPML 和 WooCommerce 多语言 -- **插件兼容性:** 适用于 Ultimate Member 和 WooCommerce 兼容的缓存插件 -- **现代架构:** 基于支付宝 Easy SDK 构建,提供改进的性能和可靠性 +### Gateway settings -### 安装说明 +The following settings can be accessed in WooCommerce > Settings > Payments > Alipay: -1. **下载插件** - 从 [Wenpai.org](https://wenpai.org/plugins/woo-alipay) 或 GitHub 仓库下载插件 zip 文件。 - -2. **通过 WordPress 管理后台安装** - - 导航到 **插件 → 安装插件 → 上传插件** - - 选择下载的 zip 文件并点击"立即安装" - - 安装后激活插件 - -3. **配置支付宝设置** - - 前往 **WooCommerce → 设置 → 付款 → 支付宝** - - 启用支付网关并配置您的支付宝凭据 - - 按照下面的配置指南设置您的支付宝账户 - -### 功能概述 - -Woo Alipay 与 WooCommerce 无缝集成,为中国客户提供强大的支付解决方案。插件处理从订单创建到付款确认和退款处理的完整支付生命周期,确保为商家和客户提供顺畅的体验。 - -## 设置说明 - -插件激活后,以下设置将被添加到 WooCommerce 和 WP Weixin 中。 - -### 网关设置 - -以下设置可在 WooCommerce > 设置 > 付款 > 支付宝 中访问: - -| 名称 | 类型 | 描述 | +| Name | Type | Description | | --------------------------------------- |:--------:| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 启用/禁用 | 复选框 | 用于启用/禁用支付网关。 | -| 结账页面标题 | 文本 | 在结账页面上为支付网关显示的标题。 | -| 结账页面描述 | 文本 | 在结账页面上为支付网关显示的描述。 | -| 支付宝应用 ID | 文本 | 在支付宝开放平台中找到的应用 ID。 | -| 支付宝公钥 | 文本区域 | 在支付宝开放平台中生成的支付宝公钥 ("支付宝公钥")。 | -| 支付宝商户应用私钥 | 文本区域 | 使用提供的支付宝工具应用程序或 `openssl` 命令行生成的私钥。
此密钥是保密的,不会记录在支付宝开放平台中 - **请勿与任何人共享此值**。| -| 沙盒模式 | 复选框 | 如果选中,在沙盒模式下运行支付宝,使用在 [https://openhome.alipay.com/platform/appDaily.htm](https://openhome.alipay.com/platform/appDaily.htm) 中找到的设置。 | -| 汇率 | 数字 | 相对于人民币的汇率(如果商店货币未设置为人民币则显示) | +| Enable/Disable | checkbox | Used to enable/disable the payment gateway. | +| Checkout page title | text | Title displayed for the payment gateway on the checkout page. | +| Checkout page description | text | Description displayed for the payment gateway on the checkout page. | +| Alipay App ID | text | The App ID found in Alipay Open Platform. | +| Alipay public key | textarea | The Alipay public key generated in the Alipay Open Platform ("支付宝公钥"). | +| Alipay Merchant application private key | textarea | The private key generated with the provided Alipay tool application or the `openssl` command line.
This key is secret and is not recorded in Alipay Open Platform - **DO NOT SHARE THIS VALUE WITH ANYONE**.| +| Sandbox | checkbox | If checked, Run Alipay in sandbox mode, with the settings found in [https://openhome.alipay.com/platform/appDaily.htm](https://openhome.alipay.com/platform/appDaily.htm). | +| Exchange Rate | number | Exchange rate against Chinese Yuan (shows if the store currency is not set to Chinese Yuan) | -## 网关配置帮助 +## Gateway configuration help -### 配置流程概述 +### Configuration process overview -* 前往 [支付宝开放平台](https://openhome.alipay.com/platform/developerIndex.htm) 并登录。 -* 如有必要,通过按照创建应用"创建应用"菜单下的选项创建新应用:网页&移动应用 > 支付接入。应用类型应为网页应用,网站 URL 应为 `https://[[您的网站首页地址]]`,其中 `[[您的网站首页地址]]` 是您网站的主 URL。创建应用将需要支付宝对您的网站内容进行一到两个工作日的审核。 -* 应用创建后,转到应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 直接访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 -* 激活支付功能并使用网关信息配置应用(参见下面的["注册功能、网站 URL 和回调"](#user-content-注册功能网站url和回调))。 -* 如有必要,生成应用公钥和私钥,在支付宝开放平台注册应用公钥,并生成支付宝公钥(参见下面的["密钥管理"](#user-content-密钥管理))。 -* 填写下面的配置字段。 +* Go to the [Alipay Open Platform](https://openhome.alipay.com/platform/developerIndex.htm) and log in. +* If necessary, create a new app by following the options under the create application "创建应用" menu: website & mobile application "网页&移动应用" > payment access "支付接入". The application type "应用类型" should be web page application "网页应用" and the website URL "网址url" should be `https://[[your-homepage-url]]` where `[[your-homepage-url]]` is the home URL of your website. Creating an app will require one or two working day(s) audit of your website content by Alipay. +* Once the app is created, go to the app information page - accessible directly via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Activate payment features and configure the app with the gateway information (see ["Register features, website URL and callback"](#user-content-register-features-website-url-and-callback) below). +* If necessary, generate the application public and private keys, register the application public key in the Alipay Open Platform, and generate the Alipay public key (see ["Key management"](#user-content-key-management) below). +* Fill in the configuration fields below. -### 注册功能、网站 URL 和回调 -为了与支付网关通信,支付宝需要激活一些功能,了解您的网站 URL,并知道 WooCommerce 网关回调端点。 +### Register features, website URL and callback +To communicate with the payment gateway, Alipay needs some features activated, to know your website URL, and to be aware of the WooCommerce gateway callback endpoint. -* 前往应用概览页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/overview` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 -* 点击添加功能按钮"添加功能"并添加电脑网站支付和手机网站支付功能 - 这些功能需要事先激活(本指南中不描述此过程 - 参见支付产品[电脑网站支付](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001000)和[手机网站支付](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001001))。 -* 前往应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 -* 点击应用网关字段的设置链接"设置"(或修改链接"修改")。 -* 在应用网关模态框中,输入 `https://[[您的域名]]`(将 `[[您的域名]]` 替换为运行 WordPress 和 Woo Alipay 的域名或子域名),然后点击确认"确定"按钮。 -* 点击授权回调地址字段的设置链接"设置"(或修改链接"修改")。 -* 在授权回调地址模态框中,在回调地址类型字段中输入 `https`,在回调地址字段中输入 `https://[[您的网站首页地址]]/wc-api/WC_Alipay/`(将 `[[您的网站首页地址]]` 替换为您网站的主 URL),取消勾选只验证域名复选框以增加安全性,然后点击确认"确定"按钮。 +* Go to the app overview page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/overview` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the add feature button "添加功能" and add the computer website payment "电脑网站支付" and the mobile website payment "手机网站支付" features - these features need to have been activated beforehand (process not describe in this guide - see the Payment products "支付产品" [Computer website payment "电脑网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001000) and [Mobile website payment "手机网站支付"](https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001001)). +* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the setup link "设置" (or modify link "修改") of the application gateway "应用网关" field. +* In the application gateway "应用网关" modal, enter `https://[[your-domain.com]]` (replace `[[your-domain.com]]` with the domain or subdomain running WordPress and Woo Alipay) and click the confirm "确定" button. +* Click the setup link "设置" (or modify link "修改") of the authorization callback address "授权回调地址" field. +* In the authorization callback address "授权回调地址" modal, enter `https` in the callback address type "回调地址类型" field, `https://[[your-homepage-url]]/wc-api/WC_Alipay/]]` in the callback address "回调地址" field (replace `[[your-homepage-url]]` with the home URL of your website), and leave the verify domain only "只验证域名" checkbox unchecked for added security, then click the confirm "确定" button. -### 密钥管理 +### Key management -#### 1 - 生成密钥: +#### 1 - Generating keys: -要完成支付网关配置,您需要生成应用公钥、应用私钥和支付宝公钥。 +To complete the payment gateway configuration, you need to generate an application public key, an application private key and an Alipay public key. -##### 使用支付宝开放平台开发助手应用程序生成应用密钥(选项 1): +___ -* 前往 [支付宝工具文档页面](https://docs.open.alipay.com/291/106097/) 并下载适用于您选择的操作系统(Windows 或 MacOS)的支付宝开放平台开发助手应用程序。 -* 在支付宝开放平台开发助手应用程序中,在"生成密钥"部分(打开助手的默认屏幕),选择"UTF-8"和"PKCS1非Java使用"选项,然后点击"生成密钥"按钮以填充文本区域。 -* 将"应用公钥"文本区域中显示的应用公钥复制到计算机上的文本文件中(下文称为 `alipay_app_public_key.txt`)。 -* 将"应用私钥"文本区域中显示的应用私钥复制到计算机上的文本文件中(下文称为 `alipay_app_private_key.txt`) - **请勿与任何人共享此值**。 +##### Generate the application keys with the Alipay Open Platform Development Assistant application (option 1): -##### 在终端中使用 openssl 命令行生成应用密钥(选项 2): +* Go to the [Alipay tools documentation page](https://docs.open.alipay.com/291/106097/) and download the Alipay Open Platform Development Assistant application for the operating system of your choice (Windows or MacOS). +* Within the Alipay Open Platform Development Assistant application, in the "生成密钥" section (default screen when opening the Assistant), select "UTF-8" and "PKCS1非Java使用" options and click the "生成密钥" button to populate the text areas. +* Copy the application public key displayed in the "应用公钥" text area in a text file on your computer (referred to as `alipay_app_public_key.txt` below). +* Copy the application private key displayed in the "应用私钥" text area in a text file on your computer (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. -* 输入 `openssl` 以打开 OpenSSL 命令行工具。 -* 输入 `genrsa -out alipay_app_private_key.txt 2048` 生成应用私钥文件(下文称为 `alipay_app_private_key.txt`) - **请勿与任何人共享此值**。 -* 输入 `rsa -in alipay_app_private_key.txt -pubout -out alipay_app_public_key.txt` 生成应用公钥文件(下文称为 `alipay_app_public_key.txt`)。 -* 输入 `exit` 退出命令行工具。 -* 使用文本编辑器打开两个文件,删除所有头部、尾部、空格和回车符,使每个密钥成为单行长字符串,然后保存文件。 +___ -##### 在支付宝开放平台注册应用公钥并生成支付宝公钥(需要完成上面的选项 1 或选项 2): +##### Generate the application keys with openssl command line in a terminal (option 2): -* 前往应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 -* 点击"接口加签方式" > "设置/查看"链接以打开配置模态框。 -* 使用关联的手机号码或密码进行身份验证。 -* 在签名密钥配置表单(加签管理 | 1 - 加签内容配置)中,选择公钥选项"公钥"。 -* 将先前保存的文件 `alipay_app_public_key.txt` 的内容粘贴到"填写公钥字符"文本区域中。 -* 点击"保存设置"按钮以注册应用公钥并生成支付宝公钥。 +* Type `openssl` to open the OpenSSL command line tool. +* Type `genrsa -out alipay_app_private_key.txt 2048` to generate the application private key file (referred to as `alipay_app_private_key.txt` below) - **DO NOT SHARE THIS VALUE WITH ANYONE**. +* Type `rsa -in alipay_app_private_key.txt -pubout -out alipay_app_public_key.txt` to generate the application public key file (referred to as `alipay_app_public_key.txt` below). +* Type `exit` to quit the command line tool. +* Open both files with a text editor, remove all the header, footer, space and carriage return characters to have each key as a single-line long string, and save the files. -#### 2 - 使用应用私钥和查找支付宝公钥: +___ -* 前往应用信息页面 - 可通过 `https://openhome.alipay.com/platform/appManage.htm#/app/[[您的应用ID]]/appInfo` 访问(将 `[[您的应用ID]]` 替换为 Woo Alipay 将使用的应用 ID)。 -* 点击"接口加签方式" > "设置/查看"链接以打开配置模态框。 -* 如有必要,使用关联的支付宝账户的手机号码或密码进行身份验证。 -* 在签名完成配置表单(加签管理 | 2 - 加签配置完成)中,复制"支付宝公钥"下显示的支付宝公钥。 -* 将支付宝公钥粘贴到下面的"支付宝公钥"字段中。 -* 将先前保存的文件 `alipay_app_private_key.txt` 的内容粘贴到下面的"支付宝商户应用私钥"字段中。 -* 点击"保存更改"按钮。 +##### Register the application public key in Alipay Open Platform and generate the Alipay public key (requires completing option 1 or option 2 above): -## 模板文件 +* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. +* Use the associated phone number or password to authenticate. +* In the signature key configuration form (加签管理 | 1 - 加签内容配置), select the public key option "公钥". +* Paste the content of the previously saved file `alipay_app_public_key.txt` in the "填写公钥字符" text area. +* Click the "保存设置" button to register the application public key and generate the Alipay public key. -以下模板文件使用 WordPress 提供的 `locate_template()` 函数选择,并使用 `load_template()` 函数包含。这意味着它可以在活动的 WordPress 主题中重载。开发人员可以将自定义模板文件放在主题文件夹下的以下目录中(按选择优先级顺序): +___ + +#### 2 - Using the application private key and finding the Alipay public key: + +* Go to the app information page - accessible via `https://openhome.alipay.com/platform/appManage.htm#/app/[[YOUR_APP_ID]]/appInfo` (replace `[[YOUR_APP_ID]]` with the App ID to be used by Woo Alipay). +* Click the link "接口加签方式" > "设置/查看" to open the configuration modal. +* If necessary, use the associated Alipay account's phone number or password to authenticate. +* In the signature completed configuration form (加签管理 | 2 - 加签配置完成), copy the Alipay public key displayed under "支付宝公钥". +* Paste the Alipay public key in the "Alipay public key" field below. +* Paste the content of the previously saved file `alipay_app_private_key.txt` in the "Alipay merchant application private key" field below. +* Click the "Save changes" button. + +## Templates + +The following template file is selected using the `locate_template()` and included with `load_template()` functions provided by WordPress. This means it can be overloaded in the active WordPress theme. Developers may place their custom template file in the following directories under the theme's folder (in order of selection priority): * `plugins/woo-alipay/` * `woo-alipay/` * `woocommerce/woo-alipay/` -* 主题文件夹的根目录 +* at the root of the theme's folder + +___ ### redirected-pay ``` redirected-pay.php -``` +``` -**描述** -用户在支付前被重定向时显示的页面模板。该模板在显示支付宝支付 UI 之前充当占位符。 +**Description** +The template of the page displayed when users are redirected before payment. The template acts as a placeholder before showing the Alipay payment UI. -**关联的样式队列键:** -`woo-alipay-main-style` - -## 常见问题 - -### 问:此插件是否支持支付宝国际支付? -答:不支持,此插件专为支付宝中国大陆支付设计。如需国际支付,您需要使用不同的支付宝解决方案。 - -### 问:支持哪些 WooCommerce 版本? -答:插件支持 WooCommerce 10.2.2 及更高版本,包括与 WooCommerce 区块和高性能订单存储(HPOS)的完全兼容性。 - -### 问:我可以在国外使用此插件吗? -答:插件适用于拥有中国大陆支付宝商户账户的商家。根据您的支付宝账户配置,可能会适用地域限制。 - -### 问:如何处理支付失败或超时? -答:插件包括自动订单超时处理和 webhook 重试机制。您可以在插件的管理面板中配置超时设置。 - -### 问:是否支持多货币? -答:是的,插件支持多货币付款,使用可配置汇率自动转换为人民币。 - -### 问:可以自定义付款重定向页面吗? -答:是的,插件提供模板覆盖。您可以按照模板文件部分的说明在主题中自定义 `redirected-pay.php` 模板。 - -## 技术支持 - -- **官方网站:** [WooCN.com](https://woocn.com/) -- **插件页面:** [Wenpai.org](https://wenpai.org/plugins/woo-alipay) -- **文档:** [插件文档](https://wenpai.org/plugins/woo-alipay) -- **问题与支持:** 有关技术支持和错误报告,请通过官方网站或 GitHub 仓库联系。 - -## 许可证 - -此插件根据 GNU 通用公共许可证 v2.0 或更高版本发布。详情请参阅 [LICENSE](LICENSE) 文件。 - -## 贡献 - -欢迎贡献!请随时提交拉取请求或在 GitHub 仓库上报告问题。 - ---- - -**版本:** 3.2.0 -**最后更新:** 2025年 -**作者:** WooCN.com \ No newline at end of file +**Associated style enqueued with key:** +`woo-alipay-main-style` diff --git a/assets/images/alipay-barcode-icon.svg b/assets/images/alipay-barcode-icon.svg new file mode 100644 index 00000000..37eca398 --- /dev/null +++ b/assets/images/alipay-barcode-icon.svg @@ -0,0 +1,202 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/alipay-f2f-icon.svg b/assets/images/alipay-f2f-icon.svg new file mode 100644 index 00000000..cdb13020 --- /dev/null +++ b/assets/images/alipay-f2f-icon.svg @@ -0,0 +1,93 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/images/alipay-huabei-icon.svg b/assets/images/alipay-huabei-icon.svg new file mode 100644 index 00000000..a13fc87d --- /dev/null +++ b/assets/images/alipay-huabei-icon.svg @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 9a0f5de8..00000000 --- a/composer.lock +++ /dev/null @@ -1,832 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "524ca69e0ade104f4102231471f256e3", - "packages": [ - { - "name": "adbario/php-dot-notation", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/adbario/php-dot-notation.git", - "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", - "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^5.5 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "type": "library", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Adbar\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Riku Särkinen", - "email": "riku@adbar.io" - } - ], - "description": "PHP dot notation access to arrays", - "homepage": "https://github.com/adbario/php-dot-notation", - "keywords": [ - "ArrayAccess", - "dotnotation" - ], - "support": { - "issues": "https://github.com/adbario/php-dot-notation/issues", - "source": "https://github.com/adbario/php-dot-notation/tree/2.5.0" - }, - "time": "2022-10-14T20:31:46+00:00" - }, - { - "name": "alibabacloud/tea", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/aliyun/tea-php.git", - "reference": "1619cb96c158384f72b873e1f85de8b299c9c367" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aliyun/tea-php/zipball/1619cb96c158384f72b873e1f85de8b299c9c367", - "reference": "1619cb96c158384f72b873e1f85de8b299c9c367", - "shasum": "" - }, - "require": { - "adbario/php-dot-notation": "^2.4", - "ext-curl": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "*", - "symfony/dotenv": "^3.4", - "symfony/var-dumper": "^3.4" - }, - "suggest": { - "ext-sockets": "To use client-side monitoring" - }, - "type": "library", - "autoload": { - "psr-4": { - "AlibabaCloud\\Tea\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Alibaba Cloud SDK", - "email": "sdk-team@alibabacloud.com", - "homepage": "http://www.alibabacloud.com" - } - ], - "description": "Client of Tea for PHP", - "homepage": "https://www.alibabacloud.com/", - "keywords": [ - "alibabacloud", - "client", - "cloud", - "tea" - ], - "support": { - "issues": "https://github.com/aliyun/tea-php/issues", - "source": "https://github.com/aliyun/tea-php" - }, - "time": "2023-05-16T06:43:41+00:00" - }, - { - "name": "alibabacloud/tea-fileform", - "version": "0.3.4", - "source": { - "type": "git", - "url": "https://github.com/alibabacloud-sdk-php/tea-fileform.git", - "reference": "4bf0c75a045c8115aa8cb1a394bd08d8bb833181" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/alibabacloud-sdk-php/tea-fileform/zipball/4bf0c75a045c8115aa8cb1a394bd08d8bb833181", - "reference": "4bf0c75a045c8115aa8cb1a394bd08d8bb833181", - "shasum": "" - }, - "require": { - "alibabacloud/tea": "^3.0", - "php": ">5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "AlibabaCloud\\Tea\\FileForm\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Alibaba Cloud SDK", - "email": "sdk-team@alibabacloud.com" - } - ], - "description": "Alibaba Cloud Tea File Library for PHP", - "support": { - "issues": "https://github.com/alibabacloud-sdk-php/tea-fileform/issues", - "source": "https://github.com/alibabacloud-sdk-php/tea-fileform/tree/0.3.4" - }, - "time": "2020-12-01T07:24:35+00:00" - }, - { - "name": "alipaysdk/easysdk", - "version": "2.2.3", - "source": { - "type": "git", - "url": "https://github.com/alipay/alipay-easysdk.git", - "reference": "c6008839a22a5fca08e9f8536730f7abfed522d5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/alipay/alipay-easysdk/zipball/c6008839a22a5fca08e9f8536730f7abfed522d5", - "reference": "c6008839a22a5fca08e9f8536730f7abfed522d5", - "shasum": "" - }, - "require": { - "alibabacloud/tea": "^3.1", - "alibabacloud/tea-fileform": "^0.3.2", - "ext-ctype": "*", - "ext-curl": "*", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle": ">=6.3", - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Alipay\\EasySDK\\": "php/src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "junying.wjy", - "email": "junying.wjy@antfin.com" - } - ], - "description": "支付宝官方 Alipay Easy SDK", - "support": { - "source": "https://github.com/alipay/alipay-easysdk/tree/v2.2.3" - }, - "time": "2022-11-28T14:04:57+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.10.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", - "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^2.3", - "guzzlehttp/psr7": "^2.8", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-curl": "*", - "guzzle/client-integration-tests": "3.0.2", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.39 || ^9.6.20", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.10.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2025-08-23T22:36:01+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "481557b130ef3790cf82b713667b43030dc9c957" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", - "reference": "481557b130ef3790cf82b713667b43030dc9c957", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.3.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2025-08-22T14:34:08+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.8.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "21dc724a0583619cd1652f673303492272778051" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", - "reference": "21dc724a0583619cd1652f673303492272778051", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.8.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2025-08-23T21:21:41+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client" - }, - "time": "2023-09-23T14:17:50+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory" - }, - "time": "2024-04-15T12:06:14+00:00" - }, - { - "name": "psr/http-message", - "version": "2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "time": "2023-04-04T09:54:51+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": {}, - "prefer-stable": false, - "prefer-lowest": false, - "platform": {}, - "platform-dev": {}, - "plugin-api-version": "2.6.0" -} diff --git a/css/alipay-facetopay.css b/css/alipay-facetopay.css deleted file mode 100644 index 50972195..00000000 --- a/css/alipay-facetopay.css +++ /dev/null @@ -1,201 +0,0 @@ -/** - * 当面付支付样式 - */ - -.alipay-qrcode-container { - max-width: 500px; - margin: 30px auto; - padding: 30px; - background: #fff; - border-radius: 8px; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); - text-align: center; -} - -.alipay-qrcode-header { - margin-bottom: 20px; -} - -.alipay-qrcode-header h2 { - margin: 0 0 10px 0; - font-size: 24px; - color: #333; -} - -.alipay-qrcode-header .order-info { - font-size: 16px; - color: #666; -} - -.alipay-qrcode-header .order-amount { - font-size: 32px; - font-weight: 700; - color: #1677ff; - margin: 15px 0; -} - -.alipay-qrcode-wrapper { - margin: 20px 0; - padding: 20px; - background: #f9f9f9; - border-radius: 8px; - display: inline-block; -} - -#alipay-qrcode { - display: flex; - justify-content: center; - align-items: center; -} - -#alipay-qrcode canvas, -#alipay-qrcode img { - max-width: 100%; - height: auto; - border: 8px solid #fff; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); - border-radius: 4px; -} - -.alipay-qrcode-tips { - margin-top: 20px; - padding: 15px; - background: #f0f7ff; - border: 1px solid #d6e4ff; - border-radius: 4px; - color: #096dd9; -} - -.alipay-qrcode-tips p { - margin: 8px 0; - font-size: 14px; - line-height: 1.6; -} - -.alipay-qrcode-tips .tip-icon { - display: inline-block; - margin-right: 5px; - font-weight: bold; -} - -.alipay-payment-status { - margin-top: 20px; - padding: 15px; - background: #fff9e6; - border: 1px solid #ffd666; - border-radius: 4px; -} - -.alipay-payment-status.success { - background: #f6ffed; - border-color: #b7eb8f; - color: #52c41a; -} - -.alipay-payment-status.error { - background: #fff1f0; - border-color: #ffa39e; - color: #ff4d4f; -} - -.alipay-payment-status .status-icon { - display: inline-block; - margin-right: 8px; - font-size: 18px; -} - -.alipay-payment-status .status-text { - font-size: 15px; - font-weight: 500; -} - -.alipay-qrcode-loading { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - min-height: 300px; -} - -.alipay-qrcode-loading .spinner { - width: 50px; - height: 50px; - border: 4px solid #f0f0f0; - border-top: 4px solid #1677ff; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -.alipay-qrcode-loading .loading-text { - margin-top: 15px; - font-size: 14px; - color: #666; -} - -.alipay-qrcode-expired { - padding: 30px; - text-align: center; -} - -.alipay-qrcode-expired .expired-icon { - font-size: 48px; - color: #ff4d4f; - margin-bottom: 15px; -} - -.alipay-qrcode-expired .expired-text { - font-size: 16px; - color: #666; - margin-bottom: 20px; -} - -.alipay-qrcode-expired .refresh-button { - padding: 10px 30px; - background: #1677ff; - color: #fff; - border: none; - border-radius: 4px; - cursor: pointer; - font-size: 15px; - transition: background 0.3s; -} - -.alipay-qrcode-expired .refresh-button:hover { - background: #4096ff; -} - -.alipay-qrcode-timer { - margin-top: 15px; - font-size: 14px; - color: #999; -} - -.alipay-qrcode-timer.warning { - color: #ff4d4f; - font-weight: 600; -} - -/* 移动端适配 */ -@media (max-width: 768px) { - .alipay-qrcode-container { - margin: 15px; - padding: 20px; - } - - .alipay-qrcode-header h2 { - font-size: 20px; - } - - .alipay-qrcode-header .order-amount { - font-size: 28px; - } - - .alipay-qrcode-wrapper { - padding: 15px; - } -} diff --git a/css/alipay-installment.css b/css/alipay-installment.css deleted file mode 100644 index 10f87769..00000000 --- a/css/alipay-installment.css +++ /dev/null @@ -1,120 +0,0 @@ -/** - * 花呗分期支付样式 - */ - -.alipay-installment-selector { - margin: 15px 0; - padding: 15px; - background: #f9f9f9; - border: 1px solid #e0e0e0; - border-radius: 4px; -} - -.alipay-installment-selector p { - margin: 0 0 10px 0; - font-weight: 600; - color: #333; -} - -.installment-periods { - list-style: none; - margin: 0; - padding: 0; - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 10px; -} - -.installment-periods li { - margin: 0; - padding: 0; -} - -.installment-periods label { - display: flex; - align-items: center; - justify-content: space-between; - padding: 12px 15px; - background: #fff; - border: 2px solid #ddd; - border-radius: 4px; - cursor: pointer; - transition: all 0.3s ease; -} - -.installment-periods label:hover { - border-color: #1677ff; - background: #f0f7ff; -} - -.installment-periods input[type="radio"] { - margin-right: 10px; - width: 18px; - height: 18px; -} - -.installment-periods input[type="radio"]:checked + .period-label { - color: #1677ff; - font-weight: 600; -} - -.installment-periods label:has(input:checked) { - border-color: #1677ff; - background: #f0f7ff; - box-shadow: 0 0 0 1px #1677ff; -} - -.period-label { - flex: 1; - font-size: 15px; - font-weight: 500; - color: #333; -} - -.period-amount { - font-size: 14px; - color: #666; - font-weight: 500; -} - -.alipay-installment-notice { - padding: 10px 15px; - background: #fff3cd; - border: 1px solid #ffc107; - border-radius: 4px; - color: #856404; - margin: 10px 0; -} - -.alipay-badge { - display: inline-block; - padding: 0 6px; - line-height: 18px; - height: 18px; - border-radius: 9px; - font-size: 12px; - font-weight: 600; - margin-left: 6px; -} - -.alipay-badge--free { - background: #e8f5e9; - color: #2e7d32; - border: 1px solid #a5d6a7; -} - -/* 移动端适配 */ -@media (max-width: 768px) { - .installment-periods { - grid-template-columns: 1fr; - } - - .installment-periods label { - padding: 10px 12px; - } - - .period-label, - .period-amount { - font-size: 14px; - } -} diff --git a/enable-gateways.php b/enable-gateways.php new file mode 100644 index 00000000..2fb1a5e4 --- /dev/null +++ b/enable-gateways.php @@ -0,0 +1,30 @@ +✓ 完成!

所有支付网关已启用。

查看支付设置

' ); +}, 1 ); diff --git a/inc/class-wc-alipay-agreement.php b/inc/class-wc-alipay-agreement.php new file mode 100644 index 00000000..d8f9381a --- /dev/null +++ b/inc/class-wc-alipay-agreement.php @@ -0,0 +1,140 @@ +api_request_url( 'WC_Alipay_Agreement_Notify' ) ); + $return_url = add_query_arg( [], WC()->api_request_url( 'WC_Alipay_Agreement_Return' ) ); + + require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/AopClient.php'; + require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/request/AlipayUserAgreementPageSignRequest.php'; + + $aop = new AopClient(); + $aop->gatewayUrl = ( 'yes' === $gateway->get_option( 'sandbox' ) ) ? WC_Alipay::GATEWAY_SANDBOX_URL : WC_Alipay::GATEWAY_URL; + $aop->appId = $gateway->get_option( 'appid' ); + $aop->rsaPrivateKey = $gateway->get_option( 'private_key' ); + $aop->alipayrsaPublicKey= $gateway->get_option( 'public_key' ); + $aop->charset = 'utf-8'; + $aop->signType = 'RSA2'; + + $external_sign_no = 'AGREE' . ( $user_id ? $user_id : get_current_user_id() ) . '-' . current_time( 'timestamp' ); + // 建立 external_sign_no 到用户的临时映射 + if ( $user_id ) { + set_transient( 'woo_alipay_pending_user_' . $external_sign_no, absint( $user_id ), DAY_IN_SECONDS ); + update_user_meta( $user_id, self::META_USER_PENDING_EXTERNAL_SIGN_NO, $external_sign_no ); + } + + $personal_product_code = apply_filters( 'woo_alipay_agreement_personal_product_code', 'CYCLE_PAY_AUTH', $user_id ); + $sign_scene = apply_filters( 'woo_alipay_agreement_sign_scene', 'INDUSTRY|DEFAULT', $user_id ); + + $biz = [ + 'external_sign_no' => $external_sign_no, + 'personal_product_code' => $personal_product_code, + 'sign_scene' => $sign_scene, + 'access_params' => [ 'channel' => 'ALIPAYAPP' ], + 'merchant_process_url' => $return_url, + 'notify_url' => $notify_url, + ]; + if ( ! empty( $context['return_url'] ) ) { + $biz['merchant_process_url'] = $context['return_url']; + } + + $request = new AlipayUserAgreementPageSignRequest(); + $request->setBizContent( wp_json_encode( $biz ) ); + $request->setNotifyUrl( $notify_url ); + $request->setReturnUrl( $return_url ); + + // pageExecute 返回跳转 URL/表单 + $sign_form_or_url = $aop->pageExecute( $request ); + return [ 'payload' => $sign_form_or_url, 'external_sign_no' => $external_sign_no ]; + } + + public static function handle_agreement_return() { + // 用户浏览器跳转回站点,可用于展示成功页面;协议最终以异步通知为准 + wp_safe_redirect( home_url() ); + exit; + } + + public static function handle_agreement_notify() { + $gateway = new WC_Alipay( false ); + require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/AopClient.php'; + $aop = new AopClient(); + $aop->alipayrsaPublicKey= $gateway->get_option( 'public_key' ); + $aop->charset = 'utf-8'; + $aop->signType = 'RSA2'; + + $params = wp_unslash( $_POST ); + $verified = $aop->rsaCheckV1( $params, $aop->alipayrsaPublicKey, $aop->signType ); + if ( ! $verified ) { + echo 'fail'; + exit; + } + + $agreement_no = isset( $params['agreement_no'] ) ? sanitize_text_field( $params['agreement_no'] ) : ''; + $alipay_user_id = isset( $params['alipay_user_id'] ) ? sanitize_text_field( $params['alipay_user_id'] ) : ''; + $status = isset( $params['status'] ) ? sanitize_text_field( $params['status'] ) : ''; + $external_sign_no = isset( $params['external_sign_no'] ) ? sanitize_text_field( $params['external_sign_no'] ) : ''; + + // 根据 external_sign_no 还原用户 + $user_id = 0; + if ( $external_sign_no ) { + $user_id = absint( get_transient( 'woo_alipay_pending_user_' . $external_sign_no ) ); + } + if ( ! $user_id && is_user_logged_in() ) { + $user_id = get_current_user_id(); + } + if ( $user_id ) { + update_user_meta( $user_id, self::META_USER_AGREEMENT_NO, $agreement_no ); + update_user_meta( $user_id, self::META_USER_AGREEMENT_STATUS, $status ); + delete_transient( 'woo_alipay_pending_user_' . $external_sign_no ); + delete_user_meta( $user_id, self::META_USER_PENDING_EXTERNAL_SIGN_NO ); + } + + echo 'success'; + exit; + } + + public static function get_user_agreement_no( $user_id ) { + return get_user_meta( $user_id, self::META_USER_AGREEMENT_NO, true ); + } + + public static function has_user_agreement( $user_id ) { + return (bool) self::get_user_agreement_no( $user_id ); + } + + public static function handle_agreement_start() { + if ( ! is_user_logged_in() ) { + wp_die( __( '请先登录后再进行签约授权。', 'woo-alipay' ) ); + } + $user_id = get_current_user_id(); + $context = []; + if ( isset( $_GET['return_url'] ) ) { + $context['return_url'] = esc_url_raw( wp_unslash( $_GET['return_url'] ) ); + } + $result = self::get_sign_url( $user_id, $context ); + if ( is_array( $result ) && ! empty( $result['payload'] ) ) { + // 输出表单/HTML,通常将自动跳转到支付宝 + echo $result['payload']; + exit; + } + wp_die( __( '无法生成签约请求,请稍后重试。', 'woo-alipay' ) ); + } + +} + +WC_Alipay_Agreement::init(); diff --git a/inc/class-wc-alipay-facetopay-blocks-support.php b/inc/class-wc-alipay-facetopay-blocks-support.php deleted file mode 100644 index b5ea026b..00000000 --- a/inc/class-wc-alipay-facetopay-blocks-support.php +++ /dev/null @@ -1,71 +0,0 @@ -name = 'alipay_facetopay'; - } - - public function initialize() { - $this->settings = get_option( 'woocommerce_alipay_facetopay_settings', array() ); - - $gateways = WC()->payment_gateways->payment_gateways(); - $this->gateway = isset( $gateways['alipay_facetopay'] ) ? $gateways['alipay_facetopay'] : false; - } - - public function is_active() { - $enabled = isset( $this->settings['enabled'] ) ? $this->settings['enabled'] : 'no'; - return 'yes' === $enabled; - } - - public function get_payment_method_script_handles() { - $script_path = 'js/frontend/blocks-facetopay.js'; - $script_asset_path = WOO_ALIPAY_PLUGIN_PATH . 'js/frontend/blocks-facetopay.asset.php'; - $script_asset = file_exists( $script_asset_path ) - ? require( $script_asset_path ) - : array( - 'dependencies' => array( 'wc-blocks-registry', 'wp-element', 'wp-html-entities', 'wp-i18n' ), - 'version' => WOO_ALIPAY_VERSION - ); - $script_url = trailingslashit( WOO_ALIPAY_PLUGIN_URL ) . $script_path; - - wp_register_script( - 'wc-alipay-facetopay-payments-blocks', - $script_url, - $script_asset['dependencies'], - $script_asset['version'], - true - ); - - if ( function_exists( 'wp_set_script_translations' ) ) { - wp_set_script_translations( 'wc-alipay-facetopay-payments-blocks', 'woo-alipay', WOO_ALIPAY_PLUGIN_PATH . 'languages' ); - } - - return [ 'wc-alipay-facetopay-payments-blocks' ]; - } - - public function get_payment_method_script_handles_for_admin() { - return $this->get_payment_method_script_handles(); - } - - public function get_payment_method_data() { - return [ - 'title' => $this->get_setting( 'title', '支付宝扫码支付' ), - 'description' => $this->get_setting( 'description', '使用支付宝扫描二维码完成支付' ), - 'supports' => $this->get_supported_features(), - 'icon' => WOO_ALIPAY_PLUGIN_URL . 'assets/images/alipay-icon.svg', - ]; - } - - public function get_supported_features() { - return $this->gateway ? $this->gateway->supports : ['products']; - } -} diff --git a/inc/class-wc-alipay-facetopay.php b/inc/class-wc-alipay-facetopay.php deleted file mode 100644 index 3aee2ef7..00000000 --- a/inc/class-wc-alipay-facetopay.php +++ /dev/null @@ -1,568 +0,0 @@ -id = self::GATEWAY_ID; - $this->method_title = __('支付宝当面付', 'woo-alipay'); - $this->method_description = __('支持当面付扫码支付,商家展示二维码供用户扫描。适用于收银台、实体店等场景。需要在支付宝商户后台开通当面付功能。', 'woo-alipay'); - $this->icon = WOO_ALIPAY_PLUGIN_URL . 'assets/images/alipay-icon.svg'; - $this->has_fields = false; - $this->charset = strtolower(get_bloginfo('charset')); - - if (!in_array($this->charset, array('gbk', 'utf-8'), true)) { - $this->charset = 'utf-8'; - } - - $this->init_form_fields(); - $this->init_settings(); - - $this->title = $this->get_option('title', __('支付宝扫码支付', 'woo-alipay')); - $this->description = $this->get_option('description'); - $this->enabled = $this->get_option('enabled'); - $this->current_currency = get_option('woocommerce_currency'); - $this->exchange_rate = $this->get_option('exchange_rate'); - $this->order_prefix = $this->get_option('order_prefix', 'F2F'); - $this->notify_url = WC()->api_request_url('WC_Alipay_FaceToPay'); - - self::$log_enabled = ('yes' === $this->get_option('debug', 'no')); - - $this->supports = array( - 'products', - 'refunds', - ); - - add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options')); - add_action('woocommerce_receipt_' . $this->id, array($this, 'receipt_page')); - add_action('woocommerce_api_wc_alipay_facetopay', array($this, 'check_alipay_response')); - add_action('wp_ajax_alipay_facetopay_query', array($this, 'ajax_query_payment_status')); - add_action('wp_ajax_nopriv_alipay_facetopay_query', array($this, 'ajax_query_payment_status')); - add_action('wp_ajax_alipay_facetopay_refresh_qrcode', array($this, 'ajax_refresh_qrcode')); - add_action('wp_ajax_nopriv_alipay_facetopay_refresh_qrcode', array($this, 'ajax_refresh_qrcode')); - add_action('wp_enqueue_scripts', array($this, 'payment_scripts')); - } - - public function init_form_fields() - { - $this->form_fields = array( - 'enabled' => array( - 'title' => __('启用/禁用', 'woo-alipay'), - 'type' => 'checkbox', - 'label' => __('启用支付宝当面付', 'woo-alipay'), - 'default' => 'no', - ), - 'title' => array( - 'title' => __('标题', 'woo-alipay'), - 'type' => 'text', - 'description' => __('用户在结账时看到的支付方式名称', 'woo-alipay'), - 'default' => __('支付宝扫码支付', 'woo-alipay'), - 'desc_tip' => true, - ), - 'description' => array( - 'title' => __('描述', 'woo-alipay'), - 'type' => 'textarea', - 'description' => __('支付方式描述', 'woo-alipay'), - 'default' => __('使用支付宝扫描二维码完成支付', 'woo-alipay'), - 'desc_tip' => true, - ), - - 'qrcode_settings' => array( - 'title' => __('二维码设置', 'woo-alipay'), - 'type' => 'title', - ), - 'qrcode_size' => array( - 'title' => __('二维码尺寸', 'woo-alipay'), - 'type' => 'number', - 'description' => __('二维码显示尺寸(像素)', 'woo-alipay'), - 'default' => '300', - 'desc_tip' => true, - 'custom_attributes' => array( - 'min' => '100', - 'max' => '500', - 'step' => '10', - ), - ), - 'qrcode_timeout' => array( - 'title' => __('二维码有效期', 'woo-alipay'), - 'type' => 'select', - 'description' => __('二维码的有效时间', 'woo-alipay'), - 'default' => '120', - 'options' => array( - '60' => __('1分钟', 'woo-alipay'), - '120' => __('2分钟', 'woo-alipay'), - '180' => __('3分钟', 'woo-alipay'), - '300' => __('5分钟', 'woo-alipay'), - '600' => __('10分钟', 'woo-alipay'), - ), - 'desc_tip' => true, - ), - - 'polling_settings' => array( - 'title' => __('轮询设置', 'woo-alipay'), - 'type' => 'title', - ), - 'polling_interval' => array( - 'title' => __('轮询间隔', 'woo-alipay'), - 'type' => 'number', - 'description' => __('查询支付状态的间隔时间(秒)', 'woo-alipay'), - 'default' => '2', - 'desc_tip' => true, - 'custom_attributes' => array( - 'min' => '1', - 'max' => '10', - 'step' => '1', - ), - ), - - 'order_prefix' => array( - 'title' => __('订单号前缀', 'woo-alipay'), - 'type' => 'text', - 'description' => __('当面付订单号的前缀', 'woo-alipay'), - 'default' => 'F2F', - 'desc_tip' => true, - ), - - 'debug' => array( - 'title' => __('调试日志', 'woo-alipay'), - 'type' => 'checkbox', - 'label' => __('启用日志记录', 'woo-alipay'), - 'default' => 'no', - 'description' => sprintf( - __('记录当面付相关日志到 %s', 'woo-alipay'), - '' . WC_Log_Handler_File::get_log_file_path($this->id) . '' - ), - ), - ); - - if (!in_array($this->current_currency, array('CNY', 'RMB'), true)) { - $this->form_fields['exchange_rate'] = array( - 'title' => __('汇率', 'woo-alipay'), - 'type' => 'number', - 'description' => sprintf( - __('设置 %s 与人民币的汇率', 'woo-alipay'), - $this->current_currency - ), - 'default' => '7.0', - 'desc_tip' => true, - 'custom_attributes' => array( - 'step' => '0.01', - 'min' => '0.01', - ), - ); - } - } - - public function payment_scripts() - { - if (!is_checkout() && !is_order_received_page()) { - return; - } - - wp_enqueue_style( - 'alipay-facetopay', - WOO_ALIPAY_PLUGIN_URL . 'css/alipay-facetopay.css', - array(), - WOO_ALIPAY_VERSION - ); - - wp_enqueue_script( - 'qrcodejs', - 'https://cdn.jsdelivr.net/npm/qrcodejs@1.0.0/qrcode.min.js', - array(), - '1.0.0', - true - ); - - wp_enqueue_script( - 'alipay-facetopay', - WOO_ALIPAY_PLUGIN_URL . 'js/alipay-facetopay.js', - array('jquery', 'qrcodejs'), - WOO_ALIPAY_VERSION, - true - ); - - wp_localize_script('alipay-facetopay', 'alipayFaceToPayParams', array( - 'ajax_url' => admin_url('admin-ajax.php'), - 'polling_interval' => intval($this->get_option('polling_interval', 2)) * 1000, - 'timeout' => intval($this->get_option('qrcode_timeout', 120)), - )); - } - - public function process_payment($order_id) - { - $order = wc_get_order($order_id); - - $order->update_status('pending', __('等待扫码支付', 'woo-alipay')); - WC()->cart->empty_cart(); - - return array( - 'result' => 'success', - 'redirect' => $order->get_checkout_payment_url(true), - ); - } - - public function receipt_page($order_id) - { - $order = wc_get_order($order_id); - - if (!$order || $order->is_paid()) { - return; - } - - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - - $main_gateway = new WC_Alipay(false); - $config = Alipay_SDK_Helper::get_alipay_config(array( - 'appid' => $main_gateway->get_option('appid'), - 'private_key' => $main_gateway->get_option('private_key'), - 'public_key' => $main_gateway->get_option('public_key'), - 'sandbox' => $main_gateway->get_option('sandbox'), - )); - - $aop = Alipay_SDK_Helper::create_alipay_service($config); - if (!$aop) { - wc_add_notice(__('支付初始化失败', 'woo-alipay'), 'error'); - return; - } - - $total = $this->convert_to_rmb($order->get_total()); - $out_trade_no = Alipay_SDK_Helper::generate_out_trade_no($order_id, $this->order_prefix); - - $order->update_meta_data('_alipay_out_trade_no', $out_trade_no); - $order->save(); - - try { - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/request/AlipayTradePrecreateRequest.php'; - - $request = new AlipayTradePrecreateRequest(); - - $biz_content = array( - 'out_trade_no' => $out_trade_no, - 'total_amount' => Alipay_SDK_Helper::format_amount($total), - 'subject' => $this->get_order_title($order), - 'body' => $this->get_order_description($order), - 'timeout_express' => $this->get_option('qrcode_timeout', 120) . 's', - ); - - $request->setBizContent(json_encode($biz_content)); - $request->setNotifyUrl($this->notify_url); - - $response = $aop->execute($request); - $response_node = 'alipay_trade_precreate_response'; - $result = $response->$response_node; - - if (isset($result->code) && $result->code === '10000') { - $qr_code = $result->qr_code; - $order->update_meta_data('_alipay_qrcode', $qr_code); - $order->save(); - - self::log('当面付二维码生成成功: ' . $out_trade_no); - - $this->display_qrcode_page($order, $qr_code); - } else { - self::log('当面付二维码生成失败: ' . ($result->sub_msg ?? $result->msg), 'error'); - wc_add_notice(__('生成支付二维码失败', 'woo-alipay'), 'error'); - } - - } catch (Exception $e) { - self::log('当面付异常: ' . $e->getMessage(), 'error'); - wc_add_notice(__('支付请求失败', 'woo-alipay'), 'error'); - } - } - - protected function display_qrcode_page($order, $qr_code) - { - $qrcode_size = intval($this->get_option('qrcode_size', 300)); - $timeout = intval($this->get_option('qrcode_timeout', 120)); - - include WOO_ALIPAY_PLUGIN_PATH . 'inc/templates/payment-qrcode.php'; - } - - public function ajax_refresh_qrcode() - { - check_ajax_referer('alipay_facetopay_query', 'nonce'); - $order_id = intval($_POST['order_id'] ?? 0); - if (!$order_id) { - wp_send_json_error(array('message' => 'Invalid order ID')); - } - $order = wc_get_order($order_id); - if (!$order || $order->is_paid()) { - wp_send_json_error(array('message' => 'Invalid order')); - } - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - $main_gateway = new WC_Alipay(false); - $config = Alipay_SDK_Helper::get_alipay_config(array( - 'appid' => $main_gateway->get_option('appid'), - 'private_key' => $main_gateway->get_option('private_key'), - 'public_key' => $main_gateway->get_option('public_key'), - 'sandbox' => $main_gateway->get_option('sandbox'), - )); - try { - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/request/AlipayTradePrecreateRequest.php'; - $aop = Alipay_SDK_Helper::create_alipay_service($config); - if (!$aop) { - wp_send_json_error(array('message' => 'SDK init failed')); - } - $out_trade_no = Alipay_SDK_Helper::generate_out_trade_no($order_id, $this->order_prefix); - $order->update_meta_data('_alipay_out_trade_no', $out_trade_no); - $order->save(); - $request = new AlipayTradePrecreateRequest(); - $biz_content = array( - 'out_trade_no' => $out_trade_no, - 'total_amount' => Alipay_SDK_Helper::format_amount($this->convert_to_rmb($order->get_total())), - 'subject' => $this->get_order_title($order), - 'body' => $this->get_order_description($order), - 'timeout_express' => $this->get_option('qrcode_timeout', 120) . 's', - ); - $request->setBizContent(json_encode($biz_content)); - $request->setNotifyUrl($this->notify_url); - $response = $aop->execute($request); - $response_node = 'alipay_trade_precreate_response'; - $result = $response->$response_node; - if (isset($result->code) && $result->code === '10000') { - $qr_code = $result->qr_code; - $order->update_meta_data('_alipay_qrcode', $qr_code); - $order->save(); - wp_send_json_success(array( - 'qr_code' => $qr_code, - 'timeout' => intval($this->get_option('qrcode_timeout', 120)) - )); - } - wp_send_json_error(array('message' => 'Precreate failed')); - } catch (Exception $e) { - wp_send_json_error(array('message' => $e->getMessage())); - } - } - - public function ajax_query_payment_status() - { - check_ajax_referer('alipay_facetopay_query', 'nonce'); - - $order_id = intval($_POST['order_id'] ?? 0); - - if (!$order_id) { - wp_send_json_error(array('message' => 'Invalid order ID')); - } - - $order = wc_get_order($order_id); - - if (!$order) { - wp_send_json_error(array('message' => 'Order not found')); - } - - if ($order->is_paid()) { - wp_send_json_success(array( - 'status' => 'paid', - 'redirect_url' => $order->get_checkout_order_received_url(), - )); - } - - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - - $main_gateway = new WC_Alipay(false); - $config = Alipay_SDK_Helper::get_alipay_config(array( - 'appid' => $main_gateway->get_option('appid'), - 'private_key' => $main_gateway->get_option('private_key'), - 'public_key' => $main_gateway->get_option('public_key'), - 'sandbox' => $main_gateway->get_option('sandbox'), - )); - - $out_trade_no = $order->get_meta('_alipay_out_trade_no'); - $result = Alipay_SDK_Helper::query_order($out_trade_no, '', $config); - - if (!is_wp_error($result) && $result['success']) { - if (in_array($result['trade_status'], array('TRADE_SUCCESS', 'TRADE_FINISHED'), true)) { - if (!$order->is_paid()) { - $order->payment_complete($result['trade_no']); - $order->add_order_note( - sprintf(__('当面付支付完成 - 交易号: %s', 'woo-alipay'), $result['trade_no']) - ); - } - - wp_send_json_success(array( - 'status' => 'paid', - 'redirect_url' => $order->get_checkout_order_received_url(), - )); - } - } - - wp_send_json_success(array('status' => 'pending')); - } - - public function check_alipay_response() - { - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - - $main_gateway = new WC_Alipay(false); - $alipay_public_key = $main_gateway->get_option('public_key'); - - if (!Alipay_SDK_Helper::verify_notify($_POST, $alipay_public_key)) { - self::log('当面付通知签名验证失败', 'error'); - echo 'fail'; - exit; - } - - $out_trade_no = $_POST['out_trade_no'] ?? ''; - $trade_no = $_POST['trade_no'] ?? ''; - $trade_status = $_POST['trade_status'] ?? ''; - - self::log('当面付支付通知: ' . print_r($_POST, true)); - - $orders = wc_get_orders(array( - 'meta_key' => '_alipay_out_trade_no', - 'meta_value' => $out_trade_no, - 'limit' => 1, - )); - - if (empty($orders)) { - self::log('未找到订单: ' . $out_trade_no, 'error'); - echo 'fail'; - exit; - } - - $order = $orders[0]; - - if ($trade_status === 'TRADE_SUCCESS' || $trade_status === 'TRADE_FINISHED') { - if (!$order->is_paid()) { - $order->payment_complete($trade_no); - $order->add_order_note( - sprintf(__('当面付支付完成 - 交易号: %s', 'woo-alipay'), $trade_no) - ); - } - echo 'success'; - } else { - echo 'fail'; - } - - exit; - } - - public function process_refund($order_id, $amount = null, $reason = '') - { - $order = wc_get_order($order_id); - - if (!$order) { - return new WP_Error('error', __('订单不存在', 'woo-alipay')); - } - - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/AopClient.php'; - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/request/AlipayTradeRefundRequest.php'; - - $main_gateway = new WC_Alipay(false); - $config = Alipay_SDK_Helper::get_alipay_config(array( - 'appid' => $main_gateway->get_option('appid'), - 'private_key' => $main_gateway->get_option('private_key'), - 'public_key' => $main_gateway->get_option('public_key'), - 'sandbox' => $main_gateway->get_option('sandbox'), - )); - - $aop = Alipay_SDK_Helper::create_alipay_service($config); - if (!$aop) { - return new WP_Error('sdk_error', __('创建支付宝服务失败', 'woo-alipay')); - } - - $out_trade_no = $order->get_meta('_alipay_out_trade_no'); - if (!$out_trade_no) { - $out_trade_no = Alipay_SDK_Helper::generate_out_trade_no($order_id, $this->order_prefix); - } - $refund_amount = $amount ? floatval($amount) : floatval($order->get_total()); - $refund_reason = $reason ? $reason : __('订单退款', 'woo-alipay'); - - try { - $request = new AlipayTradeRefundRequest(); - $biz_content = array( - 'out_trade_no' => $out_trade_no, - 'refund_amount' => Alipay_SDK_Helper::format_amount($refund_amount), - 'refund_reason' => $refund_reason, - ); - $request->setBizContent(json_encode($biz_content)); - $response = $aop->execute($request); - $node = 'alipay_trade_refund_response'; - $result = $response->$node; - if (isset($result->code) && $result->code === '10000') { - $order->add_order_note(sprintf(__('支付宝退款成功,金额:¥%s', 'woo-alipay'), number_format($refund_amount, 2))); - return true; - } - return new WP_Error('refund_failed', $result->sub_msg ?? $result->msg ?? __('退款失败', 'woo-alipay')); - } catch (Exception $e) { - return new WP_Error('exception', $e->getMessage()); - } - } - - /** - * 检查支付方式是否可用 - */ - public function is_available() - { - $is_available = ('yes' === $this->enabled) ? true : false; - - if (!$is_available) { - return false; - } - - // 检查主支付宝网关是否配置 - $main_gateway = new WC_Alipay(false); - if (!$main_gateway->get_option('appid') || !$main_gateway->get_option('private_key')) { - return false; - } - - return $is_available; - } - - protected function convert_to_rmb($amount) - { - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - return Alipay_SDK_Helper::convert_currency( - $amount, - $this->current_currency, - $this->exchange_rate - ); - } - - protected function get_order_title($order) - { - $title = get_bloginfo('name') . ' - ' . sprintf(__('订单 #%s', 'woo-alipay'), $order->get_id()); - return mb_substr($title, 0, 256); - } - - protected function get_order_description($order) - { - $items = array(); - foreach ($order->get_items() as $item) { - $items[] = $item->get_name(); - } - return mb_substr(implode(', ', $items), 0, 400); - } - - protected static function log($message, $level = 'info') - { - if (self::$log_enabled) { - if (empty(self::$log)) { - self::$log = wc_get_logger(); - } - self::$log->log($level, $message, array('source' => self::GATEWAY_ID)); - } - } -} diff --git a/inc/class-wc-alipay-installment-blocks-support.php b/inc/class-wc-alipay-installment-blocks-support.php deleted file mode 100644 index 8a72a335..00000000 --- a/inc/class-wc-alipay-installment-blocks-support.php +++ /dev/null @@ -1,104 +0,0 @@ -name = 'alipay_installment'; - } - - public function initialize() { - $this->settings = get_option( 'woocommerce_alipay_installment_settings', array() ); - - $gateways = WC()->payment_gateways->payment_gateways(); - $this->gateway = isset( $gateways['alipay_installment'] ) ? $gateways['alipay_installment'] : false; - } - - public function is_active() { - $enabled = isset( $this->settings['enabled'] ) ? $this->settings['enabled'] : 'no'; - return 'yes' === $enabled; - } - - public function get_payment_method_script_handles() { - $script_path = 'js/frontend/blocks-installment.js'; - $script_asset_path = WOO_ALIPAY_PLUGIN_PATH . 'js/frontend/blocks-installment.asset.php'; - $script_asset = file_exists( $script_asset_path ) - ? require( $script_asset_path ) - : array( - 'dependencies' => array( 'wc-blocks-registry', 'wp-element', 'wp-html-entities', 'wp-i18n' ), - 'version' => WOO_ALIPAY_VERSION - ); - $script_url = trailingslashit( WOO_ALIPAY_PLUGIN_URL ) . $script_path; - - wp_register_script( - 'wc-alipay-installment-payments-blocks', - $script_url, - $script_asset['dependencies'], - $script_asset['version'], - true - ); - - if ( function_exists( 'wp_set_script_translations' ) ) { - wp_set_script_translations( 'wc-alipay-installment-payments-blocks', 'woo-alipay', WOO_ALIPAY_PLUGIN_PATH . 'languages' ); - } - - return [ 'wc-alipay-installment-payments-blocks' ]; - } - - public function get_payment_method_script_handles_for_admin() { - return $this->get_payment_method_script_handles(); - } - - public function get_payment_method_data() { - $cart_total = WC()->cart ? WC()->cart->get_total('') : 0; - $min_amount = $this->get_setting( 'min_amount', 100 ); - $available_periods = $this->get_setting( 'available_periods', array('3', '6', '12') ); - // 动态按阈值过滤 - $min6 = floatval($this->get_setting('min_amount_6', 0)); - $min12 = floatval($this->get_setting('min_amount_12', 0)); - $filtered_periods = array(); - foreach ($available_periods as $p) { - if ($p === '6' && $min6 > 0 && $cart_total < $min6) { continue; } - if ($p === '12' && $min12 > 0 && $cart_total < $min12) { continue; } - $filtered_periods[] = $p; - } - $available_periods = $filtered_periods; - $default_period = $this->get_setting( 'default_period', '3' ); - - // 获取汇率并转换金额 - $current_currency = get_option('woocommerce_currency'); - $exchange_rate = $this->get_setting( 'exchange_rate', 7.0 ); - - if (!in_array($current_currency, array('CNY', 'RMB'), true)) { - $cart_total = floatval($cart_total) * floatval($exchange_rate); - } - - $meets_min_amount = $cart_total >= floatval($min_amount); - - return [ - 'title' => $this->get_setting( 'title', '支付宝花呗分期' ), - 'description' => $this->get_setting( 'description', '使用支付宝花呗分期付款,支持3期、6期、12期免息或低息分期。' ), - 'supports' => $this->get_supported_features(), - 'icon' => WOO_ALIPAY_PLUGIN_URL . 'assets/images/alipay-icon.svg', - 'minAmount' => floatval($min_amount), - 'cartTotal' => floatval($cart_total), -'meetsMinAmount' => $meets_min_amount, - 'insufficientBehavior' => $this->get_setting( 'blocks_insufficient_behavior', 'hide' ), - 'availablePeriods' => $available_periods, -'defaultPeriod' => $default_period, -'feePayer' => ($this->get_setting('fee_bearer', 'user') === 'seller' ? 'seller' : 'user'), - 'showInterestFreeBadge' => ($this->get_setting('show_interest_free_badge', 'yes') === 'yes'), - ]; - } - - public function get_supported_features() { - return $this->gateway ? $this->gateway->supports : ['products']; - } -} diff --git a/inc/class-wc-alipay-installment.php b/inc/class-wc-alipay-installment.php deleted file mode 100644 index c9247e75..00000000 --- a/inc/class-wc-alipay-installment.php +++ /dev/null @@ -1,641 +0,0 @@ -id = self::GATEWAY_ID; - $this->method_title = __('支付宝花呗分期', 'woo-alipay'); - $this->method_description = __('支持花呗分期付款,用户可选择3期、6期、12期分期。需要在支付宝商户后台开通花呗分期功能。', 'woo-alipay'); - $this->icon = WOO_ALIPAY_PLUGIN_URL . 'assets/images/alipay-icon.svg'; - $this->has_fields = true; // 在结账页面显示分期选择 - $this->charset = strtolower(get_bloginfo('charset')); - - if (!in_array($this->charset, array('gbk', 'utf-8'), true)) { - $this->charset = 'utf-8'; - } - - // 加载设置 - $this->init_form_fields(); - $this->init_settings(); - - // 设置属性 - $this->title = $this->get_option('title', __('支付宝花呗分期', 'woo-alipay')); - $this->description = $this->get_option('description'); - $this->enabled = $this->get_option('enabled'); - $this->current_currency = get_option('woocommerce_currency'); - $this->exchange_rate = $this->get_option('exchange_rate'); - $this->order_prefix = $this->get_option('order_prefix', 'HBFQ'); - $this->notify_url = WC()->api_request_url('WC_Alipay_Installment'); - - self::$log_enabled = ('yes' === $this->get_option('debug', 'no')); - - // 支持的功能 - $this->supports = array( - 'products', - 'refunds', - ); - - // 添加钩子 - add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options')); - add_action('woocommerce_receipt_' . $this->id, array($this, 'receipt_page')); - add_action('woocommerce_api_wc_alipay_installment', array($this, 'check_alipay_response')); - add_action('wp_enqueue_scripts', array($this, 'payment_scripts')); - } - - /** - * 初始化表单字段 - */ - public function init_form_fields() - { - $this->form_fields = array( - 'enabled' => array( - 'title' => __('启用/禁用', 'woo-alipay'), - 'type' => 'checkbox', - 'label' => __('启用支付宝花呗分期', 'woo-alipay'), - 'default' => 'no', - ), - 'title' => array( - 'title' => __('标题', 'woo-alipay'), - 'type' => 'text', - 'description' => __('用户在结账时看到的支付方式名称', 'woo-alipay'), - 'default' => __('支付宝花呗分期', 'woo-alipay'), - 'desc_tip' => true, - ), - 'description' => array( - 'title' => __('描述', 'woo-alipay'), - 'type' => 'textarea', - 'description' => __('支付方式描述,显示在结账页面', 'woo-alipay'), - 'default' => __('使用支付宝花呗分期付款,支持3期、6期、12期免息或低息分期。', 'woo-alipay'), - 'desc_tip' => true, - ), - - 'alipay_config' => array( - 'title' => __('支付宝配置', 'woo-alipay'), - 'type' => 'title', - 'description' => __('使用主支付宝网关的配置(App ID、公钥、私钥等)', 'woo-alipay'), - ), - - 'installment_settings' => array( - 'title' => __('分期设置', 'woo-alipay'), - 'type' => 'title', - ), - 'show_interest_free_badge' => array( - 'title' => __('显示“免息”标识', 'woo-alipay'), - 'type' => 'checkbox', - 'label' => __('在分期选项后显示“免息”标识(当商家承担手续费时)', 'woo-alipay'), - 'default' => 'yes', - 'desc_tip' => true, - ), - 'fee_bearer' => array( - 'title' => __('分期手续费承担方', 'woo-alipay'), - 'type' => 'select', - 'description' => __('选择分期手续费由谁承担。用户承担将会在支付宝端向用户收取手续费;商家承担则由商家承担。', 'woo-alipay'), - 'default' => 'user', - 'options' => array( - 'user' => __('用户承担', 'woo-alipay'), - 'seller' => __('商家承担', 'woo-alipay'), - ), - 'desc_tip' => true, - ), - 'min_amount_6' => array( - 'title' => __('6期最小金额', 'woo-alipay'), - 'type' => 'number', - 'description' => __('达到此金额才显示6期选项(留空或0表示不限制)', 'woo-alipay'), - 'default' => '', - 'desc_tip' => true, - 'custom_attributes' => array( - 'min' => '0', - 'step' => '1', - ), - ), - 'min_amount_12' => array( - 'title' => __('12期最小金额', 'woo-alipay'), - 'type' => 'number', - 'description' => __('达到此金额才显示12期选项(留空或0表示不限制)', 'woo-alipay'), - 'default' => '', - 'desc_tip' => true, - 'custom_attributes' => array( - 'min' => '0', - 'step' => '1', - ), - ), - 'min_amount' => array( - 'title' => __('最小分期金额', 'woo-alipay'), - 'type' => 'number', - 'description' => __('订单金额低于此值时不显示分期选项(人民币)', 'woo-alipay'), - 'default' => '100', - 'desc_tip' => true, - 'custom_attributes' => array( - 'min' => '1', - 'step' => '1', - ), - ), - 'available_periods' => array( - 'title' => __('可用分期期数', 'woo-alipay'), - 'type' => 'multiselect', - 'description' => __('选择允许的分期期数', 'woo-alipay'), - 'default' => array('3', '6', '12'), - 'options' => array( - '3' => __('3期', 'woo-alipay'), - '6' => __('6期', 'woo-alipay'), - '12' => __('12期', 'woo-alipay'), - ), - 'desc_tip' => true, - 'class' => 'wc-enhanced-select', - ), - 'default_period' => array( - 'title' => __('默认分期期数', 'woo-alipay'), - 'type' => 'select', - 'description' => __('用户未选择时的默认分期期数', 'woo-alipay'), - 'default' => '3', - 'options' => array( - '3' => __('3期', 'woo-alipay'), - '6' => __('6期', 'woo-alipay'), - '12' => __('12期', 'woo-alipay'), - ), - 'desc_tip' => true, - ), - 'blocks_insufficient_behavior' => array( - 'title' => __('结账区块金额不足行为', 'woo-alipay'), - 'type' => 'select', - 'description' => __('当订单金额低于最小分期金额时,在结账区块中隐藏支付方式或显示提示。', 'woo-alipay'), - 'default' => 'hide', - 'options' => array( - 'hide' => __('隐藏(推荐)', 'woo-alipay'), - 'show' => __('显示提示', 'woo-alipay'), - ), - 'desc_tip' => true, - ), - - 'order_prefix' => array( - 'title' => __('订单号前缀', 'woo-alipay'), - 'type' => 'text', - 'description' => __('花呗分期订单号的前缀,便于区分', 'woo-alipay'), - 'default' => 'HBFQ', - 'desc_tip' => true, - ), - - 'debug' => array( - 'title' => __('调试日志', 'woo-alipay'), - 'type' => 'checkbox', - 'label' => __('启用日志记录', 'woo-alipay'), - 'default' => 'no', - 'description' => sprintf( - __('记录花呗分期相关日志到 %s', 'woo-alipay'), - '' . WC_Log_Handler_File::get_log_file_path($this->id) . '' - ), - ), - ); - - // 如果不是人民币,添加汇率设置 - if (!in_array($this->current_currency, array('CNY', 'RMB'), true)) { - $this->form_fields['exchange_rate'] = array( - 'title' => __('汇率', 'woo-alipay'), - 'type' => 'number', - 'description' => sprintf( - __('设置 %s 与人民币的汇率', 'woo-alipay'), - $this->current_currency - ), - 'default' => '7.0', - 'desc_tip' => true, - 'custom_attributes' => array( - 'step' => '0.01', - 'min' => '0.01', - ), - ); - } - } - - /** - * 在结账页面显示分期选择 - */ - public function payment_fields() - { - // 显示描述 - if ($this->description) { - echo wpautop(wptexturize($this->description)); - } - - // 获取购物车总额 - $cart_total = WC()->cart->get_total(''); - $min_amount = floatval($this->get_option('min_amount', 100)); - $available_periods = $this->get_option('available_periods', array('3', '6', '12')); - $default_period = $this->get_option('default_period', '3'); - - // 转换为人民币 - $rmb_total = $this->convert_to_rmb($cart_total); - - if ($rmb_total < $min_amount) { - echo '

' . - sprintf(__('订单金额需满 ¥%s 才能使用花呗分期', 'woo-alipay'), $min_amount) . - '

'; - return; - } - - // 动态过滤可用分期期数(根据阈值) - $filtered_periods = array(); - foreach ($available_periods as $p) { - $p = (string) $p; - if ($p === '6') { - $min6 = floatval($this->get_option('min_amount_6', 0)); - if ($min6 > 0 && $rmb_total < $min6) { continue; } - } - if ($p === '12') { - $min12 = floatval($this->get_option('min_amount_12', 0)); - if ($min12 > 0 && $rmb_total < $min12) { continue; } - } - $filtered_periods[] = $p; - } - ?> -
-

-
    - -
  • - -
  • - -
-

- get_option('fee_bearer', 'user'); - echo $fee_bearer === 'seller' - ? __('免息分期(手续费由商家承担)', 'woo-alipay') - : __('可能产生分期手续费,以支付宝支付页面为准', 'woo-alipay'); - ?> -

-
- get_option('default_period', '3'); - - // 从传统表单获取 - if (isset($_POST['alipay_installment_period'])) { - $installment_period = sanitize_text_field($_POST['alipay_installment_period']); - } - // 从 Blocks 获取 - elseif (isset($_POST['payment_data'])) { - $payment_data = json_decode(wp_unslash($_POST['payment_data']), true); - if (isset($payment_data['alipay_installment_period'])) { - $installment_period = sanitize_text_field($payment_data['alipay_installment_period']); - } - } - - // 保存分期期数到订单 - $order->update_meta_data('_alipay_installment_period', $installment_period); - $order->save(); - - // 标记订单为待支付 - $order->update_status('pending', __('等待花呗分期支付', 'woo-alipay')); - - // 清空购物车 - WC()->cart->empty_cart(); - - // 跳转到支付页面 - return array( - 'result' => 'success', - 'redirect' => $order->get_checkout_payment_url(true), - ); - } - - /** - * 收银页面 - 生成支付表单 - */ - public function receipt_page($order_id) - { - $order = wc_get_order($order_id); - - if (!$order || $order->is_paid()) { - return; - } - - // 加载辅助类 - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - - // 获取主支付宝网关配置 - $main_gateway = new WC_Alipay(false); - $config = Alipay_SDK_Helper::get_alipay_config(array( - 'appid' => $main_gateway->get_option('appid'), - 'private_key' => $main_gateway->get_option('private_key'), - 'public_key' => $main_gateway->get_option('public_key'), - 'sandbox' => $main_gateway->get_option('sandbox'), - )); - - // 创建支付宝服务 - $aop = Alipay_SDK_Helper::create_alipay_service($config); - if (!$aop) { - $order->update_status('failed', __('创建支付宝服务失败', 'woo-alipay')); - wc_add_notice(__('支付初始化失败,请稍后重试', 'woo-alipay'), 'error'); - return; - } - - // 获取订单信息 - $total = $this->convert_to_rmb($order->get_total()); - $installment_period = $order->get_meta('_alipay_installment_period'); - $out_trade_no = Alipay_SDK_Helper::generate_out_trade_no($order_id, $this->order_prefix); - - // 保存商户订单号 - $order->update_meta_data('_alipay_out_trade_no', $out_trade_no); - $order->save(); - - try { - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/AopClient.php'; - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/request/AlipayTradePagePayRequest.php'; - - $request = new AlipayTradePagePayRequest(); - - // 设置业务参数 - $biz_content = array( - 'out_trade_no' => $out_trade_no, - 'total_amount' => Alipay_SDK_Helper::format_amount($total), - 'subject' => $this->get_order_title($order), - 'body' => $this->get_order_description($order), - 'product_code' => 'FAST_INSTANT_TRADE_PAY', - // 花呗分期参数 - 'enable_pay_channels' => 'pcreditpayInstallment', - 'extend_params' => array( - 'hb_fq_num' => $installment_period, -'hb_fq_seller_percent' => ($this->get_option('fee_bearer', 'user') === 'seller' ? '100' : '0'), - ), - ); - - $request->setBizContent(json_encode($biz_content)); - $request->setReturnUrl($order->get_checkout_order_received_url()); - $request->setNotifyUrl($this->notify_url); - - // 生成支付表单 - $html = $aop->pageExecute($request, 'POST'); - - self::log('花呗分期支付请求: ' . print_r($biz_content, true)); - - echo $html; - - } catch (Exception $e) { - self::log('花呗分期支付异常: ' . $e->getMessage(), 'error'); - $order->update_status('failed', $e->getMessage()); - wc_add_notice(__('支付请求失败,请稍后重试', 'woo-alipay'), 'error'); - } - } - - /** - * 检查支付宝响应 - */ - public function check_alipay_response() - { - // 加载辅助类 - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - - // 获取支付宝公钥 - $main_gateway = new WC_Alipay(false); - $alipay_public_key = $main_gateway->get_option('public_key'); - - // 验证签名 - if (!Alipay_SDK_Helper::verify_notify($_POST, $alipay_public_key)) { - self::log('花呗分期通知签名验证失败', 'error'); - echo 'fail'; - exit; - } - - $out_trade_no = $_POST['out_trade_no'] ?? ''; - $trade_no = $_POST['trade_no'] ?? ''; - $trade_status = $_POST['trade_status'] ?? ''; - - self::log('花呗分期支付通知: ' . print_r($_POST, true)); - - // 查找订单 - $orders = wc_get_orders(array( - 'meta_key' => '_alipay_out_trade_no', - 'meta_value' => $out_trade_no, - 'limit' => 1, - )); - - if (empty($orders)) { - self::log('未找到订单: ' . $out_trade_no, 'error'); - echo 'fail'; - exit; - } - - $order = $orders[0]; - - // 处理支付结果 - if ($trade_status === 'TRADE_SUCCESS' || $trade_status === 'TRADE_FINISHED') { - if (!$order->is_paid()) { - $order->payment_complete($trade_no); - $order->add_order_note( - sprintf(__('花呗分期支付完成 - 交易号: %s', 'woo-alipay'), $trade_no) - ); - } - echo 'success'; - } else { - echo 'fail'; - } - - exit; - } - - /** - * 处理退款 - */ - public function process_refund($order_id, $amount = null, $reason = '') - { - $order = wc_get_order($order_id); - - if (!$order) { - return new WP_Error('error', __('订单不存在', 'woo-alipay')); - } - - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/AopClient.php'; - require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/request/AlipayTradeRefundRequest.php'; - - $main_gateway = new WC_Alipay(false); - $config = Alipay_SDK_Helper::get_alipay_config(array( - 'appid' => $main_gateway->get_option('appid'), - 'private_key' => $main_gateway->get_option('private_key'), - 'public_key' => $main_gateway->get_option('public_key'), - 'sandbox' => $main_gateway->get_option('sandbox'), - )); - - $aop = Alipay_SDK_Helper::create_alipay_service($config); - if (!$aop) { - return new WP_Error('sdk_error', __('创建支付宝服务失败', 'woo-alipay')); - } - - $out_trade_no = $order->get_meta('_alipay_out_trade_no'); - if (!$out_trade_no) { - $out_trade_no = Alipay_SDK_Helper::generate_out_trade_no($order_id, $this->order_prefix); - } - $refund_amount = $amount ? floatval($amount) : floatval($order->get_total()); - $refund_reason = $reason ? $reason : __('订单退款', 'woo-alipay'); - - try { - $request = new AlipayTradeRefundRequest(); - $biz_content = array( - 'out_trade_no' => $out_trade_no, - 'refund_amount' => Alipay_SDK_Helper::format_amount($refund_amount), - 'refund_reason' => $refund_reason, - ); - $request->setBizContent(json_encode($biz_content)); - $response = $aop->execute($request); - $node = 'alipay_trade_refund_response'; - $result = $response->$node; - if (isset($result->code) && $result->code === '10000') { - $order->add_order_note(sprintf(__('支付宝退款成功,金额:¥%s', 'woo-alipay'), number_format($refund_amount, 2))); - return true; - } - return new WP_Error('refund_failed', $result->sub_msg ?? $result->msg ?? __('退款失败', 'woo-alipay')); - } catch (Exception $e) { - return new WP_Error('exception', $e->getMessage()); - } - } - - /** - * 检查支付方式是否可用 - */ - public function is_available() - { - $is_available = ('yes' === $this->enabled) ? true : false; - - if (!$is_available) { - return false; - } - - // 检查主支付宝网关是否配置 - $main_gateway = new WC_Alipay(false); - if (!$main_gateway->get_option('appid') || !$main_gateway->get_option('private_key')) { - return false; - } - - // 检查最小金额要求 - if (WC()->cart) { - $cart_total = WC()->cart->get_total(''); - $min_amount = floatval($this->get_option('min_amount', 100)); - $rmb_total = $this->convert_to_rmb($cart_total); - - if ($rmb_total < $min_amount) { - return false; - } - } - - return $is_available; - } - - /** - * 转换为人民币 - */ - protected function convert_to_rmb($amount) - { - return Alipay_SDK_Helper::convert_currency( - $amount, - $this->current_currency, - $this->exchange_rate - ); - } - - /** - * 获取订单标题 - */ - protected function get_order_title($order) - { - $title = get_bloginfo('name') . ' - ' . sprintf(__('订单 #%s', 'woo-alipay'), $order->get_id()); - return mb_substr($title, 0, 256); - } - - /** - * 获取订单描述 - */ - protected function get_order_description($order) - { - $items = array(); - foreach ($order->get_items() as $item) { - $items[] = $item->get_name(); - } - return mb_substr(implode(', ', $items), 0, 400); - } - - /** - * 记录日志 - */ - protected static function log($message, $level = 'info') - { - if (self::$log_enabled) { - if (empty(self::$log)) { - self::$log = wc_get_logger(); - } - self::$log->log($level, $message, array('source' => self::GATEWAY_ID)); - } - } -} diff --git a/inc/class-wc-alipay-subscription-ui.php b/inc/class-wc-alipay-subscription-ui.php new file mode 100644 index 00000000..2ba1026a --- /dev/null +++ b/inc/class-wc-alipay-subscription-ui.php @@ -0,0 +1,53 @@ + rawurlencode( $return_url ) ], WC()->api_request_url( 'WC_Alipay_Agreement_Start' ) ); + echo '
' + . esc_html__( '为确保到期自动续费,请授权支付宝周期扣款。', 'woo-alipay' ) + . ' ' . esc_html__( '授权支付宝自动续费', 'woo-alipay' ) . '' + . '
'; + } + + public static function render_view_subscription_sign( $subscription_id ) { + if ( ! is_user_logged_in() ) { return; } + $user_id = get_current_user_id(); + if ( ! self::can_offer_sign( $user_id ) ) { return; } + + $return_url = wc_get_account_endpoint_url( 'subscriptions' ); + $sign_url = add_query_arg( [ 'return_url' => rawurlencode( $return_url ) ], WC()->api_request_url( 'WC_Alipay_Agreement_Start' ) ); + + echo '
' + . '

' . esc_html__( '尚未授权支付宝自动续费。授权后,到期将自动从你绑定的支付宝扣款。', 'woo-alipay' ) . '

' + . '

' . esc_html__( '立即授权', 'woo-alipay' ) . '

' + . '
'; + } +} + +WC_Alipay_Subscription_UI::init(); diff --git a/inc/class-wc-alipay.php b/inc/class-wc-alipay.php index 67ccc9c7..f706304b 100755 --- a/inc/class-wc-alipay.php +++ b/inc/class-wc-alipay.php @@ -63,6 +63,7 @@ class WC_Alipay extends WC_Payment_Gateway 'subscription_amount_changes', 'subscription_date_changes', 'multiple_subscriptions', + 'tokenization', ); self::$log_enabled = ('yes' === $this->get_option('debug', 'no')); @@ -74,6 +75,12 @@ class WC_Alipay extends WC_Payment_Gateway $this->setup_form_fields(); $this->init_settings(); + + // Register subscription scheduled payment hook + if ( class_exists('WC_Subscriptions') || function_exists('wcs_order_contains_subscription') || function_exists('wcs_is_subscription') ) { + add_action('woocommerce_scheduled_subscription_payment_' . $this->id, array($this, 'scheduled_subscription_payment'), 10, 2); + } + if ($init_hooks) { // Add save gateway options callback add_action('woocommerce_update_options_payment_gateways_' . $this->id, array( @@ -101,6 +108,100 @@ class WC_Alipay extends WC_Payment_Gateway } } + /** + * Woo Subscriptions: scheduled payment callback + * + * @param float $amount_to_charge + * @param WC_Order $renewal_order + */ + public function scheduled_subscription_payment( $amount_to_charge, $renewal_order ) + { + try { + if ( 'yes' !== $this->get_option( 'enable_auto_renew', 'no' ) ) { + $renewal_order->add_order_note( __( '未启用自动续费,跳过代扣。', 'woo-alipay' ) ); + $renewal_order->update_status( 'failed', __( '自动续费未启用', 'woo-alipay' ) ); + return; + } + + $user_id = $renewal_order->get_user_id(); + if ( ! $user_id || ! class_exists( 'WC_Alipay_Agreement' ) ) { + $renewal_order->update_status( 'failed', __( '找不到用户或协议管理不可用。', 'woo-alipay' ) ); + return; + } + + $agreement_no = WC_Alipay_Agreement::get_user_agreement_no( $user_id ); + if ( ! $agreement_no ) { + $renewal_order->update_status( 'failed', __( '未查询到支付宝扣款协议,请先完成签约。', 'woo-alipay' ) ); + return; + } + + require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; + require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/AopClient.php'; + require_once WOO_ALIPAY_PLUGIN_PATH . 'lib/alipay/aop/request/AlipayTradeCreateRequest.php'; + + $config = Alipay_SDK_Helper::get_alipay_config( array( + 'appid' => $this->get_option('appid'), + 'private_key' => $this->get_option('private_key'), + 'public_key' => $this->get_option('public_key'), + 'sandbox' => $this->get_option('sandbox'), + ) ); + + $aop = Alipay_SDK_Helper::create_alipay_service( $config ); + if ( ! $aop ) { + $renewal_order->update_status( 'failed', __( '创建支付宝服务失败(自动续费)。', 'woo-alipay' ) ); + return; + } + + $out_trade_no = 'SubR' . $renewal_order->get_id() . '-' . current_time('timestamp'); + // 记录到订单元数据,便于回调查询定位 + $renewal_order->update_meta_data( '_alipay_out_trade_no', $out_trade_no ); + $renewal_order->save(); + + $total = $this->maybe_convert_amount( $amount_to_charge ); + $subject = $this->get_option( 'auto_renew_subject_prefix', __( '订阅续费', 'woo-alipay' ) ) . ' - #' . $renewal_order->get_id(); + + $product_code = apply_filters( 'woo_alipay_agreement_trade_product_code', $this->get_option( 'agreement_product_code', 'CYCLE_PAY_AUTH' ), $renewal_order ); + $biz = array( + 'out_trade_no' => $out_trade_no, + 'total_amount' => $total, + 'subject' => $subject, + 'product_code' => $product_code, + 'agreement_params' => array( + 'agreement_no' => $agreement_no, + ), + ); + + $biz = apply_filters( 'woo_alipay_agreement_trade_biz_content', $biz, $renewal_order, $agreement_no ); + + $request = new AlipayTradeCreateRequest(); + $request->setBizContent( wp_json_encode( $biz ) ); + $request->setNotifyUrl( apply_filters( 'woo_alipay_gateway_notify_url', $this->notify_url, $renewal_order->get_id() ) ); + + $response = $aop->execute( $request ); + $node = 'alipay_trade_create_response'; + $result = $response->$node ?? null; + + if ( ! $result || ! isset( $result->code ) || '10000' !== $result->code ) { + self::log( __METHOD__ . ' TradeCreate error: ' . wc_print_r( $response, true ), 'error' ); + $renewal_order->update_status( 'failed', __( '支付宝代扣下单失败。', 'woo-alipay' ) ); + return; + } + + // 可选:立即查询一次状态 + $query = Alipay_SDK_Helper::query_order( $out_trade_no, '', $config ); + if ( ! is_wp_error( $query ) && ! empty( $query['trade_status'] ) && in_array( $query['trade_status'], array( 'TRADE_SUCCESS', 'TRADE_FINISHED' ), true ) ) { + $renewal_order->payment_complete( $query['trade_no'] ); + $renewal_order->add_order_note( sprintf( __( '自动续费成功,交易号:%s', 'woo-alipay' ), $query['trade_no'] ) ); + } else { + // 等待异步通知回调完成订单 + $renewal_order->add_order_note( __( '已发起支付宝代扣,等待异步通知确认。', 'woo-alipay' ) ); + } + } catch ( Exception $e ) { + self::log( __METHOD__ . ' exception: ' . $e->getMessage(), 'error' ); + $renewal_order->update_status( 'failed', $e->getMessage() ); + } + } + protected function setup_form_fields() { $this->form_fields = array( @@ -195,16 +296,62 @@ class WC_Alipay extends WC_Payment_Gateway ), 'desc_tip' => false, ), - - 'advanced_settings_title' => array( - 'title' => __('高级设置', 'woo-alipay'), - 'type' => 'title', - 'description' => __('配置汇率转换和连接测试等高级功能', 'woo-alipay'), - ), + + ); + + // 将“支付增强功能”分组提前到“环境与调试”之后 + $this->add_payment_enhancement_settings(); + + // 后续是“高级设置”和“订阅与自动续费(实验性)” + $this->form_fields = array_merge( + $this->form_fields, + array( + 'advanced_settings_title' => array( + 'title' => __('高级设置', 'woo-alipay'), + 'type' => 'title', + 'description' => __('配置汇率转换和连接测试等高级功能', 'woo-alipay'), + ), + ) + ); + + // Subscriptions & Auto-renew (Experimental) + + // 订阅与自动续费(实验性)分组与字段 + $this->form_fields['subscriptions_title'] = array( + 'title' => __('订阅与自动续费(实验性)', 'woo-alipay'), + 'type' => 'title', + 'description' => __('启用后,支持 WooCommerce Subscriptions 的自动续费。需要先在支付宝签约周期扣款。', 'woo-alipay'), + ); + $this->form_fields['enable_auto_renew'] = array( + 'title' => __('启用自动续费', 'woo-alipay'), + 'type' => 'checkbox', + 'label' => __('允许通过支付宝协议代扣进行订阅续费', 'woo-alipay'), + 'default' => 'no', + ); + $this->form_fields['agreement_product_code'] = array( + 'title' => __('签约/代扣产品码', 'woo-alipay'), + 'type' => 'text', + 'default' => 'CYCLE_PAY_AUTH', + 'description' => __('用于协议签约与代扣的产品码。不同商户开通能力可能不同,可通过过滤器覆盖。', 'woo-alipay'), + 'desc_tip' => true, + ); + $this->form_fields['auto_renew_subject_prefix'] = array( + 'title' => __('续费订单标题前缀', 'woo-alipay'), + 'type' => 'text', + 'default' => __('订阅续费', 'woo-alipay'), ); - // 添加支付增强功能设置 - $this->add_payment_enhancement_settings(); + // 仅当安装并启用了 WooCommerce Subscriptions 时,展示自动续费设置 + if ( ! ( class_exists('WC_Subscriptions') || function_exists('wcs_order_contains_subscription') || function_exists('wcs_is_subscription') ) ) { + unset( + $this->form_fields['enable_auto_renew'], + $this->form_fields['agreement_product_code'], + $this->form_fields['auto_renew_subject_prefix'] + ); + if ( isset( $this->form_fields['subscriptions_title'] ) ) { + $this->form_fields['subscriptions_title']['description'] = __( '需要安装并启用 WooCommerce Subscriptions 才能设置自动续费。', 'woo-alipay' ); + } + } if (!in_array($this->current_currency, $this->supported_currencies, true)) { $current_rate = $this->get_option('exchange_rate', '7.0'); @@ -653,7 +800,7 @@ class WC_Alipay extends WC_Payment_Gateway $config = array( 'app_id' => $this->get_option('appid'), 'merchant_private_key' => $this->get_option('private_key'), - 'notify_url' => $this->notify_url, + 'notify_url' => apply_filters('woo_alipay_gateway_notify_url', $this->notify_url, $order_id), 'return_url' => apply_filters('woo_alipay_gateway_return_url', ($order) ? $order->get_checkout_order_received_url() : get_home_url()), 'charset' => $this->charset, 'sign_type' => 'RSA2', @@ -843,11 +990,50 @@ class WC_Alipay extends WC_Payment_Gateway echo '

'; echo ''; + + // 实用端点与工具 + $notify_url = apply_filters( 'woo_alipay_gateway_notify_url', $this->notify_url, 0 ); + echo '
'; + echo '

' . esc_html__( '工具与端点', 'woo-alipay' ) . '

'; + echo '

' . esc_html__( '异步通知 URL(请在支付宝开放平台中配置为支付结果通知 URL)', 'woo-alipay' ) . '

'; + echo '

' . esc_html( $notify_url ) . ' '; + echo '

'; + + // 若支持订阅,展示签约相关端点 + $subs_available = ( class_exists('WC_Subscriptions') || function_exists('wcs_order_contains_subscription') || function_exists('wcs_is_subscription') ); + if ( $subs_available ) { + $start_url = WC()->api_request_url( 'WC_Alipay_Agreement_Start' ); + $notify_agre = WC()->api_request_url( 'WC_Alipay_Agreement_Notify' ); + $return_agre = WC()->api_request_url( 'WC_Alipay_Agreement_Return' ); + echo '
'; + echo '

' . esc_html__( '签约端点(用于支付宝协议授权与回调)', 'woo-alipay' ) . '

'; + echo '
    '; + echo '
  • ' . esc_html__( '签约启动', 'woo-alipay' ) . ': ' . esc_html( $start_url ) . '
  • '; + echo '
  • ' . esc_html__( '签约通知', 'woo-alipay' ) . ': ' . esc_html( $notify_agre ) . '
  • '; + echo '
  • ' . esc_html__( '签约返回', 'woo-alipay' ) . ': ' . esc_html( $return_agre ) . '
  • '; + echo '
'; + } + echo '
'; + echo ''; - $this->generate_settings_html(); - echo '
'; + + // 简易复制函数 + echo ''; + } + + // Provider state methods for WooCommerce Payments list badges + public function is_account_connected() { + return (bool) ( $this->get_option('appid') && $this->get_option('private_key') && $this->get_option('public_key') ); + } + + public function needs_setup() { + return ! $this->is_account_connected(); + } + + public function is_test_mode() { + return 'yes' === $this->get_option('sandbox'); } public function check_alipay_response() @@ -861,9 +1047,23 @@ class WC_Alipay extends WC_Payment_Gateway $fund_bill_list = isset($_POST['fund_bill_list']) ? stripslashes(sanitize_text_field($_POST['fund_bill_list'])) : ''; $needs_reply = false; $error = false; - $out_trade_no_parts = explode('-', str_replace('WooA', '', $out_trade_no)); - $order_id = absint(array_shift($out_trade_no_parts)); - $order = wc_get_order($order_id); + + // 先尝试通过既有规则(WooA前缀)解析订单ID + $order = null; + $order_id = 0; + if ( strpos( $out_trade_no, 'WooA' ) === 0 ) { + $out_trade_no_parts = explode('-', str_replace('WooA', '', $out_trade_no)); + $order_id = absint(array_shift($out_trade_no_parts)); + $order = wc_get_order($order_id); + } + // 若无法解析或未找到订单,改为通过订单元数据定位(适配自动续费 SubR*) + if ( ! $order ) { + $orders = wc_get_orders( array( 'meta_key' => '_alipay_out_trade_no', 'meta_value' => $out_trade_no, 'limit' => 1 ) ); + if ( ! empty( $orders ) ) { + $order = $orders[0]; + $order_id = $order->get_id(); + } + } $order_check = ($order instanceof WC_Order); if (!$order_check) { diff --git a/inc/class-woo-alipay.php b/inc/class-woo-alipay.php index e1c18975..37cf2d19 100755 --- a/inc/class-woo-alipay.php +++ b/inc/class-woo-alipay.php @@ -35,6 +35,9 @@ class Woo_Alipay { // Add WooCommerce Blocks support $this->woocommerce_gateway_alipay_woocommerce_block_support(); + + // Enhance Payments providers response with contextual links for Alipay gateways + add_filter( 'rest_post_dispatch', array( $this, 'filter_payments_providers_response' ), 10, 3 ); } } @@ -151,39 +154,53 @@ class Woo_Alipay { } } - public function add_admin_scripts( $hook ) { + public function add_admin_scripts( $hook ) { - if ( 'woocommerce_page_wc-settings' === $hook ) { - $debug = (bool) ( constant( 'WP_DEBUG' ) ); - $css_ext = ( $debug ) ? '.css' : '.min.css'; - $js_ext = ( $debug ) ? '.js' : '.min.js'; - $version_css = filemtime( WOO_ALIPAY_PLUGIN_PATH . 'css/admin/main' . $css_ext ); - $version_js = filemtime( WOO_ALIPAY_PLUGIN_PATH . 'js/admin/main' . $js_ext ); + if ( 'woocommerce_page_wc-settings' !== $hook ) { + return; + } - wp_enqueue_style( - 'woo-alipay-main-style', - WOO_ALIPAY_PLUGIN_URL . 'css/admin/main' . $css_ext, - array(), - $version_css - ); + // Only load our admin assets on our gateway settings sections, not on the Payments list view. + $tab = isset( $_GET['tab'] ) ? sanitize_key( wp_unslash( $_GET['tab'] ) ) : ''; + $section = isset( $_GET['section'] ) ? sanitize_key( wp_unslash( $_GET['section'] ) ) : ''; + $our_sections = array( 'alipay', 'alipay_installment', 'alipay_facetopay' ); + if ( 'checkout' !== $tab || ! in_array( $section, $our_sections, true ) ) { + return; + } - $parameters = array( - 'ajax_url' => admin_url( 'admin-ajax.php' ), - 'debug' => $debug, - ); + $debug = (bool) ( constant( 'WP_DEBUG' ) ); + $css_ext = ( $debug ) ? '.css' : '.min.css'; + $js_ext = ( $debug ) ? '.js' : '.min.js'; + $version_css = filemtime( WOO_ALIPAY_PLUGIN_PATH . 'css/admin/main' . $css_ext ); + $version_js = filemtime( WOO_ALIPAY_PLUGIN_PATH . 'js/admin/main' . $js_ext ); - wp_enqueue_script( - 'woo-alipay-admin-script', - WOO_ALIPAY_PLUGIN_URL . 'js/admin/main' . $js_ext, - array( 'jquery' ), - $version_js, - true - ); - wp_localize_script( 'woo-alipay-admin-script', 'WooAlipay', $parameters ); - } + wp_enqueue_style( + 'woo-alipay-main-style', + WOO_ALIPAY_PLUGIN_URL . 'css/admin/main' . $css_ext, + array(), + $version_css + ); + + $parameters = array( + 'ajax_url' => admin_url( 'admin-ajax.php' ), + 'debug' => $debug, + ); + + wp_enqueue_script( + 'woo-alipay-admin-script', + WOO_ALIPAY_PLUGIN_URL . 'js/admin/main' . $js_ext, + array( 'jquery' ), + $version_js, + true + ); + wp_localize_script( 'woo-alipay-admin-script', 'WooAlipay', $parameters ); } public function add_admin_pages() { + // If the dedicated Reconcile Pro extension is active, avoid adding a duplicate menu. + if ( class_exists( 'Woo_Alipay_Reconcile_Admin' ) ) { + return; + } add_submenu_page( 'woocommerce', __( '支付宝对账工具', 'woo-alipay' ), @@ -194,6 +211,88 @@ class Woo_Alipay { ); } + /** + * Inject provider links into the WooCommerce Payments providers REST response. + */ + public function filter_payments_providers_response( $response, $server, $request ) { + try { + // Allow site owners to disable this injection for troubleshooting. + if ( false === apply_filters( 'woo_alipay_enable_payments_links_injection', true ) ) { + return $response; + } + + if ( ! $response || ! is_a( $response, 'WP_REST_Response' ) ) { + return $response; + } + + $route = is_object( $request ) && method_exists( $request, 'get_route' ) ? (string) $request->get_route() : ''; + $method = is_object( $request ) && method_exists( $request, 'get_method' ) ? (string) $request->get_method() : ''; + + // Only act on the Payments providers endpoint used by the settings page (POST /wc-admin/settings/payments/providers). + if ( false === strpos( $route, '/wc-admin/settings/payments/providers' ) || 'POST' !== strtoupper( $method ) ) { + return $response; + } + + $data = $response->get_data(); + if ( ! is_array( $data ) || empty( $data['providers'] ) || ! is_array( $data['providers'] ) ) { + return $response; + } + + $pricing_url = apply_filters( 'woo_alipay_pricing_url', 'https://woocn.com/product/woo-alipay.html#pricing' ); + $about_url = apply_filters( 'woo_alipay_learn_more_url', 'https://woocn.com/document/woo-alipay' ); + $terms_url = apply_filters( 'woo_alipay_terms_url', 'https://woocn.com/terms' ); + $docs_url = apply_filters( 'woo_alipay_docs_url', 'https://woocn.com/document/woo-alipay' ); + $support_url = apply_filters( 'woo_alipay_support_url', 'https://woocn.com/support' ); + + $target_ids = array( 'alipay', 'alipay_installment', 'alipay_facetopay' ); + + foreach ( $data['providers'] as $idx => $provider ) { + if ( ! is_array( $provider ) || empty( $provider['id'] ) || ! in_array( $provider['id'], $target_ids, true ) ) { + continue; + } + + $links = array(); + if ( isset( $provider['links'] ) && is_array( $provider['links'] ) ) { + $links = $provider['links']; + } + + // Track existing link types to avoid duplicates. + $existing_types = array(); + foreach ( $links as $link ) { + if ( is_array( $link ) && ! empty( $link['_type'] ) ) { + $existing_types[] = $link['_type']; + } + } + + $to_add = array( + array( '_type' => 'pricing', 'url' => esc_url_raw( $pricing_url ) ), + array( '_type' => 'about', 'url' => esc_url_raw( $about_url ) ), + array( '_type' => 'terms', 'url' => esc_url_raw( $terms_url ) ), + array( '_type' => 'documentation', 'url' => esc_url_raw( $docs_url ) ), + array( '_type' => 'support', 'url' => esc_url_raw( $support_url ) ), + ); + + foreach ( $to_add as $entry ) { + if ( empty( $entry['_type'] ) || empty( $entry['url'] ) ) { + continue; + } + if ( in_array( $entry['_type'], $existing_types, true ) ) { + continue; + } + $links[] = $entry; + } + + $data['providers'][ $idx ]['links'] = $links; + } + + $response->set_data( $data ); + } catch ( \Throwable $e ) { + // Fail-safe: do not block the response. + } + + return $response; + } + public function render_admin_reconcile_page() { if ( ! current_user_can( 'manage_woocommerce' ) ) { wp_die( __( '权限不足', 'woo-alipay' ) ); @@ -248,16 +347,15 @@ class Woo_Alipay { echo ''; } - public function add_gateway( $methods ) { + public function add_gateway( $methods ) { $methods[] = 'WC_Alipay'; - $methods[] = 'WC_Alipay_Installment'; - $methods[] = 'WC_Alipay_FaceToPay'; + // Extension gateways are registered by their own plugins now. return $methods; } public function plugin_edit_link( $links ) { - $url = admin_url( 'admin.php?page=wc-settings&tab=checkout§ion=woo_alipay' ); + $url = admin_url( 'admin.php?page=wc-settings&tab=checkout§ion=alipay' ); return array_merge( array( @@ -331,25 +429,12 @@ class Woo_Alipay { if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-blocks-support.php' ) ) { require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-blocks-support.php'; } - if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-installment-blocks-support.php' ) ) { - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-installment-blocks-support.php'; - } - if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-facetopay-blocks-support.php' ) ) { - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-facetopay-blocks-support.php'; - } - // 注册主支付宝网关 + + // 注册主支付宝网关(扩展的 Blocks 支持由扩展自身注册) if ( class_exists( 'WC_Alipay_Blocks_Support' ) ) { $payment_method_registry->register( new WC_Alipay_Blocks_Support() ); } - // 注册花呗分期网关 - if ( class_exists( 'WC_Alipay_Installment_Blocks_Support' ) ) { - $payment_method_registry->register( new WC_Alipay_Installment_Blocks_Support() ); - } - // 注册当面付网关 - if ( class_exists( 'WC_Alipay_FaceToPay_Blocks_Support' ) ) { - $payment_method_registry->register( new WC_Alipay_FaceToPay_Blocks_Support() ); - } } ); } diff --git a/inc/templates/payment-qrcode.php b/inc/templates/payment-qrcode.php deleted file mode 100644 index 732a9b58..00000000 --- a/inc/templates/payment-qrcode.php +++ /dev/null @@ -1,66 +0,0 @@ - - - -> - - - - - <?php echo esc_html__('扫码支付', 'woo-alipay'); ?> - <?php bloginfo('name'); ?> - - - - -
-
-

-
- get_id()); ?> -
-
- ¥get_total(), 2); ?> -
-
- -
-
-
-
- -
-

-

- -
- -
- -
- -
-
- - - - - - - diff --git a/js/admin/main.js b/js/admin/main.js index 094a4155..ec90e4c5 100755 --- a/js/admin/main.js +++ b/js/admin/main.js @@ -1,6 +1,7 @@ /* global WooAlipay */ jQuery( document ).ready( function( $ ) { + $( '#woo-alipay-test-connection, #woo_alipay_test_connection' ).on( 'click', function( e ) { e.preventDefault(); diff --git a/js/alipay-facetopay.js b/js/alipay-facetopay.js deleted file mode 100644 index f7bd255c..00000000 --- a/js/alipay-facetopay.js +++ /dev/null @@ -1,209 +0,0 @@ -/** - * 当面付支付前端脚本 - */ - -(function($) { - 'use strict'; - - let pollingTimer = null; - let timeoutTimer = null; - let remainingTime = 0; - let pollingAttempts = 0; - let refreshing = false; - const maxPollingAttempts = 100; // 最多轮询100次 - - const AlipayFaceToPay = { - init: function() { - const $qrcodeElement = $('#alipay-qrcode'); - - if ($qrcodeElement.length > 0 && typeof alipayFaceToPayParams !== 'undefined') { - const qrcodeData = $qrcodeElement.data('qrcode'); - const qrcodeSize = parseInt($qrcodeElement.data('size'), 10) || 300; - const orderId = $qrcodeElement.data('order-id'); - - if (qrcodeData) { - this.generateQRCode(qrcodeData, qrcodeSize); - this.startPolling(orderId); - this.startTimeout(); - } - } - }, - - generateQRCode: function(data, size) { - try { - new QRCode(document.getElementById('alipay-qrcode'), { - text: data, - width: size, - height: size, - colorDark: '#000000', - colorLight: '#ffffff', - correctLevel: QRCode.CorrectLevel.H - }); - } catch (error) { - console.error('生成二维码失败:', error); - this.showError('生成二维码失败,请刷新页面重试'); - } - }, - - startPolling: function(orderId) { - const self = this; - const nonce = $('#alipay-facetopay-nonce').val(); - - pollingTimer = setInterval(function() { - if (pollingAttempts >= maxPollingAttempts) { - self.stopPolling(); - return; - } - - pollingAttempts++; - - $.ajax({ - url: alipayFaceToPayParams.ajax_url, - type: 'POST', - data: { - action: 'alipay_facetopay_query', - order_id: orderId, - nonce: nonce - }, - success: function(response) { - if (response.success && response.data.status === 'paid') { - self.stopPolling(); - self.showSuccess(); - - setTimeout(function() { - window.location.href = response.data.redirect_url; - }, 1500); - } - }, - error: function(xhr, status, error) { - console.error('查询支付状态失败:', error); - } - }); - }, alipayFaceToPayParams.polling_interval || 2000); - }, - - stopPolling: function() { - if (pollingTimer) { - clearInterval(pollingTimer); - pollingTimer = null; - } - }, - - startTimeout: function() { - const self = this; - remainingTime = alipayFaceToPayParams.timeout || 120; - - this.updateTimer(); - - timeoutTimer = setInterval(function() { - remainingTime--; - self.updateTimer(); - - // 即将过期时自动刷新二维码 - if (remainingTime <= 5 && !refreshing) { - self.refreshQRCode(); - } - - if (remainingTime <= 0) { - self.stopPolling(); - clearInterval(timeoutTimer); - self.showExpired(); - } - }, 1000); - }, - - updateTimer: function() { - const $timer = $('.alipay-qrcode-timer'); - - if ($timer.length > 0) { - const minutes = Math.floor(remainingTime / 60); - const seconds = remainingTime % 60; - const timeStr = minutes + ':' + (seconds < 10 ? '0' : '') + seconds; - - $timer.text('剩余时间: ' + timeStr); - - if (remainingTime <= 30) { - $timer.addClass('warning'); - } - } - }, - - showSuccess: function() { - const $status = $('.alipay-payment-status'); - - $status.removeClass('error').addClass('success'); - $status.html( - '' + - '支付成功!正在跳转...' - ); - }, - - showError: function(message) { - const $status = $('.alipay-payment-status'); - - $status.removeClass('success').addClass('error'); - $status.html( - '' + - '' + message + '' - ); - }, - - refreshQRCode: function() { - const self = this; - if (refreshing) return; - const $qrcodeElement = $('#alipay-qrcode'); - const orderId = $qrcodeElement.data('order-id'); - const nonce = $('#alipay-facetopay-nonce').val(); - refreshing = true; - $.ajax({ - url: alipayFaceToPayParams.ajax_url, - type: 'POST', - data: { - action: 'alipay_facetopay_refresh_qrcode', - order_id: orderId, - nonce: nonce - }, - success: function(response) { - refreshing = false; - if (response.success && response.data.qr_code) { - // 重新渲染二维码 - $('#alipay-qrcode').empty(); - const size = parseInt($qrcodeElement.data('size'), 10) || 300; - $('#alipay-qrcode').attr('data-qrcode', response.data.qr_code); - AlipayFaceToPay.generateQRCode(response.data.qr_code, size); - // 重置计时 - remainingTime = parseInt(response.data.timeout || 120, 10); - } - }, - error: function() { refreshing = false; } - }); - }, - - showExpired: function() { - const $container = $('.alipay-qrcode-container'); - - $container.html( - '
' + - '
' + - '
二维码已过期
' + - '' + - '
' - ); - } - }; - - $(document).ready(function() { - AlipayFaceToPay.init(); - }); - - // 页面卸载时停止轮询 - $(window).on('beforeunload', function() { - if (pollingTimer) { - clearInterval(pollingTimer); - } - if (timeoutTimer) { - clearInterval(timeoutTimer); - } - }); - -})(jQuery); diff --git a/js/alipay-installment.js b/js/alipay-installment.js deleted file mode 100644 index 2a4baf0f..00000000 --- a/js/alipay-installment.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * 花呗分期支付前端脚本 - */ - -(function($) { - 'use strict'; - - $(document).ready(function() { - // 确保至少选中一个分期选项 - const $installmentRadios = $('input[name="alipay_installment_period"]'); - - if ($installmentRadios.length > 0) { - // 如果没有任何选中的,选中第一个 - if ($installmentRadios.filter(':checked').length === 0) { - $installmentRadios.first().prop('checked', true); - } - - // 添加点击动画效果 - $installmentRadios.on('change', function() { - $(this).closest('label').addClass('period-selected'); - $installmentRadios.not(this).closest('label').removeClass('period-selected'); - }); - } - - // 在提交订单前验证是否选择了分期期数 - $('form.checkout').on('checkout_place_order_alipay_installment', function() { - const $selectedPeriod = $('input[name="alipay_installment_period"]:checked'); - - if ($selectedPeriod.length === 0) { - alert('请选择分期期数'); - return false; - } - - return true; - }); - }); - -})(jQuery); diff --git a/js/frontend/blocks-facetopay.asset.php b/js/frontend/blocks-facetopay.asset.php deleted file mode 100644 index 31720372..00000000 --- a/js/frontend/blocks-facetopay.asset.php +++ /dev/null @@ -1,9 +0,0 @@ - array( - 'wc-blocks-registry', - 'wp-element', - 'wp-html-entities', - 'wp-i18n', - ), - 'version' => '3.1.0', -); \ No newline at end of file diff --git a/js/frontend/blocks-facetopay.js b/js/frontend/blocks-facetopay.js deleted file mode 100644 index 9f11d977..00000000 --- a/js/frontend/blocks-facetopay.js +++ /dev/null @@ -1,81 +0,0 @@ -(function(){ -const { registerPaymentMethod } = window.wc.wcBlocksRegistry; -const { createElement } = window.wp.element; -const { __ } = window.wp.i18n; -const { decodeEntities } = window.wp.htmlEntities; - -const settings = window.wc.wcSettings.getSetting( 'alipay_facetopay_data', {} ); -const defaultLabel = __( '支付宝扫码支付', 'woo-alipay' ); -const defaultDescription = __( '使用支付宝扫描二维码完成支付', 'woo-alipay' ); - -const Label = ( props ) => { - const { PaymentMethodLabel } = props.components; - const iconElement = settings.icon ? createElement( 'img', { - src: settings.icon, - alt: decodeEntities( settings.title || defaultLabel ), - style: { - width: '24px', - height: '24px', - marginRight: '8px', - verticalAlign: 'middle' - } - } ) : null; - - return createElement( 'div', { - style: { display: 'flex', alignItems: 'center' } - }, [ - iconElement, - createElement( PaymentMethodLabel, { - text: decodeEntities( settings.title || defaultLabel ), - key: 'label' - } ) - ] ); -}; - -const Content = () => { - return createElement( 'div', { - style: { padding: '10px 0' } - }, [ - createElement( 'p', { - key: 'description', - style: { marginBottom: '8px' } - }, decodeEntities( settings.description || defaultDescription ) ), - - createElement( 'div', { - key: 'qr-info', - style: { - padding: '10px', - background: '#f0f7ff', - border: '1px solid #d6e4ff', - borderRadius: '4px', - fontSize: '13px', - color: '#096dd9' - } - }, [ - createElement( 'p', { - key: 'tip1', - style: { margin: '4px 0' } - }, __( '点击下单后会显示支付二维码', 'woo-alipay' ) ), - - createElement( 'p', { - key: 'tip2', - style: { margin: '4px 0' } - }, __( '请使用支付宝APP扫描二维码完成支付', 'woo-alipay' ) ) - ]) - ]); -}; - -const alipayFaceToPayPaymentMethod = { - name: 'alipay_facetopay', - label: createElement( Label ), - content: createElement( Content ), - edit: createElement( Content ), - canMakePayment: () => true, - ariaLabel: decodeEntities( settings.title || defaultLabel ), - supports: { - features: settings?.supports ?? ['products'], - }, -}; - -registerPaymentMethod( alipayFaceToPayPaymentMethod ); -})(); diff --git a/js/frontend/blocks-installment.asset.php b/js/frontend/blocks-installment.asset.php deleted file mode 100644 index 31720372..00000000 --- a/js/frontend/blocks-installment.asset.php +++ /dev/null @@ -1,9 +0,0 @@ - array( - 'wc-blocks-registry', - 'wp-element', - 'wp-html-entities', - 'wp-i18n', - ), - 'version' => '3.1.0', -); \ No newline at end of file diff --git a/js/frontend/blocks-installment.js b/js/frontend/blocks-installment.js deleted file mode 100644 index 1813ea2d..00000000 --- a/js/frontend/blocks-installment.js +++ /dev/null @@ -1,169 +0,0 @@ -(function(){ -const { registerPaymentMethod } = window.wc.wcBlocksRegistry; -const { createElement, useState, useEffect } = window.wp.element; -const { __ } = window.wp.i18n; -const { decodeEntities } = window.wp.htmlEntities; - -const settings = window.wc.wcSettings.getSetting( 'alipay_installment_data', {} ); -const defaultLabel = __( '支付宝花呗分期', 'woo-alipay' ); -const defaultDescription = __( '使用支付宝花呗分期付款,支持3期、6期、12期免息或低息分期。', 'woo-alipay' ); - -const Label = ( props ) => { - const { PaymentMethodLabel } = props.components; - const iconElement = settings.icon ? createElement( 'img', { - src: settings.icon, - alt: decodeEntities( settings.title || defaultLabel ), - style: { - width: '24px', - height: '24px', - marginRight: '8px', - verticalAlign: 'middle' - } - } ) : null; - - return createElement( 'div', { - style: { display: 'flex', alignItems: 'center' } - }, [ - iconElement, - createElement( PaymentMethodLabel, { - text: decodeEntities( settings.title || defaultLabel ), - key: 'label' - } ) - ] ); -}; - -const Content = ( props ) => { - // 检查是否满足最小金额要求 - const meetsMinAmount = settings.meetsMinAmount || false; - const minAmount = settings.minAmount || 100; - const cartTotal = settings.cartTotal || 0; - const availablePeriods = settings.availablePeriods || ['3', '6', '12']; - const defaultPeriod = settings.defaultPeriod || '3'; - - const [ selectedPeriod, setSelectedPeriod ] = useState( String(defaultPeriod) ); - - // 将选择的分期数传递到服务端(Store API -> payment_data) - useEffect( () => { - if ( ! props?.eventRegistration ) return; - const unsubscribe = props.eventRegistration.onPaymentSetup( () => { - return { - type: 'success', - paymentMethodData: { - alipay_installment_period: selectedPeriod, - }, - }; - } ); - return () => { - if ( typeof unsubscribe === 'function' ) unsubscribe(); - }; - }, [ selectedPeriod ] ); - - // 如果不满足最小金额,显示提示 - if (!meetsMinAmount) { - return createElement( 'div', { - style: { - padding: '10px', - background: '#fff3cd', - border: '1px solid #ffc107', - borderRadius: '4px', - color: '#856404', - marginTop: '10px' - } - }, __( '订单金额需满 ¥' + minAmount + ' 才能使用花呗分期', 'woo-alipay' ) ); - } - - return createElement( 'div', { - style: { padding: '10px 0' } - }, [ - createElement( 'p', { - key: 'description', - style: { marginBottom: '15px' } - }, decodeEntities( settings.description || defaultDescription ) ), - createElement( 'p', { - key: 'fee-note', - style: { margin: '6px 0', fontSize: '12px', color: '#666' } - }, settings.feePayer === 'seller' ? __( '免息分期(手续费由商家承担)', 'woo-alipay' ) : __( '可能产生分期手续费,以支付宝支付页面为准', 'woo-alipay' ) ), - - createElement( 'div', { - key: 'period-info', - style: { - padding: '12px', - background: '#f9f9f9', - border: '1px solid #e0e0e0', - borderRadius: '4px', - marginTop: '10px' - } - }, [ - createElement( 'p', { - key: 'title', - style: { - fontWeight: '600', - marginBottom: '8px', - fontSize: '14px' - } - }, __( '选择分期期数:', 'woo-alipay' ) ), - - createElement( 'div', { - key: 'periods', - style: { - margin: '0', - padding: '0', - display: 'grid', - gap: '6px' - } - }, availablePeriods.map(period => { - const monthlyAmount = (cartTotal / parseInt(period)).toFixed(2); - const id = 'alipay-installment-' + period; - return createElement( 'label', { - key: period, - htmlFor: id, - style: { display: 'flex', alignItems: 'center', gap: '8px', fontSize: '13px' } - }, [ - createElement( 'input', { - id, - type: 'radio', - name: 'alipay_installment_period', - value: String(period), - checked: String(selectedPeriod) === String(period), - onChange: () => setSelectedPeriod(String(period)) - } ), - createElement( 'span', { key: 'label-' + period }, [ - period + ' 期(每期 ¥' + monthlyAmount, - (settings.feePayer === 'seller' && settings.showInterestFreeBadge) ? createElement('span', { key: 'free-'+period, className: 'alipay-badge alipay-badge--free', style: { marginLeft: '4px' } }, __('免息', 'woo-alipay')) : null, - ')' - ] ) - ] ); - }) ) - ]), - - createElement( 'p', { - key: 'note', - style: { - marginTop: '10px', - fontSize: '12px', - color: '#666' - } - }, __( '在支付页面将可以选择具体的分期期数', 'woo-alipay' ) ) - ]); -}; - -const alipayInstallmentPaymentMethod = { - name: 'alipay_installment', - paymentMethodId: 'alipay_installment', - label: createElement( Label ), - content: createElement( Content ), - edit: createElement( Content ), - canMakePayment: () => { - const behavior = settings.insufficientBehavior || 'hide'; - const meets = !!settings.meetsMinAmount; - if ( behavior === 'hide' && !meets ) return false; - return true; - }, - ariaLabel: decodeEntities( settings.title || defaultLabel ), - supports: { - features: settings?.supports ?? ['products'], - }, -}; - -registerPaymentMethod( alipayInstallmentPaymentMethod ); -})(); diff --git a/vendor/adbario/php-dot-notation/LICENSE.md b/vendor/adbario/php-dot-notation/LICENSE.md deleted file mode 100644 index fe013238..00000000 --- a/vendor/adbario/php-dot-notation/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) - -Copyright (c) 2016-2019 Riku Särkinen - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/adbario/php-dot-notation/composer.json b/vendor/adbario/php-dot-notation/composer.json deleted file mode 100644 index cea71261..00000000 --- a/vendor/adbario/php-dot-notation/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "adbario/php-dot-notation", - "description": "PHP dot notation access to arrays", - "keywords": ["dotnotation", "arrayaccess"], - "homepage": "https://github.com/adbario/php-dot-notation", - "license": "MIT", - "authors": [ - { - "name": "Riku Särkinen", - "email": "riku@adbar.io" - } - ], - "require": { - "php": "^5.5 || ^7.0 || ^8.0", - "ext-json": "*" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Adbar\\": "src" - } - } -} diff --git a/vendor/adbario/php-dot-notation/src/Dot.php b/vendor/adbario/php-dot-notation/src/Dot.php deleted file mode 100644 index 3cd1c501..00000000 --- a/vendor/adbario/php-dot-notation/src/Dot.php +++ /dev/null @@ -1,623 +0,0 @@ - - * @link https://github.com/adbario/php-dot-notation - * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License) - */ -namespace Adbar; - -use Countable; -use ArrayAccess; -use ArrayIterator; -use JsonSerializable; -use IteratorAggregate; - -/** - * Dot - * - * This class provides a dot notation access and helper functions for - * working with arrays of data. Inspired by Laravel Collection. - */ -class Dot implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable -{ - /** - * The stored items - * - * @var array - */ - protected $items = []; - - - /** - * The delimiter (alternative to a '.') to be used. - * - * @var string - */ - protected $delimiter = '.'; - - - /** - * Create a new Dot instance - * - * @param mixed $items - * @param string $delimiter - */ - public function __construct($items = [], $delimiter = '.') - { - $this->items = $this->getArrayItems($items); - $this->delimiter = strlen($delimiter) ? $delimiter : '.'; - } - - /** - * Set a given key / value pair or pairs - * if the key doesn't exist already - * - * @param array|int|string $keys - * @param mixed $value - */ - public function add($keys, $value = null) - { - if (is_array($keys)) { - foreach ($keys as $key => $value) { - $this->add($key, $value); - } - } elseif (is_null($this->get($keys))) { - $this->set($keys, $value); - } - } - - /** - * Return all the stored items - * - * @return array - */ - public function all() - { - return $this->items; - } - - /** - * Delete the contents of a given key or keys - * - * @param array|int|string|null $keys - */ - public function clear($keys = null) - { - if (is_null($keys)) { - $this->items = []; - - return; - } - - $keys = (array) $keys; - - foreach ($keys as $key) { - $this->set($key, []); - } - } - - /** - * Delete the given key or keys - * - * @param array|int|string $keys - */ - public function delete($keys) - { - $keys = (array) $keys; - - foreach ($keys as $key) { - if ($this->exists($this->items, $key)) { - unset($this->items[$key]); - - continue; - } - - $items = &$this->items; - $segments = explode($this->delimiter, $key); - $lastSegment = array_pop($segments); - - foreach ($segments as $segment) { - if (!isset($items[$segment]) || !is_array($items[$segment])) { - continue 2; - } - - $items = &$items[$segment]; - } - - unset($items[$lastSegment]); - } - } - - /** - * Checks if the given key exists in the provided array. - * - * @param array $array Array to validate - * @param int|string $key The key to look for - * - * @return bool - */ - protected function exists($array, $key) - { - return array_key_exists($key, $array); - } - - /** - * Flatten an array with the given character as a key delimiter - * - * @param string $delimiter - * @param array|null $items - * @param string $prepend - * @return array - */ - public function flatten($delimiter = '.', $items = null, $prepend = '') - { - $flatten = []; - - if (is_null($items)) { - $items = $this->items; - } - - if (!func_num_args()) { - $delimiter = $this->delimiter; - } - - foreach ($items as $key => $value) { - if (is_array($value) && !empty($value)) { - $flatten = array_merge( - $flatten, - $this->flatten($delimiter, $value, $prepend.$key.$delimiter) - ); - } else { - $flatten[$prepend.$key] = $value; - } - } - - return $flatten; - } - - /** - * Return the value of a given key - * - * @param int|string|null $key - * @param mixed $default - * @return mixed - */ - public function get($key = null, $default = null) - { - if (is_null($key)) { - return $this->items; - } - - if ($this->exists($this->items, $key)) { - return $this->items[$key]; - } - - if (strpos($key, $this->delimiter) === false) { - return $default; - } - - $items = $this->items; - - foreach (explode($this->delimiter, $key) as $segment) { - if (!is_array($items) || !$this->exists($items, $segment)) { - return $default; - } - - $items = &$items[$segment]; - } - - return $items; - } - - /** - * Return the given items as an array - * - * @param mixed $items - * @return array - */ - protected function getArrayItems($items) - { - if (is_array($items)) { - return $items; - } elseif ($items instanceof self) { - return $items->all(); - } - - return (array) $items; - } - - /** - * Check if a given key or keys exists - * - * @param array|int|string $keys - * @return bool - */ - public function has($keys) - { - $keys = (array) $keys; - - if (!$this->items || $keys === []) { - return false; - } - - foreach ($keys as $key) { - $items = $this->items; - - if ($this->exists($items, $key)) { - continue; - } - - foreach (explode($this->delimiter, $key) as $segment) { - if (!is_array($items) || !$this->exists($items, $segment)) { - return false; - } - - $items = $items[$segment]; - } - } - - return true; - } - - /** - * Check if a given key or keys are empty - * - * @param array|int|string|null $keys - * @return bool - */ - public function isEmpty($keys = null) - { - if (is_null($keys)) { - return empty($this->items); - } - - $keys = (array) $keys; - - foreach ($keys as $key) { - if (!empty($this->get($key))) { - return false; - } - } - - return true; - } - - /** - * Merge a given array or a Dot object with the given key - * or with the whole Dot object - * - * @param array|string|self $key - * @param array|self $value - */ - public function merge($key, $value = []) - { - if (is_array($key)) { - $this->items = array_merge($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = array_merge($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = array_merge($this->items, $key->all()); - } - } - - /** - * Recursively merge a given array or a Dot object with the given key - * or with the whole Dot object. - * - * Duplicate keys are converted to arrays. - * - * @param array|string|self $key - * @param array|self $value - */ - public function mergeRecursive($key, $value = []) - { - if (is_array($key)) { - $this->items = array_merge_recursive($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = array_merge_recursive($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = array_merge_recursive($this->items, $key->all()); - } - } - - /** - * Recursively merge a given array or a Dot object with the given key - * or with the whole Dot object. - * - * Instead of converting duplicate keys to arrays, the value from - * given array will replace the value in Dot object. - * - * @param array|string|self $key - * @param array|self $value - */ - public function mergeRecursiveDistinct($key, $value = []) - { - if (is_array($key)) { - $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = $this->arrayMergeRecursiveDistinct($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key->all()); - } - } - - /** - * Merges two arrays recursively. In contrast to array_merge_recursive, - * duplicate keys are not converted to arrays but rather overwrite the - * value in the first array with the duplicate value in the second array. - * - * @param array $array1 Initial array to merge - * @param array $array2 Array to recursively merge - * @return array - */ - protected function arrayMergeRecursiveDistinct(array $array1, array $array2) - { - $merged = &$array1; - - foreach ($array2 as $key => $value) { - if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { - $merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value); - } else { - $merged[$key] = $value; - } - } - - return $merged; - } - - /** - * Return the value of a given key and - * delete the key - * - * @param int|string|null $key - * @param mixed $default - * @return mixed - */ - public function pull($key = null, $default = null) - { - if (is_null($key)) { - $value = $this->all(); - $this->clear(); - - return $value; - } - - $value = $this->get($key, $default); - $this->delete($key); - - return $value; - } - - /** - * Push a given value to the end of the array - * in a given key - * - * @param mixed $key - * @param mixed $value - */ - public function push($key, $value = null) - { - if (is_null($value)) { - $this->items[] = $key; - - return; - } - - $items = $this->get($key); - - if (is_array($items) || is_null($items)) { - $items[] = $value; - $this->set($key, $items); - } - } - - /** - * Replace all values or values within the given key - * with an array or Dot object - * - * @param array|string|self $key - * @param array|self $value - */ - public function replace($key, $value = []) - { - if (is_array($key)) { - $this->items = array_replace($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = array_replace($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = array_replace($this->items, $key->all()); - } - } - - /** - * Set a given key / value pair or pairs - * - * @param array|int|string $keys - * @param mixed $value - */ - public function set($keys, $value = null) - { - if (is_array($keys)) { - foreach ($keys as $key => $value) { - $this->set($key, $value); - } - - return; - } - - $items = &$this->items; - - foreach (explode($this->delimiter, $keys) as $key) { - if (!isset($items[$key]) || !is_array($items[$key])) { - $items[$key] = []; - } - - $items = &$items[$key]; - } - - $items = $value; - } - - /** - * Replace all items with a given array - * - * @param mixed $items - */ - public function setArray($items) - { - $this->items = $this->getArrayItems($items); - } - - /** - * Replace all items with a given array as a reference - * - * @param array $items - */ - public function setReference(array &$items) - { - $this->items = &$items; - } - - /** - * Return the value of a given key or all the values as JSON - * - * @param mixed $key - * @param int $options - * @return string - */ - public function toJson($key = null, $options = 0) - { - if (is_string($key)) { - return json_encode($this->get($key), $options); - } - - $options = $key === null ? 0 : $key; - - return json_encode($this->items, $options); - } - - /* - * -------------------------------------------------------------- - * ArrayAccess interface - * -------------------------------------------------------------- - */ - - /** - * Check if a given key exists - * - * @param int|string $key - * @return bool - */ - #[\ReturnTypeWillChange] - public function offsetExists($key) - { - return $this->has($key); - } - - /** - * Return the value of a given key - * - * @param int|string $key - * @return mixed - */ - #[\ReturnTypeWillChange] - public function offsetGet($key) - { - return $this->get($key); - } - - /** - * Set a given value to the given key - * - * @param int|string|null $key - * @param mixed $value - */ - #[\ReturnTypeWillChange] - public function offsetSet($key, $value) - { - if (is_null($key)) { - $this->items[] = $value; - - return; - } - - $this->set($key, $value); - } - - /** - * Delete the given key - * - * @param int|string $key - */ - #[\ReturnTypeWillChange] - public function offsetUnset($key) - { - $this->delete($key); - } - - /* - * -------------------------------------------------------------- - * Countable interface - * -------------------------------------------------------------- - */ - - /** - * Return the number of items in a given key - * - * @param int|string|null $key - * @return int - */ - #[\ReturnTypeWillChange] - public function count($key = null) - { - return count($this->get($key)); - } - - /* - * -------------------------------------------------------------- - * IteratorAggregate interface - * -------------------------------------------------------------- - */ - - /** - * Get an iterator for the stored items - * - * @return \ArrayIterator - */ - #[\ReturnTypeWillChange] - public function getIterator() - { - return new ArrayIterator($this->items); - } - - /* - * -------------------------------------------------------------- - * JsonSerializable interface - * -------------------------------------------------------------- - */ - - /** - * Return items for JSON serialization - * - * @return array - */ - #[\ReturnTypeWillChange] - public function jsonSerialize() - { - return $this->items; - } -} diff --git a/vendor/adbario/php-dot-notation/src/helpers.php b/vendor/adbario/php-dot-notation/src/helpers.php deleted file mode 100644 index bebb9527..00000000 --- a/vendor/adbario/php-dot-notation/src/helpers.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @link https://github.com/adbario/php-dot-notation - * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License) - */ - -use Adbar\Dot; - -if (! function_exists('dot')) { - /** - * Create a new Dot object with the given items and optional delimiter - * - * @param mixed $items - * @param string $delimiter - * @return \Adbar\Dot - */ - function dot($items, $delimiter = '.') - { - return new Dot($items, $delimiter); - } -} diff --git a/vendor/alibabacloud/tea-fileform/.gitignore b/vendor/alibabacloud/tea-fileform/.gitignore deleted file mode 100644 index 84837df3..00000000 --- a/vendor/alibabacloud/tea-fileform/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -composer.phar -/vendor/ - -# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control -# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file -composer.lock - -.idea -.DS_Store - -cache/ -*.cache diff --git a/vendor/alibabacloud/tea-fileform/.php_cs.dist b/vendor/alibabacloud/tea-fileform/.php_cs.dist deleted file mode 100644 index 8617ec2f..00000000 --- a/vendor/alibabacloud/tea-fileform/.php_cs.dist +++ /dev/null @@ -1,65 +0,0 @@ -setRiskyAllowed(true) - ->setIndent(' ') - ->setRules([ - '@PSR2' => true, - '@PhpCsFixer' => true, - '@Symfony:risky' => true, - 'concat_space' => ['spacing' => 'one'], - 'array_syntax' => ['syntax' => 'short'], - 'array_indentation' => true, - 'combine_consecutive_unsets' => true, - 'method_separation' => true, - 'single_quote' => true, - 'declare_equal_normalize' => true, - 'function_typehint_space' => true, - 'hash_to_slash_comment' => true, - 'include' => true, - 'lowercase_cast' => true, - 'no_multiline_whitespace_before_semicolons' => true, - 'no_leading_import_slash' => true, - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_spaces_around_offset' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unused_imports' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'object_operator_without_whitespace' => true, - 'single_blank_line_before_namespace' => true, - 'single_class_element_per_statement' => true, - 'space_after_semicolon' => true, - 'standardize_not_equals' => true, - 'ternary_operator_spaces' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'whitespace_after_comma_in_array' => true, - 'no_extra_consecutive_blank_lines' => [ - 'curly_brace_block', - 'extra', - 'parenthesis_brace_block', - 'square_brace_block', - 'throw', - 'use', - ], - 'binary_operator_spaces' => [ - 'align_double_arrow' => true, - 'align_equals' => true, - ], - 'braces' => [ - 'allow_single_line_closure' => true, - ], - ]) - ->setFinder( - PhpCsFixer\Finder::create() - ->exclude('vendor') - ->exclude('tests') - ->in(__DIR__) - ); diff --git a/vendor/alibabacloud/tea-fileform/README-CN.md b/vendor/alibabacloud/tea-fileform/README-CN.md deleted file mode 100644 index 8d252382..00000000 --- a/vendor/alibabacloud/tea-fileform/README-CN.md +++ /dev/null @@ -1,31 +0,0 @@ -English | [简体中文](README-CN.md) - -![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg) - -## Alibaba Cloud Tea File Library for PHP - -## Installation - -### Composer - -```bash -composer require alibabacloud/tea-fileform -``` - -## Issues - -[Opening an Issue](https://github.com/aliyun/tea-fileform/issues/new), Issues not conforming to the guidelines may be closed immediately. - -## Changelog - -Detailed changes for each release are documented in the [release notes](./ChangeLog.txt). - -## References - -* [Latest Release](https://github.com/aliyun/tea-fileform) - -## License - -[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) - -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. diff --git a/vendor/alibabacloud/tea-fileform/README.md b/vendor/alibabacloud/tea-fileform/README.md deleted file mode 100644 index 9917f3c0..00000000 --- a/vendor/alibabacloud/tea-fileform/README.md +++ /dev/null @@ -1,31 +0,0 @@ -[English](README.md) | 简体中文 - -![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg) - -## Alibaba Cloud Tea File Library for PHP - -## 安装 - -### Composer - -```bash -composer require alibabacloud/tea-fileform -``` - -## 问题 - -[提交 Issue](https://github.com/aliyun/tea-fileform/issues/new),不符合指南的问题可能会立即关闭。 - -## 发行说明 - -每个版本的详细更改记录在[发行说明](./ChangeLog.txt)中。 - -## 相关 - -* [最新源码](https://github.com/aliyun/tea-fileform) - -## 许可证 - -[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) - -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. diff --git a/vendor/alibabacloud/tea-fileform/composer.json b/vendor/alibabacloud/tea-fileform/composer.json deleted file mode 100644 index 151fe7b7..00000000 --- a/vendor/alibabacloud/tea-fileform/composer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "alibabacloud/tea-fileform", - "description": "Alibaba Cloud Tea File Library for PHP", - "type": "library", - "license": "Apache-2.0", - "authors": [ - { - "name": "Alibaba Cloud SDK", - "email": "sdk-team@alibabacloud.com" - } - ], - "require": { - "php": ">5.5", - "alibabacloud/tea": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.3" - }, - "autoload": { - "psr-4": { - "AlibabaCloud\\Tea\\FileForm\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "AlibabaCloud\\Tea\\FileForm\\Tests\\": "tests" - } - }, - "scripts": { - "fixer": "php-cs-fixer fix ./", - "test": [ - "@clearCache", - "phpunit --colors=always" - ], - "clearCache": "rm -rf cache/*" - }, - "config": { - "sort-packages": true, - "preferred-install": "dist", - "optimize-autoloader": true - }, - "prefer-stable": true, - "minimum-stability": "dev" -} diff --git a/vendor/alibabacloud/tea-fileform/phpunit.xml b/vendor/alibabacloud/tea-fileform/phpunit.xml deleted file mode 100644 index 8306a799..00000000 --- a/vendor/alibabacloud/tea-fileform/phpunit.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - tests - - - ./tests/Unit - - - - - - integration - - - - - - - - - - - - ./src - - - diff --git a/vendor/alibabacloud/tea-fileform/src/FileForm.php b/vendor/alibabacloud/tea-fileform/src/FileForm.php deleted file mode 100644 index ee44cbb5..00000000 --- a/vendor/alibabacloud/tea-fileform/src/FileForm.php +++ /dev/null @@ -1,16 +0,0 @@ -_required = [ - 'filename' => true, - 'contentType' => true, - 'content' => true, - ]; - parent::__construct($config); - } -} diff --git a/vendor/alibabacloud/tea-fileform/src/FileFormStream.php b/vendor/alibabacloud/tea-fileform/src/FileFormStream.php deleted file mode 100644 index a2cc2462..00000000 --- a/vendor/alibabacloud/tea-fileform/src/FileFormStream.php +++ /dev/null @@ -1,321 +0,0 @@ -stream = fopen('php://memory', 'a+'); - $this->form = $map; - $this->boundary = $boundary; - $this->keys = array_keys($map); - do { - $read = $this->readForm(1024); - } while (null !== $read); - $meta = stream_get_meta_data($this->stream); - $this->seekable = $meta['seekable']; - $this->uri = $this->getMetadata('uri'); - $this->seek(0); - $this->seek(0); - } - - /** - * Closes the stream when the destructed. - */ - public function __destruct() - { - $this->close(); - } - - public function __toString() - { - try { - $this->seek(0); - - return (string) stream_get_contents($this->stream); - } catch (\Exception $e) { - return ''; - } - } - - /** - * @param int $length - * - * @return false|int|string - */ - public function readForm($length) - { - if ($this->streaming) { - if (null !== $this->currStream) { - // @var string $content - $content = $this->currStream->read($length); - if (false !== $content && '' !== $content) { - fwrite($this->stream, $content); - - return $content; - } - - return $this->next("\r\n"); - } - - return $this->next(); - } - $keysCount = \count($this->keys); - if ($this->index > $keysCount) { - return null; - } - if ($keysCount > 0) { - if ($this->index < $keysCount) { - $this->streaming = true; - - $name = $this->keys[$this->index]; - $field = $this->form[$name]; - if (!empty($field) && $field instanceof FileField) { - if (!empty($field->content)) { - $this->currStream = $field->content; - - $str = '--' . $this->boundary . "\r\n" . - 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $field->filename . "\"\r\n" . - 'Content-Type: ' . $field->contentType . "\r\n\r\n"; - $this->write($str); - - return $str; - } - - return $this->next(); - } - $val = $field; - $str = '--' . $this->boundary . "\r\n" . - 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n" . - $val . "\r\n"; - fwrite($this->stream, $str); - - return $str; - } - if ($this->index == $keysCount) { - return $this->next('--' . $this->boundary . "--\r\n"); - } - - return null; - } - - return null; - } - - public function getContents() - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - $contents = stream_get_contents($this->stream); - - if (false === $contents) { - throw new \RuntimeException('Unable to read stream contents'); - } - - return $contents; - } - - public function close() - { - if (isset($this->stream)) { - if (\is_resource($this->stream)) { - fclose($this->stream); - } - $this->detach(); - } - } - - public function detach() - { - if (!isset($this->stream)) { - return null; - } - - $result = $this->stream; - unset($this->stream); - $this->size = $this->uri = null; - - return $result; - } - - public function getSize() - { - if (null !== $this->size) { - return $this->size; - } - - if (!isset($this->stream)) { - return null; - } - - // Clear the stat cache if the stream has a URI - if ($this->uri) { - clearstatcache(true, $this->uri); - } - - $stats = fstat($this->stream); - if (isset($stats['size'])) { - $this->size = $stats['size']; - - return $this->size; - } - - return null; - } - - public function isReadable() - { - return $this->readable; - } - - public function isWritable() - { - return $this->writable; - } - - public function isSeekable() - { - return $this->seekable; - } - - public function eof() - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - return feof($this->stream); - } - - public function tell() - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - $result = ftell($this->stream); - - if (false === $result) { - throw new \RuntimeException('Unable to determine stream position'); - } - - return $result; - } - - public function rewind() - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET) - { - $whence = (int) $whence; - - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->seekable) { - throw new \RuntimeException('Stream is not seekable'); - } - if (-1 === fseek($this->stream, $offset, $whence)) { - throw new \RuntimeException('Unable to seek to stream position ' . $offset . ' with whence ' . var_export($whence, true)); - } - } - - public function read($length) - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->readable) { - throw new \RuntimeException('Cannot read from non-readable stream'); - } - if ($length < 0) { - throw new \RuntimeException('Length parameter cannot be negative'); - } - - if (0 === $length) { - return ''; - } - - $string = fread($this->stream, $length); - if (false === $string) { - throw new \RuntimeException('Unable to read from stream'); - } - - return $string; - } - - public function write($string) - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->writable) { - throw new \RuntimeException('Cannot write to a non-writable stream'); - } - - // We can't know the size after writing anything - $this->size = null; - $result = fwrite($this->stream, $string); - - if (false === $result) { - throw new \RuntimeException('Unable to write to stream'); - } - - return $result; - } - - public function getMetadata($key = null) - { - if (!isset($this->stream)) { - return $key ? null : []; - } - - $meta = stream_get_meta_data($this->stream); - - return isset($meta[$key]) ? $meta[$key] : null; - } - - private function next($endStr = '') - { - $this->streaming = false; - ++$this->index; - $this->write($endStr); - $this->currStream = null; - - return $endStr; - } -} diff --git a/vendor/alibabacloud/tea-fileform/tests/FileFormTest.php b/vendor/alibabacloud/tea-fileform/tests/FileFormTest.php deleted file mode 100644 index 67d24e8c..00000000 --- a/vendor/alibabacloud/tea-fileform/tests/FileFormTest.php +++ /dev/null @@ -1,81 +0,0 @@ -assertTrue($stream instanceof FileFormStream); - $stream->write($boundary); - $this->assertTrue(\strlen($boundary) === $stream->getSize()); - } - - public function testSet() - { - $fileField = new FileField([ - 'filename' => 'fake filename', - 'contentType' => 'content type', - 'content' => null, - ]); - - $this->assertEquals('fake filename', $fileField->filename); - $this->assertEquals('content type', $fileField->contentType); - } - - public function testRead() - { - $fileField = new FileField(); - $fileField->filename = 'haveContent'; - $fileField->contentType = 'contentType'; - $fileField->content = new Stream(fopen('data://text/plain;base64,' . base64_encode('This is file test. This sentence must be long'), 'r')); - - $fileFieldNoContent = new FileField(); - $fileFieldNoContent->filename = 'noContent'; - $fileFieldNoContent->contentType = 'contentType'; - $fileFieldNoContent->content = null; - - $map = [ - 'key' => 'value', - 'testKey' => 'testValue', - 'haveFile' => $fileField, - 'noFile' => $fileFieldNoContent, - ]; - - $stream = FileForm::toFileForm($map, 'testBoundary'); - - $result = $stream->getContents(); - $target = "--testBoundary\r\nContent-Disposition: form-data; name=\"key\"\r\n\r\nvalue\r\n--testBoundary\r\nContent-Disposition: form-data; name=\"testKey\"\r\n\r\ntestValue\r\n--testBoundary\r\nContent-Disposition: form-data; name=\"haveFile\"; filename=\"haveContent\"\r\nContent-Type: contentType\r\n\r\nThis is file test. This sentence must be long\r\n--testBoundary--\r\n"; - - $this->assertEquals($target, $result); - } - - public function testReadFile() - { - $fileField = new FileField(); - $fileField->filename = 'composer.json'; - $fileField->contentType = 'application/json'; - $fileField->content = new Stream(fopen(__DIR__ . '/../composer.json', 'r')); - $map = [ - 'name' => 'json_file', - 'type' => 'application/json', - 'json_file' => $fileField, - ]; - - $boundary = FileForm::getBoundary(); - $fileStream = FileForm::toFileForm($map, $boundary); - $this->assertTrue(false !== strpos($fileStream->getContents(), 'json_file')); - } -} diff --git a/vendor/alibabacloud/tea-fileform/tests/bootstrap.php b/vendor/alibabacloud/tea-fileform/tests/bootstrap.php deleted file mode 100644 index c62c4e81..00000000 --- a/vendor/alibabacloud/tea-fileform/tests/bootstrap.php +++ /dev/null @@ -1,3 +0,0 @@ -setRiskyAllowed(true) - ->setIndent(' ') - ->setRules([ - '@PSR2' => true, - '@PhpCsFixer' => true, - '@Symfony:risky' => true, - 'concat_space' => ['spacing' => 'one'], - 'array_syntax' => ['syntax' => 'short'], - 'array_indentation' => true, - 'combine_consecutive_unsets' => true, - 'method_separation' => true, - 'single_quote' => true, - 'declare_equal_normalize' => true, - 'function_typehint_space' => true, - 'hash_to_slash_comment' => true, - 'include' => true, - 'lowercase_cast' => true, - 'no_multiline_whitespace_before_semicolons' => true, - 'no_leading_import_slash' => true, - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_spaces_around_offset' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unused_imports' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'object_operator_without_whitespace' => true, - 'single_blank_line_before_namespace' => true, - 'single_class_element_per_statement' => true, - 'space_after_semicolon' => true, - 'standardize_not_equals' => true, - 'ternary_operator_spaces' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'whitespace_after_comma_in_array' => true, - 'no_extra_consecutive_blank_lines' => [ - 'curly_brace_block', - 'extra', - 'parenthesis_brace_block', - 'square_brace_block', - 'throw', - 'use', - ], - 'binary_operator_spaces' => [ - 'align_double_arrow' => true, - 'align_equals' => true, - ], - 'braces' => [ - 'allow_single_line_closure' => true, - ], - ]) - ->setFinder( - PhpCsFixer\Finder::create() - ->exclude('vendor') - ->exclude('tests') - ->in(__DIR__) - ); diff --git a/vendor/alibabacloud/tea/CHANGELOG.md b/vendor/alibabacloud/tea/CHANGELOG.md deleted file mode 100644 index a3b6a533..00000000 --- a/vendor/alibabacloud/tea/CHANGELOG.md +++ /dev/null @@ -1,148 +0,0 @@ -# CHANGELOG - -## 3.1.22 - 2021-05-11 - -- Deprecate `stream_for` method. - -## 3.1.21 - 2021-03-15 - -- Supported set proxy&timeout on request. - -## 3.1.20 - 2020-12-02 - -- Fix the warning when the Tea::merge method received empty arguments. - -## 3.1.19 - 2020-10-09 - -- Fix the error when the code value is a string. - -## 3.1.18 - 2020-09-28 - -- Require Guzzle Version 7.0 - -## 3.1.17 - 2020-09-24 - -- TeaUnableRetryError support get error info. - -## 3.1.16 - 2020-08-31 - -- Fix the Maximum function nesting level error when repeated network requests. - -## 3.1.15 - 2020-07-28 - -- Improved validatePattern method. - -## 3.1.14 - 2020-07-03 - -- Supported set properties of TeaError with `ErrorInfo`. - -## 3.1.13 - 2020-06-09 - -- Reduce dependencies. - -## 3.1.12 - 2020-05-13 - -- Add validate method. -- Supported validate maximun&minimun of property. - -## 3.1.11 - 2020-05-07 - -- Fixed error when class is undefined. - -## 3.1.10 - 2020-05-07 - -- Fixed error when '$item' of array is null - -## 3.1.9 - 2020-04-13 - -- TeaUnableRetryError add $lastException param. - -## 3.1.8 - 2020-04-02 - -- Added some static methods of Model to validate fields of Model. - -## 3.1.7 - 2020-03-27 - -- Improve Tea::isRetryable method. - -## 3.1.6 - 2020-03-25 - -- Fixed bug when body is StreamInterface. - -## 3.1.5 - 2020-03-25 - -- Improve Model.toMap method. -- Improve Tea.merge method. -- Fixed tests. - -## 3.1.4 - 2020-03-20 - -- Added Tea::merge method. -- Change Tea::isRetryable method. - -## 3.1.3 - 2020-03-20 - -- Model: added toModel method. - -## 3.1.2 - 2020-03-19 - -- Model constructor supported array type parameter. - -## 3.1.1 - 2020-03-18 - -- Fixed bug : set method failed. -- Fixed bug : get empty contents form body. - -## 3.1.0 - 2020-03-13 - -- TeaUnableRetryError add 'lastRequest' property. -- Change Tea.send() method return. -- Fixed Tea. allowRetry() method. - -## 3.0.0 - 2020-02-14 -- Rename package name. - -## 2.0.3 - 2020-02-14 -- Improved Exception. - -## 2.0.2 - 2019-09-11 -- Supported `String`. - -## 2.0.1 - 2019-08-15 -- Supported `IteratorAggregate`. - -## 2.0.0 - 2019-08-14 -- Design `Request` as a standard `PsrRequest`. - -## 1.0.10 - 2019-08-12 -- Added `__toString` for `Response`. - -## 1.0.9 - 2019-08-01 -- Updated `Middleware`. - -## 1.0.8 - 2019-07-29 -- Supported `TransferStats`. - -## 1.0.7 - 2019-07-27 -- Improved request. - -## 1.0.6 - 2019-07-23 -- Trim key for parameter. - -## 1.0.5 - 2019-07-23 -- Supported default protocol. - -## 1.0.4 - 2019-07-22 -- Added `toArray()`. - -## 1.0.3 - 2019-05-02 -- Improved `Request`. - -## 1.0.2 - 2019-05-02 -- Added getHeader/getHeaders. - -## 1.0.1 - 2019-04-02 -- Improved design. - -## 1.0.0 - 2019-05-02 -- Initial release of the AlibabaCloud Tea Version 1.0.0 on Packagist See for more information. diff --git a/vendor/alibabacloud/tea/LICENSE.md b/vendor/alibabacloud/tea/LICENSE.md deleted file mode 100644 index ec13fccd..00000000 --- a/vendor/alibabacloud/tea/LICENSE.md +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/vendor/alibabacloud/tea/README.md b/vendor/alibabacloud/tea/README.md deleted file mode 100644 index a8cbe661..00000000 --- a/vendor/alibabacloud/tea/README.md +++ /dev/null @@ -1,16 +0,0 @@ - -## Installation -``` -composer require alibabacloud/tea --optimize-autoloader -``` -> Some users may not be able to install due to network problems, you can try to switch the Composer mirror. - - -## Changelog -Detailed changes for each release are documented in the [release notes](CHANGELOG.md). - - -## License -[Apache-2.0](LICENSE.md) - -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. diff --git a/vendor/alibabacloud/tea/composer.json b/vendor/alibabacloud/tea/composer.json deleted file mode 100644 index 163689ec..00000000 --- a/vendor/alibabacloud/tea/composer.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "name": "alibabacloud/tea", - "homepage": "https://www.alibabacloud.com/", - "description": "Client of Tea for PHP", - "keywords": [ - "tea", - "client", - "alibabacloud", - "cloud" - ], - "type": "library", - "license": "Apache-2.0", - "support": { - "source": "https://github.com/aliyun/tea-php", - "issues": "https://github.com/aliyun/tea-php/issues" - }, - "authors": [ - { - "name": "Alibaba Cloud SDK", - "email": "sdk-team@alibabacloud.com", - "homepage": "http://www.alibabacloud.com" - } - ], - "require": { - "php": ">=5.5", - "ext-curl": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "adbario/php-dot-notation": "^2.4" - }, - "require-dev": { - "symfony/dotenv": "^3.4", - "phpunit/phpunit": "*", - "symfony/var-dumper": "^3.4" - }, - "suggest": { - "ext-sockets": "To use client-side monitoring" - }, - "autoload": { - "psr-4": { - "AlibabaCloud\\Tea\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "AlibabaCloud\\Tea\\Tests\\": "tests" - } - }, - "config": { - "sort-packages": true, - "preferred-install": "dist", - "optimize-autoloader": true - }, - "prefer-stable": true, - "minimum-stability": "dev", - "scripts": { - "cs": "phpcs --standard=PSR2 -n ./", - "cbf": "phpcbf --standard=PSR2 -n ./", - "fixer": "php-cs-fixer fix ./", - "test": [ - "@clearCache", - "phpunit --colors=always" - ], - "unit": [ - "@clearCache", - "phpunit --testsuite=Unit --colors=always" - ], - "feature": [ - "@clearCache", - "phpunit --testsuite=Feature --colors=always" - ], - "clearCache": "rm -rf cache/*", - "coverage": "open cache/coverage/index.html" - } -} diff --git a/vendor/alibabacloud/tea/src/Exception/TeaError.php b/vendor/alibabacloud/tea/src/Exception/TeaError.php deleted file mode 100644 index f4ef0d9a..00000000 --- a/vendor/alibabacloud/tea/src/Exception/TeaError.php +++ /dev/null @@ -1,53 +0,0 @@ -errorInfo = $errorInfo; - if (!empty($errorInfo)) { - $properties = ['name', 'message', 'code', 'data', 'description', 'accessDeniedDetail']; - foreach ($properties as $property) { - if (isset($errorInfo[$property])) { - $this->{$property} = $errorInfo[$property]; - if ($property === 'data' && isset($errorInfo['data']['statusCode'])) { - $this->statusCode = $errorInfo['data']['statusCode']; - } - } - } - } - } - - /** - * @return array - */ - public function getErrorInfo() - { - return $this->errorInfo; - } -} diff --git a/vendor/alibabacloud/tea/src/Exception/TeaRetryError.php b/vendor/alibabacloud/tea/src/Exception/TeaRetryError.php deleted file mode 100644 index 30aa7f8e..00000000 --- a/vendor/alibabacloud/tea/src/Exception/TeaRetryError.php +++ /dev/null @@ -1,21 +0,0 @@ -getErrorInfo(); - } - parent::__construct($error_info, $lastException->getMessage(), $lastException->getCode(), $lastException); - $this->lastRequest = $lastRequest; - $this->lastException = $lastException; - } - - public function getLastRequest() - { - return $this->lastRequest; - } - - public function getLastException() - { - return $this->lastException; - } -} diff --git a/vendor/alibabacloud/tea/src/Helper.php b/vendor/alibabacloud/tea/src/Helper.php deleted file mode 100644 index f1c0fd4f..00000000 --- a/vendor/alibabacloud/tea/src/Helper.php +++ /dev/null @@ -1,112 +0,0 @@ - $ord) { - if ($k !== $i) { - return false; - } - if (!\is_int($ord)) { - return false; - } - if ($ord < 0 || $ord > 255) { - return false; - } - ++$i; - } - - return true; - } - - /** - * Convert a bytes to string(utf8). - * - * @param array $bytes - * - * @return string the return string - */ - public static function toString($bytes) - { - $str = ''; - foreach ($bytes as $ch) { - $str .= \chr($ch); - } - - return $str; - } - - /** - * @return array - */ - public static function merge(array $arrays) - { - $result = []; - foreach ($arrays as $array) { - foreach ($array as $key => $value) { - if (\is_int($key)) { - $result[] = $value; - - continue; - } - - if (isset($result[$key]) && \is_array($result[$key])) { - $result[$key] = self::merge( - [$result[$key], $value] - ); - - continue; - } - - $result[$key] = $value; - } - } - - return $result; - } -} diff --git a/vendor/alibabacloud/tea/src/Model.php b/vendor/alibabacloud/tea/src/Model.php deleted file mode 100644 index 538b55c5..00000000 --- a/vendor/alibabacloud/tea/src/Model.php +++ /dev/null @@ -1,114 +0,0 @@ - $v) { - $this->{$k} = $v; - } - } - } - - public function getName($name = null) - { - if (null === $name) { - return $this->_name; - } - - return isset($this->_name[$name]) ? $this->_name[$name] : $name; - } - - public function toMap() - { - $map = get_object_vars($this); - foreach ($map as $k => $m) { - if (0 === strpos($k, '_')) { - unset($map[$k]); - } - } - $res = []; - foreach ($map as $k => $v) { - $name = isset($this->_name[$k]) ? $this->_name[$k] : $k; - $res[$name] = $v; - } - - return $res; - } - - public function validate() - { - $vars = get_object_vars($this); - foreach ($vars as $k => $v) { - if (isset($this->_required[$k]) && $this->_required[$k] && empty($v)) { - throw new \InvalidArgumentException("{$k} is required."); - } - } - } - - public static function validateRequired($fieldName, $field, $val = null) - { - if (true === $val && null === $field) { - throw new \InvalidArgumentException($fieldName . ' is required'); - } - } - - public static function validateMaxLength($fieldName, $field, $val = null) - { - if (null !== $field && \strlen($field) > (int) $val) { - throw new \InvalidArgumentException($fieldName . ' is exceed max-length: ' . $val); - } - } - - public static function validateMinLength($fieldName, $field, $val = null) - { - if (null !== $field && \strlen($field) < (int) $val) { - throw new \InvalidArgumentException($fieldName . ' is less than min-length: ' . $val); - } - } - - public static function validatePattern($fieldName, $field, $regex = '') - { - if (null !== $field && '' !== $field && !preg_match("/^{$regex}$/", $field)) { - throw new \InvalidArgumentException($fieldName . ' is not match ' . $regex); - } - } - - public static function validateMaximum($fieldName, $field, $val) - { - if (null !== $field && $field > $val) { - throw new \InvalidArgumentException($fieldName . ' cannot be greater than ' . $val); - } - } - - public static function validateMinimum($fieldName, $field, $val) - { - if (null !== $field && $field < $val) { - throw new \InvalidArgumentException($fieldName . ' cannot be less than ' . $val); - } - } - - /** - * @param array $map - * @param Model $model - * - * @return mixed - */ - public static function toModel($map, $model) - { - $names = $model->getName(); - $names = array_flip($names); - foreach ($map as $key => $value) { - $name = isset($names[$key]) ? $names[$key] : $key; - $model->{$name} = $value; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/tea/src/Parameter.php b/vendor/alibabacloud/tea/src/Parameter.php deleted file mode 100644 index 324a95d5..00000000 --- a/vendor/alibabacloud/tea/src/Parameter.php +++ /dev/null @@ -1,50 +0,0 @@ -toArray()); - } - - /** - * @return array - */ - public function getRealParameters() - { - $array = []; - $obj = new ReflectionObject($this); - $properties = $obj->getProperties(); - - foreach ($properties as $property) { - $docComment = $property->getDocComment(); - $key = trim(Helper::findFromString($docComment, '@real', "\n")); - $value = $property->getValue($this); - $array[$key] = $value; - } - - return $array; - } - - /** - * @return array - */ - public function toArray() - { - return $this->getRealParameters(); - } -} diff --git a/vendor/alibabacloud/tea/src/Request.php b/vendor/alibabacloud/tea/src/Request.php deleted file mode 100644 index db49142e..00000000 --- a/vendor/alibabacloud/tea/src/Request.php +++ /dev/null @@ -1,123 +0,0 @@ -method = $method; - } - - /** - * These fields are compatible if you define other fields. - * Mainly for compatibility situations where the code generator cannot generate set properties. - * - * @return PsrRequest - */ - public function getPsrRequest() - { - $this->assertQuery($this->query); - - $request = clone $this; - - $uri = $request->getUri(); - if ($this->query) { - $uri = $uri->withQuery(http_build_query($this->query)); - } - - if ($this->port) { - $uri = $uri->withPort($this->port); - } - - if ($this->protocol) { - $uri = $uri->withScheme($this->protocol); - } - - if ($this->pathname) { - $uri = $uri->withPath($this->pathname); - } - - if (isset($this->headers['host'])) { - $uri = $uri->withHost($this->headers['host']); - } - - $request = $request->withUri($uri); - $request = $request->withMethod($this->method); - - if ('' !== $this->body && null !== $this->body) { - if ($this->body instanceof StreamInterface) { - $request = $request->withBody($this->body); - } else { - $body = $this->body; - if (Helper::isBytes($this->body)) { - $body = Helper::toString($this->body); - } - if (\function_exists('\GuzzleHttp\Psr7\stream_for')) { - // @deprecated stream_for will be removed in guzzlehttp/psr7:2.0 - $request = $request->withBody(\GuzzleHttp\Psr7\stream_for($body)); - } else { - $request = $request->withBody(\GuzzleHttp\Psr7\Utils::streamFor($body)); - } - } - } - - if ($this->headers) { - foreach ($this->headers as $key => $value) { - $request = $request->withHeader($key, $value); - } - } - - return $request; - } - - /** - * @param array $query - */ - private function assertQuery($query) - { - if (!\is_array($query) && $query !== null) { - throw new InvalidArgumentException('Query must be array.'); - } - } -} diff --git a/vendor/alibabacloud/tea/src/Response.php b/vendor/alibabacloud/tea/src/Response.php deleted file mode 100644 index cb446e74..00000000 --- a/vendor/alibabacloud/tea/src/Response.php +++ /dev/null @@ -1,372 +0,0 @@ -getStatusCode(), - $response->getHeaders(), - $response->getBody(), - $response->getProtocolVersion(), - $response->getReasonPhrase() - ); - $this->headers = $response->getHeaders(); - $this->body = $response->getBody(); - $this->statusCode = $response->getStatusCode(); - if ($this->body->isSeekable()) { - $this->body->seek(0); - } - - if (Helper::isJson((string) $this->getBody())) { - $this->dot = new Dot($this->toArray()); - } else { - $this->dot = new Dot(); - } - } - - /** - * @return string - */ - public function __toString() - { - return (string) $this->getBody(); - } - - /** - * @param string $name - * - * @return null|mixed - */ - public function __get($name) - { - $data = $this->dot->all(); - if (!isset($data[$name])) { - return null; - } - - return json_decode(json_encode($data))->{$name}; - } - - /** - * @param string $name - * @param mixed $value - */ - public function __set($name, $value) - { - $this->dot->set($name, $value); - } - - /** - * @param string $name - * - * @return bool - */ - public function __isset($name) - { - return $this->dot->has($name); - } - - /** - * @param $offset - */ - public function __unset($offset) - { - $this->dot->delete($offset); - } - - /** - * @return array - */ - public function toArray() - { - return \GuzzleHttp\json_decode((string) $this->getBody(), true); - } - - /** - * @param array|int|string $keys - * @param mixed $value - */ - public function add($keys, $value = null) - { - return $this->dot->add($keys, $value); - } - - /** - * @return array - */ - public function all() - { - return $this->dot->all(); - } - - /** - * @param null|array|int|string $keys - */ - public function clear($keys = null) - { - return $this->dot->clear($keys); - } - - /** - * @param array|int|string $keys - */ - public function delete($keys) - { - return $this->dot->delete($keys); - } - - /** - * @param string $delimiter - * @param null|array $items - * @param string $prepend - * - * @return array - */ - public function flatten($delimiter = '.', $items = null, $prepend = '') - { - return $this->dot->flatten($delimiter, $items, $prepend); - } - - /** - * @param null|int|string $key - * @param mixed $default - * - * @return mixed - */ - public function get($key = null, $default = null) - { - return $this->dot->get($key, $default); - } - - /** - * @param array|int|string $keys - * - * @return bool - */ - public function has($keys) - { - return $this->dot->has($keys); - } - - /** - * @param null|array|int|string $keys - * - * @return bool - */ - public function isEmpty($keys = null) - { - return $this->dot->isEmpty($keys); - } - - /** - * @param array|self|string $key - * @param array|self $value - */ - public function merge($key, $value = []) - { - return $this->dot->merge($key, $value); - } - - /** - * @param array|self|string $key - * @param array|self $value - */ - public function mergeRecursive($key, $value = []) - { - return $this->dot->mergeRecursive($key, $value); - } - - /** - * @param array|self|string $key - * @param array|self $value - */ - public function mergeRecursiveDistinct($key, $value = []) - { - return $this->dot->mergeRecursiveDistinct($key, $value); - } - - /** - * @param null|int|string $key - * @param mixed $default - * - * @return mixed - */ - public function pull($key = null, $default = null) - { - return $this->dot->pull($key, $default); - } - - /** - * @param null|int|string $key - * @param mixed $value - * - * @return mixed - */ - public function push($key = null, $value = null) - { - return $this->dot->push($key, $value); - } - - /** - * Replace all values or values within the given key - * with an array or Dot object. - * - * @param array|self|string $key - * @param array|self $value - */ - public function replace($key, $value = []) - { - return $this->dot->replace($key, $value); - } - - /** - * Set a given key / value pair or pairs. - * - * @param array|int|string $keys - * @param mixed $value - */ - public function set($keys, $value = null) - { - return $this->dot->set($keys, $value); - } - - /** - * Replace all items with a given array. - * - * @param mixed $items - */ - public function setArray($items) - { - return $this->dot->setArray($items); - } - - /** - * Replace all items with a given array as a reference. - */ - public function setReference(array &$items) - { - return $this->dot->setReference($items); - } - - /** - * Return the value of a given key or all the values as JSON. - * - * @param mixed $key - * @param int $options - * - * @return string - */ - public function toJson($key = null, $options = 0) - { - return $this->dot->toJson($key, $options); - } - - /** - * Retrieve an external iterator. - */ - #[\ReturnTypeWillChange] - public function getIterator() - { - return $this->dot->getIterator(); - } - - /** - * Whether a offset exists. - * - * @param $offset - * - * @return bool - */ - #[\ReturnTypeWillChange] - public function offsetExists($offset) - { - return $this->dot->offsetExists($offset); - } - - /** - * Offset to retrieve. - * - * @param $offset - * - * @return mixed - */ - #[\ReturnTypeWillChange] - public function offsetGet($offset) - { - return $this->dot->offsetGet($offset); - } - - /** - * Offset to set. - * - * @param $offset - * @param $value - */ - #[\ReturnTypeWillChange] - public function offsetSet($offset, $value) - { - $this->dot->offsetSet($offset, $value); - } - - /** - * Offset to unset. - * - * @param $offset - */ - #[\ReturnTypeWillChange] - public function offsetUnset($offset) - { - $this->dot->offsetUnset($offset); - } - - /** - * Count elements of an object. - * - * @param null $key - * - * @return int - */ - #[\ReturnTypeWillChange] - public function count($key = null) - { - return $this->dot->count($key); - } -} diff --git a/vendor/alibabacloud/tea/src/Tea.php b/vendor/alibabacloud/tea/src/Tea.php deleted file mode 100644 index a138ad9a..00000000 --- a/vendor/alibabacloud/tea/src/Tea.php +++ /dev/null @@ -1,287 +0,0 @@ -getPsrRequest(); - } - - $config = self::resolveConfig($config); - - $res = self::client()->send( - $request, - $config - ); - - return new Response($res); - } - - /** - * @return PromiseInterface - */ - public static function sendAsync(RequestInterface $request, array $config = []) - { - if (method_exists($request, 'getPsrRequest')) { - $request = $request->getPsrRequest(); - } - - $config = self::resolveConfig($config); - - return self::client()->sendAsync( - $request, - $config - ); - } - - /** - * @return Client - */ - public static function client(array $config = []) - { - if (isset(self::$config['handler'])) { - $stack = self::$config['handler']; - } else { - $stack = HandlerStack::create(); - $stack->push(Middleware::mapResponse(static function (ResponseInterface $response) { - return new Response($response); - })); - } - - self::$config['handler'] = $stack; - - if (!isset(self::$config['on_stats'])) { - self::$config['on_stats'] = function (TransferStats $stats) { - Response::$info = $stats->getHandlerStats(); - }; - } - - $new_config = Helper::merge([self::$config, $config]); - - return new Client($new_config); - } - - /** - * @param string $method - * @param string|UriInterface $uri - * @param array $options - * - * @throws GuzzleException - * - * @return ResponseInterface - */ - public static function request($method, $uri, $options = []) - { - return self::client()->request($method, $uri, $options); - } - - /** - * @param string $method - * @param string $uri - * @param array $options - * - * @throws GuzzleException - * - * @return string - */ - public static function string($method, $uri, $options = []) - { - return (string) self::client()->request($method, $uri, $options) - ->getBody(); - } - - /** - * @param string $method - * @param string|UriInterface $uri - * @param array $options - * - * @return PromiseInterface - */ - public static function requestAsync($method, $uri, $options = []) - { - return self::client()->requestAsync($method, $uri, $options); - } - - /** - * @param string|UriInterface $uri - * @param array $options - * - * @throws GuzzleException - * - * @return null|mixed - */ - public static function getHeaders($uri, $options = []) - { - return self::request('HEAD', $uri, $options)->getHeaders(); - } - - /** - * @param string|UriInterface $uri - * @param string $key - * @param null|mixed $default - * - * @throws GuzzleException - * - * @return null|mixed - */ - public static function getHeader($uri, $key, $default = null) - { - $headers = self::getHeaders($uri); - - return isset($headers[$key][0]) ? $headers[$key][0] : $default; - } - - /** - * @param int $retryTimes - * @param float $now - * - * @return bool - */ - public static function allowRetry(array $runtime, $retryTimes, $now) - { - unset($now); - if (!isset($retryTimes) || null === $retryTimes || !\is_numeric($retryTimes)) { - return false; - } - if ($retryTimes > 0 && (empty($runtime) || !isset($runtime['retryable']) || !$runtime['retryable'] || !isset($runtime['maxAttempts']))) { - return false; - } - $maxAttempts = $runtime['maxAttempts']; - $retry = empty($maxAttempts) ? 0 : (int) $maxAttempts; - - return $retry >= $retryTimes; - } - - /** - * @param int $retryTimes - * - * @return int - */ - public static function getBackoffTime(array $runtime, $retryTimes) - { - $backOffTime = 0; - $policy = isset($runtime['policy']) ? $runtime['policy'] : ''; - - if (empty($policy) || 'no' == $policy) { - return $backOffTime; - } - - $period = isset($runtime['period']) ? $runtime['period'] : ''; - if (null !== $period && '' !== $period) { - $backOffTime = (int) $period; - if ($backOffTime <= 0) { - return $retryTimes; - } - } - - return $backOffTime; - } - - public static function sleep($time) - { - sleep($time); - } - - public static function isRetryable($retry, $retryTimes = 0) - { - if ($retry instanceof TeaError) { - return true; - } - if (\is_array($retry)) { - $max = isset($retry['maxAttempts']) ? (int) ($retry['maxAttempts']) : 3; - - return $retryTimes <= $max; - } - - return false; - } - - /** - * @param mixed|Model[] ...$item - * - * @return mixed - */ - public static function merge(...$item) - { - $tmp = []; - $n = 0; - foreach ($item as $i) { - if (\is_object($i)) { - if ($i instanceof Model) { - $i = $i->toMap(); - } else { - $i = json_decode(json_encode($i), true); - } - } - if (null === $i) { - continue; - } - if (\is_array($i)) { - $tmp[$n++] = $i; - } - } - - if (\count($tmp)) { - return \call_user_func_array('array_merge', $tmp); - } - - return []; - } - - private static function resolveConfig(array $config = []) - { - $options = new Dot(['http_errors' => false]); - if (isset($config['httpProxy']) && !empty($config['httpProxy'])) { - $options->set('proxy.http', $config['httpProxy']); - } - if (isset($config['httpsProxy']) && !empty($config['httpsProxy'])) { - $options->set('proxy.https', $config['httpsProxy']); - } - if (isset($config['noProxy']) && !empty($config['noProxy'])) { - $options->set('proxy.no', $config['noProxy']); - } - if (isset($config['ignoreSSL']) && !empty($config['ignoreSSL'])) { - $options->set('verify',!((bool)$config['ignoreSSL'])); - } - // readTimeout&connectTimeout unit is millisecond - $read_timeout = isset($config['readTimeout']) && !empty($config['readTimeout']) ? (int) $config['readTimeout'] : 0; - $con_timeout = isset($config['connectTimeout']) && !empty($config['connectTimeout']) ? (int) $config['connectTimeout'] : 0; - // timeout unit is second - $options->set('timeout', ($read_timeout + $con_timeout) / 1000); - - return $options->all(); - } -} diff --git a/vendor/alipaysdk/easysdk/.gitattributes b/vendor/alipaysdk/easysdk/.gitattributes deleted file mode 100644 index dd68a15b..00000000 --- a/vendor/alipaysdk/easysdk/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.* linguist-language=java diff --git a/vendor/alipaysdk/easysdk/.gitignore b/vendor/alipaysdk/easysdk/.gitignore deleted file mode 100644 index c92a6be4..00000000 --- a/vendor/alipaysdk/easysdk/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -.DS_Store -node_modules -logs -.libraries.json -libraries - -.idea -*.iml -target -dependency-reduced-pom.xml - -bin -obj -.vs - -publish/alipay-easysdk diff --git a/vendor/alipaysdk/easysdk/APIDoc.md b/vendor/alipaysdk/easysdk/APIDoc.md deleted file mode 100644 index 52da8450..00000000 --- a/vendor/alipaysdk/easysdk/APIDoc.md +++ /dev/null @@ -1,822 +0,0 @@ -# 基础能力 Base -## 用户授权 OAuth -### 获取授权访问令牌 -* API声明 - -getToken(code: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| code | string | 是 | 授权码,用户对应用授权后得到 | - -* 出参说明 - -可前往[alipay.system.oauth.token](https://docs.open.alipay.com/api_9/alipay.system.oauth.token)查看更加详细的参数说明。 - -### 刷新授权访问令牌 -* API声明 - -refreshToken(refreshToken: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| refreshToken | string | 是 | 刷新令牌,上次换取访问令牌时得到,见出参的refresh_token字段 | - -* 出参说明 - -可前往[alipay.system.oauth.token](https://docs.open.alipay.com/api_9/alipay.system.oauth.token)查看更加详细的参数说明。 - ---- - -## 小程序二维码 Qrcode -### 创建小程序二维码 -* API声明 - -create(urlParam: string, queryParam: string, describe: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| urlParam | string | 是 | 小程序中能访问到的页面路径,例如:page/component/component-pages/view/view | -| queryParam | string | 是 | 小程序的启动参数,打开小程序的query ,在小程序 onLaunch的方法中获取 | -| describe | string | 是 | 二维码描述 | - -* 出参说明 - -可前往[alipay.open.app.qrcode.create](https://docs.open.alipay.com/api_5/alipay.open.app.qrcode.create)查看更加详细的参数说明。 - ---- - -## 图片 Image -### 上传图片 -* API声明 - -upload(imageName: string, imageFilePath: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| imageName | string | 是 | 图片名称 | -| imageFilePath | string | 是 | 待上传的本地图片文件路径 | - -* 出参说明 - -可前往[alipay.offline.material.image.upload](https://docs.open.alipay.com/api_3/alipay.offline.material.image.upload)查看更加详细的参数说明。 - ---- - -## 视频 Video -### 上传视频 -* API声明 - -upload(videoName: string, videoFilePath: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| videoName | string | 是 | 视频名称 | -| videoFilePath | string | 是 | 待上传的本地视频文件路径 | - -* 出参说明 - -可前往[alipay.offline.material.image.upload](https://docs.open.alipay.com/api_3/alipay.offline.material.image.upload)查看更加详细的参数说明。 - ---- - -# 营销能力 Marketing -## 生活号 OpenLife -### 创建图文消息内容 -* API声明 - -createImageTextContent(title: string, cover: string, content: string, contentComment: string, ctype: string, benefit: string, extTags: string, loginIds: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| title | string | 是 | 标题 | -| cover | string | 是 | 封面图URL, 尺寸为996*450,最大不超过3M,支持.jpg、.png格式,请先调用上传图片接口获得图片URL | -| content | string | 是 | 消息正文(支持富文本) | -| contentComment | string | 否 | 是否允许评论,T:允许,F:不允许,默认不允许 | -| ctype | string | 否 | 图文类型:填activity表示活动图文,不填默认普通图文 | -| benefit | string | 否 | 活动利益点,图文类型ctype为activity类型时才需要传,最多10个字符 | -| extTags | string | 否 | 关键词列表,英文逗号分隔,最多不超过5个 | -| loginIds | string | 否 | 可预览支付宝账号列表,需要预览时才填写, 英文逗号分隔,最多不超过10个 | - -* 出参说明 - -可前往[alipay.open.public.message.content.create](https://docs.open.alipay.com/api_6/alipay.open.public.message.content.create)查看更加详细的参数说明。 - -### 更新图文消息内容 -* API声明 - -modifyImageTextContent(contentId: string, title: string, cover: string, content: string, couldComment: string, ctype: string, benefit: string, extTags: string, loginIds: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| contentId | string | 是 | 内容ID,通过创建图文内容消息接口返回 | -| title | string | 是 | 标题 | -| cover | string | 是 | 封面图URL, 尺寸为996*450,最大不超过3M,支持.jpg、.png格式,请先调用上传图片接口获得图片URL | -| content | string | 是 | 消息正文(支持富文本) | -| contentComment | string | 否 | 是否允许评论,T:允许,F:不允许,默认不允许 | -| ctype | string | 否 | 图文类型:填activity表示活动图文,不填默认普通图文 | -| benefit | string | 否 | 活动利益点,图文类型ctype为activity类型时才需要传,最多10个字符 | -| extTags | string | 否 | 关键词列表,英文逗号分隔,最多不超过5个 | -| loginIds | string | 否 | 可预览支付宝账号列表,需要预览时才填写, 英文逗号分隔,最多不超过10个 | - -* 出参说明 - -可前往[alipay.open.public.message.content.modify](https://docs.open.alipay.com/api_6/alipay.open.public.message.content.modify)查看更加详细的参数说明。 - -### 群发本文消息 -* API声明 - -sendText(text: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| text | string | 是 | 文本消息内容 | - -* 出参说明 - -可前往[alipay.open.public.message.total.send](https://docs.open.alipay.com/api_6/alipay.open.public.message.total.send)查看更加详细的参数说明。 - -### 群发图文消息 -* API声明 - -sendImageText(articles: [ Article ]) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| articles | Article数组 | 是 | 图文消息内容 | - -Article对象说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| title | string | 否 | 图文消息标题 | -| desc | string | 是 | 图文消息描述 | -| imageUrl | string | 特殊可选 | 图片链接,对于多条图文消息的第一条消息,该字段不能为空,请先调用上传图片接口获得图片URL | -| url | string | 是 | 点击图文消息跳转的链接 | -| actionName | string | 否 | 链接文字 | - -* 出参说明 - -可前往[alipay.open.public.message.total.send](https://docs.open.alipay.com/api_6/alipay.open.public.message.total.send)查看更加详细的参数说明。 - -### 单发模板消息 -* API声明 - -sendSingleMessage(toUserId: string, template: Template) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| toUserId | string | 是 | 消息接收用户的UserId | -| template | Template | 是 | 消息接收用户的UserId | - -Template对象说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| templateId | string | 是 | 消息模板ID | -| context | Context | 是 | 消息模板上下文,即模板中定义的参数及参数值 | - -Context对象说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| headColor | string | 是 | 顶部色条的色值,比如#85be53 | -| url | string | 是 | 点击消息后承接页的地址 | -| actionName | string | 是 | 底部链接描述文字,如:“查看详情”,最多能传8个汉字或16个英文字符 | -| keyword1 | Keyword | 否 | 模板中占位符的值及文字颜色 | -| keyword2 | Keyword | 否 | 模板中占位符的值及文字颜色 | -| first | Keyword | 否 | 模板中占位符的值及文字颜色 | -| remark | Keyword | 否 | 模板中占位符的值及文字颜色 | - -Keyword对象说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| color | string | 是 | 当前文字颜色,比如#85be53 | -| value | string | 是 | 模板中占位符的值 | - -* 出参说明 - -可前往[alipay.open.public.message.single.send](https://docs.open.alipay.com/api_6/alipay.open.public.message.single.send)查看更加详细的参数说明。 - -### 生活号消息撤回 -* API声明 - -recallMessage(messageId: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| messageId | string | 是 | 消息ID | - -* 出参说明 - -可前往[alipay.open.public.life.msg.recall](https://docs.open.alipay.com/api_6/alipay.open.public.life.msg.recall)查看更加详细的参数说明。 - -### 模板消息行业设置 -* API声明 - -setIndustry(primaryIndustryCode: string, primaryIndustryName: string, secondaryIndustryCode: string, secondaryIndustryName: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| primaryIndustryCode | string | 是 | 服务窗消息模板所属主行业一级编码,查看[行业信息](https://alipay.open.taobao.com/doc2/detail?treeId=197&docType=1&articleId=105043) | -| primaryIndustryName | string | 是 | 服务窗消息模板所属主行业一级名称 | -| secondaryIndustryCode | string | 是 | 服务窗消息模板所属主行业二级编码 | -| secondaryIndustryName | string | 是 | 服务窗消息模板所属主行业二级名称 | - -* 出参说明 - -可前往[alipay.open.public.template.message.industry.modify](https://docs.open.alipay.com/api_6/alipay.open.public.template.message.industry.modify)查看更加详细的参数说明。 - -### 生活号查询行业设置 -* API声明 - -getIndustry() - -* 入参说明 - -无 - -* 出参说明 - -可前往[alipay.open.public.setting.category.query](https://docs.open.alipay.com/api_6/alipay.open.public.setting.category.query)查看更加详细的参数说明。 - ---- - - -## 支付宝卡包 Pass -### 卡券模板创建 -* API声明 - -createTemplate(uniqueId: string, tplContent: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| uniqueId | string | 是 | 商户用于控制模版的唯一性(可以使用时间戳保证唯一性) | -| tplContent | string | 是 | 模板内容信息,遵循JSON规范,详情参见tpl_content[参数说明](https://doc.open.alipay.com/doc2/detail.htm?treeId=193&articleId=105249&docType=1#tpl_content) | - -* 出参说明 - -可前往[alipay.pass.template.add](https://docs.open.alipay.com/api_24/alipay.pass.template.add)查看更加详细的参数说明。 - -### 卡券模板更新 -* API声明 - -updateTemplate(uniqueId: string, tplContent: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| uniqueId | string | 是 | 商户用于控制模版的唯一性(可以使用时间戳保证唯一性) | -| tplContent | string | 是 | 模板内容信息,遵循JSON规范,详情参见tpl_content[参数说明](https://doc.open.alipay.com/doc2/detail.htm?treeId=193&articleId=105249&docType=1#tpl_content) | - -* 出参说明 - -可前往[alipay.pass.template.update](https://docs.open.alipay.com/api_24/alipay.pass.template.update)查看更加详细的参数说明。 - -### 卡券实例发放 -* API声明 - -addInstance(tplId: string, tplParams: string, recognitionType: string, recognitionInfo: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| tplId | string | 是 | 支付宝pass模版ID,即调用模板创建接口时返回的tpl_id | -| tplParams | string | 是 | 模版动态参数信息,对应模板中$变量名$的动态参数,见模板创建接口返回值中的tpl_params字段。示例: | -| recognitionType | string | 是 | Alipass添加对象识别类型,填写“1”表示订单信息 | -| recognitionInfo | string | 是 | 支付宝用户识别信息,参见[UID发券组件对接文档](https://docs.open.alipay.com/199/sy3hs4 ) | - -* 出参说明 - -可前往[alipay.pass.instance.add](https://docs.open.alipay.com/api_24/alipay.pass.instance.add)查看更加详细的参数说明。 - -### 卡券实例更新 -* API声明 - -updateInstance(serialNumber: string, channelId: string, tplParams: string, status: string, verifyCode: string, verifyType: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| serialNumber | string | 是 | 商户指定卡券唯一值,卡券JSON模板中fileInfo->serialNumber字段对应的值 | -| channelId | string | 是 | 代理商代替商户发放卡券后,再代替商户更新卡券时,此值为商户的PID/AppID | -| tplParams | string | 否 | Alipass添加对象识别类型,填写“1”表示订单信息 | -| status | string | 否 | 券状态,支持更新为USED、CLOSED两种状态 | -| verifyCode | string | 否 | 核销码串值(当状态变更为USED时,建议传),该值正常为模板中核销区域(Operation)对应的message值 | -| verifyType | string | 否 | 核销方式,该值正常为模板中核销区域(Operation)对应的format值,verifyCode和verifyType需同时传入 | - -* 出参说明 - -可前往[alipay.pass.instance.update](https://docs.open.alipay.com/api_24/alipay.pass.instance.update)查看更加详细的参数说明。 - ---- - - -## 小程序模板消息 TemplateMessage -### 发送模板消息 -* API声明 - -send(toUserId: string, formId: string, userTemplateId: string, page: string, data: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| toUserId | string | 是 | 发送消息的支付宝账号 | -| formId | string | 是 | 用户发生的交易行为的交易号,或者用户在小程序产生表单提交的表单号,用于信息发送的校验 | -| userTemplateId | string | 是 | 用户申请的模板id号,固定的模板id会发送固定的消息 | -| page | string | 是 | 小程序的跳转页面,用于消息中心用户点击之后详细跳转的小程序页面,例如:page/component/index | -| data | string | 是 | 开发者需要发送模板消息中的自定义部分来替换模板的占位符,例如:{"keyword1": {"value" : "12:00"},"keyword2": {"value" : "20180808"},"keyword3": {"value" : "支付宝"}} | - -* 出参说明 - -可前往[alipay.open.app.mini.templatemessage.send](https://docs.open.alipay.com/api_5/alipay.open.app.mini.templatemessage.send)查看更加详细的参数说明。 - ---- - - -# 会员能力 Member -## 支付宝身份认证 Identification -### 身份认证初始化 -* API声明 - -init(outerOrderNo: string, bizCode: string, identityParam: IdentityParam, merchantConfig: MerchantConfig) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| outerOrderNo | string | 是 | 商户请求的唯一标识,商户要保证其唯一性,值为32位长度的字母数字组合,建议前面几位字符是商户自定义的简称,中间可以使用一段时间,后段可以使用一个随机或递增序列 | -| bizCode | string | 是 | 认证场景码,入参支持的认证场景码和商户签约的认证场景相关,可选值有如下,FACE:多因子人脸认证;CERT_PHOTO:多因子证照认证;CERT_PHOTO_FACE:多因子证照和人脸认证;SMART_FACE:多因子快捷认证 | -| identityParam | IdentityParam | 是 | 需要验证的身份信息参数 | -| merchantConfig | MerchantConfig | 是 | 商户个性化配置 | - -IdentityParam对象说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| identityType | string | 是 | 身份信息参数类型,必须传入CERT_INFO | -| certType | string | 是 | 证件类型,当前支持身份证,必须传入IDENTITY_CARD | -| certName | string | 是 | 真实姓名 | -| certNo | string | 是 | 证件号码 | - -MerchantConfig对象说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| returnUrl | string | 是 | 需要回跳的目标URL地址,一般指定为商户业务页面 | - -* 出参说明 - -可前往[alipay.user.certify.open.initialize](https://docs.open.alipay.com/api_2/alipay.user.certify.open.initialize)查看更加详细的参数说明。 - -### 生成认证链接 -* API声明 - -certify(certifyId: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| certifyId | string | 是 | 本次申请操作的唯一标识,由身份认证初始化接口调用后生成,后续的操作都需要用到 | - -* 出参说明 - -可前往[alipay.user.certify.open.certify](https://docs.open.alipay.com/api_2/alipay.user.certify.open.certify)查看更加详细的参数说明。 - -### 身份认证记录查询 -* API声明 - -query(certifyId: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| certifyId | string | 是 | 身份认证操作的唯一标识,由身份认证初始化接口调用后生成 | - -* 出参说明 - -可前往[alipay.user.certify.open.query](https://docs.open.alipay.com/api_2/alipay.user.certify.open.query)查看更加详细的参数说明。 - ---- - - -# 支付能力 Payment -## 通用接口 Common -### 创建交易 -* API声明 - -create(subject: string, outTradeNo: string, totalAmount: string, buyerId: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| subject | string | 是 | 订单标题 | -| outTradeNo | string | 是 | 商户订单号,64个字符以内,可包含字母、数字、下划线,需保证在商户端不重复 | -| totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | -| buyerId | string | 是 | 买家的支付宝唯一用户号(2088开头的16位纯数字) | - -* 出参说明 - -可前往[alipay.trade.create](https://docs.open.alipay.com/api_1/alipay.trade.create)查看更加详细的参数说明。 - -### 查询交易 -* API声明 - -query(outTradeNo: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | - -* 出参说明 - -可前往[alipay.trade.query](https://docs.open.alipay.com/api_1/alipay.trade.query)查看更加详细的参数说明。 - -### 交易退款 -* API声明 - -refund(outTradeNo: string, refundAmount: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | -| refundAmount | string | 是 | 需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数 | - -* 出参说明 - -可前往[alipay.trade.refund](https://docs.open.alipay.com/api_1/alipay.trade.refund)查看更加详细的参数说明。 - -### 关闭交易 -* API声明 - -close(outTradeNo: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | - -* 出参说明 - -可前往[alipay.trade.close](https://docs.open.alipay.com/api_1/alipay.trade.close)查看更加详细的参数说明。 - -### 撤销交易 -* API声明 - -cancel(outTradeNo: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | - -* 出参说明 - -可前往[alipay.trade.cancel](https://docs.open.alipay.com/api_1/alipay.trade.cancel)查看更加详细的参数说明。 - -### 交易退款查询 -* API声明 - -queryRefund(outTradeNo: string, outRequestNo: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | -| outRequestNo | string | 是 | 请求退款接口时,传入的退款请求号,如果在退款请求时未传入,则该值为创建交易时的外部交易号 | - -* 出参说明 - -可前往[alipay.trade.fastpay.refund.query](https://opendocs.alipay.com/apis/api_1/alipay.trade.fastpay.refund.query)查看更加详细的参数说明。 - - -### 查询对账单下载地址 -* API声明 - -downloadBill(billType: string, billDate: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| billType | string | 是 | 账单类型,商户通过接口或商户经开放平台授权后其所属服务商通过接口可以获取以下账单类型:trade、signcustomer;trade指商户基于支付宝交易收单的业务账单;signcustomer是指基于商户支付宝余额收入及支出等资金变动的帐务账单 | -| billDate | string | 是 | 账单时间:日账单格式为yyyy-MM-dd,最早可下载2016年1月1日开始的日账单;月账单格式为yyyy-MM,最早可下载2016年1月开始的月账单 | - -* 出参说明 - -可前往[alipay.data.dataservice.bill.downloadurl.query](https://opendocs.alipay.com/apis/api_15/alipay.data.dataservice.bill.downloadurl.query)查看更加详细的参数说明。 - - -### 异步通知验签 -* API声明 - -verifyNotify(parameters: map[string]string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| parameters | map[string]string | 是 | 异步通知中收到的待验签的所有参数 | - ---- - -## 花呗分期 Huabei -### 创建花呗分期交易 -* API声明 - -create(subject: string, outTradeNo: string, totalAmount: string, buyerId: string, extendParams: HuabeiConfig) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| subject | string | 是 | 订单标题 | -| outTradeNo | string | 是 | 商户订单号,64个字符以内,可包含字母、数字、下划线,需保证在商户端不重复 | -| totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | -| buyerId | string | 是 | 买家的支付宝用户ID,如果为空,会从传入的码值信息中获取买家ID | -| extendParams | HuabeiConfig | 是 | 花呗交易扩展参数 | - -HuabeiConfig对象说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| hbFqNum | string | 是 | 花呗分期数,仅支持传入3、6、12 | -| hbFqSellerPercent | string | 是 | 代表卖家承担收费比例,商家承担手续费传入100,用户承担手续费传入0,仅支持传入100、0两种 | - - -* 出参说明 - -可前往[alipay.trade.create](https://docs.open.alipay.com/api_1/alipay.trade.create)查看更加详细的参数说明。 - ---- - - - -## 当面付 FaceToFace -### 当面付交易付款 -* API声明 - -pay(subject: string, outTradeNo: string, totalAmount: string, authCode: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| subject | string | 是 | 订单标题 | -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | -| totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | -| authCode | string | 是 | 支付授权码,即买家的付款码数字 | - -* 出参说明 - -可前往[alipay.trade.pay](https://docs.open.alipay.com/api_1/alipay.trade.pay)查看更加详细的参数说明。 - -* 返佣说明 - -ISV对接当面付产品需涉及返佣时,请先阅读[政策详情](https://opendocs.alipay.com/p/00fc2g)与[合作攻略](https://opendocs.alipay.com/open/300/taphxd)。 - - -**对接时必须在支付接口的extend_params参数中设置sys_service_provider_id返佣参数 ,参数值为签约返佣协议的PID**,示例代码如下(Java为例): - -```java -Map extendParams = new HashMap<>(); -extendParams.put("sys_service_provider_id", "<--请填写ISV签约协议的PID,比如:2088511833207846-->"); -AlipayTradePayResponse response = Factory.Payment.FaceToFace() - .agent("<--请填写商户应用授权后获取到的app_auth_token,比如:ca34ea491e7146cc87d25fca24c4cD11-->") - .optional("extend_params", extendParams) - .pay("iPhone6 16G", "64628156-f784-4572-9540-485b7c91b850", "0.01", "289821051157962364"); -``` - ---- -### 交易预创建,生成正扫二维码 -* API声明 - -precreate(subject: string, outTradeNo: string, totalAmount: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| subject | string | 是 | 订单标题 | -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | -| totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | - -* 出参说明 - -可前往[alipay.trade.precreate](https://docs.open.alipay.com/api_1/alipay.trade.precreate)查看更加详细的参数说明。 - -* 返佣说明 - -ISV对接当面付产品需涉及返佣时,请先阅读[政策详情](https://opendocs.alipay.com/p/00fc2g)与[合作攻略](https://opendocs.alipay.com/open/300/taphxd)。 - - -**对接时必须在支付接口的extend_params参数中设置sys_service_provider_id返佣参数 ,参数值为签约返佣协议的PID**,示例代码如下(Java为例): - -```java -Map extendParams = new HashMap<>(); -extendParams.put("sys_service_provider_id", "<--请填写ISV签约协议的PID,比如:2088511833207846-->"); -AlipayTradePrecreateResponse response = Payment.FaceToFace() - .agent("<--请填写商户应用授权后获取到的app_auth_token,比如:ca34ea491e7146cc87d25fca24c4cD11-->") - .optional("extend_params", extendParams) - .preCreate("iPhone6 16G", "64628156-f784-4572-9540-485b7c91b850", "0.01"); -``` - ---- -## 电脑网站 Page -### 电脑网站支付 -* API声明 - -pay(subject: string, outTradeNo: string, totalAmount: string, returnUrl: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| subject | string | 是 | 订单标题 | -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | -| totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | -| returnUrl | string | 否 | 支付成功后同步跳转的页面,是一个http/https开头的字符串 | - -* 出参说明 - -可前往[alipay.trade.page.pay](https://docs.open.alipay.com/api_1/alipay.trade.page.pay)查看更加详细的参数说明。 - ---- - -## 手机网站 Wap -### 手机网站支付 -* API声明 - -pay(subject: string, outTradeNo: string, totalAmount: string, quitUrl: string, returnUrl: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| subject | string | 是 | 订单标题 | -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | -| totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | -| quitUrl | string | 是 | 用户付款中途退出返回商户网站的地址 | -| returnUrl | string | 否 | 支付成功后同步跳转的页面,是一个http/https开头的字符串 | - -* 出参说明 - -可前往[alipay.trade.wap.pay](https://docs.open.alipay.com/api_1/alipay.trade.wap.pay)查看更加详细的参数说明。 - ---- - -## App支付 App -### 手机APP支付 -* API声明 - -pay(subject: string, outTradeNo: string, totalAmount: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| subject | string | 是 | 订单标题 | -| outTradeNo | string | 是 | 交易创建时传入的商户订单号 | -| totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | - -* 出参说明 - -可前往[alipay.trade.app.pay](https://docs.open.alipay.com/api_1/alipay.trade.app.pay)查看更加详细的参数说明。 - ---- - -# 安全能力 Security -## 文本风险识别 TextRisk -### 检测内容风险 -* API声明 - -detect(content: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| content | string | 是 | 待检测的文本内容 | - -* 出参说明 - -可前往[alipay.security.risk.content.detect](https://docs.open.alipay.com/api_49/alipay.security.risk.content.detect)查看更加详细的参数说明。 - ---- - -# 辅助工具 Util - - -## 加解密 AES -### AES解密(常用于会员手机号解密) -* API声明 - -decrypt(cipherText: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| cipherText | string | 是 | 密文 | - -* 出参说明 - -| 类型 | 说明 | -|------|----| -| string | 明文| - -### AES加密 -* API声明 - -encrypt(plainText: string) - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| plainText | string | 是 | 明文 | - -* 出参说明 - -| 类型 | 说明 | -|------|----| -| string | 密文| - - - - -## 通用接口 Generic -### 执行OpenAPI调用 -* API声明 - -execute(method: string, textParams: map[string]string, bizParams: map[string]any): AlipayOpenApiGenericResponse - -* 接口说明 - -对于Alipay Easy SDK尚未支持的Open API,开发者可以通过调用此方法,通过自行拼装请求参数,完成大部分OpenAPI的调用,且调用时可按需设置所有可选参数。本接口同样会自动为您完成请求的加签和响应的验签工作。 -注:本接口不支持文件型字段的上传。 - -* 入参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| method | string | 是 | OpenAPI的名称,例如:alipay.trade.pay | -| textParams | map[string]string | 否 | **没有**包装在`biz_content`下的请求参数集合,例如`app_auth_token`等参数 | -| bizParams | map[string]any | 否 | 被包装在`biz_content`下的请求参数集合 | - -* 出参说明 - -| 字段名 | 类型 | 必填 | 说明 | -|------|--------|----|----| -| httpBody | string | 是 | 网关返回的HTTP响应,是一个JSON格式的字符串,开发者可按需从中解析出响应参数,响应示例:{"alipay_trade_create_response":{"code":"10000","msg":"Success","out_trade_no":"4ac9eac...","trade_no":"202003..."},"sign":"AUumfYgGSe7...02MA=="} | -| code | string | 是 | [网关返回码](https://docs.open.alipay.com/common/105806) | -| msg | string | 是 | [网关返回码描述](https://docs.open.alipay.com/common/105806) | -| subCode | string | 否 | 业务返回码,参见具体的API接口文档 | -| subMsg | string | 否 | 业务返回码描述,参见具体的API接口文档 | - ---- - - - - diff --git a/vendor/alipaysdk/easysdk/CHANGELOG b/vendor/alipaysdk/easysdk/CHANGELOG deleted file mode 100644 index bb0e7550..00000000 --- a/vendor/alipaysdk/easysdk/CHANGELOG +++ /dev/null @@ -1,182 +0,0 @@ -最新变更 -java删除Factory.getClient方法 -php删除php中多余的composer包 - -Java版本 -2022-05-06 Version: 2.2.2 -1. 删除Factory.getClient方法 - -2021-09-04 Version: 2.2.1 -1. 修复Okhttp Response没有主动关闭的问题。 - -2021-01-18 Version: 2.2.0 -1. 增加sdkExecute功能。 -2. 增加fileExecute功能。 -3. 增加MultipleFactory多实例调用。 - -2020-12-11 Version: 2.1.2 -1. 增加可设置ignoreSSL忽略SSL校验功能。 - -2020-09-23 Version: 2.1.0 -1. 升级Tea版本,降低对OkHttp的特性依赖,提升环境兼容性。 -2. 提供Factory.getClient方法,用于调用SDK扩展包中的方法。 - -2020-08-18 Version: 2.0.2 -1. 取消shade打包,便于排除冲突依赖。 - -2020-07-06 Version: 2.0.1 -1. 私钥支持阿里云KMS。 - -2020-06-09 Version: 2.0.0 -1. 支持可选业务参数的装配。 -2. 支持ISV代调用。 -3. 提供ResponseChecker辅助工具类,帮助校验响应是否成功。 - -2020-05-06 Version: 1.2.1 -1. 手机网站支付、电脑网站支付接口支持设置return_url同步跳转地址。 - -2020-04-15 Version: 1.2.0 -1. 扩展支持的支付类OpenAPI接口 -Factory.Payment.Common().queryRefund 查询退款信息 -Factory.Payment.Common().downloadBill 下载对账单 -Factory.Payment.FaceToFace().preCreate 交易预创建,生成正扫二维码 -Factory.Payment.Wap().pay 手机网站支付 -Factory.Payment.Page().pay 电脑网站支付 -Factory.Payment.App().pay 手机APP支付 -2. 支持支付的异步通知及其验签 -初始化Alipay Easy SDK的Config参数中新增notifyUrl参数,用户可以统一配置自己的回调地址。 -提供如下接口,完成支付类异步通知的验签。 -Factory.Payment.Common().verifyNotify -3. AES加解密功能 -Factory.Util.AES().decrypt 支持会员手机号AES解密 -Factory.Util.AES().encrypt AES加密 - -2020-03-31 Version: 1.1.3 -1. 去除SDK内置的logback.xml日志配置文件,以免意外覆盖开发者项目主体工程的日志配置。 - -2020-03-27 Version: 1.1.2 -1. 修复返回的响应中存在数组类型字段时,反序列化成Response对象可能抛异常的问题。 - -2020-03-16 Version: 1.1.1 -1. 修复证书路径不支持从CLASS_PATH中加载的问题。 - -2020-03-10 Version: 1.1.0 -1. 添加兜底通用接口,支持通过自行拼接请求参数完成几乎所有OpenAPI的调用。 - -2020-02-26 Version: 1.0.0 -1. 首次发布。 - - - -C#版本 -2020-12-11 Version: 2.1.3 -1. 修复OpenAPI响应对象特殊情况下可能反序列化失败的异常。 - -2020-12-11 Version: 2.1.2 -1. 增加可设置ignoreSSL忽略SSL校验功能。 - -2020-12-09 Version: 2.1.1 -1. 增加httpProxy功能。 - -2020-09-23 Version: 2.1.0 -1. 升级Tea版本。 -2. 提供Factory.getClient方法,用于调用SDK扩展包中的方法。 - -2020-08-18 Version: 2.0.1 -1. 修复证书模式下异步验签异常的问题。 - -2020-06-09 Version: 2.0.0 -1. 支持可选业务参数的装配。 -2. 支持ISV代调用。 -3. 提供ResponseChecker辅助工具类,帮助校验响应是否成功。 - -2020-05-06 Version: 1.2.1 -1. 手机网站支付、电脑网站支付接口支持设置return_url同步跳转地址。 - -2020-04-15 Version: 1.2.0 -1. 扩展支持的支付类OpenAPI接口 -Factory.Payment.Common().QueryRefund 查询退款信息 -Factory.Payment.Common().DownloadBill 下载对账单 -Factory.Payment.FaceToFace().PreCreate 交易预创建,生成正扫二维码 -Factory.Payment.Wap().Pay 手机网站支付 -Factory.Payment.Page().Pay 电脑网站支付 -Factory.Payment.App().Pay 手机APP支付 -2. 支持支付的异步通知及其验签 -初始化Alipay Easy SDK的Config参数中新增notifyUrl参数,用户可以统一配置自己的回调地址。 -提供如下接口,完成支付类异步通知的验签。 -Factory.Payment.Common().verifyNotify -3. AES加解密功能 -Factory.Util.AES().Decrypt 支持会员手机号AES解密 -Factory.Util.AES().Encrypt AES加密 - -2020-03-10 Version: 1.1.0 -1. 添加兜底通用接口,支持通过自行拼接请求参数完成几乎所有OpenAPI的调用。 - -2020-02-26 Version: 1.0.0 -1. 首次发布。 - - - -PHP版本 -2022-11-28 Version: 2.2.3 -1、去掉多余引号 -2、toMultipartRequestBody方法中,PHP8时 0 != $readLength 永远为true导致while产生死循环 - -2022-05-06 Version: 2.2.2 -1. php删除php中多余的composer包 - -2021-09-24 Version: 2.2.1 -1. 修复PHP7.4及其以上环境下,根证书解析报错的问题。 - -2021-01-18 Version: 2.2.0 -1. 增加sdkExecute功能。 -2. 增加fileExecute功能。 -3. 增加MultipleFactory多实例调用。 - - -2020-12-11 Version: 2.0.3 -1. 增加可设置ignoreSSL忽略SSL校验功能。 - -2020-12-09 Version: 2.0.2 -1. 增加httpProxy功能。 -2. 修复agent不生效问题。 - -2020-07-06 Version: 2.0.0 -1. 支持可选业务参数的装配。 -2. 支持ISV代调用。 -3. 提供ResponseChecker辅助工具类,帮助校验响应是否成功。 - -2020-05-06 Version: 1.2.1 -1. 手机网站支付、电脑网站支付接口支持设置return_url同步跳转地址。 - -2020-04-15 Version: 1.2.0 -1. 扩展支持的支付类OpenAPI接口 -Factory::payment()->common()->queryRefund 查询退款信息 -Factory::payment()->common()->downloadBill 下载对账单 -Factory::payment()->faceToFace()->preCreate 交易预创建,生成正扫二维码 -Factory::payment()->wap()->pay 手机网站支付 -Factory::payment()->page()->pay 电脑网站支付 -Factory::payment()->app()->pay 手机APP支付 -2. 支持支付的异步通知及其验签 -初始化Alipay Easy SDK的Config参数中新增notifyUrl参数,用户可以统一配置自己的回调地址。 -提供如下接口,完成支付类异步通知的验签。 -Factory::payment()->common()->verifyNotify -3. AES加解密功能 -Factory::util()->aes()->decrypt 支持会员手机号AES解密 -Factory::util()->aes()->encrypt AES加密 -4. 重构api的respone模型,返回格式与Java、Net保持一致 - -2020-03-27 Version: 1.1.0 -1. 修复大小写路径敏感问题。 - -2020-03-20 Version: 1.0.0 -1. 首次发布。 - - -PHP版本 -2021-09-24 Version: 2.0.1 -1.修复PHP7.4及其以上环境下,根证书解析报错的问题。 - -2021-01-18 Version: 1.0.0 -1. 首次发布。 - diff --git a/vendor/alipaysdk/easysdk/LICENSE b/vendor/alipaysdk/easysdk/LICENSE deleted file mode 100644 index 8d8fa6ec..00000000 --- a/vendor/alipaysdk/easysdk/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 Ant Small and Micro Financial Services Group Co., Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/alipaysdk/easysdk/README.md b/vendor/alipaysdk/easysdk/README.md deleted file mode 100644 index 08989036..00000000 --- a/vendor/alipaysdk/easysdk/README.md +++ /dev/null @@ -1,203 +0,0 @@ -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk?ref=badge_shield) -[![Maven Central](https://img.shields.io/maven-central/v/com.alipay.sdk/alipay-easysdk.svg)](https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk) -[![NuGet](https://badge.fury.io/nu/AlipayEasySDK.svg)](https://badge.fury.io/nu/AlipayEasySDK) -[![Packagist](https://poser.pugx.org/alipaysdk/easysdk/v/stable)](https://packagist.org/packages/alipaysdk/easysdk) - -欢迎使用 Alipay **Easy** SDK。 - -打造**最好用**的支付宝开放平台**服务端SDK**,Alipay Easy SDK让您享受**极简编程**体验,快速访问支付宝开放平台开放的各项**核心能力**。 - -## 设计理念 -不同于原有的Alipay SDK通用而全面的设计理念,Alipay Easy SDK对开放能力的API进行了更加贴近高频场景的精心设计与裁剪,简化了服务端调用方式,让调用API像使用语言内置的函数一样简便。 - -同时,您也不必担心面向高频场景提炼的API可能无法完全契合自己的个性化场景,Alipay Easy SDK支持灵活的[动态扩展](#extension)方式,同样可以满足低频参数、低频API的使用需求。 - -Alipay Easy SDK提供了与[能力地图](https://opendocs.alipay.com/mini/00am3f)相对应的代码组织结构,让开发者可以快速找到不同能力对应的API。 - -Alipay Easy SDK主要目标是提升开发者在**服务端**集成支付宝开放平台开放的各类核心能力的效率。 - -### 化繁为简 - -| Alipay Easy SDK | Alipay SDK | -|------------------|----------------------------------------------------------------| -| 极简代码风格,更贴近自然语言阅读习惯 | 传统代码风格,需要多行代码完成一个接口的调用 | -| Factory单例全局任何地方都可直接引用 | AlipayClient实例需自行创建并在上下文中传递 | -| API中只保留高频场景下的必备参数,同时提供低频可选参数的装配能力 | 没有区分高低频参数,单API最多可达数十个入参,对普通开发者的干扰较大 | - - -* Alipay Easy SDK :smiley: - -```java -Factory.Payment.Common().create("Iphone6 16G", "202003019443", "0.10", "2088002656718920"); -``` - -* Alipay SDK :confused: - -```java -AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); - -AlipayTradeCreateModel model = new AlipayTradeCreateModel(); -model.setSubject("Iphone6 16G"); -model.setOutTradeNo("202003019443"); -model.setTotalAmount("0.10"); -model.setBuyerId("2088002656718920"); -... - -request.setBizModel(model); -... - -alipayClient.execute(request); -``` - -### 如何切换 -* 无论是Alipay Easy SDK还是Alipay SDK,本质都是发送HTTP请求访问Open API网关,所以只需将原来通过Alipay SDK调用Open API的代码,替换为Alipay Easy SDK中对应API的调用即可。Alipay Easy SDK和Alipay SDK并无冲突,可以共存。 - -* 如果您所需对接的开放平台能力,Alipay Easy SDK尚未提炼出API支持([已支持的API列表](#apiList)),您可以通过[通用接口](./APIDoc.md#generic)完成调用。 - -* 我们会持续挖掘高频场景,不断丰富Alipay Easy SDK支持的API,让您在绝大多数常见场景下,都能享受Alipay Easy SDK带来的便捷。 - -## 技术特点 -### 纯语言开发 -所有Alipay Easy SDK的具体编程语言的实现,均只采用纯编程语言进行开发,不引入任何重量级框架,减少潜在的框架冲突,让SDK可以自由集成进任何代码环境中。 - -### 结构清晰 -我们按照能力类别和场景类别对API进行了归类,结构更加清晰,一目了然。 -> 更多信息请参见[API组织规范](#spec)。 - -### 参数精简 -Alipay Easy SDK对每个API都精心打磨,剔除了`Open API`中不常用的可选参数,减少普通用户的无效选择,提升开发效率。 - - - -### 灵活扩展 -开发者可以通过Fluent风格的API链式调用,在为高频场景打造的API基础上,不断扩展自己的个性化场景需求。 - -```java -// 通过调用agent方法,扩展支持ISV代调用场景 -Factory.Payment.FaceToFace().agent("ca34ea491e7146cc87d25fca24c4cD11").preCreate(...) - -// 通过调用optional方法,扩展支持个性化可选参数 -Factory.Payment.FaceToFace().optional("extend_params", extendParams).preCreate(...) - -// 多种扩展可灵活搭配,不同扩展方法功能详细说明请前往各语言主页中的“快速开始-扩展调用”栏目中查看 -Factory.Payment.FaceToFace() - .agent(...) - .optionalArgs(...) - .auth(...) - .asyncNotify(...) - .preCreate(...) -``` - -### 测试/示例完备 -每个API都有对应的单元测试进行覆盖,良好的单元测试天生就是最好的示例。 - -同时您也可以前往[API Doc](./APIDoc.md)查看每个API的详细使用说明。 - -> 注:单元测试中使用到的私钥均进行了脱敏处理,会导致单元测试无法直接执行。您可以自行更改单元测试项目中的`TestAccout类`和`privateKey.json`文件中的相关账号与私钥配置后再执行单元测试。 - -### 多语言 -Alipay Easy SDK基于阿里集团研发的[`Darabonba`](https://github.com/aliyun/darabonba)进行架构,通过DSL中间语言定义API模型,再基于DSL语言自动生成不同编程语言(Java、C#、PHP、TS等)实现的SDK,极大地提升了SDK能力的扩展效率和适用范围,同时也保证了相同的`Easy API`在不同语言生态中体验的一致性。 - -API模型的DSL描述可以进入[tea](./tea)目录查看。 - -### 快速集成 -各语言SDK均会在各自的中央仓库(Maven、NuGet、Composer、NPM etc.)中同步发布,让您使用各语言主流依赖管理工具即可一键安装集成SDK。 - -## 语言支持情况 -Alipay Easy SDK首发暂只支持`Java`、`C#`、`PHP`编程语言,更多编程语言支持正在积极新增中,敬请期待。 - -各语言具体的**使用说明**和**详细介绍**请点击如下链接进入各语言主目录查看。 - -[Java](./java) - -[C#](./csharp) - -[PHP](./php) - - - -## API组织规范 - -在Alipay Easy SDK中,API的引用路径与能力地图的组织层次一致,遵循如下规范 - -> Factory.能力类别.场景类别.接口方法名称( ... ) - -比如,如果您想要使用[能力地图](https://opendocs.alipay.com/mini/00am3f)中`营销能力`下的`模板消息`场景中的`小程序发送模板消息`,只需按如下形式编写调用代码即可(不同编程语言的连接符号可能不同)。 - -`Factory.Marketing.TemplateMessage().send( ... )` - -其中,接口方法名称通常是对其依赖的OpenAPI功能的一个最简概况,接口方法的出入参与OpenAPI中同名参数含义一致,可参照OpenAPI相关参数的使用说明。 - -Alipay Easy SDK将致力于保持良好的API命名,以符合开发者的编程直觉。 - - - -## 已支持的API列表 - -| 能力类别 | 场景类别 | 接口方法名称 | 调用的OpenAPI名称 | -|-----------|-----------------|------------------------|-----------------------------------------------------------| -| Base
基础能力 | OAuth
用户授权 | getToken
获取授权访问令牌和用户user_id | alipay\.system\.oauth\.token | -| Base
基础能力 | OAuth
用户授权 | refreshToken
刷新授权访问令牌 | alipay\.system\.oauth\.token | -| Base
基础能力 | Qrcode
小程序二维码 | create
创建小程序二维码 | alipay\.open\.app\.qrcode\.create | -| Base
基础能力 | Image
图片 | upload
上传门店照片 | alipay\.offline\.material\.image\.upload | -| Base
基础能力 | Video
视频 | upload
上传门店视频 | alipay\.offline\.material\.image\.upload | -| Member
会员能力 | Identification
支付宝身份认证 | init
身份认证初始化 | alipay\.user\.certify\.open\.initialize | -| Member
会员能力 | Identification
支付宝身份认证 | certify
生成认证链接 | alipay\.user\.certify\.open\.certify | -| Member
会员能力 | Identification
支付宝身份认证 | query
身份认证记录查询 | alipay\.user\.certify\.open\.query | -| Payment
支付能力 | Common
通用 | create
创建交易 | alipay\.trade\.create | -| Payment
支付能力 | Common
通用 | query
查询交易 | alipay\.trade\.query | -| Payment
支付能力 | Common
通用 | refund
交易退款 | alipay\.trade\.refund | -| Payment
支付能力 | Common
通用 | close
关闭交易 | alipay\.trade\.close | -| Payment
支付能力 | Common
通用 | cancel
撤销交易 | alipay\.trade\.cancel | -| Payment
支付能力 | Common
通用 | queryRefund
交易退款查询 | alipay\.trade\.fastpay\.refund\.query | -| Payment
支付能力 | Common
通用 | downloadBill
查询对账单下载地址 | alipay\.data\.dataservice\.bill\.downloadurl\.query | -| Payment
支付能力 | Common
通用 | verifyNotify
异步通知验签 | - | -| Payment
支付能力 | Huabei
花呗分期 | create
创建花呗分期交易 | alipay\.trade\.create | -| Payment
支付能力 | FaceToFace
当面付 | pay
扫用户出示的付款码,完成付款 | alipay\.trade\.pay | -| Payment
支付能力 | FaceToFace
当面付 | precreate
生成交易付款码,待用户扫码付款 | alipay\.trade\.precreate | -| Payment
支付能力 | App
手机APP | pay
生成订单串,再使用客户端 SDK 凭此串唤起支付宝收银台 | alipay\.trade\.app\.pay | -| Payment
支付能力 | Page
电脑网站 | pay
生成交易表单,渲染后自动跳转支付宝网站引导用户完成支付 | alipay\.trade\.page\.pay | -| Payment
支付能力 | Wap
手机网站 | pay
生成交易表单,渲染后自动跳转支付宝网站引导用户完成支付 | alipay\.trade\.wap\.pay | -| Security
安全能力 | TextRisk
文本内容安全 | detect
检测内容风险 | alipay\.security\.risk\.content\.detect | -| Marketing
营销能力 | Pass
支付宝卡包 | createTemplate
卡券模板创建 | alipay\.pass\.template\.add | -| Marketing
营销能力 | Pass
支付宝卡包 | updateTemplate
卡券模板更新 | alipay\.pass\.template\.update | -| Marketing
营销能力 | Pass
支付宝卡包 | addInstance
卡券实例发放 | alipay\.pass\.instance\.add | -| Marketing
营销能力 | Pass
支付宝卡包 | updateInstance
卡券实例更新 | alipay\.pass\.instance\.update | -| Marketing
营销能力 | TemplateMessage
小程序模板消息 | send
发送模板消息| alipay\.open\.app\.mini\.templatemessage\.send | -| Marketing
营销能力 | OpenLife
生活号 | createImageTextContent
创建图文消息内容 | alipay\.open\.public\.message\.content\.create | -| Marketing
营销能力 | OpenLife
生活号 | modifyImageTextContent
更新图文消息内容 | alipay\.open\.public\.message\.content\.modify | -| Marketing
营销能力 | OpenLife
生活号 | sendText
群发本文消息 | alipay\.open\.public\.message\.total\.send | -| Marketing
营销能力 | OpenLife
生活号 | sendImageText
群发图文消息 | alipay\.open\.public\.message\.total\.send | -| Marketing
营销能力 | OpenLife
生活号 | sendSingleMessage
单发模板消息 | alipay\.open\.public\.message\.single\.send | -| Marketing
营销能力 | OpenLife
生活号 | recallMessage
生活号消息撤回 | alipay\.open\.public\.life\.msg\.recall | -| Marketing
营销能力 | OpenLife
生活号 | setIndustry
模板消息行业设置 | alipay\.open\.public\.template\.message\.industry\.modify | -| Marketing
营销能力 | OpenLife
生活号 | getIndustry
生活号查询行业设置 | alipay\.open\.public\.setting\.category\.query | -| Util
辅助工具 | AES
加解密 | decrypt
解密,常用于会员手机号解密 | - | -| Util
辅助工具 | AES
加解密 | encrypt
加密 | - | -| Util
辅助工具 | Generic
通用接口 | execute
自行拼接参数,执行OpenAPI调用 | - | - -> 注:更多高频场景的API持续更新中,敬请期待。 - -您还可以前往[API Doc](./APIDoc.md)查看每个API的详细使用说明。 - -# 变更日志 -每个版本的详细更改记录在[变更日志](./CHANGELOG)中。 - -> 版本号最末一位修订号的增加(比如从`1.0.0`升级为`1.0.1`),意味着SDK的功能没有发生任何变化,仅仅是修复了部分Bug。该类升级可能不会记录在变更日志中。 - -> 版本号中间一位次版本号的增加(比如从`1.0.0`升级为`1.1.0`),意味着SDK的功能发生了可向下兼容的新增或修改。 - -> 版本号首位主版本号的增加(比如从`1.0.0`升级为`2.0.0`),意味着SDK的功能可能发生了不向下兼容的较大调整,升级主版本号后请注意做好相关的回归测试工作。 - -# 相关 -* [支付宝开放平台](https://open.alipay.com/platform/home.htm) -* [支付宝开放平台文档中心](https://docs.open.alipay.com/catalog) -* [最新源码](https://github.com/alipay/alipay-easysdk) - -# 许可证 -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk?ref=badge_large) - -# 交流与技术支持 -不管您在使用Alipay Easy SDK的过程中遇到任何问题,欢迎前往 [支付宝开放社区](https://forum.alipay.com/mini-app/channel/1100001) 发帖与支付宝工作人员和其他开发者一起交流。 - -注:为了提高开发者问题的响应时效,github本身的issue功能已关闭,支付宝开放社区中发帖的问题,通常会在2小时内响应。 diff --git a/vendor/alipaysdk/easysdk/composer.json b/vendor/alipaysdk/easysdk/composer.json deleted file mode 100755 index 660cb502..00000000 --- a/vendor/alipaysdk/easysdk/composer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name":"alipaysdk/easysdk", - "description":"支付宝官方 Alipay Easy SDK", - "type":"library", - "version":"2.2.3", - "authors":[ - { - "name":"junying.wjy", - "email":"junying.wjy@antfin.com" - } - ], - "autoload":{ - "psr-4":{ - "Alipay\\EasySDK\\":"php/src/" - } - }, - "autoload-dev": { - "psr-4": { - "Alipay\\EasySDK\\Test\\": "php/test/" - } - }, - "license":"Apache-2.0", - "minimum-stability":"dev", - "require":{ - "php": ">=7.0", - "ext-curl":"*", - "ext-ctype":"*", - "ext-dom":"*", - "ext-fileinfo": "*", - "ext-json":"*", - "ext-libxml":"*", - "ext-simplexml":"*", - "ext-mbstring":"*", - "ext-openssl":"*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle":">=6.3", - "alibabacloud/tea": "^3.1", - "alibabacloud/tea-fileform": "^0.3.2" - }, - "require-dev": { - "phpunit/phpunit": "^7.5" - }, - "repositories":{ - "packagist":{ - "type":"composer", - "url":"https://mirrors.aliyun.com/composer/" - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK.sln b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK.sln deleted file mode 100644 index 117bda96..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK.sln +++ /dev/null @@ -1,23 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlipayEasySDK", "AlipayEasySDK\AlipayEasySDK.csproj", "{14B089B9-C61C-46E6-BD93-5DFBBB77E2B2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTest", "UnitTest\UnitTest.csproj", "{79DE080D-34C1-485E-996D-435A8515766D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {14B089B9-C61C-46E6-BD93-5DFBBB77E2B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14B089B9-C61C-46E6-BD93-5DFBBB77E2B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {14B089B9-C61C-46E6-BD93-5DFBBB77E2B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {14B089B9-C61C-46E6-BD93-5DFBBB77E2B2}.Release|Any CPU.Build.0 = Release|Any CPU - {79DE080D-34C1-485E-996D-435A8515766D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {79DE080D-34C1-485E-996D-435A8515766D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {79DE080D-34C1-485E-996D-435A8515766D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {79DE080D-34C1-485E-996D-435A8515766D}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/AlipayEasySDK.csproj b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/AlipayEasySDK.csproj deleted file mode 100644 index 266452d2..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/AlipayEasySDK.csproj +++ /dev/null @@ -1,32 +0,0 @@ - - - - netstandard2.0;net461 - true - 2.1.3 - antopen - zh - https://github.com/alipay/alipay-easysdk/blob/master/LICENSE - Alipay Easy SDK for .NET allows you to enjoy a minimalist programming experience and quickly access the various high-frequency capabilities of the Alipay Open Platform. - AlipayEasySDK - antopen - https://github.com/alipay/alipay-easysdk/tree/master/csharp - Alipay Easy SDK for .NET allows you to enjoy a minimalist programming experience and quickly access the various high-frequency capabilities of the Alipay Open Platform. - Alipay Easy SDK - - - - - - - - - - - - - - - - - diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Client.cs deleted file mode 100644 index a2ad6585..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Client.cs +++ /dev/null @@ -1,324 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Base.Image.Models; - -namespace Alipay.EasySDK.Base.Image -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayOfflineMaterialImageUploadResponse Upload(string imageName, string imageFilePath) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 100000}, - {"readTimeout", 100000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.offline.material.image.upload"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"image_type", "jpg"}, - {"image_name", imageName}, - }; - Dictionary fileParams = new Dictionary - { - {"image_content", imageFilePath}, - }; - string boundary = this._kernel.GetRandomBoundary(); - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", this._kernel.ConcatStr("multipart/form-data;charset=utf-8;boundary=", boundary)}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams - )); - request_.Body = this._kernel.ToMultipartRequestBody(textParams, fileParams, boundary); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.offline.material.image.upload"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task UploadAsync(string imageName, string imageFilePath) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 100000}, - {"readTimeout", 100000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.offline.material.image.upload"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"image_type", "jpg"}, - {"image_name", imageName}, - }; - Dictionary fileParams = new Dictionary - { - {"image_content", imageFilePath}, - }; - string boundary = this._kernel.GetRandomBoundary(); - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", this._kernel.ConcatStr("multipart/form-data;charset=utf-8;boundary=", boundary)}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams - )); - request_.Body = this._kernel.ToMultipartRequestBody(textParams, fileParams, boundary); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.offline.material.image.upload"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.cs deleted file mode 100644 index c62512a1..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Base.Image.Models -{ - public class AlipayOfflineMaterialImageUploadResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("image_id")] - [Validation(Required=true)] - public string ImageId { get; set; } - - [NameInMap("image_url")] - [Validation(Required=true)] - public string ImageUrl { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Client.cs deleted file mode 100644 index fc0973f5..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Client.cs +++ /dev/null @@ -1,528 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Base.OAuth.Models; - -namespace Alipay.EasySDK.Base.OAuth -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipaySystemOauthTokenResponse GetToken(string code) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.system.oauth.token"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"grant_type", "authorization_code"}, - {"code", code}, - }; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.system.oauth.token"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task GetTokenAsync(string code) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.system.oauth.token"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"grant_type", "authorization_code"}, - {"code", code}, - }; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.system.oauth.token"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipaySystemOauthTokenResponse RefreshToken(string refreshToken) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.system.oauth.token"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"grant_type", "refresh_token"}, - {"refresh_token", refreshToken}, - }; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.system.oauth.token"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task RefreshTokenAsync(string refreshToken) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.system.oauth.token"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"grant_type", "refresh_token"}, - {"refresh_token", refreshToken}, - }; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.system.oauth.token"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Models/AlipaySystemOauthTokenResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Models/AlipaySystemOauthTokenResponse.cs deleted file mode 100644 index 29aa6bb5..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/OAuth/Models/AlipaySystemOauthTokenResponse.cs +++ /dev/null @@ -1,57 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Base.OAuth.Models -{ - public class AlipaySystemOauthTokenResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("user_id")] - [Validation(Required=true)] - public string UserId { get; set; } - - [NameInMap("access_token")] - [Validation(Required=true)] - public string AccessToken { get; set; } - - [NameInMap("expires_in")] - [Validation(Required=true)] - public long ExpiresIn { get; set; } - - [NameInMap("refresh_token")] - [Validation(Required=true)] - public string RefreshToken { get; set; } - - [NameInMap("re_expires_in")] - [Validation(Required=true)] - public long ReExpiresIn { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Client.cs deleted file mode 100644 index 459dadd9..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Client.cs +++ /dev/null @@ -1,318 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Base.Qrcode.Models; - -namespace Alipay.EasySDK.Base.Qrcode -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayOpenAppQrcodeCreateResponse Create(string urlParam, string queryParam, string describe) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.app.qrcode.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"url_param", urlParam}, - {"query_param", queryParam}, - {"describe", describe}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.app.qrcode.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task CreateAsync(string urlParam, string queryParam, string describe) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.app.qrcode.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"url_param", urlParam}, - {"query_param", queryParam}, - {"describe", describe}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.app.qrcode.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.cs deleted file mode 100644 index 3302d3b5..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Base.Qrcode.Models -{ - public class AlipayOpenAppQrcodeCreateResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("qr_code_url")] - [Validation(Required=true)] - public string QrCodeUrl { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Client.cs deleted file mode 100644 index 51ec320d..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Client.cs +++ /dev/null @@ -1,324 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Base.Video.Models; - -namespace Alipay.EasySDK.Base.Video -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayOfflineMaterialImageUploadResponse Upload(string videoName, string videoFilePath) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 100000}, - {"readTimeout", 100000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.offline.material.image.upload"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"image_type", "mp4"}, - {"image_name", videoName}, - }; - Dictionary fileParams = new Dictionary - { - {"image_content", videoFilePath}, - }; - string boundary = this._kernel.GetRandomBoundary(); - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", this._kernel.ConcatStr("multipart/form-data;charset=utf-8;boundary=", boundary)}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams - )); - request_.Body = this._kernel.ToMultipartRequestBody(textParams, fileParams, boundary); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.offline.material.image.upload"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task UploadAsync(string videoName, string videoFilePath) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 100000}, - {"readTimeout", 100000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.offline.material.image.upload"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary - { - {"image_type", "mp4"}, - {"image_name", videoName}, - }; - Dictionary fileParams = new Dictionary - { - {"image_content", videoFilePath}, - }; - string boundary = this._kernel.GetRandomBoundary(); - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", this._kernel.ConcatStr("multipart/form-data;charset=utf-8;boundary=", boundary)}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams - )); - request_.Body = this._kernel.ToMultipartRequestBody(textParams, fileParams, boundary); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.offline.material.image.upload"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.cs deleted file mode 100644 index 1ccfcac1..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Base.Video.Models -{ - public class AlipayOfflineMaterialImageUploadResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("image_id")] - [Validation(Required=true)] - public string ImageId { get; set; } - - [NameInMap("image_url")] - [Validation(Required=true)] - public string ImageUrl { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Factory/Factory.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Factory/Factory.cs deleted file mode 100644 index f2b25b4d..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Factory/Factory.cs +++ /dev/null @@ -1,244 +0,0 @@ -using System; -using Alipay.EasySDK.Kernel; -using System.Reflection; - -namespace Alipay.EasySDK.Factory -{ - /// - /// 客户端工厂,用于快速配置和访问各种场景下的API Client - /// - /// 注:该Factory获取的Client不可储存重复使用,请每次均通过Factory完成调用 - /// - public static class Factory - { - public const string SDK_VERSION = "alipay-easysdk-net-2.1.0"; - - /// - /// 将一些初始化耗时较多的信息缓存在上下文中 - /// - private static Context context; - - /// - /// 设置客户端参数,只需设置一次,即可反复使用各种场景下的API Client - /// - /// 客户端参数对象 - public static void SetOptions(Config options) - { - context = new Context(options, SDK_VERSION); - } - - /// - /// 获取调用OpenAPI所需的客户端实例 - /// 本方法用于调用SDK扩展包中的API Client下的方法 - /// - /// 注:返回的实例不可重复使用,只可用于单次调用 - /// - /// 泛型参数 - /// API Client的类型对象 - /// client实例,用于发起单次调用 - public static T GetClient() - { - Type type = typeof(T); - ConstructorInfo constructor = type.GetConstructor(new Type[] { typeof(Client) }); - context.SdkVersion = GetSdkVersion(type); - return (T)constructor.Invoke(new object[] { new Client(context) }); - } - - private static string GetSdkVersion(Type client) - { - return context.SdkVersion + "-" + client.FullName - .Replace("EasySDK.", "") - .Replace(".Client", "") - .Replace(".", "-"); - } - - /// - /// 基础能力相关 - /// - public static class Base - { - /// - /// 获取图片相关API Client - /// - /// 图片相关API Client - public static EasySDK.Base.Image.Client Image() - { - return new EasySDK.Base.Image.Client(new Client(context)); - } - - /// - /// 获取视频相关API Client - /// - /// 视频相关API Client - public static EasySDK.Base.Video.Client Video() - { - return new EasySDK.Base.Video.Client(new Client(context)); - } - - /// - /// 获取OAuth认证相关API Client - /// - /// OAuth认证相关API Client - public static EasySDK.Base.OAuth.Client OAuth() - { - return new EasySDK.Base.OAuth.Client(new Client(context)); - } - - /// - /// 获取小程序二维码相关API Client - /// - /// 小程序二维码相关API Client - public static EasySDK.Base.Qrcode.Client Qrcode() - { - return new EasySDK.Base.Qrcode.Client(new Client(context)); - } - } - - /// - /// 营销能力相关 - /// - public static class Marketing - { - /// - /// 获取生活号相关API Client - /// - /// 生活号相关API Client - public static EasySDK.Marketing.OpenLife.Client OpenLife() - { - return new EasySDK.Marketing.OpenLife.Client(new Client(context)); - } - - /// - /// 获取支付宝卡包相关API Client - /// - /// 支付宝卡包相关API Client - public static EasySDK.Marketing.Pass.Client Pass() - { - return new EasySDK.Marketing.Pass.Client(new Client(context)); - } - - /// - /// 获取小程序模板消息相关API Client - /// - /// 小程序模板消息相关API Client - public static EasySDK.Marketing.TemplateMessage.Client TemplateMessage() - { - return new EasySDK.Marketing.TemplateMessage.Client(new Client(context)); - } - } - - /// - /// 会员能力相关 - /// - public static class Member - { - /// - /// 获取支付宝身份认证相关API Client - /// - /// 支付宝身份认证相关API Client - public static EasySDK.Member.Identification.Client Identification() - { - return new EasySDK.Member.Identification.Client(new Client(context)); - } - } - - /// - /// 支付能力相关 - /// - public static class Payment - { - /// - /// 获取支付通用API Client - /// - /// 支付通用API Client - public static EasySDK.Payment.Common.Client Common() - { - return new EasySDK.Payment.Common.Client(new Client(context)); - } - - /// - /// 获取当面付API Client - /// - /// 当面付API Client - public static EasySDK.Payment.FaceToFace.Client FaceToFace() - { - return new EasySDK.Payment.FaceToFace.Client(new Client(context)); - } - - /// - /// 获取花呗API Client - /// - /// 花呗API Client - public static EasySDK.Payment.Huabei.Client Huabei() - { - return new EasySDK.Payment.Huabei.Client(new Client(context)); - } - - /// - /// 获取手机APP支付API Client - /// - /// 手机APP支付API Client - public static EasySDK.Payment.App.Client App() - { - return new EasySDK.Payment.App.Client(new Client(context)); - } - - /// - /// 获取电脑网站支付API Client - /// - /// 电脑网站支付API - public static EasySDK.Payment.Page.Client Page() - { - return new EasySDK.Payment.Page.Client(new Client(context)); - } - - /// - /// 获取手机网站支付API Client - /// - /// 手机网站支付API - public static EasySDK.Payment.Wap.Client Wap() - { - return new EasySDK.Payment.Wap.Client(new Client(context)); - } - } - - /// - /// 安全能力相关 - /// - public static class Security - { - /// - /// 获取文本风险识别相关API Client - /// - /// 文本风险识别相关API Client - public static EasySDK.Security.TextRisk.Client TextRisk() - { - return new EasySDK.Security.TextRisk.Client(new Client(context)); - } - } - - /// - /// 辅助工具 - /// - public static class Util - { - /// - /// 获取OpenAPI通用接口,可通过自行拼装参数,调用几乎所有OpenAPI - /// - /// OpenAPI通用接口 - public static EasySDK.Util.Generic.Client Generic() - { - return new EasySDK.Util.Generic.Client(new Client(context)); - } - - /// - /// 获取AES128加解密相关API Client,常用于会员手机号的解密 - /// - /// AES128加解密相关API Client - public static EasySDK.Util.AES.Client AES() - { - return new EasySDK.Util.AES.Client(new Client(context)); - } - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Client.cs deleted file mode 100644 index eb8daab1..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Client.cs +++ /dev/null @@ -1,1832 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Marketing.OpenLife.Models; - -namespace Alipay.EasySDK.Marketing.OpenLife -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayOpenPublicMessageContentCreateResponse CreateImageTextContent(string title, string cover, string content, string contentComment, string ctype, string benefit, string extTags, string loginIds) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.content.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"title", title}, - {"cover", cover}, - {"content", content}, - {"could_comment", contentComment}, - {"ctype", ctype}, - {"benefit", benefit}, - {"ext_tags", extTags}, - {"login_ids", loginIds}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.message.content.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task CreateImageTextContentAsync(string title, string cover, string content, string contentComment, string ctype, string benefit, string extTags, string loginIds) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.content.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"title", title}, - {"cover", cover}, - {"content", content}, - {"could_comment", contentComment}, - {"ctype", ctype}, - {"benefit", benefit}, - {"ext_tags", extTags}, - {"login_ids", loginIds}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.message.content.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayOpenPublicMessageContentModifyResponse ModifyImageTextContent(string contentId, string title, string cover, string content, string couldComment, string ctype, string benefit, string extTags, string loginIds) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.content.modify"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"content_id", contentId}, - {"title", title}, - {"cover", cover}, - {"content", content}, - {"could_comment", couldComment}, - {"ctype", ctype}, - {"benefit", benefit}, - {"ext_tags", extTags}, - {"login_ids", loginIds}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.message.content.modify"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task ModifyImageTextContentAsync(string contentId, string title, string cover, string content, string couldComment, string ctype, string benefit, string extTags, string loginIds) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.content.modify"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"content_id", contentId}, - {"title", title}, - {"cover", cover}, - {"content", content}, - {"could_comment", couldComment}, - {"ctype", ctype}, - {"benefit", benefit}, - {"ext_tags", extTags}, - {"login_ids", loginIds}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.message.content.modify"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayOpenPublicMessageTotalSendResponse SendText(string text) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.total.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Text textObj = new Text - { - Title = "", - Content = text, - }; - Dictionary bizParams = new Dictionary - { - {"msg_type", "text"}, - {"text", textObj}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.message.total.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task SendTextAsync(string text) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.total.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Text textObj = new Text - { - Title = "", - Content = text, - }; - Dictionary bizParams = new Dictionary - { - {"msg_type", "text"}, - {"text", textObj}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.message.total.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayOpenPublicMessageTotalSendResponse SendImageText(List
articles) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.total.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"msg_type", "image-text"}, - {"articles", articles}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.message.total.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task SendImageTextAsync(List
articles) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.total.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"msg_type", "image-text"}, - {"articles", articles}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.message.total.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayOpenPublicMessageSingleSendResponse SendSingleMessage(string toUserId, Template template) - { - template.Validate(); - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.single.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"to_user_id", toUserId}, - {"template", template}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.message.single.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task SendSingleMessageAsync(string toUserId, Template template) - { - template.Validate(); - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.message.single.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"to_user_id", toUserId}, - {"template", template}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.message.single.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayOpenPublicLifeMsgRecallResponse RecallMessage(string messageId) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.life.msg.recall"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"message_id", messageId}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.life.msg.recall"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task RecallMessageAsync(string messageId) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.life.msg.recall"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"message_id", messageId}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.life.msg.recall"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayOpenPublicTemplateMessageIndustryModifyResponse SetIndustry(string primaryIndustryCode, string primaryIndustryName, string secondaryIndustryCode, string secondaryIndustryName) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.template.message.industry.modify"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"primary_industry_code", primaryIndustryCode}, - {"primary_industry_name", primaryIndustryName}, - {"secondary_industry_code", secondaryIndustryCode}, - {"secondary_industry_name", secondaryIndustryName}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.template.message.industry.modify"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task SetIndustryAsync(string primaryIndustryCode, string primaryIndustryName, string secondaryIndustryCode, string secondaryIndustryName) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.template.message.industry.modify"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"primary_industry_code", primaryIndustryCode}, - {"primary_industry_name", primaryIndustryName}, - {"secondary_industry_code", secondaryIndustryCode}, - {"secondary_industry_name", secondaryIndustryName}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.template.message.industry.modify"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayOpenPublicSettingCategoryQueryResponse GetIndustry() - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.setting.category.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.public.setting.category.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task GetIndustryAsync() - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.public.setting.category.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary(){}; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.public.setting.category.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.cs deleted file mode 100644 index ed7c8291..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.cs +++ /dev/null @@ -1,37 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class AlipayOpenPublicLifeMsgRecallResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.cs deleted file mode 100644 index d467d46c..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class AlipayOpenPublicMessageContentCreateResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("content_id")] - [Validation(Required=true)] - public string ContentId { get; set; } - - [NameInMap("content_url")] - [Validation(Required=true)] - public string ContentUrl { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.cs deleted file mode 100644 index db5f522d..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class AlipayOpenPublicMessageContentModifyResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("content_id")] - [Validation(Required=true)] - public string ContentId { get; set; } - - [NameInMap("content_url")] - [Validation(Required=true)] - public string ContentUrl { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.cs deleted file mode 100644 index d4ed1856..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.cs +++ /dev/null @@ -1,37 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class AlipayOpenPublicMessageSingleSendResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.cs deleted file mode 100644 index 2bdabe39..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class AlipayOpenPublicMessageTotalSendResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("message_id")] - [Validation(Required=true)] - public string MessageId { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.cs deleted file mode 100644 index bc13a7c2..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class AlipayOpenPublicSettingCategoryQueryResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("primary_category")] - [Validation(Required=true)] - public string PrimaryCategory { get; set; } - - [NameInMap("secondary_category")] - [Validation(Required=true)] - public string SecondaryCategory { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.cs deleted file mode 100644 index 6196ae91..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.cs +++ /dev/null @@ -1,37 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class AlipayOpenPublicTemplateMessageIndustryModifyResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Article.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Article.cs deleted file mode 100644 index f924d40c..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Article.cs +++ /dev/null @@ -1,34 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class Article : TeaModel { - [NameInMap("title")] - [Validation(Required=false)] - public string Title { get; set; } - - [NameInMap("desc")] - [Validation(Required=true)] - public string Desc { get; set; } - - [NameInMap("image_url")] - [Validation(Required=false)] - public string ImageUrl { get; set; } - - [NameInMap("url")] - [Validation(Required=true)] - public string Url { get; set; } - - [NameInMap("action_name")] - [Validation(Required=false)] - public string ActionName { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Context.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Context.cs deleted file mode 100644 index c3821dfb..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Context.cs +++ /dev/null @@ -1,42 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class Context : TeaModel { - [NameInMap("head_color")] - [Validation(Required=true)] - public string HeadColor { get; set; } - - [NameInMap("url")] - [Validation(Required=true)] - public string Url { get; set; } - - [NameInMap("action_name")] - [Validation(Required=true)] - public string ActionName { get; set; } - - [NameInMap("keyword1")] - [Validation(Required=false)] - public Keyword Keyword1 { get; set; } - - [NameInMap("keyword2")] - [Validation(Required=false)] - public Keyword Keyword2 { get; set; } - - [NameInMap("first")] - [Validation(Required=false)] - public Keyword First { get; set; } - - [NameInMap("remark")] - [Validation(Required=false)] - public Keyword Remark { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Keyword.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Keyword.cs deleted file mode 100644 index fc9ff0d3..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Keyword.cs +++ /dev/null @@ -1,22 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class Keyword : TeaModel { - [NameInMap("color")] - [Validation(Required=true)] - public string Color { get; set; } - - [NameInMap("value")] - [Validation(Required=true)] - public string Value { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Template.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Template.cs deleted file mode 100644 index 67c41981..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Template.cs +++ /dev/null @@ -1,22 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class Template : TeaModel { - [NameInMap("template_id")] - [Validation(Required=true)] - public string TemplateId { get; set; } - - [NameInMap("context")] - [Validation(Required=true)] - public Context Context { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Text.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Text.cs deleted file mode 100644 index df451488..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/OpenLife/Models/Text.cs +++ /dev/null @@ -1,22 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.OpenLife.Models -{ - public class Text : TeaModel { - [NameInMap("title")] - [Validation(Required=true)] - public string Title { get; set; } - - [NameInMap("content")] - [Validation(Required=true)] - public string Content { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Client.cs deleted file mode 100644 index a8d3a45e..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Client.cs +++ /dev/null @@ -1,964 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Marketing.Pass.Models; - -namespace Alipay.EasySDK.Marketing.Pass -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayPassTemplateAddResponse CreateTemplate(string uniqueId, string tplContent) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.template.add"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"unique_id", uniqueId}, - {"tpl_content", tplContent}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.pass.template.add"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task CreateTemplateAsync(string uniqueId, string tplContent) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.template.add"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"unique_id", uniqueId}, - {"tpl_content", tplContent}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.pass.template.add"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayPassTemplateUpdateResponse UpdateTemplate(string tplId, string tplContent) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.template.update"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"tpl_id", tplId}, - {"tpl_content", tplContent}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.pass.template.update"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task UpdateTemplateAsync(string tplId, string tplContent) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.template.update"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"tpl_id", tplId}, - {"tpl_content", tplContent}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.pass.template.update"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayPassInstanceAddResponse AddInstance(string tplId, string tplParams, string recognitionType, string recognitionInfo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.instance.add"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"tpl_id", tplId}, - {"tpl_params", tplParams}, - {"recognition_type", recognitionType}, - {"recognition_info", recognitionInfo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.pass.instance.add"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task AddInstanceAsync(string tplId, string tplParams, string recognitionType, string recognitionInfo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.instance.add"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"tpl_id", tplId}, - {"tpl_params", tplParams}, - {"recognition_type", recognitionType}, - {"recognition_info", recognitionInfo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.pass.instance.add"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayPassInstanceUpdateResponse UpdateInstance(string serialNumber, string channelId, string tplParams, string status, string verifyCode, string verifyType) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.instance.update"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"serial_number", serialNumber}, - {"channel_id", channelId}, - {"tpl_params", tplParams}, - {"status", status}, - {"verify_code", verifyCode}, - {"verify_type", verifyType}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.pass.instance.update"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task UpdateInstanceAsync(string serialNumber, string channelId, string tplParams, string status, string verifyCode, string verifyType) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.pass.instance.update"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"serial_number", serialNumber}, - {"channel_id", channelId}, - {"tpl_params", tplParams}, - {"status", status}, - {"verify_code", verifyCode}, - {"verify_type", verifyType}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.pass.instance.update"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceAddResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceAddResponse.cs deleted file mode 100644 index 5fcfa760..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceAddResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.Pass.Models -{ - public class AlipayPassInstanceAddResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("success")] - [Validation(Required=true)] - public bool? Success { get; set; } - - [NameInMap("result")] - [Validation(Required=true)] - public string Result { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.cs deleted file mode 100644 index c093297a..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.Pass.Models -{ - public class AlipayPassInstanceUpdateResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("success")] - [Validation(Required=true)] - public bool? Success { get; set; } - - [NameInMap("result")] - [Validation(Required=true)] - public string Result { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateAddResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateAddResponse.cs deleted file mode 100644 index b245df3f..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateAddResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.Pass.Models -{ - public class AlipayPassTemplateAddResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("success")] - [Validation(Required=true)] - public bool? Success { get; set; } - - [NameInMap("result")] - [Validation(Required=true)] - public string Result { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.cs deleted file mode 100644 index e02c33f3..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.Pass.Models -{ - public class AlipayPassTemplateUpdateResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("success")] - [Validation(Required=true)] - public bool? Success { get; set; } - - [NameInMap("result")] - [Validation(Required=true)] - public string Result { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Client.cs deleted file mode 100644 index fac3c577..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Client.cs +++ /dev/null @@ -1,322 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Marketing.TemplateMessage.Models; - -namespace Alipay.EasySDK.Marketing.TemplateMessage -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayOpenAppMiniTemplatemessageSendResponse Send(string toUserId, string formId, string userTemplateId, string page, string data) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.app.mini.templatemessage.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"to_user_id", toUserId}, - {"form_id", formId}, - {"user_template_id", userTemplateId}, - {"page", page}, - {"data", data}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.open.app.mini.templatemessage.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task SendAsync(string toUserId, string formId, string userTemplateId, string page, string data) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.open.app.mini.templatemessage.send"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"to_user_id", toUserId}, - {"form_id", formId}, - {"user_template_id", userTemplateId}, - {"page", page}, - {"data", data}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.open.app.mini.templatemessage.send"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.cs deleted file mode 100644 index 8cc4b9d0..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.cs +++ /dev/null @@ -1,37 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Marketing.TemplateMessage.Models -{ - public class AlipayOpenAppMiniTemplatemessageSendResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Client.cs deleted file mode 100644 index 7e44a5fb..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Client.cs +++ /dev/null @@ -1,562 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Member.Identification.Models; - -namespace Alipay.EasySDK.Member.Identification -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayUserCertifyOpenInitializeResponse Init(string outerOrderNo, string bizCode, IdentityParam identityParam, MerchantConfig merchantConfig) - { - identityParam.Validate(); - merchantConfig.Validate(); - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.user.certify.open.initialize"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"outer_order_no", outerOrderNo}, - {"biz_code", bizCode}, - {"identity_param", identityParam}, - {"merchant_config", merchantConfig}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.user.certify.open.initialize"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task InitAsync(string outerOrderNo, string bizCode, IdentityParam identityParam, MerchantConfig merchantConfig) - { - identityParam.Validate(); - merchantConfig.Validate(); - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.user.certify.open.initialize"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"outer_order_no", outerOrderNo}, - {"biz_code", bizCode}, - {"identity_param", identityParam}, - {"merchant_config", merchantConfig}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.user.certify.open.initialize"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayUserCertifyOpenQueryResponse Query(string certifyId) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.user.certify.open.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"certify_id", certifyId}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.user.certify.open.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task QueryAsync(string certifyId) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.user.certify.open.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"certify_id", certifyId}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.user.certify.open.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayUserCertifyOpenCertifyResponse Certify(string certifyId) - { - Dictionary systemParams = new Dictionary - { - {"method", "alipay.user.certify.open.certify"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"certify_id", certifyId}, - }; - Dictionary textParams = new Dictionary(){}; - string sign = this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey")); - Dictionary response = new Dictionary - { - {"body", this._kernel.GeneratePage("GET", systemParams, bizParams, textParams, sign)}, - }; - return TeaModel.ToObject(response); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.cs deleted file mode 100644 index a0fe1f7c..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.cs +++ /dev/null @@ -1,21 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Member.Identification.Models -{ - public class AlipayUserCertifyOpenCertifyResponse : TeaModel { - /// - /// 认证服务请求地址 - /// - [NameInMap("body")] - [Validation(Required=true)] - public string Body { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.cs deleted file mode 100644 index e9d55fbf..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Member.Identification.Models -{ - public class AlipayUserCertifyOpenInitializeResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("certify_id")] - [Validation(Required=true)] - public string CertifyId { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.cs deleted file mode 100644 index 92a2bab4..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.cs +++ /dev/null @@ -1,49 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Member.Identification.Models -{ - public class AlipayUserCertifyOpenQueryResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("passed")] - [Validation(Required=true)] - public string Passed { get; set; } - - [NameInMap("identity_info")] - [Validation(Required=true)] - public string IdentityInfo { get; set; } - - [NameInMap("material_info")] - [Validation(Required=true)] - public string MaterialInfo { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/IdentityParam.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/IdentityParam.cs deleted file mode 100644 index a5e70dba..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/IdentityParam.cs +++ /dev/null @@ -1,30 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Member.Identification.Models -{ - public class IdentityParam : TeaModel { - [NameInMap("identity_type")] - [Validation(Required=true)] - public string IdentityType { get; set; } - - [NameInMap("cert_type")] - [Validation(Required=true)] - public string CertType { get; set; } - - [NameInMap("cert_name")] - [Validation(Required=true)] - public string CertName { get; set; } - - [NameInMap("cert_no")] - [Validation(Required=true)] - public string CertNo { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/MerchantConfig.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/MerchantConfig.cs deleted file mode 100644 index 6ffe99bf..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Member/Identification/Models/MerchantConfig.cs +++ /dev/null @@ -1,18 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Member.Identification.Models -{ - public class MerchantConfig : TeaModel { - [NameInMap("return_url")] - [Validation(Required=true)] - public string ReturnUrl { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Client.cs deleted file mode 100644 index 0d9fcbc3..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Client.cs +++ /dev/null @@ -1,135 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Payment.App.Models; - -namespace Alipay.EasySDK.Payment.App -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - - public AlipayTradeAppPayResponse Pay(string subject, string outTradeNo, string totalAmount) - { - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.app.pay"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - }; - Dictionary textParams = new Dictionary(){}; - string sign = this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey")); - Dictionary response = new Dictionary - { - {"body", this._kernel.GenerateOrderString(systemParams, bizParams, textParams, sign)}, - }; - return TeaModel.ToObject(response); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Models/AlipayTradeAppPayResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Models/AlipayTradeAppPayResponse.cs deleted file mode 100644 index d5a4d4d6..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/App/Models/AlipayTradeAppPayResponse.cs +++ /dev/null @@ -1,21 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.App.Models -{ - public class AlipayTradeAppPayResponse : TeaModel { - /// - /// 订单信息,字符串形式 - /// - [NameInMap("body")] - [Validation(Required=true)] - public string Body { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Client.cs deleted file mode 100644 index 7b75c714..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Client.cs +++ /dev/null @@ -1,1598 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Payment.Common.Models; - -namespace Alipay.EasySDK.Payment.Common -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayTradeCreateResponse Create(string subject, string outTradeNo, string totalAmount, string buyerId) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"buyer_id", buyerId}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task CreateAsync(string subject, string outTradeNo, string totalAmount, string buyerId) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"buyer_id", buyerId}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayTradeQueryResponse Query(string outTradeNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task QueryAsync(string outTradeNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayTradeRefundResponse Refund(string outTradeNo, string refundAmount) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.refund"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - {"refund_amount", refundAmount}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.refund"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task RefundAsync(string outTradeNo, string refundAmount) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.refund"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - {"refund_amount", refundAmount}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.refund"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayTradeCloseResponse Close(string outTradeNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.close"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.close"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task CloseAsync(string outTradeNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.close"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.close"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayTradeCancelResponse Cancel(string outTradeNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.cancel"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.cancel"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task CancelAsync(string outTradeNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.cancel"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.cancel"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayTradeFastpayRefundQueryResponse QueryRefund(string outTradeNo, string outRequestNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.fastpay.refund.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - {"out_request_no", outRequestNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.fastpay.refund.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task QueryRefundAsync(string outTradeNo, string outRequestNo) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.fastpay.refund.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"out_trade_no", outTradeNo}, - {"out_request_no", outRequestNo}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.fastpay.refund.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse DownloadBill(string billType, string billDate) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.data.dataservice.bill.downloadurl.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"bill_type", billType}, - {"bill_date", billDate}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.data.dataservice.bill.downloadurl.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task DownloadBillAsync(string billType, string billDate) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.data.dataservice.bill.downloadurl.query"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"bill_type", billType}, - {"bill_date", billDate}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.data.dataservice.bill.downloadurl.query"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public bool? VerifyNotify(Dictionary parameters) - { - if (this._kernel.IsCertMode()) - { - return this._kernel.VerifyParams(parameters, this._kernel.ExtractAlipayPublicKey("")); - } - else - { - return this._kernel.VerifyParams(parameters, this._kernel.GetConfig("alipayPublicKey")); - } - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.cs deleted file mode 100644 index ef8b3034..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class AlipayDataDataserviceBillDownloadurlQueryResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("bill_download_url")] - [Validation(Required=true)] - public string BillDownloadUrl { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCancelResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCancelResponse.cs deleted file mode 100644 index f85409a0..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCancelResponse.cs +++ /dev/null @@ -1,61 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class AlipayTradeCancelResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("retry_flag")] - [Validation(Required=true)] - public string RetryFlag { get; set; } - - [NameInMap("action")] - [Validation(Required=true)] - public string Action { get; set; } - - [NameInMap("gmt_refund_pay")] - [Validation(Required=true)] - public string GmtRefundPay { get; set; } - - [NameInMap("refund_settlement_id")] - [Validation(Required=true)] - public string RefundSettlementId { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCloseResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCloseResponse.cs deleted file mode 100644 index 45407269..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCloseResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class AlipayTradeCloseResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCreateResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCreateResponse.cs deleted file mode 100644 index 22efe957..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeCreateResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class AlipayTradeCreateResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.cs deleted file mode 100644 index db5f6438..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.cs +++ /dev/null @@ -1,109 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class AlipayTradeFastpayRefundQueryResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("error_code")] - [Validation(Required=true)] - public string ErrorCode { get; set; } - - [NameInMap("gmt_refund_pay")] - [Validation(Required=true)] - public string GmtRefundPay { get; set; } - - [NameInMap("industry_sepc_detail")] - [Validation(Required=true)] - public string IndustrySepcDetail { get; set; } - - [NameInMap("out_request_no")] - [Validation(Required=true)] - public string OutRequestNo { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("present_refund_buyer_amount")] - [Validation(Required=true)] - public string PresentRefundBuyerAmount { get; set; } - - [NameInMap("present_refund_discount_amount")] - [Validation(Required=true)] - public string PresentRefundDiscountAmount { get; set; } - - [NameInMap("present_refund_mdiscount_amount")] - [Validation(Required=true)] - public string PresentRefundMdiscountAmount { get; set; } - - [NameInMap("refund_amount")] - [Validation(Required=true)] - public string RefundAmount { get; set; } - - [NameInMap("refund_charge_amount")] - [Validation(Required=true)] - public string RefundChargeAmount { get; set; } - - [NameInMap("refund_detail_item_list")] - [Validation(Required=true)] - public List RefundDetailItemList { get; set; } - - [NameInMap("refund_reason")] - [Validation(Required=true)] - public string RefundReason { get; set; } - - [NameInMap("refund_royaltys")] - [Validation(Required=true)] - public List RefundRoyaltys { get; set; } - - [NameInMap("refund_settlement_id")] - [Validation(Required=true)] - public string RefundSettlementId { get; set; } - - [NameInMap("refund_status")] - [Validation(Required=true)] - public string RefundStatus { get; set; } - - [NameInMap("send_back_fee")] - [Validation(Required=true)] - public string SendBackFee { get; set; } - - [NameInMap("total_amount")] - [Validation(Required=true)] - public string TotalAmount { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeQueryResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeQueryResponse.cs deleted file mode 100644 index 1cb27c30..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeQueryResponse.cs +++ /dev/null @@ -1,177 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class AlipayTradeQueryResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("buyer_logon_id")] - [Validation(Required=true)] - public string BuyerLogonId { get; set; } - - [NameInMap("trade_status")] - [Validation(Required=true)] - public string TradeStatus { get; set; } - - [NameInMap("total_amount")] - [Validation(Required=true)] - public string TotalAmount { get; set; } - - [NameInMap("trans_currency")] - [Validation(Required=true)] - public string TransCurrency { get; set; } - - [NameInMap("settle_currency")] - [Validation(Required=true)] - public string SettleCurrency { get; set; } - - [NameInMap("settle_amount")] - [Validation(Required=true)] - public string SettleAmount { get; set; } - - [NameInMap("pay_currency")] - [Validation(Required=true)] - public string PayCurrency { get; set; } - - [NameInMap("pay_amount")] - [Validation(Required=true)] - public string PayAmount { get; set; } - - [NameInMap("settle_trans_rate")] - [Validation(Required=true)] - public string SettleTransRate { get; set; } - - [NameInMap("trans_pay_rate")] - [Validation(Required=true)] - public string TransPayRate { get; set; } - - [NameInMap("buyer_pay_amount")] - [Validation(Required=true)] - public string BuyerPayAmount { get; set; } - - [NameInMap("point_amount")] - [Validation(Required=true)] - public string PointAmount { get; set; } - - [NameInMap("invoice_amount")] - [Validation(Required=true)] - public string InvoiceAmount { get; set; } - - [NameInMap("send_pay_date")] - [Validation(Required=true)] - public string SendPayDate { get; set; } - - [NameInMap("receipt_amount")] - [Validation(Required=true)] - public string ReceiptAmount { get; set; } - - [NameInMap("store_id")] - [Validation(Required=true)] - public string StoreId { get; set; } - - [NameInMap("terminal_id")] - [Validation(Required=true)] - public string TerminalId { get; set; } - - [NameInMap("fund_bill_list")] - [Validation(Required=true)] - public List FundBillList { get; set; } - - [NameInMap("store_name")] - [Validation(Required=true)] - public string StoreName { get; set; } - - [NameInMap("buyer_user_id")] - [Validation(Required=true)] - public string BuyerUserId { get; set; } - - [NameInMap("charge_amount")] - [Validation(Required=true)] - public string ChargeAmount { get; set; } - - [NameInMap("charge_flags")] - [Validation(Required=true)] - public string ChargeFlags { get; set; } - - [NameInMap("settlement_id")] - [Validation(Required=true)] - public string SettlementId { get; set; } - - [NameInMap("trade_settle_info")] - [Validation(Required=true)] - public List TradeSettleInfo { get; set; } - - [NameInMap("auth_trade_pay_mode")] - [Validation(Required=true)] - public string AuthTradePayMode { get; set; } - - [NameInMap("buyer_user_type")] - [Validation(Required=true)] - public string BuyerUserType { get; set; } - - [NameInMap("mdiscount_amount")] - [Validation(Required=true)] - public string MdiscountAmount { get; set; } - - [NameInMap("discount_amount")] - [Validation(Required=true)] - public string DiscountAmount { get; set; } - - [NameInMap("buyer_user_name")] - [Validation(Required=true)] - public string BuyerUserName { get; set; } - - [NameInMap("subject")] - [Validation(Required=true)] - public string Subject { get; set; } - - [NameInMap("body")] - [Validation(Required=true)] - public string Body { get; set; } - - [NameInMap("alipay_sub_merchant_id")] - [Validation(Required=true)] - public string AlipaySubMerchantId { get; set; } - - [NameInMap("ext_infos")] - [Validation(Required=true)] - public string ExtInfos { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeRefundResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeRefundResponse.cs deleted file mode 100644 index 8d850be0..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/AlipayTradeRefundResponse.cs +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class AlipayTradeRefundResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("buyer_logon_id")] - [Validation(Required=true)] - public string BuyerLogonId { get; set; } - - [NameInMap("fund_change")] - [Validation(Required=true)] - public string FundChange { get; set; } - - [NameInMap("refund_fee")] - [Validation(Required=true)] - public string RefundFee { get; set; } - - [NameInMap("refund_currency")] - [Validation(Required=true)] - public string RefundCurrency { get; set; } - - [NameInMap("gmt_refund_pay")] - [Validation(Required=true)] - public string GmtRefundPay { get; set; } - - [NameInMap("refund_detail_item_list")] - [Validation(Required=true)] - public List RefundDetailItemList { get; set; } - - [NameInMap("store_name")] - [Validation(Required=true)] - public string StoreName { get; set; } - - [NameInMap("buyer_user_id")] - [Validation(Required=true)] - public string BuyerUserId { get; set; } - - [NameInMap("refund_preset_paytool_list")] - [Validation(Required=true)] - public List RefundPresetPaytoolList { get; set; } - - [NameInMap("refund_settlement_id")] - [Validation(Required=true)] - public string RefundSettlementId { get; set; } - - [NameInMap("present_refund_buyer_amount")] - [Validation(Required=true)] - public string PresentRefundBuyerAmount { get; set; } - - [NameInMap("present_refund_discount_amount")] - [Validation(Required=true)] - public string PresentRefundDiscountAmount { get; set; } - - [NameInMap("present_refund_mdiscount_amount")] - [Validation(Required=true)] - public string PresentRefundMdiscountAmount { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/PresetPayToolInfo.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/PresetPayToolInfo.cs deleted file mode 100644 index d8156802..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/PresetPayToolInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class PresetPayToolInfo : TeaModel { - [NameInMap("amount")] - [Validation(Required=true)] - public List Amount { get; set; } - - [NameInMap("assert_type_code")] - [Validation(Required=true)] - public string AssertTypeCode { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/RefundRoyaltyResult.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/RefundRoyaltyResult.cs deleted file mode 100644 index 2dd8a308..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/RefundRoyaltyResult.cs +++ /dev/null @@ -1,42 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class RefundRoyaltyResult : TeaModel { - [NameInMap("refund_amount")] - [Validation(Required=true)] - public string RefundAmount { get; set; } - - [NameInMap("royalty_type")] - [Validation(Required=true)] - public string RoyaltyType { get; set; } - - [NameInMap("result_code")] - [Validation(Required=true)] - public string ResultCode { get; set; } - - [NameInMap("trans_out")] - [Validation(Required=true)] - public string TransOut { get; set; } - - [NameInMap("trans_out_email")] - [Validation(Required=true)] - public string TransOutEmail { get; set; } - - [NameInMap("trans_in")] - [Validation(Required=true)] - public string TransIn { get; set; } - - [NameInMap("trans_in_email")] - [Validation(Required=true)] - public string TransInEmail { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeFundBill.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeFundBill.cs deleted file mode 100644 index 08084bc6..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeFundBill.cs +++ /dev/null @@ -1,34 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class TradeFundBill : TeaModel { - [NameInMap("fund_channel")] - [Validation(Required=true)] - public string FundChannel { get; set; } - - [NameInMap("bank_code")] - [Validation(Required=true)] - public string BankCode { get; set; } - - [NameInMap("amount")] - [Validation(Required=true)] - public string Amount { get; set; } - - [NameInMap("real_amount")] - [Validation(Required=true)] - public string RealAmount { get; set; } - - [NameInMap("fund_type")] - [Validation(Required=true)] - public string FundType { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleDetail.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleDetail.cs deleted file mode 100644 index 375e7c68..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleDetail.cs +++ /dev/null @@ -1,38 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class TradeSettleDetail : TeaModel { - [NameInMap("operation_type")] - [Validation(Required=true)] - public string OperationType { get; set; } - - [NameInMap("operation_serial_no")] - [Validation(Required=true)] - public string OperationSerial_no { get; set; } - - [NameInMap("operation_dt")] - [Validation(Required=true)] - public string OperationDt { get; set; } - - [NameInMap("trans_out")] - [Validation(Required=true)] - public string TransOut { get; set; } - - [NameInMap("trans_in")] - [Validation(Required=true)] - public string TransIn { get; set; } - - [NameInMap("amount")] - [Validation(Required=true)] - public string Amount { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleInfo.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleInfo.cs deleted file mode 100644 index 31fbef4c..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Common/Models/TradeSettleInfo.cs +++ /dev/null @@ -1,18 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Common.Models -{ - public class TradeSettleInfo : TeaModel { - [NameInMap("trade_settle_detail_list")] - [Validation(Required=true)] - public List TradeSettleDetailList { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Client.cs deleted file mode 100644 index 3865d4b6..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Client.cs +++ /dev/null @@ -1,536 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Payment.FaceToFace.Models; - -namespace Alipay.EasySDK.Payment.FaceToFace -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayTradePayResponse Pay(string subject, string outTradeNo, string totalAmount, string authCode) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.pay"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"auth_code", authCode}, - {"scene", "bar_code"}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.pay"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task PayAsync(string subject, string outTradeNo, string totalAmount, string authCode) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.pay"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"auth_code", authCode}, - {"scene", "bar_code"}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.pay"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public AlipayTradePrecreateResponse PreCreate(string subject, string outTradeNo, string totalAmount) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.precreate"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.precreate"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task PreCreateAsync(string subject, string outTradeNo, string totalAmount) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.precreate"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.precreate"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePayResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePayResponse.cs deleted file mode 100644 index 32aa8c98..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePayResponse.cs +++ /dev/null @@ -1,165 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.FaceToFace.Models -{ - public class AlipayTradePayResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("buyer_logon_id")] - [Validation(Required=true)] - public string BuyerLogonId { get; set; } - - [NameInMap("settle_amount")] - [Validation(Required=true)] - public string SettleAmount { get; set; } - - [NameInMap("pay_currency")] - [Validation(Required=true)] - public string PayCurrency { get; set; } - - [NameInMap("pay_amount")] - [Validation(Required=true)] - public string PayAmount { get; set; } - - [NameInMap("settle_trans_rate")] - [Validation(Required=true)] - public string SettleTransRate { get; set; } - - [NameInMap("trans_pay_rate")] - [Validation(Required=true)] - public string TransPayRate { get; set; } - - [NameInMap("total_amount")] - [Validation(Required=true)] - public string TotalAmount { get; set; } - - [NameInMap("trans_currency")] - [Validation(Required=true)] - public string TransCurrency { get; set; } - - [NameInMap("settle_currency")] - [Validation(Required=true)] - public string SettleCurrency { get; set; } - - [NameInMap("receipt_amount")] - [Validation(Required=true)] - public string ReceiptAmount { get; set; } - - [NameInMap("buyer_pay_amount")] - [Validation(Required=true)] - public string BuyerPayAmount { get; set; } - - [NameInMap("point_amount")] - [Validation(Required=true)] - public string PointAmount { get; set; } - - [NameInMap("invoice_amount")] - [Validation(Required=true)] - public string InvoiceAmount { get; set; } - - [NameInMap("gmt_payment")] - [Validation(Required=true)] - public string GmtPayment { get; set; } - - [NameInMap("fund_bill_list")] - [Validation(Required=true)] - public List FundBillList { get; set; } - - [NameInMap("card_balance")] - [Validation(Required=true)] - public string CardBalance { get; set; } - - [NameInMap("store_name")] - [Validation(Required=true)] - public string StoreName { get; set; } - - [NameInMap("buyer_user_id")] - [Validation(Required=true)] - public string BuyerUserId { get; set; } - - [NameInMap("discount_goods_detail")] - [Validation(Required=true)] - public string DiscountGoodsDetail { get; set; } - - [NameInMap("voucher_detail_list")] - [Validation(Required=true)] - public List VoucherDetailList { get; set; } - - [NameInMap("advance_amount")] - [Validation(Required=true)] - public string AdvanceAmount { get; set; } - - [NameInMap("auth_trade_pay_mode")] - [Validation(Required=true)] - public string AuthTradePayMode { get; set; } - - [NameInMap("charge_amount")] - [Validation(Required=true)] - public string ChargeAmount { get; set; } - - [NameInMap("charge_flags")] - [Validation(Required=true)] - public string ChargeFlags { get; set; } - - [NameInMap("settlement_id")] - [Validation(Required=true)] - public string SettlementId { get; set; } - - [NameInMap("business_params")] - [Validation(Required=true)] - public string BusinessParams { get; set; } - - [NameInMap("buyer_user_type")] - [Validation(Required=true)] - public string BuyerUserType { get; set; } - - [NameInMap("mdiscount_amount")] - [Validation(Required=true)] - public string MdiscountAmount { get; set; } - - [NameInMap("discount_amount")] - [Validation(Required=true)] - public string DiscountAmount { get; set; } - - [NameInMap("buyer_user_name")] - [Validation(Required=true)] - public string BuyerUserName { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.cs deleted file mode 100644 index a819a288..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.FaceToFace.Models -{ - public class AlipayTradePrecreateResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("qr_code")] - [Validation(Required=true)] - public string QrCode { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/TradeFundBill.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/TradeFundBill.cs deleted file mode 100644 index 6d0ea18b..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/TradeFundBill.cs +++ /dev/null @@ -1,30 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.FaceToFace.Models -{ - public class TradeFundBill : TeaModel { - [NameInMap("fund_channel")] - [Validation(Required=true)] - public string FundChannel { get; set; } - - [NameInMap("bank_code")] - [Validation(Required=true)] - public string BankCode { get; set; } - - [NameInMap("amount")] - [Validation(Required=true)] - public string Amount { get; set; } - - [NameInMap("real_amount")] - [Validation(Required=true)] - public string RealAmount { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/VoucherDetail.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/VoucherDetail.cs deleted file mode 100644 index d2ba1773..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/FaceToFace/Models/VoucherDetail.cs +++ /dev/null @@ -1,58 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.FaceToFace.Models -{ - public class VoucherDetail : TeaModel { - [NameInMap("id")] - [Validation(Required=true)] - public string Id { get; set; } - - [NameInMap("name")] - [Validation(Required=true)] - public string Name { get; set; } - - [NameInMap("type")] - [Validation(Required=true)] - public string Type { get; set; } - - [NameInMap("amount")] - [Validation(Required=true)] - public string Amount { get; set; } - - [NameInMap("merchant_contribute")] - [Validation(Required=true)] - public string MerchantContribute { get; set; } - - [NameInMap("other_contribute")] - [Validation(Required=true)] - public string OtherContribute { get; set; } - - [NameInMap("memo")] - [Validation(Required=true)] - public string Memo { get; set; } - - [NameInMap("template_id")] - [Validation(Required=true)] - public string TemplateId { get; set; } - - [NameInMap("purchase_buyer_contribute")] - [Validation(Required=true)] - public string PurchaseBuyerContribute { get; set; } - - [NameInMap("purchase_merchant_contribute")] - [Validation(Required=true)] - public string PurchaseMerchantContribute { get; set; } - - [NameInMap("purchase_ant_contribute")] - [Validation(Required=true)] - public string PurchaseAntContribute { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Client.cs deleted file mode 100644 index 34cbff99..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Client.cs +++ /dev/null @@ -1,324 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Payment.Huabei.Models; - -namespace Alipay.EasySDK.Payment.Huabei -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayTradeCreateResponse Create(string subject, string outTradeNo, string totalAmount, string buyerId, HuabeiConfig extendParams) - { - extendParams.Validate(); - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"buyer_id", buyerId}, - {"extend_params", extendParams}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.trade.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task CreateAsync(string subject, string outTradeNo, string totalAmount, string buyerId, HuabeiConfig extendParams) - { - extendParams.Validate(); - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.create"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"buyer_id", buyerId}, - {"extend_params", extendParams}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.trade.create"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/AlipayTradeCreateResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/AlipayTradeCreateResponse.cs deleted file mode 100644 index 537bd490..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/AlipayTradeCreateResponse.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Huabei.Models -{ - public class AlipayTradeCreateResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("out_trade_no")] - [Validation(Required=true)] - public string OutTradeNo { get; set; } - - [NameInMap("trade_no")] - [Validation(Required=true)] - public string TradeNo { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/HuabeiConfig.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/HuabeiConfig.cs deleted file mode 100644 index ddc73b76..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Huabei/Models/HuabeiConfig.cs +++ /dev/null @@ -1,22 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Huabei.Models -{ - public class HuabeiConfig : TeaModel { - [NameInMap("hb_fq_num")] - [Validation(Required=true)] - public string HbFqNum { get; set; } - - [NameInMap("hb_fq_seller_percent")] - [Validation(Required=true)] - public string HbFqSellerPercent { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Client.cs deleted file mode 100644 index fe1470ac..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Client.cs +++ /dev/null @@ -1,139 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Payment.Page.Models; - -namespace Alipay.EasySDK.Payment.Page -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - - public AlipayTradePagePayResponse Pay(string subject, string outTradeNo, string totalAmount, string returnUrl) - { - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.page.pay"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"product_code", "FAST_INSTANT_TRADE_PAY"}, - }; - Dictionary textParams = new Dictionary - { - {"return_url", returnUrl}, - }; - string sign = this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey")); - Dictionary response = new Dictionary - { - {"body", this._kernel.GeneratePage("POST", systemParams, bizParams, textParams, sign)}, - }; - return TeaModel.ToObject(response); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Models/AlipayTradePagePayResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Models/AlipayTradePagePayResponse.cs deleted file mode 100644 index 70f4661d..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Page/Models/AlipayTradePagePayResponse.cs +++ /dev/null @@ -1,21 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Page.Models -{ - public class AlipayTradePagePayResponse : TeaModel { - /// - /// 订单信息,Form表单形式 - /// - [NameInMap("body")] - [Validation(Required=true)] - public string Body { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Client.cs deleted file mode 100644 index cbd631e5..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Client.cs +++ /dev/null @@ -1,140 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Payment.Wap.Models; - -namespace Alipay.EasySDK.Payment.Wap -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - - public AlipayTradeWapPayResponse Pay(string subject, string outTradeNo, string totalAmount, string quitUrl, string returnUrl) - { - Dictionary systemParams = new Dictionary - { - {"method", "alipay.trade.wap.pay"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"subject", subject}, - {"out_trade_no", outTradeNo}, - {"total_amount", totalAmount}, - {"quit_url", quitUrl}, - {"product_code", "QUICK_WAP_WAY"}, - }; - Dictionary textParams = new Dictionary - { - {"return_url", returnUrl}, - }; - string sign = this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey")); - Dictionary response = new Dictionary - { - {"body", this._kernel.GeneratePage("POST", systemParams, bizParams, textParams, sign)}, - }; - return TeaModel.ToObject(response); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Models/AlipayTradeWapPayResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Models/AlipayTradeWapPayResponse.cs deleted file mode 100644 index d1351ccd..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Payment/Wap/Models/AlipayTradeWapPayResponse.cs +++ /dev/null @@ -1,21 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Payment.Wap.Models -{ - public class AlipayTradeWapPayResponse : TeaModel { - /// - /// 订单信息,Form表单形式 - /// - [NameInMap("body")] - [Validation(Required=true)] - public string Body { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Client.cs deleted file mode 100644 index dae3a749..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Client.cs +++ /dev/null @@ -1,314 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Security.TextRisk.Models; - -namespace Alipay.EasySDK.Security.TextRisk -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipaySecurityRiskContentDetectResponse Detect(string content) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.security.risk.content.detect"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"content", content}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, "alipay.security.risk.content.detect"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task DetectAsync(string content) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", "alipay.security.risk.content.detect"}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - Dictionary bizParams = new Dictionary - { - {"content", content}, - }; - Dictionary textParams = new Dictionary(){}; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, "alipay.security.risk.content.detect"); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.cs deleted file mode 100644 index 9be40fd4..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.cs +++ /dev/null @@ -1,49 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Security.TextRisk.Models -{ - public class AlipaySecurityRiskContentDetectResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - [NameInMap("action")] - [Validation(Required=true)] - public string Action { get; set; } - - [NameInMap("keywords")] - [Validation(Required=true)] - public List Keywords { get; set; } - - [NameInMap("unique_id")] - [Validation(Required=true)] - public string UniqueId { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/AES/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/AES/Client.cs deleted file mode 100644 index 883dbe2a..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/AES/Client.cs +++ /dev/null @@ -1,114 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - - -namespace Alipay.EasySDK.Util.AES -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - - public string Decrypt(string cipherText) - { - return this._kernel.AesDecrypt(cipherText, this._kernel.GetConfig("encryptKey")); - } - - public string Encrypt(string plainText) - { - return this._kernel.AesEncrypt(plainText, this._kernel.GetConfig("encryptKey")); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Client.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Client.cs deleted file mode 100644 index 4bed55fd..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Client.cs +++ /dev/null @@ -1,304 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Tea; -using Tea.Utils; - -using Alipay.EasySDK.Util.Generic.Models; - -namespace Alipay.EasySDK.Util.Generic -{ - public class Client - { - protected Alipay.EasySDK.Kernel.Client _kernel; - - public Client(Alipay.EasySDK.Kernel.Client kernel) - { - this._kernel = kernel; - } - - public AlipayOpenApiGenericResponse Execute(string method, Dictionary textParams, Dictionary bizParams) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", method}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = TeaCore.DoAction(request_, runtime_); - - Dictionary respMap = this._kernel.ReadAsJson(response_, method); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - public async Task ExecuteAsync(string method, Dictionary textParams, Dictionary bizParams) - { - Dictionary runtime_ = new Dictionary - { - {"ignoreSSL", this._kernel.GetConfig("ignoreSSL")}, - {"httpProxy", this._kernel.GetConfig("httpProxy")}, - {"connectTimeout", 15000}, - {"readTimeout", 15000}, - {"retry", new Dictionary - { - {"maxAttempts", 0}, - }}, - }; - - TeaRequest _lastRequest = null; - Exception _lastException = null; - long _now = System.DateTime.Now.Millisecond; - int _retryTimes = 0; - while (TeaCore.AllowRetry((IDictionary) runtime_["retry"], _retryTimes, _now)) - { - if (_retryTimes > 0) - { - int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); - if (backoffTime > 0) - { - TeaCore.Sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try - { - TeaRequest request_ = new TeaRequest(); - Dictionary systemParams = new Dictionary - { - {"method", method}, - {"app_id", this._kernel.GetConfig("appId")}, - {"timestamp", this._kernel.GetTimestamp()}, - {"format", "json"}, - {"version", "1.0"}, - {"alipay_sdk", this._kernel.GetSdkVersion()}, - {"charset", "UTF-8"}, - {"sign_type", this._kernel.GetConfig("signType")}, - {"app_cert_sn", this._kernel.GetMerchantCertSN()}, - {"alipay_root_cert_sn", this._kernel.GetAlipayRootCertSN()}, - }; - request_.Protocol = this._kernel.GetConfig("protocol"); - request_.Method = "POST"; - request_.Pathname = "/gateway.do"; - request_.Headers = new Dictionary - { - {"host", this._kernel.GetConfig("gatewayHost")}, - {"content-type", "application/x-www-form-urlencoded;charset=utf-8"}, - }; - request_.Query = this._kernel.SortMap(TeaConverter.merge - ( - new Dictionary() - { - {"sign", this._kernel.Sign(systemParams, bizParams, textParams, this._kernel.GetConfig("merchantPrivateKey"))}, - }, - systemParams, - textParams - )); - request_.Body = TeaCore.BytesReadable(this._kernel.ToUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = await TeaCore.DoActionAsync(request_, runtime_); - - Dictionary respMap = await this._kernel.ReadAsJsonAsync(response_, method); - if (this._kernel.IsCertMode()) - { - if (this._kernel.Verify(respMap, this._kernel.ExtractAlipayPublicKey(this._kernel.GetAlipayCertSN(respMap)))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - else - { - if (this._kernel.Verify(respMap, this._kernel.GetConfig("alipayPublicKey"))) - { - return TeaModel.ToObject(this._kernel.ToRespModel(respMap)); - } - } - throw new TeaException(new Dictionary - { - {"message", "验签失败,请检查支付宝公钥设置是否正确。"}, - }); - } - catch (Exception e) - { - if (TeaCore.IsRetryable(e)) - { - _lastException = e; - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest, _lastException); - } - - - /// - /// ISV代商户代用,指定appAuthToken - /// - /// 代调用token - /// 本客户端,便于链式调用 - public Client Agent(string appAuthToken) - { - _kernel.InjectTextParam("app_auth_token", appAuthToken); - return this; - } - - /// - /// 用户授权调用,指定authToken - /// - /// 用户授权token - /// 本客户端,便于链式调用 - public Client Auth(string authToken) - { - _kernel.InjectTextParam("auth_token", authToken); - return this; - } - - /// - /// 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - /// - /// 异步通知回调地址,例如:https://www.test.com/callback - /// 本客户端,便于链式调用 - public Client AsyncNotify(string url) - { - _kernel.InjectTextParam("notify_url", url); - return this; - } - - /// - /// 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - /// - /// 后端系统测试地址 - /// 本客户端,便于链式调用 - public Client Route(string testUrl) - { - _kernel.InjectTextParam("ws_service_url", testUrl); - return this; - } - - /// - /// 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// - /// 业务请求参数名称(biz_content下的字段名,比如timeout_express) - /// - /// 业务请求参数的值,一个可以序列化成JSON的对象 - /// 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用string储存 - /// 如果该字段是一个数值型类型(比如:Number),请使用long储存 - /// 如果该字段是一个复杂类型,请使用嵌套的Dictionary指定各下级字段的值 - /// 如果该字段是一个数组,请使用List储存各个值 - /// 对于更复杂的情况,也支持Dictionary和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - /// - /// 本客户端,便于链式调用 - public Client Optional(string key, object value) - { - _kernel.InjectBizParam(key, value); - return this; - } - - /// - /// 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - /// optional方法的批量版本 - /// - /// 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - /// 本客户端,便于链式调用 - public Client BatchOptional(Dictionary optionalArgs) - { - foreach (var pair in optionalArgs) - { - _kernel.InjectBizParam(pair.Key, pair.Value); - } - return this; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Models/AlipayOpenApiGenericResponse.cs b/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Models/AlipayOpenApiGenericResponse.cs deleted file mode 100644 index 73b0c1dc..00000000 --- a/vendor/alipaysdk/easysdk/csharp/AlipayEasySDK/Util/Generic/Models/AlipayOpenApiGenericResponse.cs +++ /dev/null @@ -1,37 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. - -using System; -using System.Collections.Generic; -using System.IO; - -using Tea; - -namespace Alipay.EasySDK.Util.Generic.Models -{ - public class AlipayOpenApiGenericResponse : TeaModel { - /// - /// 响应原始字符串 - /// - [NameInMap("http_body")] - [Validation(Required=true)] - public string HttpBody { get; set; } - - [NameInMap("code")] - [Validation(Required=true)] - public string Code { get; set; } - - [NameInMap("msg")] - [Validation(Required=true)] - public string Msg { get; set; } - - [NameInMap("sub_code")] - [Validation(Required=true)] - public string SubCode { get; set; } - - [NameInMap("sub_msg")] - [Validation(Required=true)] - public string SubMsg { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/csharp/README.md b/vendor/alipaysdk/easysdk/csharp/README.md deleted file mode 100644 index 7101c9c8..00000000 --- a/vendor/alipaysdk/easysdk/csharp/README.md +++ /dev/null @@ -1,248 +0,0 @@ -[![NuGet](https://badge.fury.io/nu/AlipayEasySDK.svg)](https://badge.fury.io/nu/AlipayEasySDK) -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk?ref=badge_shield) - -欢迎使用 Alipay **Easy** SDK for .NET 。 - -Alipay Esay SDK for .NET让您不用复杂编程即可访支付宝开放平台开放的各项常用能力,SDK可以自动帮您满足能力调用过程中所需的证书校验、加签、验签、发送HTTP请求等非功能性要求。 - -下面向您介绍Alipay Easy SDK for .NET 的基本设计理念和使用方法。 - -## 设计理念 -不同于原有的[Alipay SDK](https://github.com/alipay/alipay-sdk-net-all)通用而全面的设计理念,Alipay Easy SDK对开放能力的API进行了更加贴近高频场景的精心设计与裁剪,简化了服务端调用方式,让调用API像使用语言内置的函数一样简便。 - -同时,您也不必担心面向高频场景提炼的API可能无法完全契合自己的个性化场景,Alipay Easy SDK支持灵活的动态扩展方式,同样可以满足低频参数、低频API的使用需求。 - -Alipay Easy SDK提供了与[能力地图](https://opendocs.alipay.com/mini/00am3f)相对应的代码组织结构,让开发者可以快速找到不同能力对应的API。 - -Alipay Easy SDK主要目标是提升开发者在**服务端**集成支付宝开放平台开放的各类核心能力的效率。 - -## 环境要求 -1. Alipay Easy SDK for .NET基于`.Net Standard 2.0`开发,支持`.Net Framework 4.6.1`、.`Net Core 2.0`及其以上版本 - -2. 使用 Alipay Easy SDK for .NET 之前 ,您需要先前往[支付宝开发平台-开发者中心](https://openhome.alipay.com/platform/developerIndex.htm)完成开发者接入的一些准备工作,包括创建应用、为应用添加功能包、设置应用的接口加签方式等。 - -3. 准备工作完成后,注意保存如下信息,后续将作为使用SDK的输入。 - -* 加签模式为公钥证书模式时(推荐) - -`AppId`、`应用的私钥`、`应用公钥证书文件`、`支付宝公钥证书文件`、`支付宝根证书文件` - -* 加签模式为公钥模式时 - -`AppId`、`应用的私钥`、`支付宝公钥` - -## 安装依赖 -### 通过[NuGet](https://www.nuget.org/packages/AlipayEasySDK/)程序包管理器在线安装依赖(推荐) -* 在 `解决方案资源管理器面板` 中右击您的项目选择 `管理 NuGet 程序包` 菜单,在打开的 `NuGet 管理面板` 中点击 `浏览` 选项卡输入 `AlipayEasySDK`,在下方列表中选择 `Authors` 为 `antopen` 由官方发布的**最新稳定版**NuGet包,点击 **安装** 即可。 - -* 或者通过 .NET CLI 工具来安装 - > dotnet add package AlipayEasySDK - -### 离线安装NuGet包(适用于自己修改源码后的本地重新打包安装) -1. 使用`Visual Studio`打开本`README.md`所在文件夹下的`AlipayEasySDK.sln`解决方案,在`生成`菜单栏下,执行`全部重新生成`。 -2. 在`AlipayEasySDK/bin/Debug`或`AlipayEasySDK/bin/Release`目录下,找到`AlipayEasySDK.[version].nupkg`文件,该文件即为本SDK的NuGet离线包。 -3. 参照[NuGet离线安装程序包使用指南](https://yq.aliyun.com/articles/689227),在您的.NET应用项目工程中引入本SDK的NuGet离线包,即可完成SDK的依赖安装。 - -## 快速开始 -### 普通调用 -以下这段代码示例向您展示了使用Alipay Easy SDK for .NET调用一个API的3个主要步骤: - -1. 设置参数(全局只需设置一次)。 -2. 发起API调用。 -3. 处理响应或异常。 - -```charp -using System; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Kernel; -using Alipay.EasySDK.Kernel.Util; -using Alipay.EasySDK.Payment.FaceToFace.Models; - -namespace SDKDemo -{ - class Program - { - static void Main(string[] args) - { - // 1. 设置参数(全局只需设置一次) - Factory.SetOptions(GetConfig()); - try - { - // 2. 发起API调用(以创建当面付收款二维码为例) - AlipayTradePrecreateResponse response = Factory.Payment.FaceToFace() - .PreCreate("Apple iPhone11 128G", "2234567234890", "5799.00"); - // 3. 处理响应或异常 - if (ResponseChecker.Success(response)) - { - Console.WriteLine("调用成功"); - } - else - { - Console.WriteLine("调用失败,原因:" + response.Msg + "," + response.SubMsg); - } - } - catch (Exception ex) - { - Console.WriteLine("调用遭遇异常,原因:" + ex.Message); - throw ex; - } - } - - static private Config GetConfig() - { - return new Config() - { - Protocol = "https", - GatewayHost = "openapi.alipay.com", - SignType = "RSA2", - - AppId = "<-- 请填写您的AppId,例如:2019091767145019 -->", - - // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中 - MerchantPrivateKey = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->", - - MerchantCertPath = "<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->", - AlipayCertPath = "<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->", - AlipayRootCertPath = "<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt -->", - - // 如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可 - // AlipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->" - - //可设置异步通知接收服务地址(可选) - NotifyUrl = "<-- 请填写您的支付类接口异步通知接收服务地址,例如:https://www.test.com/callback -->", - - //可设置AES密钥,调用AES加解密相关接口时需要(可选) - EncryptKey = "<-- 请填写您的AES密钥,例如:aa4BtZ4tspm2wnXLb1ThQA== -->" - }; - } - } -} -``` - -### 扩展调用 -#### ISV代调用 - -```csharp -Factory.Payment.FaceToFace() - //调用Agent扩展方法,设置app_auth_token,完成ISV代调用 - .Agent("ca34ea491e7146cc87d25fca24c4cD11") - .PreCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -#### 设置独立的异步通知地址 - -```csharp -Factory.Payment.FaceToFace() - // 调用AsyncNotify扩展方法,可以为每此API调用,设置独立的异步通知地址 - // 此处设置的异步通知地址的优先级高于全局Config中配置的异步通知地址 - .AsyncNotify("https://www.test.com/callback") - .PreCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -#### 设置可选业务参数 - -```csharp -List goodsDetailList = new List(); -Dictionary goodsDetail = new Dictionary -{ - { "goods_id", "apple-01" }, - { "goods_name", "Apple iPhone11 128G" }, - { "quantity", 1 }, - { "price", "5799.00" } -}; -goodsDetailList.Add(goodsDetail); - -Factory.Payment.FaceToFace() - // 调用Optional扩展方法,完成可选业务参数(biz_content下的可选字段)的设置 - .Optional("seller_id", "2088102146225135") - .Optional("discountable_amount", "8.88") - .Optional("goods_detail", goodsDetailList) - .PreCreate("Apple iPhone11 128G", "2234567890", "5799.00"); - -Dictionary optionalArgs = new Dictionary -{ - { "seller_id", "2088102146225135" }, - { "discountable_amount", "8.88" }, - { "goods_detail", goodsDetailList } -}; - -Factory.Payment.FaceToFace() - // 也可以调用BatchOptional扩展方法,批量设置可选业务参数(biz_content下的可选字段) - .BatchOptional(optionalArgs) - .PreCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -#### 多种扩展灵活组合 - -```csharp -// 多种扩展方式可灵活组装(对扩展方法的调用顺序没有要求) -Factory.Payment.FaceToFace() - .Agent("ca34ea491e7146cc87d25fca24c4cD11") - .AsyncNotify("https://www.test.com/callback") - .Optional("seller_id", "2088102146225135") - .PreCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -## API组织规范 -在Alipay Easy SDK中,API的引用路径与能力地图的组织层次一致,遵循如下规则 - -> Factory.能力名称.场景名称().接口方法名称( ... ) - -比如,如果您想要使用[能力地图](https://opendocs.alipay.com/mini/00am3f)中`营销能力`下的`模板消息`场景中的`小程序发送模板消息`,只需按如下形式编写调用代码即可(不同编程语言的连接符号可能不同)。 - -`Factory.Marketing.TemplateMessage().send( ... )` - -其中,接口方法名称通常是对其依赖的OpenAPI功能的一个最简概况,接口方法的出入参与OpenAPI中同名参数含义一致,可参照OpenAPI相关参数的使用说明。 - -Alipay Easy SDK将致力于保持良好的API命名,以符合开发者的编程直觉。 - -## 已支持的API列表 - -| 能力类别 | 场景类别 | 接口方法名称 | 调用的OpenAPI名称 | -|-----------|-----------------|------------------------|-----------------------------------------------------------| -| Base | OAuth | getToken | alipay\.system\.oauth\.token | -| Base | OAuth | refreshToken | alipay\.system\.oauth\.token | -| Base | Qrcode | create | alipay\.open\.app\.qrcode\.create | -| Base | Image | upload | alipay\.offline\.material\.image\.upload | -| Base | Video | upload | alipay\.offline\.material\.image\.upload | -| Member | Identification | init | alipay\.user\.certify\.open\.initialize | -| Member | Identification | certify | alipay\.user\.certify\.open\.certify | -| Member | Identification | query | alipay\.user\.certify\.open\.query | -| Payment | Common | create | alipay\.trade\.create | -| Payment | Common | query | alipay\.trade\.query | -| Payment | Common | refund | alipay\.trade\.refund | -| Payment | Common | close | alipay\.trade\.close | -| Payment | Common | cancel | alipay\.trade\.cancel | -| Payment | Common | queryRefund | alipay\.trade\.fastpay\.refund\.query | -| Payment | Common | downloadBill | alipay\.data\.dataservice\.bill\.downloadurl\.query | -| Payment | Common | verifyNotify | - | -| Payment | Huabei | create | alipay\.trade\.create | -| Payment | FaceToFace | pay | alipay\.trade\.pay | -| Payment | FaceToFace | precreate | alipay\.trade\.precreate | -| Payment | App | pay | alipay\.trade\.app\.pay | -| Payment | Page | pay | alipay\.trade\.page\.pay | -| Payment | Wap | pay | alipay\.trade\.wap\.pay | -| Security | TextRisk | detect | alipay\.security\.risk\.content\.detect | -| Marketing | Pass | createTemplate | alipay\.pass\.template\.add | -| Marketing | Pass | updateTemplate | alipay\.pass\.template\.update | -| Marketing | Pass | addInstance | alipay\.pass\.instance\.add | -| Marketing | Pass | updateInstance | alipay\.pass\.instance\.update | -| Marketing | TemplateMessage | send | alipay\.open\.app\.mini\.templatemessage\.send | -| Marketing | OpenLife | createImageTextContent | alipay\.open\.public\.message\.content\.create | -| Marketing | OpenLife | modifyImageTextContent | alipay\.open\.public\.message\.content\.modify | -| Marketing | OpenLife | sendText | alipay\.open\.public\.message\.total\.send | -| Marketing | OpenLife | sendImageText | alipay\.open\.public\.message\.total\.send | -| Marketing | OpenLife | sendSingleMessage | alipay\.open\.public\.message\.single\.send | -| Marketing | OpenLife | recallMessage | alipay\.open\.public\.life\.msg\.recall | -| Marketing | OpenLife | setIndustry | alipay\.open\.public\.template\.message\.industry\.modify | -| Marketing | OpenLife | getIndustry | alipay\.open\.public\.setting\.category\.query | -| Util | AES | decrypt | - | -| Util | AES | encrypt | - | -| Util | Generic | execute | - | - -> 注:更多高频场景的API持续更新中,敬请期待。 - -## 文档 -[API Doc](./../APIDoc.md) - -[Alipay Easy SDK](./../README.md) diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Image/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Image/ClientTest.cs deleted file mode 100644 index 88a5b817..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Image/ClientTest.cs +++ /dev/null @@ -1,32 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Base.Image.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Base.Image -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestUpload() - { - AlipayOfflineMaterialImageUploadResponse response = Factory.Base.Image().Upload( - "测试图片", TestAccount.GetSolutionBasePath() + "/UnitTest/Fixture/sample.png"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.NotNull(response.ImageId); - Assert.IsTrue(response.ImageUrl.StartsWith("https://")); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/OAuth/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/OAuth/ClientTest.cs deleted file mode 100644 index 6bd7a87a..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/OAuth/ClientTest.cs +++ /dev/null @@ -1,42 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Base.OAuth.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Base.OAuth -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestGetToken() - { - AlipaySystemOauthTokenResponse response = Factory.Base.OAuth().GetToken("1234567890"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40002"); - Assert.AreEqual(response.Msg, "Invalid Arguments"); - Assert.AreEqual(response.SubCode, "isv.code-invalid"); - Assert.AreEqual(response.SubMsg, "授权码code无效"); - Assert.NotNull(response.HttpBody); - } - - [Test] - public void TestRefreshToken() - { - AlipaySystemOauthTokenResponse response = Factory.Base.OAuth().RefreshToken("1234567890"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40002"); - Assert.AreEqual(response.Msg, "Invalid Arguments"); - Assert.AreEqual(response.SubCode, "isv.refresh-token-invalid"); - Assert.AreEqual(response.SubMsg, "刷新令牌refresh_token无效"); - Assert.NotNull(response.HttpBody); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Qrcode/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Qrcode/ClientTest.cs deleted file mode 100644 index 4f01d96d..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Qrcode/ClientTest.cs +++ /dev/null @@ -1,31 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Base.Qrcode.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Base.Qrcode -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestCreate() - { - AlipayOpenAppQrcodeCreateResponse response = Factory.Base.Qrcode().Create( - "https://opendocs.alipay.com", "ageIndex=1", "文档站点"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.NotNull(response.QrCodeUrl); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Video/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Video/ClientTest.cs deleted file mode 100644 index 37d6e050..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Base/Video/ClientTest.cs +++ /dev/null @@ -1,32 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Base.Video.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Base.Video -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestUpload() - { - AlipayOfflineMaterialImageUploadResponse response = Factory.Base.Video().Upload( - "测试视频", TestAccount.GetSolutionBasePath() + "/UnitTest/Fixture/sample.mp4"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.NotNull(response.ImageId); - Assert.IsTrue(response.ImageUrl.StartsWith("https://")); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Factory/FactoryTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Factory/FactoryTest.cs deleted file mode 100644 index 81373cab..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Factory/FactoryTest.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using NUnit.Framework; -using Alipay.EasySDK.Payment.Common.Models; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.FactoryTest -{ - public class FactoryTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestGetClient() - { - AlipayTradeFastpayRefundQueryResponse response = Factory.GetClient() - .QueryRefund("64628156-f784-4572-9540-485b7c91b850", "64628156-f784-4572-9540-485b7c91b850"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.RefundAmount, "0.01"); - Assert.AreEqual(response.TotalAmount, "0.01"); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayCertPublicKey_RSA2.crt b/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayCertPublicKey_RSA2.crt deleted file mode 100644 index fd7c0a07..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayCertPublicKey_RSA2.crt +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDkzCCAnugAwIBAgIQIBkJAnXy/rwX3BTZaKNEzjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs -YXNzIDIgUjEwHhcNMTkwOTAyMTI0NDIyWhcNMjEwOTAxMTI0NDIyWjB0MQswCQYDVQQGEwJDTjEP -MA0GA1UECgwG6ZKf6ZuoMQ8wDQYDVQQLDAZBbGlwYXkxQzBBBgNVBAMMOuaUr+S7mOWunSjkuK3l -m70p572R57uc5oqA5pyv5pyJ6ZmQ5YWs5Y+4LTIwODgwMDI2NTY3MTg5MjAwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDQxh7MsF7bsPyQlToJWOPlmGfqUerZI2o2725LUqrabGYOaAgx -a8OAm6sFXoq6TykRltIBEmAjYjMYudQelwxSv8NhQ1eLEFrY7o2Z3TQ+y8lvlLmvqWnEMzOqq4Fc -UN6gzd1nissGVtzUkmx9ErB+89g6WAKV1bFCZBQHIjzfMIqcZkddUZ4SiksMKB/ncKFOJPJf2CUI -i31URny3WlIoC44jG1SiX2sPKdbkbsSGQcDfGIpNRQBNJxlXX/8Y8D7RrFCWHtjh4ONSMT29+xjS -8HNM0gSR2y4QKXyRupXrNY9yTTtkPhQIEjfSjsQPnuM+3b7VFd3GSDcDbvskNRNLAgMBAAGjEjAQ -MA4GA1UdDwEB/wQEAwID+DANBgkqhkiG9w0BAQsFAAOCAQEAf8Qx2UsLFqPDTxKk9eT0np75NqJ8 -MexTuPJ/gC+Lp20YzEUyYW2rPlDFhDmFztlqk9RdynLRqyjB5dOAdWlxhgDlEqB9E6DvkVKtpIaL -7h7zqJei9gb/STAyf5vTVWR/WTmOhp3vQhaj7+lt14JwK/ELYMdBLD2IdmFis7YdzhCsGo7Y4FPb -BuHCV8Ngfaf2PvDlKaFOVzDg8tGnMBbAOgpe+mhxKUdhNG3eXcO0Z813rNIC15YAvWm68tNAwuZJ -rIVgK+049WUojwUJxOwVyzewob/8Gx7o8ipIV5E/bMrduSvigsj7OmNzwQ5/iSm31dfcXi3fOXXz -BLMb888PlA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE4jCCAsqgAwIBAgIIYsSr5bKAMl8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMjE0MzQxNVoXDTM3MTEyNjE0MzQxNVowgYIxCzAJBgNVBAYTAkNOMRYwFAYDVQQKDA1BbnQgRmluYW5jaWFsMSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTE5MDcGA1UEAwwwQW50IEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBDbGFzcyAyIFIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLMfYaoRoPRbmDcAfXPCmKf43pWRN5yTXa/KJWO0l+mrgQvs89bANEvbDUxlkGwycwtwi5DgBuBgVhLliXu+R9CYgr2dXs8D8Hx/gsggDcyGPLmVrDOnL+dyeauheARZfA3du60fwEwwbGcVIpIxPa/4n3IS/ElxQa6DNgqxh8J9Xwh7qMGl0JK9+bALuxf7B541Gr4p0WENG8fhgjBV4w4ut9eQLOoa1eddOUSZcy46Z7allwowwgt7b5VFfx/P1iKJ3LzBMgkCK7GZ2kiLrL7RiqV+h482J7hkJD+ardoc6LnrHO/hIZymDxok+VH9fVeUdQa29IZKrIDVj65THQIDAQABo2MwYTAfBgNVHSMEGDAWgBRfdLQEwE8HWurlsdsio4dBspzhATAdBgNVHQ4EFgQUSqHkYINtUSAtDPnS8XoyoP9p7qEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAIQ8TzFy4bVIVb8+WhHKCkKNPcJe2EZuIcqvRoi727lZTJOfYy/JzLtckyZYfEI8J0lasZ29wkTta1IjSo+a6XdhudU4ONVBrL70U8Kzntplw/6TBNbLFpp7taRALjUgbCOk4EoBMbeCL0GiYYsTS0mw7xdySzmGQku4GTyqutIGPQwKxSj9iSFw1FCZqr4VP4tyXzMUgc52SzagA6i7AyLedd3tbS6lnR5BL+W9Kx9hwT8L7WANAxQzv/jGldeuSLN8bsTxlOYlsdjmIGu/C9OWblPYGpjQQIRyvs4Cc/mNhrh+14EQgwuemIIFDLOgcD+iISoN8CqegelNcJndFw1PDN6LkVoiHz9p7jzsge8RKay/QW6C03KNDpWZEUCgCUdfHfo8xKeR+LL1cfn24HKJmZt8L/aeRZwZ1jwePXFRVtiXELvgJuM/tJDIFj2KD337iV64fWcKQ/ydDVGqfDZAdcU4hQdsrPWENwPTQPfVPq2NNLMyIH9+WKx9Ed6/WzeZmIy5ZWpX1TtTolo6OJXQFeItMAjHxW/ZSZTok5IS3FuRhExturaInnzjYpx50a6kS34c5+c8hYq7sAtZ/CNLZmBnBCFDaMQqT8xFZJ5uolUaSeXxg7JFY1QsYp5RKvj4SjFwCGKJ2+hPPe9UyyltxOidNtxjaknOCeBHytOr ------END CERTIFICATE----- diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayRootCert.crt b/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayRootCert.crt deleted file mode 100644 index d370e5b3..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/alipayRootCert.crt +++ /dev/null @@ -1,88 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG -EwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw -MzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO -UkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE -MPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT -V7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti -W/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ -MxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b -53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI -pDoiVhsLwg== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0 -MFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV -BAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j -aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk -rUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2 -xAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp -dRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6 -vSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl -YUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1 -Pbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H -DtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98 -SZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG -PsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe -9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC -AwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90 -tATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy -nOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf -tJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq -JSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3 -IODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW -05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41 -T0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI -kkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop -PKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N -1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y -jXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02 -77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi -kT9qhqn+lw== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG -EwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0 -WjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE -CwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp -YWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU -WP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt -rpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ -4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2 -zVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg -wHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH -Rglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF -BQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM -E0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg -MiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq -MQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp -bmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv -b3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV -nJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5 -4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg -wykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw -WktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN -z+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g -KgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA -uTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp -emMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3 -U8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I -UugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn -DJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU -1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX -Yf4Zr0fJsGuv ------END CERTIFICATE----- \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/appCertPublicKey_2019051064521003.crt b/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/appCertPublicKey_2019051064521003.crt deleted file mode 100644 index ad22ab9b..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/appCertPublicKey_2019051064521003.crt +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEkzCCA3ugAwIBAgIQICABI1M0G1IN1Hv7M5NTmjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs -YXNzIDEgUjEwHhcNMjAwMTIzMDc0NTQ3WhcNMjIwMTIyMDc0NTQ3WjBbMQswCQYDVQQGEwJDTjEP -MA0GA1UECgwG6ZKf6ZuoMQ8wDQYDVQQLDAZBbGlwYXkxKjAoBgNVBAMMITIwODgwMDI2NTY3MTg5 -MjAtMjAxOTA1MTA2NDUyMTAwMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIRaW3zN -ZGJY3oOUL41KMZqcoyI9JyDWG/fyb8qShWgH9NGinO6JeGWWX2pU2b5GKCd1CB6imnbD5U3zvErR -Z6h9Kc9pD4M22MNqnpuFontWuFXhq01MIbuolV5zTw94nrMR4aMPgTt7wX6svcQ8cKyg+v7Xz4DH -QCQOPhtFM3aL1UHsEZhLp+F2xNENTGpphmlV7D50ahnAo3A8Jdkt9ZBIzkWk4CoMdeoYk6BlOETG -XZ93Mc1TKR6cLNPj7LIUKb7xUh4ekaRoky2RP7k9NgBLsZLDjMkqZmzvHHhnstddmq5Er49Ger9b -VHnKsWNMWtN0Oi+ZyWTDcwvACdCgLbcCAwEAAaOCASkwggElMB8GA1UdIwQYMBaAFHEH4gRhFuTl -8mXrMQ/J4PQ8mtWRMB0GA1UdDgQWBBSNSXcCsxvjAa3v5QcTyVZ183CMjzBABgNVHSAEOTA3MDUG -B2CBHAFuAQEwKjAoBggrBgEFBQcCARYcaHR0cDovL2NhLmFsaXBheS5jb20vY3BzLnBkZjAOBgNV -HQ8BAf8EBAMCBsAwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL2NhLmFsaXBheS5jb20vY3JsMzcu -Y3JsMGAGCCsGAQUFBwEBBFQwUjAoBggrBgEFBQcwAoYcaHR0cDovL2NhLmFsaXBheS5jb20vY2E2 -LmNlcjAmBggrBgEFBQcwAYYaaHR0cDovL2NhLmFsaXBheS5jb206ODM0MC8wDQYJKoZIhvcNAQEL -BQADggEBAA0l9rTtjEl4uqE4RP4Nd+A0KgM8NmWQHLxsubDRMSeYVFMzrpSm8V9zhlxLmKdFxWP/ -OuY4SHRe8eOSA++5yJc3ihg9B7/ddK2kNTsnaB7Xtvex685kvDDR8DMZmQYeirDThGVPhUeBgPdk -wY0R5KU6mEh2FzT3QIxDzP6t4ssSyYHhFPssZ4PXHFQ5eHzmdpJ81/85crfques67JxAm4CCfldb -bX0DH1BUrPxcnvz4Kj5lKv1qIvBR71yUnrGFOKAVCx04VYK4dTNDI70W9lLgX1aTfLGUBTYiJe/J -Zq/XlYhQP/T7t8HOAaCQFf2hM9tRq62EaL1UbExV2hcAP/E= ------END CERTIFICATE----- \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/privateKey.json b/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/privateKey.json deleted file mode 100644 index 39daf4d6..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/privateKey.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "2019022663440152": "<- 已脱敏,如想要执行单元测试,请开发者自行替换TestAccount中的相关账号并在此重新配置新的APPID与私钥的关联 ->", - "2019051064521003": "<- 已脱敏,如想要执行单元测试,请开发者自行替换TestAccount中的相关账号并在此重新配置新的APPID与私钥的关联 ->" -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/sample.mp4 b/vendor/alipaysdk/easysdk/csharp/UnitTest/Fixture/sample.mp4 deleted file mode 100644 index 26fb8b24ff1928299353599748b703c421e3d5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057149 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%0DXThCjUf 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%0Dr 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�bVi(g#i{6 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%0AO;5+#8$+kYXw&Eok0wF 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≤TcQ{vHBBmen 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 Pxqofnrw`mG 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

>il5P`S= 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

Yok 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

>(m21 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 { article }); - - if (response.Code.Equals("10000")) - { - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.NotNull(response.MessageId); - } - else - { - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "PUB.MSG_BATCH_SD_OVER"); - Assert.AreEqual(response.SubMsg, "批量发送消息频率超限"); - Assert.NotNull(response.HttpBody); - Assert.Null(response.MessageId); - } - } - - [Test] - public void TestSendSingleMessage() - { - Keyword keyword = new Keyword - { - Color = "#85be53", - Value = "HU7142" - }; - Context context = new Context - { - HeadColor = "#85be53", - Url = "https://docs.open.alipay.com/api_6/alipay.open.public.message.single.send", - ActionName = "查看详情", - Keyword1 = keyword, - Keyword2 = keyword, - First = keyword, - Remark = keyword - }; - Alipay.EasySDK.Marketing.OpenLife.Models.Template template = new Alipay.EasySDK.Marketing.OpenLife.Models.Template - { - TemplateId = "e44cd3e52ffa46b1a50afc145f55d1ea", - Context = context - }; - AlipayOpenPublicMessageSingleSendResponse response = Factory.Marketing.OpenLife().SendSingleMessage( - "2088002656718920", template); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - } - - [Test] - public void TestRecallMessage() - { - AlipayOpenPublicLifeMsgRecallResponse response = Factory.Marketing.OpenLife().RecallMessage("201905106452100327f456f6-8dd2-4a06-8b0e-ec8a3a85c46a"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - } - - [Test] - public void TestSetIndustry() - { - AlipayOpenPublicTemplateMessageIndustryModifyResponse response = Factory.Marketing.OpenLife().SetIndustry( - "10001/20102", "IT科技/IT软件与服务", - "10001/20102", "IT科技/IT软件与服务"); - - if (response.Code.Equals("10000")) - { - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - } - else - { - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "3002"); - Assert.AreEqual(response.SubMsg, ("模板消息行业一月只能修改一次")); - Assert.NotNull(response.HttpBody); - } - } - - [Test] - public void TestGetIndustry() - { - AlipayOpenPublicSettingCategoryQueryResponse response = Factory.Marketing.OpenLife().GetIndustry(); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.PrimaryCategory, "IT科技/IT软件与服务"); - Assert.AreEqual(response.SecondaryCategory, "IT科技/IT软件与服务"); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/Pass/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/Pass/ClientTest.cs deleted file mode 100644 index 2ed33a16..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/Pass/ClientTest.cs +++ /dev/null @@ -1,100 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Marketing.Pass.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Marketing.Pass -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestCreateTemplate() - { - AlipayPassTemplateAddResponse response = Factory.Marketing.Pass().CreateTemplate("123456789", GetTplContent()); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.True(response.Success); - Assert.True(response.Result.Contains("tpl_id")); - } - - [Test] - public void TestUpdateTemplate() - { - AlipayPassTemplateUpdateResponse response = Factory.Marketing.Pass().UpdateTemplate("2020012014534017917956080", GetTplContent()); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.True(response.Success); - Assert.True(response.Result.Contains("tpl_id")); - } - - [Test] - public void TestAddInstance() - { - AlipayPassInstanceAddResponse response = Factory.Marketing.Pass().AddInstance("2020012014534017917956080", "{}", - "1", "{\"partner_id\":\"2088102114633762\",\"out_trade_no\":\"1234567\"}"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "KP.AE_ALIPASS_APPID_NOSUPPORT"); - Assert.AreEqual(response.SubMsg, "该AppId不支持"); - Assert.NotNull(response.HttpBody); - Assert.False(response.Success); - Assert.True(response.Result.Contains("该AppId不支持")); - } - - [Test] - public void TestUpdateInstance() - { - AlipayPassInstanceUpdateResponse response = Factory.Marketing.Pass().UpdateInstance("209919213", - "2088918273", "{}", "USED", "8612231273", "wave"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "KP.AE_ALIPASS_NOTEXIST"); - Assert.AreEqual(response.SubMsg, "卡券不存在"); - Assert.NotNull(response.HttpBody); - Assert.False(response.Success); - Assert.True(response.Result.Contains("{\"operate\":\"UPDATE\"}")); - } - - private string GetTplContent() - { - return "{\"logo\":\"http://img01.taobaocdn.com/top/i1/LB1NDJuQpXXXXbYXFXXXXXXXXXX\",\"strip\":null,\"icon\":null," - + "\"content\":{\"evoucherInfo\":{\"goodsId\":\"\",\"title\":\"test\",\"type\":\"boardingPass\"," - + "\"product\":\"air\",\"startDate\":\"2020-01-20 13:45:56\",\"endDate\":\"2020-01-25 13:45:56\"," - + "\"operation\":[{\"message\":{\"img\":\"http://img01.taobaocdn.com/top/i1/LB1NDJuQpXXXXbYXFXXXXXXXXXX\"," - + "\"target\":\"\"},\"format\":\"img\",\"messageEncoding\":\"utf-8\",\"altText\":\"\"}]," - + "\"einfo\":{\"logoText\":\"test\",\"headFields\":[{\"key\":\"test\",\"label\":\"测试\",\"value\":\"\"," - + "\"type\":\"text\"}],\"primaryFields\":[{\"key\":\"from\",\"label\":\"测试\",\"value\":\"\",\"type\":\"text\"}," - + "{\"key\":\"to\",\"label\":\"测试\",\"value\":\"\",\"type\":\"text\"}],\"secondaryFields\":[{\"key\":\"fltNo\"," - + "\"label\":\"航班号\",\"value\":\"CA123\",\"type\":\"text\"}],\"auxiliaryFields\":[{\"key\":\"test\"," - + "\"label\":\"测试\",\"value\":\"\",\"type\":\"text\"}],\"backFields\":[]},\"locations\":[]}," - + "\"merchant\":{\"mname\":\"钟雨\",\"mtel\":\"\",\"minfo\":\"\"},\"platform\":{\"channelID\":\"2088201564809153\"," - + "\"webServiceUrl\":\"https://alipass.alipay.com/builder/syncRecord.htm?tempId=2020012013442621326446216\"}," - + "\"style\":{\"backgroundColor\":\"RGB(26,150,219)\"},\"fileInfo\":{\"formatVersion\":\"2\",\"canShare\":true," - + "\"canBuy\":false,\"canPresent\":true,\"serialNumber\":\"2020012013520759738677158\",\"supportTaxi\":\"true\"," - + "\"taxiSchemaUrl\":\"alipays://platformapi/startapp?appId=20000778&bizid=260&channel=71322\"}," - + "\"appInfo\":{\"app\":{\"android_appid\":\"\",\"ios_appid\":\"\",\"android_launch\":\"\",\"ios_launch\":\"\"," - + "\"android_download\":\"\",\"ios_download\":\"\"},\"label\":\"测试\",\"message\":\"\"}," - + "\"source\":\"alipassprod\",\"alipayVerify\":[\"qrcode\"]}}"; - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/TemplateMessage/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/TemplateMessage/ClientTest.cs deleted file mode 100644 index 0c7b11a4..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Marketing/TemplateMessage/ClientTest.cs +++ /dev/null @@ -1,34 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Marketing.TemplateMessage.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Marketing.TemplateMessage -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestSend() - { - AlipayOpenAppMiniTemplatemessageSendResponse response = Factory.Marketing.TemplateMessage().Send( - "2088102122458832", - "2017010100000000580012345678", - "MDI4YzIxMDE2M2I5YTQzYjUxNWE4MjA4NmU1MTIyYmM=", - "page/component/index", - "{\"keyword1\": {\"value\" : \"12:00\"},\"keyword2\": {\"value\" : \"20180808\"},\"keyword3\": {\"value\" : \"支付宝\"}}"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "USER_TEMPLATE_ILLEGAL"); - Assert.AreEqual(response.SubMsg, "模板非法"); - Assert.NotNull(response.HttpBody); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Member/Identification/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Member/Identification/ClientTest.cs deleted file mode 100644 index c09d5e19..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Member/Identification/ClientTest.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Member.Identification.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Member.Identification -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestInit() - { - IdentityParam identityParam = new IdentityParam() - { - IdentityType = "CERT_INFO", - CertType = "IDENTITY_CARD", - CertName = "张三", - CertNo = "513901198008089876" - }; - - MerchantConfig merchantConfig = new MerchantConfig() - { - ReturnUrl = "www.taobao.com" - }; - - - AlipayUserCertifyOpenInitializeResponse response = Factory.Member.Identification().Init( - Guid.NewGuid().ToString(), "FACE", identityParam, merchantConfig); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.NotNull(response.CertifyId); - } - - [Test] - public void TestCertify() - { - AlipayUserCertifyOpenCertifyResponse response = Factory.Member.Identification().Certify("bbdb57e87211279e2c22de5846d85161"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.IsTrue(response.Body.Contains("https://openapi.alipay.com/gateway.do?alipay_sdk=alipay-easysdk-net")); - Assert.IsTrue(response.Body.Contains("sign")); - } - - [Test] - public void TestQuery() - { - AlipayUserCertifyOpenQueryResponse response = Factory.Member.Identification().Query("89ad1f1b8171d9741c3e5620fd77f9de"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "CERTIFY_ID_EXPIRED"); - Assert.AreEqual(response.SubMsg, "认证已失效"); - Assert.NotNull(response.HttpBody); - Assert.IsNull(response.Passed); - Assert.IsNull(response.IdentityInfo); - Assert.IsNull(response.MaterialInfo); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/App/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/App/ClientTest.cs deleted file mode 100644 index 1137fb54..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/App/ClientTest.cs +++ /dev/null @@ -1,54 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Payment.App.Models; -using System.Collections.Generic; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Payment.App -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestPay() - { - AlipayTradeAppPayResponse response = Factory.Payment.App().Pay("iPhone6 16G", - "f4833085-0c46-4bb0-8e5f-622a02a4cffc", "0.10"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.IsTrue(response.Body.Contains("app_id=2019022663440152&biz_content=%7b%22subject%22%3a%22iPhone6+16G%22%2c%22" + - "out_trade_no%22%3a%22f4833085-0c46-4bb0-8e5f-622a02a4cffc%22%2c%22total_amount%22%3a%220.10%22%7d&charset=UTF-8&" + - "format=json&method=alipay.trade.app.pay¬ify_url=https%3a%2f%2fwww.test.com%2fcallback&sign=")); - } - - [Test] - public void TestPayWithOptional() - { - AlipayTradeAppPayResponse response = Factory.Payment.App() - .Agent("ca34ea491e7146cc87d25fca24c4cD11") - .Optional("extend_params", GetHuabeiConfig()) - .Pay("iPhone6 16G", "f4833085-0c46-4bb0-8e5f-622a02a4cffc", "0.10"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.IsTrue(response.Body.Contains("app_auth_token=ca34ea491e7146cc87d25fca24c4cD11&app_id=2019022663440152&biz_content=%7b%22subject%22%3a%22iPhone6+16G%22%2c" - + "%22out_trade_no%22%3a%22f4833085-0c46-4bb0-8e5f-622a02a4cffc%22%2c%22total_amount%22%3a%220" - + ".10%22%2c%22extend_params%22%3a%7b%22hb_fq_num%22%3a%223%22%2c%22hb_fq_seller_percent%22%3a%22100%22%7d%7d&charset=UTF" - + "-8&format=json&method=alipay.trade.app.pay¬ify_url=https%3a%2f%2fwww.test.com%2fcallback&sign=")); - } - - private Dictionary GetHuabeiConfig() - { - Dictionary extendParams = new Dictionary - { - { "hb_fq_num", "3" }, - { "hb_fq_seller_percent", "100" } - }; - return extendParams; - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Common/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Common/ClientTest.cs deleted file mode 100644 index 2087f22b..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Common/ClientTest.cs +++ /dev/null @@ -1,154 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Payment.Common.Models; -using System; -using System.Collections.Generic; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Payment.Common -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestCreate() - { - string outTradeNo = Guid.NewGuid().ToString(); - AlipayTradeCreateResponse response = Factory.Payment.Common().Create("iPhone6 16G", - outTradeNo, "88.88", "2088002656718920"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.OutTradeNo, outTradeNo); - Assert.True(response.TradeNo.StartsWith("202")); - } - - [Test] - public void TestCreateWithOptional() - { - string outTradeNo = Guid.NewGuid().ToString(); - AlipayTradeCreateResponse response = Factory.Payment.Common().Optional("goods_detail", GetGoodsDetail()) - .Create("iPhone6 16G", outTradeNo, "0.01", "2088002656718920"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.OutTradeNo, outTradeNo); - Assert.True(response.TradeNo.StartsWith("202")); - } - - private List GetGoodsDetail() - { - List goodsDetail = new List(); - Dictionary goodDetail = new Dictionary(); - goodDetail.Add("goods_id", "apple-01"); - goodDetail.Add("goods_name", "iPhone6 16G"); - goodDetail.Add("quantity", 1); - goodDetail.Add("price", "0.01"); - goodsDetail.Add(goodDetail); - return goodsDetail; - } - - [Test] - public void TestQuery() - { - AlipayTradeQueryResponse response = Factory.Payment.Common().Query("6f149ddb-ab8c-4546-81fb-5880b4aaa318"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.OutTradeNo, "6f149ddb-ab8c-4546-81fb-5880b4aaa318"); - } - - [Test] - public void TestCancel() - { - AlipayTradeCancelResponse response = Factory.Payment.Common().Cancel(CreateNewAndReturnOutTradeNo()); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.Action, "close"); - } - - [Test] - public void TestClose() - { - AlipayTradeCloseResponse response = Factory.Payment.Common().Close(CreateNewAndReturnOutTradeNo()); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - } - - [Test] - public void TestRefund() - { - AlipayTradeRefundResponse response = Factory.Payment.Common().Refund(CreateNewAndReturnOutTradeNo(), "0.01"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "ACQ.TRADE_STATUS_ERROR"); - Assert.AreEqual(response.SubMsg, "交易状态不合法"); - Assert.NotNull(response.HttpBody); - } - - [Test] - public void TestQueryRefund() - { - AlipayTradeFastpayRefundQueryResponse response = Factory.Payment.Common().QueryRefund( - "64628156-f784-4572-9540-485b7c91b850", "64628156-f784-4572-9540-485b7c91b850"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.RefundAmount, "0.01"); - Assert.AreEqual(response.TotalAmount, "0.01"); - } - - [Test] - public void TestDownloadBill() - { - AlipayDataDataserviceBillDownloadurlQueryResponse response = Factory.Payment.Common().DownloadBill("trade", "2020-01"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.IsTrue(response.BillDownloadUrl.StartsWith("http://dwbillcenter.alipay.com/")); - } - - private string CreateNewAndReturnOutTradeNo() - { - return Factory.Payment.Common().Create("iPhone6 16G", Guid.NewGuid().ToString(), - "88.88", "2088002656718920").OutTradeNo; - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/FaceToFace/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/FaceToFace/ClientTest.cs deleted file mode 100644 index b5a2c2cb..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/FaceToFace/ClientTest.cs +++ /dev/null @@ -1,51 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Payment.FaceToFace.Models; -using System; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Payment.FaceToFace -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestPay() - { - AlipayTradePayResponse response = Factory.Payment.FaceToFace().Pay("Iphone6 16G", CreateNewAndReturnOutTradeNo(), "0.01", "1234567890"); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "40004"); - Assert.AreEqual(response.Msg, "Business Failed"); - Assert.AreEqual(response.SubCode, "ACQ.PAYMENT_AUTH_CODE_INVALID"); - Assert.AreEqual(response.SubMsg, "支付失败,获取顾客账户信息失败,请顾客刷新付款码后重新收款,如再次收款失败,请联系管理员处理。[SOUNDWAVE_PARSER_FAIL]"); - Assert.NotNull(response.HttpBody); - } - - [Test] - public void TestPreCreate() - { - AlipayTradePrecreateResponse response = Factory.Payment.FaceToFace().PreCreate("iPhone6 16G", - CreateNewAndReturnOutTradeNo(), "0.10"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.IsTrue(response.QrCode.StartsWith("https://qr.alipay.com/")); - } - - private string CreateNewAndReturnOutTradeNo() - { - return Factory.Payment.Common().Create("Iphone6 16G", Guid.NewGuid().ToString(), - "88.88", "2088002656718920").OutTradeNo; - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Huabei/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Huabei/ClientTest.cs deleted file mode 100644 index 137f6852..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Huabei/ClientTest.cs +++ /dev/null @@ -1,39 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Payment.Huabei.Models; -using System; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Payment.HuaBei -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestCrate() - { - string outTradeNo = Guid.NewGuid().ToString(); - HuabeiConfig config = new HuabeiConfig() - { - HbFqNum = "3", - HbFqSellerPercent = "0" - }; - AlipayTradeCreateResponse response = Factory.Payment.Huabei().Create("Iphone6 16G", - outTradeNo, "88.88", "2088002656718920", config); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.OutTradeNo, outTradeNo); - Assert.True(response.TradeNo.StartsWith("202")); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Page/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Page/ClientTest.cs deleted file mode 100644 index 05398e9a..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Page/ClientTest.cs +++ /dev/null @@ -1,50 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Payment.Page.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Payment.Page -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestPay() - { - AlipayTradePagePayResponse response = Factory.Payment.Page().Pay("iPhone6 16G", - "e5b5bd79-8310-447d-b63b-0fe3a393324d", "0.10", "https://www.taobao.com"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.IsTrue(response.Body.Contains("
")); - Assert.IsTrue(response.Body.Contains("")); - Assert.IsTrue(response.Body.Contains("")); - } - - [Test] - public void TestPayWithOptionalNotify() - { - AlipayTradePagePayResponse response = Factory.Payment.Page().AsyncNotify("https://www.test2.com/newCallback") - .Pay("iPhone6 16G", "e5b5bd79-8310-447d-b63b-0fe3a393324d", "0.10", "https://www.taobao.com"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.IsTrue(response.Body.Contains("")); - Assert.IsTrue(response.Body.Contains("")); - Assert.IsTrue(response.Body.Contains("")); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Wap/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Wap/ClientTest.cs deleted file mode 100644 index 7b8b512d..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Payment/Wap/ClientTest.cs +++ /dev/null @@ -1,65 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Payment.Wap.Models; -using Alipay.EasySDK.Kernel.Util; -using System.Collections.Generic; - -namespace UnitTest.Payment.Wap -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestPay() - { - AlipayTradeWapPayResponse response = Factory.Payment.Wap().Pay("iPhone6 16G", - "b7f4bc7d-ea4b-4efd-9072-d8ea913c8946", "0.10", - "https://www.taobao.com", "https://www.taobao.com"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.IsTrue(response.Body.Contains("")); - Assert.IsTrue(response.Body.Contains("")); - Assert.IsTrue(response.Body.Contains("")); - } - - [Test] - public void TestPayWithOptional() - { - Dictionary optionalArgs = new Dictionary - { - { "timeout_express", "10m" }, - { "body", "iPhone6 16G"} - }; - AlipayTradeWapPayResponse response = Factory.Payment.Wap() - .Agent("ca34ea491e7146cc87d25fca24c4cD11").BatchOptional(optionalArgs) - .Pay("iPhone6 16G", "b7f4bc7d-ea4b-4efd-9072-d8ea913c8946", "0.10", - "https://www.taobao.com", "https://www.taobao.com"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.IsTrue(response.Body.Contains("")); - Assert.IsTrue(response.Body.Contains("")); - Assert.IsTrue(response.Body.Contains("")); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Security/TextRisk/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Security/TextRisk/ClientTest.cs deleted file mode 100644 index 54f2d718..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Security/TextRisk/ClientTest.cs +++ /dev/null @@ -1,31 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Security.TextRisk.Models; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Security.TextRisk -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestDetect() - { - AlipaySecurityRiskContentDetectResponse response = Factory.Security.TextRisk().Detect("test"); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.Null(response.SubCode); - Assert.Null(response.SubMsg); - Assert.NotNull(response.HttpBody); - Assert.AreEqual(response.Action, "PASSED"); - Assert.NotNull(response.UniqueId); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/TestAccount.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/TestAccount.cs deleted file mode 100644 index 5ce42994..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/TestAccount.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System; -using Alipay.EasySDK.Kernel; -using Newtonsoft.Json; - -namespace UnitTest -{ - public static class TestAccount - { - /// - /// 从文件中读取私钥 - /// - /// 注意:实际开发过程中,请务必注意不要将私钥信息配置在源码中(比如配置为常量或储存在配置文件的某个字段中等),因为私钥的保密等级往往比源码高得多,将会增加私钥泄露的风险。 - /// 推荐将私钥信息储存在专用的私钥文件中,将私钥文件通过安全的流程分发到服务器的安全储存区域上,仅供自己的应用运行时读取。 - /// - /// 私钥对应的APP_ID - /// 私钥字符串 - private static string GetPrivateKey(string appId) - { - IDictionary json = JsonConvert.DeserializeObject>( - File.ReadAllText(GetSolutionBasePath() + "/UnitTest/Fixture/privateKey.json")); - return json[appId]; - } - - /// - /// 获取解决方案所在路径 - /// - /// 解决方案所在绝对路径 - public static string GetSolutionBasePath() - { - string current = Directory.GetCurrentDirectory(); - do - { - current = Directory.GetParent(current).ToString(); - } - while (!current.EndsWith("bin", StringComparison.Ordinal)); - return current + "/../.."; - } - - /// - /// 线上小程序测试账号 - /// - public static class Mini - { - public static Config CONFIG = GetConfig(); - - public static Config GetConfig() - { - return new Config - { - Protocol = "https", - GatewayHost = "openapi.alipay.com", - AppId = "<-- 请填写您的AppId,例如:2019022663440152 -->", - SignType = "RSA2", - - AlipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAumX1EaLM4ddn1Pia4SxTRb62aVYxU8I2mHMqrc" - + "pQU6F01mIO/DjY7R4xUWcLi0I2oH/BK/WhckEDCFsGrT7mO+JX8K4sfaWZx1aDGs0m25wOCNjp+DCVBXotXSCurqgGI/9UrY+" - + "QydYDnsl4jB65M3p8VilF93MfS01omEDjUW+1MM4o3FP0khmcKsoHnYGs21btEeh0LK1gnnTDlou6Jwv3Ew36CbCNY2cYkuyP" - + "AW0j47XqzhWJ7awAx60fwgNBq6ZOEPJnODqH20TAdTLNxPSl4qGxamjBO+RuInBy+Bc2hFHq3pNv6hTAfktggRKkKzDlDEUwg" - + "SLE7d2eL7P6rwIDAQAB -->", - MerchantPrivateKey = GetPrivateKey("<-- 请填写您的AppId,例如:2019022663440152 -->"), - NotifyUrl = "<-- 请填写您的异步通知接收服务器地址,例如:https://www.test.com/callback" - }; - } - } - - /// - /// 线上生活号测试账号 - /// - public static class OpenLife - { - public static Config CONFIG = new Config - { - Protocol = "https", - GatewayHost = "openapi.alipay.com", - AppId = "<-- 请填写您的AppId,例如:2019051064521003 -->", - SignType = "RSA2", - - AlipayCertPath = "<-- 请填写您的支付宝公钥证书文件路径,例如:GetSolutionBasePath() + \"/UnitTest/Fixture/alipayCertPublicKey_RSA2.crt\" -->", - AlipayRootCertPath = "<-- 请填写您的支付宝根证书文件路径,例如:GetSolutionBasePath() + \"/UnitTest/Fixture/alipayRootCert.crt\" -->", - MerchantCertPath = "<-- 请填写您的应用公钥证书文件路径,例如:GetSolutionBasePath() + \"/UnitTest/Fixture/appCertPublicKey_2019051064521003.crt\" -->", - MerchantPrivateKey = GetPrivateKey("<-- 请填写您的AppId,例如:2019051064521003 -->") - }; - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/UnitTest.csproj b/vendor/alipaysdk/easysdk/csharp/UnitTest/UnitTest.csproj deleted file mode 100644 index 308f735d..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/UnitTest.csproj +++ /dev/null @@ -1,50 +0,0 @@ - - - - netcoreapp2.1 - - false - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive -all - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Util/AES/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Util/AES/ClientTest.cs deleted file mode 100644 index 77370fb8..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Util/AES/ClientTest.cs +++ /dev/null @@ -1,31 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Kernel; - -namespace UnitTest.Util.AES -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Config config = TestAccount.Mini.GetConfig(); - config.EncryptKey = "aa4BtZ4tspm2wnXLb1ThQA=="; - Factory.SetOptions(config); - } - - [Test] - public void TestDecrypt() - { - string plainText = Factory.Util.AES().Decrypt("ILpoMowjIQjfYMR847rnFQ=="); - Assert.AreEqual(plainText, "test1234567"); - } - - [Test] - public void TestEncrypt() - { - string cipherText = Factory.Util.AES().Encrypt("test1234567"); - Assert.AreEqual(cipherText, "ILpoMowjIQjfYMR847rnFQ=="); - } - } -} diff --git a/vendor/alipaysdk/easysdk/csharp/UnitTest/Util/Generic/ClientTest.cs b/vendor/alipaysdk/easysdk/csharp/UnitTest/Util/Generic/ClientTest.cs deleted file mode 100644 index 003ef76b..00000000 --- a/vendor/alipaysdk/easysdk/csharp/UnitTest/Util/Generic/ClientTest.cs +++ /dev/null @@ -1,79 +0,0 @@ -using NUnit.Framework; -using Alipay.EasySDK.Factory; -using Alipay.EasySDK.Util.Generic.Models; -using System; -using System.Collections.Generic; -using Alipay.EasySDK.Kernel.Util; - -namespace UnitTest.Util.Generic -{ - public class ClientTest - { - [SetUp] - public void SetUp() - { - Factory.SetOptions(TestAccount.Mini.CONFIG); - } - - [Test] - public void TestExecuteWithoutAppAuthToken() - { - string outTradeNo = Guid.NewGuid().ToString(); - AlipayOpenApiGenericResponse response = Factory.Util.Generic().Execute( - "alipay.trade.create", null, GetBizParams(outTradeNo)); - - Assert.IsTrue(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "10000"); - Assert.AreEqual(response.Msg, "Success"); - Assert.IsNull(response.SubCode); - Assert.IsNull(response.SubMsg); - Assert.NotNull(response.HttpBody); - } - - [Test] - public void TestExecuteWithAppAuthToken() - { - string outTradeNo = Guid.NewGuid().ToString(); - AlipayOpenApiGenericResponse response = Factory.Util.Generic().Execute( - "alipay.trade.create", GetTextParams(), GetBizParams(outTradeNo)); - - Assert.IsFalse(ResponseChecker.Success(response)); - Assert.AreEqual(response.Code, "20001"); - Assert.AreEqual(response.Msg, "Insufficient Token Permissions"); - Assert.AreEqual(response.SubCode, "aop.invalid-app-auth-token"); - Assert.AreEqual(response.SubMsg, "无效的应用授权令牌"); - Assert.NotNull(response.HttpBody); - } - - private Dictionary GetTextParams() - { - return new Dictionary - { - { "app_auth_token", "201712BB_D0804adb2e743078d1822d536956X34" } - }; - - } - - private Dictionary GetBizParams(string outTradeNo) - { - return new Dictionary - { - { "subject", "Iphone6 16G" }, - { "out_trade_no", outTradeNo }, - { "total_amount", "0.10" }, - { "buyer_id", "2088002656718920" }, - { "extend_params", GetHuabeiParams() } - }; - - } - - private Dictionary GetHuabeiParams() - { - return new Dictionary - { - { "hb_fq_num", "3"}, - { "hb_fq_seller_percent", "3"} - }; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/README.md b/vendor/alipaysdk/easysdk/java/README.md deleted file mode 100644 index 044d8e1f..00000000 --- a/vendor/alipaysdk/easysdk/java/README.md +++ /dev/null @@ -1,233 +0,0 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.alipay.sdk/alipay-easysdk.svg)](https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk) -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk?ref=badge_shield) - -欢迎使用 Alipay **Easy** SDK for Java 。 - -Alipay Esay SDK for Java让您不用复杂编程即可访支付宝开放平台开放的各项常用能力,SDK可以自动帮您满足能力调用过程中所需的证书校验、加签、验签、发送HTTP请求等非功能性要求。 - -下面向您介绍Alipay Easy SDK for Java 的基本设计理念和使用方法。 - -## 设计理念 -不同于原有的[Alipay SDK](https://github.com/alipay/alipay-sdk-java-all)通用而全面的设计理念,Alipay Easy SDK对开放能力的API进行了更加贴近高频场景的精心设计与裁剪,简化了服务端调用方式,让调用API像使用语言内置的函数一样简便。 - -同时,您也不必担心面向高频场景提炼的API可能无法完全契合自己的个性化场景,Alipay Easy SDK支持灵活的动态扩展方式,同样可以满足低频参数、低频API的使用需求。 - -Alipay Easy SDK提供了与[能力地图](https://opendocs.alipay.com/mini/00am3f)相对应的代码组织结构,让开发者可以快速找到不同能力对应的API。 - -Alipay Easy SDK主要目标是提升开发者在**服务端**集成支付宝开放平台开放的各类核心能力的效率。 - -## 环境要求 -1. Alipay Easy SDK for Java 需要配合`JDK 1.8`或其以上版本。 - -2. 使用 Alipay Easy SDK for Java 之前 ,您需要先前往[支付宝开发平台-开发者中心](https://openhome.alipay.com/platform/developerIndex.htm)完成开发者接入的一些准备工作,包括创建应用、为应用添加功能包、设置应用的接口加签方式等。 - -3. 准备工作完成后,注意保存如下信息,后续将作为使用SDK的输入。 - -* 加签模式为公钥证书模式时(推荐) - -`AppId`、`应用的私钥`、`应用公钥证书文件`、`支付宝公钥证书文件`、`支付宝根证书文件` - -* 加签模式为公钥模式时 - -`AppId`、`应用的私钥`、`支付宝公钥` - -## 安装依赖 -### 通过[Maven](https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk)来管理项目依赖 -推荐通过Maven来管理项目依赖,您只需在项目的`pom.xml`文件中声明如下依赖 - -```xml - - com.alipay.sdk - alipay-easysdk - Use the version shown in the maven badge - -``` - -## 快速开始 -### 普通调用 -以下这段代码示例向您展示了使用Alipay Easy SDK for Java调用一个API的3个主要步骤: - -1. 设置参数(全局只需设置一次)。 -2. 发起API调用。 -3. 处理响应或异常。 - -```java -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.factory.Factory.Payment; -import com.alipay.easysdk.kernel.Config; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse; - -public class Main { - public static void main(String[] args) throws Exception { - // 1. 设置参数(全局只需设置一次) - Factory.setOptions(getOptions()); - try { - // 2. 发起API调用(以创建当面付收款二维码为例) - AlipayTradePrecreateResponse response = Payment.FaceToFace() - .preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); - // 3. 处理响应或异常 - if (ResponseChecker.success(response)) { - System.out.println("调用成功"); - } else { - System.err.println("调用失败,原因:" + response.msg + "," + response.subMsg); - } - } catch (Exception e) { - System.err.println("调用遭遇异常,原因:" + e.getMessage()); - throw new RuntimeException(e.getMessage(), e); - } - } - - private static Config getOptions() { - Config config = new Config(); - config.protocol = "https"; - config.gatewayHost = "openapi.alipay.com"; - config.signType = "RSA2"; - - config.appId = "<-- 请填写您的AppId,例如:2019091767145019 -->"; - - // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中 - config.merchantPrivateKey = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->"; - - //注:证书文件路径支持设置为文件系统中的路径或CLASS_PATH中的路径,优先从文件系统中加载,加载失败后会继续尝试从CLASS_PATH中加载 - config.merchantCertPath = "<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->"; - config.alipayCertPath = "<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->"; - config.alipayRootCertPath = "<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt -->"; - - //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可 - // config.alipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->"; - - //可设置异步通知接收服务地址(可选) - config.notifyUrl = "<-- 请填写您的支付类接口异步通知接收服务地址,例如:https://www.test.com/callback -->"; - - //可设置AES密钥,调用AES加解密相关接口时需要(可选) - config.encryptKey = "<-- 请填写您的AES密钥,例如:aa4BtZ4tspm2wnXLb1ThQA== -->"; - - return config; - } -} -``` - -### 扩展调用 -#### ISV代调用 - -```java -Factory.Payment.FaceToFace() - // 调用agent扩展方法,设置app_auth_token,完成ISV代调用 - .agent("ca34ea491e7146cc87d25fca24c4cD11") - .preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -#### 设置独立的异步通知地址 - -```java -Factory.Payment.FaceToFace() - // 调用asyncNotify扩展方法,可以为每此API调用,设置独立的异步通知地址 - // 此处设置的异步通知地址的优先级高于全局Config中配置的异步通知地址 - .asyncNotify("https://www.test.com/callback") - .preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -#### 设置可选业务参数 - -```java -List goodsDetailList = new ArrayList<>(); -Map goodsDetail = new HashMap<>(); -goodsDetail.put("goods_id", "apple-01"); -goodsDetail.put("goods_name", "Apple iPhone11 128G"); -goodsDetail.put("quantity", 1); -goodsDetail.put("price", "5799.00"); -goodsDetailList.add(goodsDetail); - -Factory.Payment.FaceToFace() - // 调用optional扩展方法,完成可选业务参数(biz_content下的可选字段)的设置 - .optional("seller_id", "2088102146225135") - .optional("discountable_amount", "8.88") - .optional("goods_detail", goodsDetailList) - .preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); - - -Map optionalArgs = new HashMap<>(); -optionalArgs.put("seller_id", "2088102146225135"); -optionalArgs.put("discountable_amount", "8.88"); -optionalArgs.put("goods_detail", goodsDetailList); - -Factory.Payment.FaceToFace() - // 也可以调用batchOptional扩展方法,批量设置可选业务参数(biz_content下的可选字段) - .batchOptional(optionalArgs) - .preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` -#### 多种扩展灵活组合 - -```java -// 多种扩展方式可灵活组装(对扩展方法的调用顺序没有要求) -Factory.Payment.FaceToFace() - .agent("ca34ea491e7146cc87d25fca24c4cD11") - .asyncNotify("https://www.test.com/callback") - .optional("seller_id", "2088102146225135") - .preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -## API组织规范 -在Alipay Easy SDK中,API的引用路径与能力地图的组织层次一致,遵循如下规范 - -> Factory.能力名称.场景名称().接口方法名称( ... ) - -比如,如果您想要使用[能力地图](https://opendocs.alipay.com/mini/00am3f)中`营销能力`下的`模板消息`场景中的`小程序发送模板消息`,只需按如下形式编写调用代码即可。 - -`Factory.Marketing.TemplateMessage().send( ... )` - -其中,接口方法名称通常是对其依赖的OpenAPI功能的一个最简概况,接口方法的出入参与OpenAPI中同名参数含义一致,可参照OpenAPI相关参数的使用说明。 - -Alipay Easy SDK将致力于保持良好的API命名,以符合开发者的编程直觉。 - -## 已支持的API列表 - -| 能力类别 | 场景类别 | 接口方法名称 | 调用的OpenAPI名称 | -|-----------|-----------------|------------------------|-----------------------------------------------------------| -| Base | OAuth | getToken | alipay\.system\.oauth\.token | -| Base | OAuth | refreshToken | alipay\.system\.oauth\.token | -| Base | Qrcode | create | alipay\.open\.app\.qrcode\.create | -| Base | Image | upload | alipay\.offline\.material\.image\.upload | -| Base | Video | upload | alipay\.offline\.material\.image\.upload | -| Member | Identification | init | alipay\.user\.certify\.open\.initialize | -| Member | Identification | certify | alipay\.user\.certify\.open\.certify | -| Member | Identification | query | alipay\.user\.certify\.open\.query | -| Payment | Common | create | alipay\.trade\.create | -| Payment | Common | query | alipay\.trade\.query | -| Payment | Common | refund | alipay\.trade\.refund | -| Payment | Common | close | alipay\.trade\.close | -| Payment | Common | cancel | alipay\.trade\.cancel | -| Payment | Common | queryRefund | alipay\.trade\.fastpay\.refund\.query | -| Payment | Common | downloadBill | alipay\.data\.dataservice\.bill\.downloadurl\.query | -| Payment | Common | verifyNotify | - | -| Payment | Huabei | create | alipay\.trade\.create | -| Payment | FaceToFace | pay | alipay\.trade\.pay | -| Payment | FaceToFace | precreate | alipay\.trade\.precreate | -| Payment | App | pay | alipay\.trade\.app\.pay | -| Payment | Page | pay | alipay\.trade\.page\.pay | -| Payment | Wap | pay | alipay\.trade\.wap\.pay | -| Security | TextRisk | detect | alipay\.security\.risk\.content\.detect | -| Marketing | Pass | createTemplate | alipay\.pass\.template\.add | -| Marketing | Pass | updateTemplate | alipay\.pass\.template\.update | -| Marketing | Pass | addInstance | alipay\.pass\.instance\.add | -| Marketing | Pass | updateInstance | alipay\.pass\.instance\.update | -| Marketing | TemplateMessage | send | alipay\.open\.app\.mini\.templatemessage\.send | -| Marketing | OpenLife | createImageTextContent | alipay\.open\.public\.message\.content\.create | -| Marketing | OpenLife | modifyImageTextContent | alipay\.open\.public\.message\.content\.modify | -| Marketing | OpenLife | sendText | alipay\.open\.public\.message\.total\.send | -| Marketing | OpenLife | sendImageText | alipay\.open\.public\.message\.total\.send | -| Marketing | OpenLife | sendSingleMessage | alipay\.open\.public\.message\.single\.send | -| Marketing | OpenLife | recallMessage | alipay\.open\.public\.life\.msg\.recall | -| Marketing | OpenLife | setIndustry | alipay\.open\.public\.template\.message\.industry\.modify | -| Marketing | OpenLife | getIndustry | alipay\.open\.public\.setting\.category\.query | -| Util | AES | decrypt | - | -| Util | AES | encrypt | - | -| Util | Generic | execute | - | - -> 注:更多高频场景的API持续更新中,敬请期待。 - -## 文档 -[API Doc](./../APIDoc.md) - -[Alipay Easy SDK](./../README.md) diff --git a/vendor/alipaysdk/easysdk/java/pom.xml b/vendor/alipaysdk/easysdk/java/pom.xml deleted file mode 100644 index 0de69297..00000000 --- a/vendor/alipaysdk/easysdk/java/pom.xml +++ /dev/null @@ -1,195 +0,0 @@ - - - 4.0.0 - com.alipay.sdk - alipay-easysdk - 2.2.2 - Alipay Easy SDK - https://open.alipay.com - Alipay Easy SDK for Java - allows you to enjoy a minimalist programming experience - and quickly access the various high-frequency capabilities of the Alipay Open Platform. - - - - mvnrepository - mvnrepository - http://www.mvnrepository.com/ - default - - true - - - false - - - - - UTF-8 - 1.7 - 1.7 - - - - junit - junit - 4.11 - test - - - ch.qos.logback - logback-core - 1.2.3 - test - - - ch.qos.logback - logback-classic - 1.2.3 - test - - - ch.qos.logback - logback-access - 1.2.3 - test - - - org.mockito - mockito-core - 3.2.0 - test - - - com.alipay.sdk - easysdk-kernel - 1.0.11 - - - - - sonatype-nexus-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - - sonatype-nexus-staging - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - MIT License - http://www.opensource.org/licenses/mit-license.php - - - - scm:git:git@github.com:alipay/alipay-easysdk.git - scm:git:ssh://github.com:alipay/alipay-easysdk.git - http://github.com/alipay/alipay-easysdk/tree/master/java - - - - antopen - antopen - antopen@aliyun.com - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.7 - 1.7 - UTF-8 - - - - org.apache.maven.plugins - maven-jar-plugin - 2.3.2 - - - - - maven-deploy-plugin - 2.8.2 - - - default-deploy - deploy - - deploy - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.7 - true - - ossrh - https://oss.sonatype.org/ - true - - - - org.apache.maven.plugins - maven-scm-plugin - 1.8.1 - - - org.apache.maven.plugins - maven-source-plugin - 2.1.2 - - - attach-sources - verify - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - true - UTF-8 - UTF-8 - UTF-8 - -Xdoclint:none - - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - - \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/Client.java deleted file mode 100644 index d951cb53..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/Client.java +++ /dev/null @@ -1,178 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.image; - -import com.aliyun.tea.*; -import com.alipay.easysdk.base.image.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayOfflineMaterialImageUploadResponse upload(String imageName, String imageFilePath) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 100000), - new TeaPair("readTimeout", 100000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.offline.material.image.upload"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = new java.util.HashMap<>(); - java.util.Map textParams = TeaConverter.buildMap( - new TeaPair("image_type", "jpg"), - new TeaPair("image_name", imageName) - ); - java.util.Map fileParams = TeaConverter.buildMap( - new TeaPair("image_content", imageFilePath) - ); - String boundary = _kernel.getRandomBoundary(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", _kernel.concatStr("multipart/form-data;charset=utf-8;boundary=", boundary)) - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams - )); - request_.body = _kernel.toMultipartRequestBody(textParams, fileParams, boundary); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.offline.material.image.upload"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOfflineMaterialImageUploadResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOfflineMaterialImageUploadResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/models/AlipayOfflineMaterialImageUploadResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/models/AlipayOfflineMaterialImageUploadResponse.java deleted file mode 100644 index d0b1f453..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/image/models/AlipayOfflineMaterialImageUploadResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.image.models; - -import com.aliyun.tea.*; - -public class AlipayOfflineMaterialImageUploadResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("image_id") - @Validation(required = true) - public String imageId; - - @NameInMap("image_url") - @Validation(required = true) - public String imageUrl; - - public static AlipayOfflineMaterialImageUploadResponse build(java.util.Map map) throws Exception { - AlipayOfflineMaterialImageUploadResponse self = new AlipayOfflineMaterialImageUploadResponse(); - return TeaModel.build(map, self); - } - - public AlipayOfflineMaterialImageUploadResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOfflineMaterialImageUploadResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOfflineMaterialImageUploadResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOfflineMaterialImageUploadResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOfflineMaterialImageUploadResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayOfflineMaterialImageUploadResponse setImageId(String imageId) { - this.imageId = imageId; - return this; - } - public String getImageId() { - return this.imageId; - } - - public AlipayOfflineMaterialImageUploadResponse setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - return this; - } - public String getImageUrl() { - return this.imageUrl; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/Client.java deleted file mode 100644 index 0a457abf..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/Client.java +++ /dev/null @@ -1,261 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.oauth; - -import com.aliyun.tea.*; -import com.alipay.easysdk.base.oauth.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipaySystemOauthTokenResponse getToken(String code) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.system.oauth.token"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = new java.util.HashMap<>(); - java.util.Map textParams = TeaConverter.buildMap( - new TeaPair("grant_type", "authorization_code"), - new TeaPair("code", code) - ); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.system.oauth.token"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipaySystemOauthTokenResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipaySystemOauthTokenResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipaySystemOauthTokenResponse refreshToken(String refreshToken) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.system.oauth.token"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = new java.util.HashMap<>(); - java.util.Map textParams = TeaConverter.buildMap( - new TeaPair("grant_type", "refresh_token"), - new TeaPair("refresh_token", refreshToken) - ); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.system.oauth.token"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipaySystemOauthTokenResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipaySystemOauthTokenResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/models/AlipaySystemOauthTokenResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/models/AlipaySystemOauthTokenResponse.java deleted file mode 100644 index 9920331c..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/oauth/models/AlipaySystemOauthTokenResponse.java +++ /dev/null @@ -1,133 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.oauth.models; - -import com.aliyun.tea.*; - -public class AlipaySystemOauthTokenResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("user_id") - @Validation(required = true) - public String userId; - - @NameInMap("access_token") - @Validation(required = true) - public String accessToken; - - @NameInMap("expires_in") - @Validation(required = true) - public Long expiresIn; - - @NameInMap("refresh_token") - @Validation(required = true) - public String refreshToken; - - @NameInMap("re_expires_in") - @Validation(required = true) - public Long reExpiresIn; - - public static AlipaySystemOauthTokenResponse build(java.util.Map map) throws Exception { - AlipaySystemOauthTokenResponse self = new AlipaySystemOauthTokenResponse(); - return TeaModel.build(map, self); - } - - public AlipaySystemOauthTokenResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipaySystemOauthTokenResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipaySystemOauthTokenResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipaySystemOauthTokenResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipaySystemOauthTokenResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipaySystemOauthTokenResponse setUserId(String userId) { - this.userId = userId; - return this; - } - public String getUserId() { - return this.userId; - } - - public AlipaySystemOauthTokenResponse setAccessToken(String accessToken) { - this.accessToken = accessToken; - return this; - } - public String getAccessToken() { - return this.accessToken; - } - - public AlipaySystemOauthTokenResponse setExpiresIn(Long expiresIn) { - this.expiresIn = expiresIn; - return this; - } - public Long getExpiresIn() { - return this.expiresIn; - } - - public AlipaySystemOauthTokenResponse setRefreshToken(String refreshToken) { - this.refreshToken = refreshToken; - return this; - } - public String getRefreshToken() { - return this.refreshToken; - } - - public AlipaySystemOauthTokenResponse setReExpiresIn(Long reExpiresIn) { - this.reExpiresIn = reExpiresIn; - return this; - } - public Long getReExpiresIn() { - return this.reExpiresIn; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/Client.java deleted file mode 100644 index 9a66b6aa..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/Client.java +++ /dev/null @@ -1,176 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.qrcode; - -import com.aliyun.tea.*; -import com.alipay.easysdk.base.qrcode.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayOpenAppQrcodeCreateResponse create(String urlParam, String queryParam, String describe) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.app.qrcode.create"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("url_param", urlParam), - new TeaPair("query_param", queryParam), - new TeaPair("describe", describe) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.app.qrcode.create"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenAppQrcodeCreateResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenAppQrcodeCreateResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/models/AlipayOpenAppQrcodeCreateResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/models/AlipayOpenAppQrcodeCreateResponse.java deleted file mode 100644 index a1a6daa1..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/qrcode/models/AlipayOpenAppQrcodeCreateResponse.java +++ /dev/null @@ -1,85 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.qrcode.models; - -import com.aliyun.tea.*; - -public class AlipayOpenAppQrcodeCreateResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("qr_code_url") - @Validation(required = true) - public String qrCodeUrl; - - public static AlipayOpenAppQrcodeCreateResponse build(java.util.Map map) throws Exception { - AlipayOpenAppQrcodeCreateResponse self = new AlipayOpenAppQrcodeCreateResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenAppQrcodeCreateResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenAppQrcodeCreateResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenAppQrcodeCreateResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenAppQrcodeCreateResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenAppQrcodeCreateResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayOpenAppQrcodeCreateResponse setQrCodeUrl(String qrCodeUrl) { - this.qrCodeUrl = qrCodeUrl; - return this; - } - public String getQrCodeUrl() { - return this.qrCodeUrl; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/Client.java deleted file mode 100644 index fcb1989d..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/Client.java +++ /dev/null @@ -1,178 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.video; - -import com.aliyun.tea.*; -import com.alipay.easysdk.base.video.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayOfflineMaterialImageUploadResponse upload(String videoName, String videoFilePath) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 100000), - new TeaPair("readTimeout", 100000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.offline.material.image.upload"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = new java.util.HashMap<>(); - java.util.Map textParams = TeaConverter.buildMap( - new TeaPair("image_type", "mp4"), - new TeaPair("image_name", videoName) - ); - java.util.Map fileParams = TeaConverter.buildMap( - new TeaPair("image_content", videoFilePath) - ); - String boundary = _kernel.getRandomBoundary(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", _kernel.concatStr("multipart/form-data;charset=utf-8;boundary=", boundary)) - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams - )); - request_.body = _kernel.toMultipartRequestBody(textParams, fileParams, boundary); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.offline.material.image.upload"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOfflineMaterialImageUploadResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOfflineMaterialImageUploadResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/models/AlipayOfflineMaterialImageUploadResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/models/AlipayOfflineMaterialImageUploadResponse.java deleted file mode 100644 index cbe2687c..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/base/video/models/AlipayOfflineMaterialImageUploadResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.base.video.models; - -import com.aliyun.tea.*; - -public class AlipayOfflineMaterialImageUploadResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("image_id") - @Validation(required = true) - public String imageId; - - @NameInMap("image_url") - @Validation(required = true) - public String imageUrl; - - public static AlipayOfflineMaterialImageUploadResponse build(java.util.Map map) throws Exception { - AlipayOfflineMaterialImageUploadResponse self = new AlipayOfflineMaterialImageUploadResponse(); - return TeaModel.build(map, self); - } - - public AlipayOfflineMaterialImageUploadResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOfflineMaterialImageUploadResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOfflineMaterialImageUploadResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOfflineMaterialImageUploadResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOfflineMaterialImageUploadResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayOfflineMaterialImageUploadResponse setImageId(String imageId) { - this.imageId = imageId; - return this; - } - public String getImageId() { - return this.imageId; - } - - public AlipayOfflineMaterialImageUploadResponse setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - return this; - } - public String getImageUrl() { - return this.imageUrl; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/Factory.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/Factory.java deleted file mode 100644 index 12db128a..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/Factory.java +++ /dev/null @@ -1,231 +0,0 @@ -/** - * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.factory; - -import com.alipay.easysdk.kernel.AlipayConstants; -import com.alipay.easysdk.kernel.Client; -import com.alipay.easysdk.kernel.Config; -import com.alipay.easysdk.kernel.Context; -import com.alipay.easysdk.kms.aliyun.AliyunKMSClient; -import com.alipay.easysdk.kms.aliyun.AliyunKMSSigner; -import com.aliyun.tea.TeaModel; - -/** - * 客户端工厂,用于快速配置和访问各种场景下的API Client - * - * 注:该Factory获取的Client不可储存重复使用,请每次均通过Factory完成调用 - * - * @author zhongyu - * @version $Id: Factory.java, v 0.1 2020年01月18日 11:26 AM zhongyu Exp $ - */ -public class Factory { - - public static final String SDK_VERSION = "alipay-easysdk-java-2.2.2"; - - /** - * 将一些初始化耗时较多的信息缓存在上下文中 - */ - private static Context context; - - /** - * 设置客户端参数,只需设置一次,即可反复使用各种场景下的API Client - * - * @param options 客户端参数对象 - */ - public static void setOptions(Config options) { - try { - context = new Context(options, SDK_VERSION); - - if (AlipayConstants.AliyunKMS.equals(context.getConfig(AlipayConstants.SIGN_PROVIDER_CONFIG_KEY))) { - context.setSigner(new AliyunKMSSigner(new AliyunKMSClient(TeaModel.buildMap(options)))); - } - - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 支付能力相关 - */ - public static class Payment { - /** - * 获取支付通用API Client - * - * @return 支付通用API Client - */ - public static com.alipay.easysdk.payment.common.Client Common() throws Exception { - return new com.alipay.easysdk.payment.common.Client(new Client(context)); - } - - /** - * 获取花呗相关API Client - * - * @return 花呗相关API Client - */ - public static com.alipay.easysdk.payment.huabei.Client Huabei() throws Exception { - return new com.alipay.easysdk.payment.huabei.Client(new Client(context)); - } - - /** - * 获取当面付相关API Client - * - * @return 当面付相关API Client - */ - public static com.alipay.easysdk.payment.facetoface.Client FaceToFace() throws Exception { - return new com.alipay.easysdk.payment.facetoface.Client(new Client(context)); - } - - /** - * 获取电脑网站支付相关API Client - * - * @return 电脑网站支付相关API Client - */ - public static com.alipay.easysdk.payment.page.Client Page() throws Exception { - return new com.alipay.easysdk.payment.page.Client(new Client(context)); - } - - /** - * 获取手机网站支付相关API Client - * - * @return 手机网站支付相关API Client - */ - public static com.alipay.easysdk.payment.wap.Client Wap() throws Exception { - return new com.alipay.easysdk.payment.wap.Client(new Client(context)); - } - - /** - * 获取手机APP支付相关API Client - * - * @return 手机APP支付相关API Client - */ - public static com.alipay.easysdk.payment.app.Client App() throws Exception { - return new com.alipay.easysdk.payment.app.Client(new Client(context)); - } - } - - /** - * 基础能力相关 - */ - public static class Base { - /** - * 获取图片相关API Client - * - * @return 图片相关API Client - */ - public static com.alipay.easysdk.base.image.Client Image() throws Exception { - return new com.alipay.easysdk.base.image.Client(new Client(context)); - } - - /** - * 获取视频相关API Client - * - * @return 视频相关API Client - */ - public static com.alipay.easysdk.base.video.Client Video() throws Exception { - return new com.alipay.easysdk.base.video.Client(new Client(context)); - } - - /** - * 获取OAuth认证相关API Client - * - * @return OAuth认证相关API Client - */ - public static com.alipay.easysdk.base.oauth.Client OAuth() throws Exception { - return new com.alipay.easysdk.base.oauth.Client(new Client(context)); - } - - /** - * 获取小程序二维码相关API Client - * - * @return 小程序二维码相关API Client - */ - public static com.alipay.easysdk.base.qrcode.Client Qrcode() throws Exception { - return new com.alipay.easysdk.base.qrcode.Client(new Client(context)); - } - } - - /** - * 营销能力相关 - */ - public static class Marketing { - /** - * 获取生活号相关API Client - * - * @return 生活号相关API Client - */ - public static com.alipay.easysdk.marketing.openlife.Client OpenLife() throws Exception { - return new com.alipay.easysdk.marketing.openlife.Client(new Client(context)); - } - - /** - * 获取支付宝卡包相关API Client - * - * @return 支付宝卡包相关API Client - */ - public static com.alipay.easysdk.marketing.pass.Client Pass() throws Exception { - return new com.alipay.easysdk.marketing.pass.Client(new Client(context)); - } - - /** - * 获取小程序模板消息相关API Client - * - * @return 小程序模板消息相关API Client - */ - public static com.alipay.easysdk.marketing.templatemessage.Client TemplateMessage() throws Exception { - return new com.alipay.easysdk.marketing.templatemessage.Client(new Client(context)); - } - } - - /** - * 会员能力相关 - */ - public static class Member { - /** - * 获取支付宝身份认证相关API Client - * - * @return 支付宝身份认证相关API Client - */ - public static com.alipay.easysdk.member.identification.Client Identification() throws Exception { - return new com.alipay.easysdk.member.identification.Client(new Client(context)); - } - } - - /** - * 安全能力相关 - */ - public static class Security { - /** - * 获取文本风险识别相关API Client - * - * @return 文本风险识别相关API Client - */ - public static com.alipay.easysdk.security.textrisk.Client TextRisk() throws Exception { - return new com.alipay.easysdk.security.textrisk.Client(new Client(context)); - } - } - - /** - * 辅助工具 - */ - public static class Util { - /** - * 获取OpenAPI通用接口,可通过自行拼装参数,调用几乎所有OpenAPI - * - * @return OpenAPI通用接口 - */ - public static com.alipay.easysdk.util.generic.Client Generic() throws Exception { - return new com.alipay.easysdk.util.generic.Client(new Client(context)); - } - - /** - * 获取AES128加解密相关API Client,常用于会员手机号的解密 - * - * @return AES128加解密相关API Client - */ - public static com.alipay.easysdk.util.aes.Client AES() throws Exception { - return new com.alipay.easysdk.util.aes.Client(new Client(context)); - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/MultipleFactory.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/MultipleFactory.java deleted file mode 100644 index 67e53660..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/factory/MultipleFactory.java +++ /dev/null @@ -1,201 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.factory; - -import com.alipay.easysdk.kernel.AlipayConstants; -import com.alipay.easysdk.kernel.Client; -import com.alipay.easysdk.kernel.Config; -import com.alipay.easysdk.kernel.Context; -import com.alipay.easysdk.kms.aliyun.AliyunKMSClient; -import com.alipay.easysdk.kms.aliyun.AliyunKMSSigner; -import com.aliyun.tea.TeaModel; - -/** - * @author junying - * @version : MultipleFactory.java, v 0.1 2020年12月23日 2:14 下午 junying Exp $ - */ -public class MultipleFactory { - - public final String SDK_VERSION = "alipay-easysdk-java-2.2.2"; - - /** - * 将一些初始化耗时较多的信息缓存在上下文中 - */ - public Context context; - - /** - * 设置客户端参数,只需设置一次,即可反复使用各种场景下的API Client - * - * @param options 客户端参数对象 - */ - public void setOptions(Config options) { - try { - context = new Context(options, SDK_VERSION); - - if (AlipayConstants.AliyunKMS.equals(context.getConfig(AlipayConstants.SIGN_PROVIDER_CONFIG_KEY))) { - context.setSigner(new AliyunKMSSigner(new AliyunKMSClient(TeaModel.buildMap(options)))); - } - - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 获取支付通用API Client - * - * @return 支付通用API Client - */ - public com.alipay.easysdk.payment.common.Client Common() throws Exception { - return new com.alipay.easysdk.payment.common.Client(new Client(context)); - } - - /** - * 获取花呗相关API Client - * - * @return 花呗相关API Client - */ - public com.alipay.easysdk.payment.huabei.Client Huabei() throws Exception { - return new com.alipay.easysdk.payment.huabei.Client(new Client(context)); - } - - /** - * 获取当面付相关API Client - * - * @return 当面付相关API Client - */ - public com.alipay.easysdk.payment.facetoface.Client FaceToFace() throws Exception { - return new com.alipay.easysdk.payment.facetoface.Client(new Client(context)); - } - - /** - * 获取电脑网站支付相关API Client - * - * @return 电脑网站支付相关API Client - */ - public com.alipay.easysdk.payment.page.Client Page() throws Exception { - return new com.alipay.easysdk.payment.page.Client(new Client(context)); - } - - /** - * 获取手机网站支付相关API Client - * - * @return 手机网站支付相关API Client - */ - public com.alipay.easysdk.payment.wap.Client Wap() throws Exception { - return new com.alipay.easysdk.payment.wap.Client(new Client(context)); - } - - /** - * 获取手机APP支付相关API Client - * - * @return 手机APP支付相关API Client - */ - public com.alipay.easysdk.payment.app.Client App() throws Exception { - return new com.alipay.easysdk.payment.app.Client(new Client(context)); - } - - - /** - * 获取图片相关API Client - * - * @return 图片相关API Client - */ - public com.alipay.easysdk.base.image.Client Image() throws Exception { - return new com.alipay.easysdk.base.image.Client(new Client(context)); - } - - /** - * 获取视频相关API Client - * - * @return 视频相关API Client - */ - public com.alipay.easysdk.base.video.Client Video() throws Exception { - return new com.alipay.easysdk.base.video.Client(new Client(context)); - } - - /** - * 获取OAuth认证相关API Client - * - * @return OAuth认证相关API Client - */ - public com.alipay.easysdk.base.oauth.Client OAuth() throws Exception { - return new com.alipay.easysdk.base.oauth.Client(new Client(context)); - } - - /** - * 获取小程序二维码相关API Client - * - * @return 小程序二维码相关API Client - */ - public com.alipay.easysdk.base.qrcode.Client Qrcode() throws Exception { - return new com.alipay.easysdk.base.qrcode.Client(new Client(context)); - } - - - /** - * 获取生活号相关API Client - * - * @return 生活号相关API Client - */ - public com.alipay.easysdk.marketing.openlife.Client OpenLife() throws Exception { - return new com.alipay.easysdk.marketing.openlife.Client(new Client(context)); - } - - /** - * 获取支付宝卡包相关API Client - * - * @return 支付宝卡包相关API Client - */ - public com.alipay.easysdk.marketing.pass.Client Pass() throws Exception { - return new com.alipay.easysdk.marketing.pass.Client(new Client(context)); - } - - /** - * 获取小程序模板消息相关API Client - * - * @return 小程序模板消息相关API Client - */ - public com.alipay.easysdk.marketing.templatemessage.Client TemplateMessage() throws Exception { - return new com.alipay.easysdk.marketing.templatemessage.Client(new Client(context)); - } - - - /** - * 获取支付宝身份认证相关API Client - * - * @return 支付宝身份认证相关API Client - */ - public com.alipay.easysdk.member.identification.Client Identification() throws Exception { - return new com.alipay.easysdk.member.identification.Client(new Client(context)); - } - - /** - * 获取文本风险识别相关API Client - * - * @return 文本风险识别相关API Client - */ - public com.alipay.easysdk.security.textrisk.Client TextRisk() throws Exception { - return new com.alipay.easysdk.security.textrisk.Client(new Client(context)); - } - - /** - * 获取OpenAPI通用接口,可通过自行拼装参数,调用几乎所有OpenAPI - * - * @return OpenAPI通用接口 - */ - public com.alipay.easysdk.util.generic.Client Generic() throws Exception { - return new com.alipay.easysdk.util.generic.Client(new Client(context)); - } - - /** - * 获取AES128加解密相关API Client,常用于会员手机号的解密 - * - * @return AES128加解密相关API Client - */ - public com.alipay.easysdk.util.aes.Client AES() throws Exception { - return new com.alipay.easysdk.util.aes.Client(new Client(context)); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSClient.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSClient.java deleted file mode 100644 index 04645db3..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSClient.java +++ /dev/null @@ -1,286 +0,0 @@ -package com.alipay.easysdk.kms.aliyun; - -import com.alipay.easysdk.kernel.AlipayConstants; -import com.alipay.easysdk.kms.aliyun.models.AsymmetricSignRequest; -import com.alipay.easysdk.kms.aliyun.models.AsymmetricSignResponse; -import com.alipay.easysdk.kms.aliyun.models.GetPublicKeyRequest; -import com.alipay.easysdk.kms.aliyun.models.GetPublicKeyResponse; -import com.alipay.easysdk.kms.aliyun.models.RuntimeOptions; -import com.aliyun.tea.TeaConverter; -import com.aliyun.tea.TeaModel; -import com.aliyun.tea.TeaPair; -import org.bouncycastle.asn1.gm.GMNamedCurves; -import org.bouncycastle.asn1.x9.X9ECParameters; -import org.bouncycastle.crypto.Digest; -import org.bouncycastle.crypto.digests.SM3Digest; -import org.bouncycastle.crypto.params.ECDomainParameters; -import org.bouncycastle.crypto.params.ECPublicKeyParameters; -import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.math.ec.ECFieldElement; -import org.bouncycastle.util.encoders.Base64; - -import java.security.KeyFactory; -import java.security.MessageDigest; -import java.security.PublicKey; -import java.security.Security; -import java.security.spec.X509EncodedKeySpec; -import java.util.HashMap; -import java.util.Map; - -/** - * 实现KMS的Client - * - * @author aliyunkms - * @version $Id: AliyunKMSClient.java, v 0.1 2020年05月08日 10:53 PM aliyunkms Exp $ - */ -public class AliyunKMSClient extends AliyunRpcClient { - //支付宝signType与KMS签名算法映射表 - private static final Map signAlgs = new HashMap<>(); - private static final Map digestAlgs = new HashMap<>(); - private static final Map namedCurves = new HashMap<>(); - - static { - digestAlgs.put("RSA_PKCS1_SHA_256", "SHA-256"); - digestAlgs.put("RSA_PSS_SHA_256", "SHA-256"); - digestAlgs.put("ECDSA_SHA_256", "SHA-256"); - - namedCurves.put("SM2DSA", "sm2p256v1"); - - signAlgs.put("RSA2", "RSA_PKCS1_SHA_256"); - } - - private String keyId; - private String keyVersionId; - private String algorithm; - private PublicKey publicKey; - private String protocol; - private String method; - private String version; - private Integer connectTimeout; - private Integer readTimeout; - private Integer maxAttempts; - private boolean ignoreSSL; - - public AliyunKMSClient(Map config) throws Exception { - super(config); - this.keyId = (String) config.get("kmsKeyId"); - this.keyVersionId = (String) config.get("kmsKeyVersionId"); - this.algorithm = signAlgs.get((String) config.get(AlipayConstants.SIGN_TYPE_CONFIG_KEY)); - this.publicKey = null; - this.protocol = "HTTPS"; - this.method = "POST"; - this.version = "2016-01-20"; - this.connectTimeout = 15000; - this.readTimeout = 15000; - this.maxAttempts = 3; - this.ignoreSSL = false; - } - - private GetPublicKeyResponse _getPublicKey(GetPublicKeyRequest request) throws Exception { - validateModel(request); - RuntimeOptions runtime = RuntimeOptions.build(TeaConverter.buildMap( - new TeaPair("connectTimeout", this.connectTimeout), - new TeaPair("readTimeout", this.readTimeout), - new TeaPair("maxAttempts", this.maxAttempts), - new TeaPair("ignoreSSL", this.ignoreSSL) - )); - return TeaModel.toModel( - this.doRequest("GetPublicKey", this.protocol, this.method, this.version, TeaModel.buildMap(request), null, runtime), - new GetPublicKeyResponse()); - } - - private PublicKey getPublicKey(String keyId, String keyVersionId) throws Exception { - GetPublicKeyRequest request = GetPublicKeyRequest.build(TeaConverter.buildMap( - new TeaPair("KeyId", keyId), - new TeaPair("KeyVersionId", keyVersionId) - )); - GetPublicKeyResponse response = _getPublicKey(request); - String pemKey = response.publicKey; - pemKey = pemKey.replaceFirst("-----BEGIN PUBLIC KEY-----", ""); - pemKey = pemKey.replaceFirst("-----END PUBLIC KEY-----", ""); - pemKey = pemKey.replaceAll("\\s", ""); - byte[] derKey = Base64.decode(pemKey); - X509EncodedKeySpec keySpec = new X509EncodedKeySpec(derKey); - Security.addProvider(new BouncyCastleProvider()); - return KeyFactory.getInstance("EC", "BC").generatePublic(keySpec); - } - - private byte[] getZ(ECPublicKeyParameters ecPublicKeyParameters, ECDomainParameters ecDomainParameters) { - Digest digest = new SM3Digest(); - digest.reset(); - - String userID = "1234567812345678"; - addUserID(digest, userID.getBytes()); - - addFieldElement(digest, ecDomainParameters.getCurve().getA()); - addFieldElement(digest, ecDomainParameters.getCurve().getB()); - addFieldElement(digest, ecDomainParameters.getG().getAffineXCoord()); - addFieldElement(digest, ecDomainParameters.getG().getAffineYCoord()); - addFieldElement(digest, ecPublicKeyParameters.getQ().getAffineXCoord()); - addFieldElement(digest, ecPublicKeyParameters.getQ().getAffineYCoord()); - - byte[] result = new byte[digest.getDigestSize()]; - digest.doFinal(result, 0); - return result; - } - - private void addUserID(Digest digest, byte[] userID) { - int len = userID.length * 8; - digest.update((byte) (len >> 8 & 0xFF)); - digest.update((byte) (len & 0xFF)); - digest.update(userID, 0, userID.length); - } - - private void addFieldElement(Digest digest, ECFieldElement v) { - byte[] p = v.getEncoded(); - digest.update(p, 0, p.length); - } - - private byte[] calcSM3Digest(PublicKey pubKey, byte[] message) { - X9ECParameters x9ECParameters = GMNamedCurves.getByName(namedCurves.get(this.algorithm)); - ECDomainParameters ecDomainParameters = new ECDomainParameters(x9ECParameters.getCurve(), x9ECParameters.getG(), - x9ECParameters.getN()); - BCECPublicKey localECPublicKey = (BCECPublicKey) pubKey; - ECPublicKeyParameters ecPublicKeyParameters = new ECPublicKeyParameters(localECPublicKey.getQ(), ecDomainParameters); - byte[] z = getZ(ecPublicKeyParameters, ecDomainParameters); - Digest digest = new SM3Digest(); - digest.update(z, 0, z.length); - digest.update(message, 0, message.length); - byte[] result = new byte[digest.getDigestSize()]; - digest.doFinal(result, 0); - return result; - } - - private AsymmetricSignResponse _asymmetricSign(AsymmetricSignRequest request) throws Exception { - validateModel(request); - RuntimeOptions runtime = RuntimeOptions.build(TeaConverter.buildMap( - new TeaPair("connectTimeout", this.connectTimeout), - new TeaPair("readTimeout", this.readTimeout), - new TeaPair("maxAttempts", this.maxAttempts), - new TeaPair("ignoreSSL", this.ignoreSSL) - )); - return TeaModel.toModel( - this.doRequest("AsymmetricSign", this.protocol, this.method, this.version, TeaModel.buildMap(request), null, runtime), - new AsymmetricSignResponse()); - } - - private String asymmetricSign(String keyId, String keyVersionId, String algorithm, byte[] message) throws Exception { - byte[] digest; - if (algorithm.equals("SM2DSA")) { - if (this.publicKey == null) { - this.publicKey = getPublicKey(keyId, keyVersionId); - } - digest = calcSM3Digest(this.publicKey, message); - } else { - digest = MessageDigest.getInstance(digestAlgs.get(algorithm)).digest(message); - } - - AsymmetricSignRequest request = AsymmetricSignRequest.build(TeaConverter.buildMap( - new TeaPair("keyId", keyId), - new TeaPair("keyVersionId", keyVersionId), - new TeaPair("algorithm", algorithm), - new TeaPair("digest", Base64.toBase64String(digest)) - )); - AsymmetricSignResponse response = _asymmetricSign(request); - return response.value; - } - - /** - * 计算签名 - * - * @param content 待签名的内容 - * @return 签名值的Base64串 - */ - public String sign(String content) throws Exception { - return asymmetricSign(this.keyId, this.keyVersionId, this.algorithm, content.getBytes(AlipayConstants.DEFAULT_CHARSET)); - } - - public String getAlgorithm() { - return this.algorithm; - } - - public void setAlgorithm(String algorithm) { - this.algorithm = algorithm; - } - - public String getKeyId() { - return this.keyId; - } - - public void setKeyId(String keyId) { - this.keyId = keyId; - } - - public String getKeyVersionId() { - return this.keyVersionId; - } - - public void setKeyVersionId(String keyVersionId) { - this.keyVersionId = keyVersionId; - } - - public PublicKey getPublicKey() { - return this.publicKey; - } - - public void setPublicKey(PublicKey publicKey) { - this.publicKey = publicKey; - } - - public String getProtocol() { - return this.protocol; - } - - public void setProtocol(String protocol) { - this.protocol = protocol; - } - - public String getMethod() { - return this.method; - } - - public void setMethod(String method) { - this.method = method; - } - - public String getVersion() { - return this.version; - } - - public void setVersion(String version) { - this.version = version; - } - - public Integer getConnectTimeout() { - return this.connectTimeout; - } - - public void setConnectTimeout(Integer connectTimeout) { - this.connectTimeout = connectTimeout; - } - - public Integer getReadTimeout() { - return this.readTimeout; - } - - public void setReadTimeout(Integer readTimeout) { - this.readTimeout = readTimeout; - } - - public Integer getMaxAttempts() { - return this.maxAttempts; - } - - public void setMaxAttempts(Integer maxAttempts) { - this.maxAttempts = maxAttempts; - } - - public boolean getIgnoreSSL() { - return this.ignoreSSL; - } - - public void setIgnoreSSL(boolean ignoreSSL) { - this.ignoreSSL = ignoreSSL; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSConfig.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSConfig.java deleted file mode 100644 index f5979c6d..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSConfig.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.alipay.easysdk.kms.aliyun; - - -import com.alipay.easysdk.kernel.Config; -import com.aliyun.tea.*; - -/** - * KMS配置参数模型 - */ -public class AliyunKMSConfig extends Config { - /** - * 阿里云官方申请的AccessKey Id - */ - @NameInMap("aliyunAccessKeyId") - public String aliyunAccessKeyId; - - /** - * 阿里云官方申请的AccessKey Secret - */ - @NameInMap("aliyunAccessKeySecret") - public String aliyunAccessKeySecret; - - /** - * 从阿里云官方获取的临时安全令牌Security Token - */ - @NameInMap("aliyunSecurityToken") - public String aliyunSecurityToken; - - /** - * 阿里云RAM角色全局资源描述符 - */ - @NameInMap("aliyunRoleArn") - public String aliyunRoleArn; - - /** - * 阿里云RAM角色自定义策略 - */ - @NameInMap("aliyunRolePolicy") - public String aliyunRolePolicy; - - /** - * 阿里云ECS实例RAM角色名称 - */ - @NameInMap("aliyunRoleName") - public String aliyunRoleName; - - /** - * KMS主密钥ID - */ - @NameInMap("kmsKeyId") - public String kmsKeyId; - - /** - * KMS主密钥版本ID - */ - @NameInMap("kmsKeyVersionId") - public String kmsKeyVersionId; - - /** - * KMS服务地址 - * KMS服务地址列表详情,请参考: - * https://help.aliyun.com/document_detail/69006.html?spm=a2c4g.11186623.2.9.783f77cfAoNhY6#concept-69006-zh - */ - @NameInMap("kmsEndpoint") - public String kmsEndpoint; - - /** - * 凭据类型,支持的类型有"access_key","sts","ecs_ram_role","ram_role_arn" - */ - @NameInMap("credentialType") - public String credentialType; -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSSigner.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSSigner.java deleted file mode 100644 index 4888f4f9..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunKMSSigner.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.alipay.easysdk.kms.aliyun; - -import com.alipay.easysdk.kernel.util.Signer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * KMS签名器 - * - * @author aliyunkms - * @version $Id: AliyunKMSSigner.java, v 0.1 2020年05月08日 9:10 PM aliyunkms Exp $ - */ -public class AliyunKMSSigner extends Signer { - private AliyunKMSClient client; - private static final Logger LOGGER = LoggerFactory.getLogger(Signer.class); - - public AliyunKMSSigner(AliyunKMSClient aliyunKmsClient) { - this.client = aliyunKmsClient; - } - - /** - * 计算签名 - * - * @param content 待签名的内容 - * @param privateKeyPem 私钥,使用KMS签名不使用此参数 - * @return 签名值的Base64串 - */ - public String sign(String content, String privateKeyPem) { - try { - return this.client.sign(content); - } catch (Exception e) { - String errorMessage = "签名遭遇异常,content=" + content + " reason=" + e.getMessage(); - LOGGER.error(errorMessage, e); - throw new RuntimeException(errorMessage, e); - } - } - - public AliyunKMSClient getClient() { - return this.client; - } - - public void setClient(AliyunKMSClient client) { - this.client = client; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunRpcClient.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunRpcClient.java deleted file mode 100644 index 43424edd..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/AliyunRpcClient.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.alipay.easysdk.kms.aliyun; - -import com.alipay.easysdk.kms.aliyun.credentials.AccessKeyCredentials; -import com.alipay.easysdk.kms.aliyun.credentials.BasicSessionCredentials; -import com.alipay.easysdk.kms.aliyun.credentials.ICredentials; -import com.alipay.easysdk.kms.aliyun.credentials.provider.CredentialsProviderFactory; -import com.alipay.easysdk.kms.aliyun.credentials.provider.EcsRamRoleCredentialsProvider; -import com.alipay.easysdk.kms.aliyun.credentials.provider.ICredentialsProvider; -import com.alipay.easysdk.kms.aliyun.credentials.provider.RamRoleArnCredentialsProvider; -import com.alipay.easysdk.kms.aliyun.credentials.provider.StaticCredentialsProvider; -import com.alipay.easysdk.kms.aliyun.credentials.utils.CredentialType; -import com.alipay.easysdk.kms.aliyun.models.RuntimeOptions; -import com.aliyun.tea.Tea; -import com.aliyun.tea.TeaConverter; -import com.aliyun.tea.TeaException; -import com.aliyun.tea.TeaModel; -import com.aliyun.tea.TeaPair; -import com.aliyun.tea.TeaRequest; -import com.aliyun.tea.TeaResponse; -import com.aliyun.tea.TeaRetryableException; -import com.aliyun.tea.TeaUnretryableException; -import com.aliyun.tea.ValidateException; -import com.aliyun.tea.utils.StringUtils; -import com.google.gson.Gson; -import org.bouncycastle.util.encoders.Base64; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.SimpleTimeZone; -import java.util.UUID; - -public class AliyunRpcClient { - private final String accessKeyId; - private final String accessKeySecret; - private final String securityToken; - private final String roleArn; - private final String roleName; - private final String credentialType; - private final String policy; - private final String endpoint; - private final String format; - private final String signatureMethod; - private final String signatureVersion; - private final ICredentialsProvider credentialsProvider; - - public AliyunRpcClient(Map config) { - this.accessKeyId = (String) config.get("aliyunAccessKeyId"); - this.accessKeySecret = (String) config.get("aliyunAccessKeySecret"); - this.securityToken = (String) config.get("aliyunSecurityToken"); - this.roleArn = (String) config.get("aliyunRoleArn"); - this.roleName = (String) config.get("aliyunRoleName"); - this.credentialType = (String) config.get("credentialType"); - this.policy = (String) config.get("aliyunRolePolicy"); - this.endpoint = (String) config.get("kmsEndpoint"); - this.format = "json"; - this.signatureMethod = "HMAC-SHA1"; - this.signatureVersion = "1.0"; - this.credentialsProvider = getCredentialsProvider(); - } - - public static String percentEncode(String value) throws UnsupportedEncodingException { - return value != null ? URLEncoder.encode(value, "UTF-8").replace("+", "%20") - .replace("*", "%2A").replace("%7E", "~") : null; - } - - private static String getSignature(Map signedParams, String method, String secret) throws Exception { - String[] sortedKeys = signedParams.keySet().toArray(new String[0]); - Arrays.sort(sortedKeys); - StringBuilder canonicalizedQueryString = new StringBuilder(); - - for (String key : sortedKeys) { - if (!StringUtils.isEmpty(signedParams.get(key))) { - canonicalizedQueryString.append("&").append(percentEncode(key)).append("=").append( - percentEncode((String) signedParams.get(key))); - } - } - - Mac mac = Mac.getInstance("HmacSHA1"); - mac.init(new SecretKeySpec((secret + "&").getBytes(StandardCharsets.UTF_8), "HmacSHA1")); - String stringToSign = method + - "&" + - percentEncode("/") + - "&" + - percentEncode(canonicalizedQueryString.toString().substring(1)); - byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); - return Base64.toBase64String(signData); - } - - public static Object parseJSON(String json) { - return (new Gson()).fromJson(json, Map.class); - } - - public static Map assertAsMap(Object object) { - if (null != object && Map.class.isAssignableFrom(object.getClass())) { - return (Map) object; - } else { - throw new RuntimeException("The value is not a object"); - } - } - - public static byte[] readAsBytes(InputStream stream) throws IOException { - if (null == stream) { - return new byte[0]; - } else { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - byte[] buff = new byte[1024]; - - while (true) { - int read = stream.read(buff); - if (read == -1) { - return os.toByteArray(); - } - - os.write(buff, 0, read); - } - } - } - - public static String readAsString(InputStream stream) throws IOException { - return new String(readAsBytes(stream), StandardCharsets.UTF_8); - } - - public static Object readAsJSON(InputStream stream) throws IOException { - String body = readAsString(stream); - return parseJSON(body); - } - - public static String getTimestamp() { - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - df.setTimeZone(new SimpleTimeZone(0, "UTC")); - return df.format(new Date()); - } - - public static String getNonce() { - StringBuilder uniqueNonce = new StringBuilder(); - UUID uuid = UUID.randomUUID(); - uniqueNonce.append(uuid.toString()); - uniqueNonce.append(System.currentTimeMillis()); - uniqueNonce.append(Thread.currentThread().getId()); - return uniqueNonce.toString(); - } - - public static String toFormString(Map map) throws UnsupportedEncodingException { - if (null == map) { - return ""; - } - StringBuilder result = new StringBuilder(); - boolean first = true; - for (Map.Entry entry : map.entrySet()) { - if (StringUtils.isEmpty(entry.getValue())) { - continue; - } - if (first) { - first = false; - } else { - result.append("&"); - } - result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); - result.append("="); - result.append(URLEncoder.encode(String.valueOf(entry.getValue()), "UTF-8")); - } - return result.toString(); - } - - public static void validateModel(TeaModel m) throws Exception { - if (null == m) { - throw new ValidateException("parameter is not allowed as null"); - } else { - m.validate(); - } - } - - public static Map anyifyMapValue(Map map) { - Map result = new HashMap<>(); - if (null == map) { - return null; - } - for (Map.Entry entry : map.entrySet()) { - result.put(entry.getKey(), entry.getValue()); - } - return result; - } - - public static boolean is4xx(Number code) { - if (null == code) { - return false; - } else { - return code.intValue() >= 400 && code.intValue() < 500; - } - } - - public static boolean is5xx(Number code) { - if (null == code) { - return false; - } else { - return code.intValue() >= 500 && code.intValue() < 600; - } - } - - public static boolean isUnset(Object object) { - return null == object; - } - - private ICredentialsProvider getCredentialsProvider() { - CredentialsProviderFactory factory = new CredentialsProviderFactory(); - if (StringUtils.isEmpty(this.credentialType)) { - return getAccessKeyCredentialsProvider(this.accessKeyId, this.accessKeySecret, factory); - } - switch (this.credentialType) { - case CredentialType.ACCESS_KEY: - return getAccessKeyCredentialsProvider(this.accessKeyId, this.accessKeySecret, factory); - case CredentialType.STS: - return getStsTokenCredentialsProvider(this.accessKeyId, this.accessKeySecret, this.securityToken, factory); - case CredentialType.ECS_RAM_ROLE: - return getEcsRamRoleCredentialsProvider(this.roleName, factory); - case CredentialType.RAM_ROLE_ARN: - return getRamRoleArnCredentialsProvider(this.accessKeyId, this.accessKeySecret, this.roleArn, this.policy, factory); - } - throw new IllegalArgumentException("The credentialType is not supported"); - } - - private ICredentialsProvider getAccessKeyCredentialsProvider(String accessKeyId, String accessKeySecret, - CredentialsProviderFactory factory) { - return factory.createCredentialsProvider(new StaticCredentialsProvider(new AccessKeyCredentials(accessKeyId, accessKeySecret))); - } - - private ICredentialsProvider getStsTokenCredentialsProvider(String accessKeyId, String accessKeySecret, String securityToken, - CredentialsProviderFactory factory) { - return factory.createCredentialsProvider(new StaticCredentialsProvider(new BasicSessionCredentials(accessKeyId, - accessKeySecret, securityToken))); - } - - private ICredentialsProvider getEcsRamRoleCredentialsProvider(String roleName, CredentialsProviderFactory factory) { - if (StringUtils.isEmpty(roleName)) { - throw new IllegalArgumentException("The roleName is empty"); - } - return factory.createCredentialsProvider(new EcsRamRoleCredentialsProvider(roleName)); - } - - private ICredentialsProvider getRamRoleArnCredentialsProvider(String accessKeyId, String accessKeySecret, String roleArn, - String policy, CredentialsProviderFactory factory) { - if (StringUtils.isEmpty(accessKeyId) || StringUtils.isEmpty(accessKeySecret)) { - throw new IllegalArgumentException("The accessKeyId or accessKeySecret is empty"); - } - if (StringUtils.isEmpty(roleArn)) { - throw new IllegalArgumentException("The roleArn is empty"); - } - return factory.createCredentialsProvider(new RamRoleArnCredentialsProvider(accessKeyId, accessKeySecret, roleArn, policy)); - } - - public Map doRequest(String action, String protocol, String method, String version, Map query, - Map body, RuntimeOptions runtime) throws Exception { - Map runtime_ = TeaConverter.buildMap( - new TeaPair("readTimeout", runtime.readTimeout), - new TeaPair("connectTimeout", runtime.connectTimeout), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", runtime.maxAttempts) - )), - new TeaPair("backoff", TeaConverter.buildMap( - new TeaPair("policy", runtime.backoffPolicy), - new TeaPair("period", runtime.backoffPeriod) - )), - new TeaPair("ignoreSSL", runtime.ignoreSSL) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - request_.protocol = protocol; - request_.method = method; - request_.pathname = "/"; - request_.query = TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("Action", action), - new TeaPair("Format", this.format), - new TeaPair("Timestamp", getTimestamp()), - new TeaPair("Version", version), - new TeaPair("SignatureNonce", getNonce()) - ), - query - ); - request_.headers = TeaConverter.buildMap( - new TeaPair("host", this.endpoint) - ); - if (!isUnset(body)) { - java.util.Map tmp = anyifyMapValue(body); - request_.body = Tea.toReadable(toFormString(tmp)); - request_.headers.put("content-type", "application/x-www-form-urlencoded"); - } - - ICredentials credentials = this.credentialsProvider.getCredentials(); - if (credentials == null) { - throw new TeaRetryableException(); - } - - request_.query.put("SignatureMethod", this.signatureMethod); - request_.query.put("SignatureVersion", this.signatureVersion); - request_.query.put("AccessKeyId", credentials.getAccessKeyId()); - if (!StringUtils.isEmpty(credentials.getSecurityToken())) { - request_.query.put("SecurityToken", credentials.getSecurityToken()); - } - java.util.Map signedParam = TeaConverter.merge(String.class, - request_.query, - body - ); - request_.query.put("Signature", getSignature(signedParam, request_.method, credentials.getAccessKeySecret())); - - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - Object obj = readAsJSON(response_.body); - java.util.Map res = assertAsMap(obj); - if (is4xx(response_.statusCode) || is5xx(response_.statusCode)) { - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", res.get("Message")), - new TeaPair("data", res), - new TeaPair("code", res.get("Code")) - )); - } - - return res; - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw e; - } - } - - throw new TeaUnretryableException(_lastRequest); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/AccessKeyCredentials.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/AccessKeyCredentials.java deleted file mode 100644 index f3a33b38..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/AccessKeyCredentials.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials; - -import com.alipay.easysdk.kms.aliyun.credentials.utils.StringUtils; - -public class AccessKeyCredentials implements ICredentials { - private String accessKeyId; - private String accessKeySecret; - - public AccessKeyCredentials(String accessKeyId, String accessKeySecret) { - if (StringUtils.isEmpty(accessKeyId)) { - throw new IllegalArgumentException("Access key ID cannot be empty"); - } - if (StringUtils.isEmpty(accessKeySecret)) { - throw new IllegalArgumentException("Access key secret cannot be empty"); - } - this.accessKeyId = accessKeyId; - this.accessKeySecret = accessKeySecret; - } - - public void setAccessKeyId(String accessKeyId) { - this.accessKeyId = accessKeyId; - } - - public void setAccessKeySecret(String accessKeySecret) { - this.accessKeySecret = accessKeySecret; - } - - @Override - public String getAccessKeyId() { - return accessKeyId; - } - - @Override - public String getAccessKeySecret() { - return accessKeySecret; - } - - @Override - public String getSecurityToken() { - return null; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/BasicSessionCredentials.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/BasicSessionCredentials.java deleted file mode 100644 index d7e6279b..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/BasicSessionCredentials.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials; - -public class BasicSessionCredentials implements ICredentials { - protected final Long roleSessionDurationSeconds; - private final String accessKeyId; - private final String accessKeySecret; - private final String securityToken; - private Long sessionStartedTimeInMilliSeconds = 0L; - - public BasicSessionCredentials(String accessKeyId, String accessKeySecret, String securityToken) { - this(accessKeyId, accessKeySecret, securityToken, 0L); - } - - public BasicSessionCredentials(String accessKeyId, String accessKeySecret, String securityToken, Long roleSessionDurationSeconds) { - if (accessKeyId == null) { - throw new IllegalArgumentException("Access key ID cannot be null."); - } - if (accessKeySecret == null) { - throw new IllegalArgumentException("Access key secret cannot be null."); - } - this.accessKeyId = accessKeyId; - this.accessKeySecret = accessKeySecret; - this.securityToken = securityToken; - this.roleSessionDurationSeconds = roleSessionDurationSeconds; - this.sessionStartedTimeInMilliSeconds = System.currentTimeMillis(); - } - - @Override - public String getAccessKeyId() { - return accessKeyId; - } - - @Override - public String getAccessKeySecret() { - return accessKeySecret; - } - - @Override - public String getSecurityToken() { - return securityToken; - } - - public boolean willSoonExpire() { - if (roleSessionDurationSeconds == 0) { - return false; - } - long now = System.currentTimeMillis(); - double expireFact = 0.95; - return roleSessionDurationSeconds * expireFact < (now - sessionStartedTimeInMilliSeconds) / 1000.0; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/EcsRamRoleCredentials.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/EcsRamRoleCredentials.java deleted file mode 100644 index 89e40bac..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/EcsRamRoleCredentials.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -public class EcsRamRoleCredentials extends BasicSessionCredentials { - private final Long expiration; - private final Double expireFact = 0.95; - private final Long refreshIntervalInMillSeconds = 180000L; - private long lastFailedRefreshTime = 0; - - public EcsRamRoleCredentials(String accessKeyId, String accessKeySecret, String sessionToken, - String expiration, long roleSessionDurationSeconds) { - super(accessKeyId, accessKeySecret, sessionToken, roleSessionDurationSeconds); - - SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - parser.setTimeZone(TimeZone.getTimeZone("GMT")); - try { - Date date = parser.parse(expiration.replace('T', ' ').replace('Z', ' ')); - this.expiration = date.getTime(); - } catch (ParseException e) { - throw new IllegalArgumentException("Failed to get valid expiration time from ECS Metadata service."); - } - } - - @Override - public boolean willSoonExpire() { - long now = System.currentTimeMillis(); - return this.roleSessionDurationSeconds * (1 - expireFact) > (expiration - now) / 1000; - } - - public boolean isExpired() { - long now = System.currentTimeMillis(); - return now >= expiration - refreshIntervalInMillSeconds; - } - - public boolean shouldRefresh() { - long now = System.currentTimeMillis(); - return now - lastFailedRefreshTime > refreshIntervalInMillSeconds; - } - - public void setLastFailedRefreshTime() { - lastFailedRefreshTime = System.currentTimeMillis(); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/ICredentials.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/ICredentials.java deleted file mode 100644 index 13990d0e..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/ICredentials.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials; - -public interface ICredentials { - public String getAccessKeyId(); - public String getAccessKeySecret(); - public String getSecurityToken(); -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/exceptions/CredentialException.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/exceptions/CredentialException.java deleted file mode 100644 index ca606190..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/exceptions/CredentialException.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.exceptions; - -public class CredentialException extends Exception { - public CredentialException(String message) { - super(message); - } - @Override - public String getMessage() { - return super.getMessage(); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompatibleUrlConnClient.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompatibleUrlConnClient.java deleted file mode 100644 index caf46306..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompatibleUrlConnClient.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; -import java.io.ByteArrayOutputStream; -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.util.List; -import java.util.Map; - -public class CompatibleUrlConnClient implements Closeable { - protected static final String ACCEPT_ENCODING = "Accept-Encoding"; - - public static HttpResponse compatibleGetResponse(HttpRequest request) - throws IOException, NoSuchAlgorithmException, KeyManagementException { - CompatibleUrlConnClient client = new CompatibleUrlConnClient(); - HttpResponse response = client.syncInvoke(request); - client.close(); - return response; - } - - public HttpResponse syncInvoke(HttpRequest request) throws IOException, NoSuchAlgorithmException, KeyManagementException { - InputStream content = null; - HttpResponse response = null; - HttpURLConnection httpConn = buildHttpConnection(request); - - try { - httpConn.connect(); - content = httpConn.getInputStream(); - response = new HttpResponse(httpConn.getURL().toString()); - parseHttpConn(response, httpConn, content); - return response; - } catch (IOException e) { - content = httpConn.getErrorStream(); - response = new HttpResponse(httpConn.getURL().toString()); - parseHttpConn(response, httpConn, content); - return response; - } finally { - if (content != null) { - content.close(); - } - httpConn.disconnect(); - } - } - - public SSLSocketFactory createSSLSocketFactory() throws NoSuchAlgorithmException, KeyManagementException { - X509TrustManager compositeX509TrustManager = new CompositeX509TrustManager(); - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(null, new TrustManager[] {compositeX509TrustManager}, new java.security.SecureRandom()); - return sslContext.getSocketFactory(); - } - - public void checkHttpRequest(HttpRequest request) { - String strUrl = request.getUrl(); - if (null == strUrl) { - throw new IllegalArgumentException("URL is null for HttpRequest."); - } - if (null == request.getMethod()) { - throw new IllegalArgumentException("Method is not set for HttpRequest."); - } - } - - public HttpURLConnection initHttpConnection(URL url, HttpRequest request) - throws IOException, KeyManagementException, NoSuchAlgorithmException { - HttpURLConnection httpConn; - if ("https".equalsIgnoreCase(url.getProtocol())) { - HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection(); - SSLSocketFactory sslSocketFactory = createSSLSocketFactory(); - httpsConn.setSSLSocketFactory(sslSocketFactory); - httpsConn.setHostnameVerifier(new TrueHostnameVerifier()); - httpConn = httpsConn; - } else { - httpConn = (HttpURLConnection) url.openConnection(); - } - httpConn.setRequestMethod(request.getMethod().toString()); - httpConn.setInstanceFollowRedirects(false); - httpConn.setDoOutput(true); - httpConn.setDoInput(true); - httpConn.setUseCaches(false); - httpConn.setConnectTimeout(request.getConnectTimeout()); - httpConn.setReadTimeout(request.getReadTimeout()); - httpConn.setRequestProperty(ACCEPT_ENCODING, "identity"); - return httpConn; - } - - public HttpURLConnection buildHttpConnection(HttpRequest request) throws IOException, NoSuchAlgorithmException, KeyManagementException { - checkHttpRequest(request); - String strUrl = request.getUrl(); - URL url = new URL(strUrl); - System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); - HttpURLConnection httpConn = initHttpConnection(url, request); - return httpConn; - } - - public void parseHttpConn(HttpResponse response, HttpURLConnection httpConn, InputStream content) - throws IOException, NoSuchAlgorithmException { - byte[] buff = readContent(content); - response.setStatus(httpConn.getResponseCode()); - response.setResponseMessage(httpConn.getResponseMessage()); - Map> headers = httpConn.getHeaderFields(); - for (Map.Entry> entry : headers.entrySet()) { - String key = entry.getKey(); - if (null == key) { - continue; - } - List values = entry.getValue(); - StringBuilder builder = new StringBuilder(values.get(0)); - for (int i = 1; i < values.size(); i++) { - builder.append(","); - builder.append(values.get(i)); - } - response.putHeaderParameter(key, builder.toString()); - } - String type = response.getHeaderValue("Content-Type"); - if (buff != null && type != null) { - response.setEncoding("UTF-8"); - String[] split = type.split(";"); - response.setHttpContentType(FormatType.mapAcceptToFormat(split[0].trim())); - if (split.length > 1 && split[1].contains("=")) { - String[] codings = split[1].split("="); - response.setEncoding(codings[1].trim().toUpperCase()); - } - } - response.setHttpContent(buff, response.getEncoding(), response.getHttpContentType()); - } - - private byte[] readContent(InputStream content) throws IOException { - if (content == null) { - return null; - } - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - byte[] buff = new byte[1024]; - while (true) { - final int read = content.read(buff); - if (read == -1) { - break; - } - outputStream.write(buff, 0, read); - } - return outputStream.toByteArray(); - } - - @Override - public void close() throws IOException { - - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompositeX509TrustManager.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompositeX509TrustManager.java deleted file mode 100644 index ee04cf22..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/CompositeX509TrustManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -import javax.net.ssl.X509TrustManager; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; - -public class CompositeX509TrustManager implements X509TrustManager { - @Override - public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { - - } - - @Override - public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { - - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return new X509Certificate[0]; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/FormatType.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/FormatType.java deleted file mode 100644 index b63af19f..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/FormatType.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -import java.util.Arrays; - -public enum FormatType { - XML("application/xml", "text/xml"), - JSON("application/json", "text/json"), - RAW("application/octet-stream"), - FORM("application/x-www-form-urlencoded"); - - private final String[] formats; - - FormatType(String... formats) { - this.formats = formats; - } - - public static String mapFormatToAccept(FormatType format) { - return format.formats[0]; - } - - public static FormatType mapAcceptToFormat(String accept) { - for (FormatType value : values()) { - if (Arrays.asList(value.formats).contains(accept)) { - return value; - } - } - return FormatType.RAW; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpMessage.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpMessage.java deleted file mode 100644 index 7e6379fc..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpMessage.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -import com.alipay.easysdk.kms.aliyun.credentials.exceptions.CredentialException; -import com.alipay.easysdk.kms.aliyun.credentials.utils.Base64Utils; - -import javax.net.ssl.KeyManager; -import javax.net.ssl.X509TrustManager; -import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -public class HttpMessage { - protected static final String CONTENT_TYPE = "Content-Type"; - protected static final String CONTENT_MD5 = "Content-MD5"; - protected static final String CONTENT_LENGTH = "Content-Length"; - protected FormatType httpContentType = null; - protected byte[] httpContent = null; - protected String encoding = null; - protected Map headers = new HashMap(); - protected Integer connectTimeout = null; - protected Integer readTimeout = null; - private String url = null; - private MethodType method = null; - protected boolean ignoreSSLCerts = false; - private KeyManager[] keyManagers = null; - private X509TrustManager[] x509TrustManagers = null; - - public HttpMessage(String strUrl) { - this.url = strUrl; - } - - public HttpMessage() { - } - - public FormatType getHttpContentType() { - return httpContentType; - } - - public void setHttpContentType(FormatType httpContentType) { - this.httpContentType = httpContentType; - } - - public byte[] getHttpContent() { - return httpContent; - } - - public String getHttpContentString() throws CredentialException { - String stringContent = ""; - if (this.httpContent != null) { - try { - if (this.encoding == null) { - stringContent = new String(this.httpContent); - } else { - stringContent = new String(this.httpContent, this.encoding); - } - } catch (UnsupportedEncodingException e) { - throw new CredentialException("UnsupportedEncoding: Can not parse response due to unsupported encoding."); - } - } - return stringContent; - } - - public void setHttpContent(byte[] httpContent, String encoding, FormatType format) throws NoSuchAlgorithmException { - this.httpContent = httpContent; - if (null == httpContent) { - this.headers.remove(CONTENT_MD5); - this.headers.put(CONTENT_LENGTH, "0"); - this.headers.remove(CONTENT_TYPE); - this.httpContentType = null; - this.httpContent = null; - this.encoding = null; - return; - } - - // for GET HEADER DELETE OPTION method, sdk should ignore the content - if (getMethod() != null && !getMethod().hasContent()) { - httpContent = new byte[0]; - } - - this.httpContent = httpContent; - this.encoding = encoding; - String contentLen = String.valueOf(httpContent.length); - String strMd5 = md5Sum(httpContent); - this.headers.put(CONTENT_MD5, strMd5); - this.headers.put(CONTENT_LENGTH, contentLen); - if (null != format) { - this.headers.put(CONTENT_TYPE, FormatType.mapFormatToAccept(format)); - } - } - - public static String md5Sum(byte[] buff) throws NoSuchAlgorithmException { - MessageDigest md = MessageDigest.getInstance("MD5"); - byte[] messageDigest = md.digest(buff); - return Base64Utils.encode(messageDigest); - - } - - public String getEncoding() { - return encoding; - } - - public void setEncoding(String encoding) { - this.encoding = encoding; - } - - public Map getHeaders() { - return Collections.unmodifiableMap(headers); - } - - public String getHeaderValue(String name) { - return this.headers.get(name); - } - - public void putHeaderParameter(String name, String value) { - if (null != name && null != value) { - this.headers.put(name, value); - } - } - - public void setHeaders(Map headers) { - this.headers = headers; - } - - public Integer getConnectTimeout() { - return connectTimeout; - } - - public void setConnectTimeout(Integer connectTimeout) { - this.connectTimeout = connectTimeout; - } - - public Integer getReadTimeout() { - return readTimeout; - } - - public void setReadTimeout(Integer readTimeout) { - this.readTimeout = readTimeout; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public MethodType getMethod() { - return method; - } - - public void setMethod(MethodType method) { - this.method = method; - } - - public boolean isIgnoreSSLCerts() { - return ignoreSSLCerts; - } - - public void setIgnoreSSLCerts(boolean ignoreSSLCerts) { - this.ignoreSSLCerts = ignoreSSLCerts; - } - - public KeyManager[] getKeyManagers() { - return keyManagers; - } - - public void setKeyManagers(KeyManager[] keyManagers) { - this.keyManagers = keyManagers; - } - - public X509TrustManager[] getX509TrustManagers() { - return x509TrustManagers; - } - - public void setX509TrustManagers(X509TrustManager[] x509TrustManagers) { - this.x509TrustManagers = x509TrustManagers; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpRequest.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpRequest.java deleted file mode 100644 index a8fc38e7..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpRequest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -import com.alipay.easysdk.kms.aliyun.credentials.utils.ParameterUtils; - -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -public class HttpRequest extends HttpMessage { - private final Map immutableMap = new HashMap(); - - public HttpRequest() { - setCommonParameter(); - } - - public HttpRequest(String url) { - super(url); - setCommonParameter(); - } - - private void setCommonParameter() { - this.immutableMap.put("Timestamp", ParameterUtils.getISO8601Time(new Date())); - this.immutableMap.put("SignatureNonce", ParameterUtils.getUniqueNonce()); - this.immutableMap.put("SignatureMethod", "HMAC-SHA1"); - this.immutableMap.put("SignatureVersion", "1.0"); - } - - public void setUrlParameter(String key, String value) { - this.immutableMap.put(key, value); - } - - public String getUrlParameter(String key) { - return this.immutableMap.get(key); - } - - public Map getUrlParameters() { - return Collections.unmodifiableMap(immutableMap); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpResponse.java deleted file mode 100644 index 63350600..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/HttpResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -public class HttpResponse extends HttpMessage { - private int status; - private String responseMessage; - - public HttpResponse(String strUrl) { - super(strUrl); - } - - public HttpResponse() { - } - - public boolean isSuccess() { - return 200 <= this.status && this.status < 300; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getResponseMessage() { - return responseMessage; - } - - public void setResponseMessage(String responseMessage) { - this.responseMessage = responseMessage; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/MethodType.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/MethodType.java deleted file mode 100644 index b42718c4..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/MethodType.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -public enum MethodType { - GET(false), - PUT(true), - POST(true); - - private final boolean hasContent; - - MethodType(boolean hasContent) { - this.hasContent = hasContent; - } - - public boolean hasContent() { - return hasContent; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/TrueHostnameVerifier.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/TrueHostnameVerifier.java deleted file mode 100644 index 865600ea..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/http/TrueHostnameVerifier.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.http; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLSession; - -public class TrueHostnameVerifier implements HostnameVerifier { - @Override - public boolean verify(String s, SSLSession sslSession) { - return true; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/CredentialsProviderFactory.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/CredentialsProviderFactory.java deleted file mode 100644 index 393d8dff..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/CredentialsProviderFactory.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.provider; - -public class CredentialsProviderFactory { - public T createCredentialsProvider(T classInstance) { - return classInstance; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ECSMetadataServiceCredentialsFetcher.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ECSMetadataServiceCredentialsFetcher.java deleted file mode 100644 index f9ec70af..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ECSMetadataServiceCredentialsFetcher.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.provider; - -import com.alipay.easysdk.kms.aliyun.credentials.EcsRamRoleCredentials; -import com.alipay.easysdk.kms.aliyun.credentials.exceptions.CredentialException; -import com.alipay.easysdk.kms.aliyun.credentials.http.CompatibleUrlConnClient; -import com.alipay.easysdk.kms.aliyun.credentials.http.HttpRequest; -import com.alipay.easysdk.kms.aliyun.credentials.http.HttpResponse; -import com.alipay.easysdk.kms.aliyun.credentials.http.MethodType; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; - -public class ECSMetadataServiceCredentialsFetcher { - private static final String URL_IN_ECS_METADATA = "/latest/meta-data/ram/security-credentials/"; - private static final int DEFAULT_TIMEOUT_IN_MILLISECONDS = 1000; - private static final String ECS_METADAT_FETCH_ERROR_MSG = "Failed to get RAM session credentials from ECS metadata service."; - private static final int DEFAULT_ECS_SESSION_TOKEN_DURATION_SECONDS = 3600 * 6; - private URL credentialUrl; - private String roleName; - private String metadataServiceHost = "100.100.100.200"; - private int connectionTimeoutInMilliseconds; - - public ECSMetadataServiceCredentialsFetcher() { - this.connectionTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MILLISECONDS; - } - - public void setRoleName(String roleName) { - if (null == roleName) { - throw new NullPointerException("You must specifiy a valid role name."); - } - this.roleName = roleName; - setCredentialUrl(); - } - - private void setCredentialUrl() { - try { - this.credentialUrl = new URL("http://" + metadataServiceHost + URL_IN_ECS_METADATA + roleName); - } catch (MalformedURLException e) { - throw new IllegalArgumentException(e.toString()); - } - } - - public ECSMetadataServiceCredentialsFetcher withECSMetadataServiceHost(String host) { - System.err.println("withECSMetadataServiceHost() method is only for testing, please don't use it"); - this.metadataServiceHost = host; - setCredentialUrl(); - return this; - } - - public ECSMetadataServiceCredentialsFetcher withConnectionTimeout(int milliseconds) { - this.connectionTimeoutInMilliseconds = milliseconds; - return this; - } - - public String getMetadata() throws CredentialException { - HttpRequest request = new HttpRequest(credentialUrl.toString()); - request.setMethod(MethodType.GET); - request.setConnectTimeout(connectionTimeoutInMilliseconds); - request.setReadTimeout(connectionTimeoutInMilliseconds); - HttpResponse response; - - try { - response = CompatibleUrlConnClient.compatibleGetResponse(request); - } catch (Exception e) { - throw new CredentialException("Failed to connect ECS Metadata Service: " + e.toString()); - } - - if (response.getStatus() != HttpURLConnection.HTTP_OK) { - throw new CredentialException(ECS_METADAT_FETCH_ERROR_MSG + " HttpCode=" + response.getStatus()); - } - - return new String(response.getHttpContent()); - } - - public EcsRamRoleCredentials fetch() throws CredentialException { - String jsonContent = getMetadata(); - JsonObject jsonObject = null; - jsonObject = new JsonParser().parse(jsonContent).getAsJsonObject(); - - if (jsonObject.has("Code") && jsonObject.has("AccessKeyId") && jsonObject.has("AccessKeySecret") && jsonObject - .has("SecurityToken") && jsonObject.has("Expiration")) { - - } else { - throw new CredentialException("Invalid json got from ECS Metadata service."); - } - - if (!"Success".equals(jsonObject.get("Code").getAsString())) { - throw new CredentialException(ECS_METADAT_FETCH_ERROR_MSG); - } - return new EcsRamRoleCredentials(jsonObject.get("AccessKeyId").getAsString(), jsonObject.get( - "AccessKeySecret").getAsString(), jsonObject.get("SecurityToken").getAsString(), jsonObject.get( - "Expiration").getAsString(), DEFAULT_ECS_SESSION_TOKEN_DURATION_SECONDS); - } - - public EcsRamRoleCredentials fetch(int retryTimes) throws CredentialException { - for (int i = 0; i <= retryTimes; i++) { - try { - return fetch(); - } catch (CredentialException e) { - if (i == retryTimes) { - throw e; - } - } - } - throw new CredentialException("Failed to connect ECS Metadata Service: Max retry times exceeded."); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/EcsRamRoleCredentialsProvider.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/EcsRamRoleCredentialsProvider.java deleted file mode 100644 index dd1be21a..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/EcsRamRoleCredentialsProvider.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.provider; - -import com.alipay.easysdk.kms.aliyun.credentials.EcsRamRoleCredentials; -import com.alipay.easysdk.kms.aliyun.credentials.ICredentials; -import com.alipay.easysdk.kms.aliyun.credentials.exceptions.CredentialException; - -public class EcsRamRoleCredentialsProvider implements ICredentialsProvider { - private static final int MAX_ECS_METADATA_FETCH_RETRY_TIMES = 3; - private final String roleName; - private EcsRamRoleCredentials credentials = null; - private ECSMetadataServiceCredentialsFetcher fetcher; - - public EcsRamRoleCredentialsProvider(String roleName) { - if (null == roleName) { - throw new NullPointerException("You must specifiy a valid role name."); - } - this.roleName = roleName; - this.fetcher = new ECSMetadataServiceCredentialsFetcher(); - this.fetcher.setRoleName(this.roleName); - } - - public EcsRamRoleCredentialsProvider withFetcher(ECSMetadataServiceCredentialsFetcher fetcher) { - this.fetcher = fetcher; - this.fetcher.setRoleName(roleName); - return this; - } - - @Override - public ICredentials getCredentials() throws CredentialException { - if (credentials == null || credentials.isExpired()) { - credentials = fetcher.fetch(MAX_ECS_METADATA_FETCH_RETRY_TIMES); - } else if (credentials.willSoonExpire() && credentials.shouldRefresh()) { - try { - credentials = fetcher.fetch(); - } catch (CredentialException e) { - // Use the current expiring session token and wait for next round - credentials.setLastFailedRefreshTime(); - } - } - return credentials; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ICredentialsProvider.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ICredentialsProvider.java deleted file mode 100644 index e27ae018..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/ICredentialsProvider.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.provider; - -import com.alipay.easysdk.kms.aliyun.credentials.ICredentials; - -public interface ICredentialsProvider { - public ICredentials getCredentials() throws Exception; -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/RamRoleArnCredentialsProvider.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/RamRoleArnCredentialsProvider.java deleted file mode 100644 index cf5e6f15..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/RamRoleArnCredentialsProvider.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.provider; - -import com.alipay.easysdk.kms.aliyun.credentials.BasicSessionCredentials; -import com.alipay.easysdk.kms.aliyun.credentials.ICredentials; -import com.alipay.easysdk.kms.aliyun.credentials.exceptions.CredentialException; -import com.alipay.easysdk.kms.aliyun.credentials.http.CompatibleUrlConnClient; -import com.alipay.easysdk.kms.aliyun.credentials.http.HttpRequest; -import com.alipay.easysdk.kms.aliyun.credentials.http.HttpResponse; -import com.alipay.easysdk.kms.aliyun.credentials.http.MethodType; -import com.alipay.easysdk.kms.aliyun.credentials.utils.HmacSHA1Signer; -import com.alipay.easysdk.kms.aliyun.credentials.utils.ParameterUtils; -import com.google.gson.Gson; - -import java.util.Map; - -public class RamRoleArnCredentialsProvider implements ICredentialsProvider { - public static final int DEFAULT_DURATION_SECONDS = 3600; - private static final int DEFAULT_TIMEOUT_IN_MILLISECONDS = 5000; - private static final String DEFAULT_STS_ENDPOINT = "sts.aliyuncs.com"; - private final String roleArn; - private final String roleSessionName; - private final String accessKeyId; - private final String accessKeySecret; - private final String stsEndpoint; - private String policy; - private Integer connectTimeout; - private Integer readTimeout; - private BasicSessionCredentials credential = null; - - public RamRoleArnCredentialsProvider(String accessKeyId, String accessKeySecret, String roleArn) { - this.roleArn = roleArn; - this.accessKeyId = accessKeyId; - this.accessKeySecret = accessKeySecret; - this.roleSessionName = getNewRoleSessionName(); - this.stsEndpoint = DEFAULT_STS_ENDPOINT; - this.connectTimeout = DEFAULT_TIMEOUT_IN_MILLISECONDS; - this.readTimeout = DEFAULT_TIMEOUT_IN_MILLISECONDS * 2; - } - - public RamRoleArnCredentialsProvider(String accessKeyId, String accessKeySecret, String roleArn, String policy) { - this(accessKeyId, accessKeySecret, roleArn); - this.policy = policy; - } - - public RamRoleArnCredentialsProvider withConnectionTimeout(int milliseconds) { - this.connectTimeout = milliseconds; - this.readTimeout = milliseconds * 2; - return this; - } - - public static String getNewRoleSessionName() { - return "kms-credentials-" + System.currentTimeMillis(); - } - - @Override - public ICredentials getCredentials() throws Exception { - if (credential == null || credential.willSoonExpire()) { - CompatibleUrlConnClient client = new CompatibleUrlConnClient(); - credential = getNewSessionCredential(client); - } - return credential; - } - - public BasicSessionCredentials getNewSessionCredential(CompatibleUrlConnClient client) throws Exception { - ParameterUtils parameterUtils = new ParameterUtils(); - HttpRequest httpRequest = new HttpRequest(); - httpRequest.setUrlParameter("Action", "AssumeRole"); - httpRequest.setUrlParameter("Format", "JSON"); - httpRequest.setUrlParameter("Version", "2015-04-01"); - httpRequest.setUrlParameter("DurationSeconds", String.valueOf(DEFAULT_DURATION_SECONDS)); - httpRequest.setUrlParameter("RoleArn", this.roleArn); - httpRequest.setUrlParameter("AccessKeyId", this.accessKeyId); - httpRequest.setUrlParameter("RoleSessionName", this.roleSessionName); - if (this.policy != null) { - httpRequest.setUrlParameter("Policy", this.policy); - } - httpRequest.setMethod(MethodType.GET); - httpRequest.setConnectTimeout(this.connectTimeout); - httpRequest.setReadTimeout(this.readTimeout); - String strToSign = parameterUtils.composeStringToSign(MethodType.GET, httpRequest.getUrlParameters()); - String signature = HmacSHA1Signer.signString(strToSign, this.accessKeySecret + "&"); - httpRequest.setUrlParameter("Signature", signature); - httpRequest.setUrl(parameterUtils.composeUrl(this.stsEndpoint, httpRequest.getUrlParameters(), "https")); - HttpResponse httpResponse = client.syncInvoke(httpRequest); - Gson gson = new Gson(); - Map map = gson.fromJson(httpResponse.getHttpContentString(), Map.class); - if (map.containsKey("Credentials")) { - Map credential = (Map) map.get("Credentials"); - Long expiration = ParameterUtils.getUTCDate(credential.get("Expiration")).getTime(); - return new BasicSessionCredentials(credential.get("AccessKeyId"), credential.get("AccessKeySecret"), - credential.get("SecurityToken"), expiration); - } else { - throw new CredentialException(gson.toJson(map)); - } - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/StaticCredentialsProvider.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/StaticCredentialsProvider.java deleted file mode 100644 index cadd103c..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/provider/StaticCredentialsProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.provider; - -import com.alipay.easysdk.kms.aliyun.credentials.ICredentials; - -public class StaticCredentialsProvider implements ICredentialsProvider{ - private final ICredentials credentials; - - public StaticCredentialsProvider(ICredentials credentials) { - this.credentials = credentials; - } - - @Override - public ICredentials getCredentials() throws Exception { - return this.credentials; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/AcsURLEncoder.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/AcsURLEncoder.java deleted file mode 100644 index 1dc9de7e..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/AcsURLEncoder.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.utils; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; - -public class AcsURLEncoder { - public final static String URL_ENCODING = "UTF-8"; - - public static String encode(String value) throws UnsupportedEncodingException { - return URLEncoder.encode(value, URL_ENCODING); - } - - public static String percentEncode(String value) throws UnsupportedEncodingException { - return value != null ? URLEncoder.encode(value, URL_ENCODING).replace("+", "%20") - .replace("*", "%2A").replace("%7E", "~") : null; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/Base64Utils.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/Base64Utils.java deleted file mode 100644 index 1f4baa24..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/Base64Utils.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.utils; - -public class Base64Utils { - private static final String BASE64_CODE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "+/"; - - private static byte[] zeroPad(int length, byte[] bytes) { - byte[] padded = new byte[length]; - System.arraycopy(bytes, 0, padded, 0, bytes.length); - return padded; - } - - public synchronized static String encode(byte[] buff) { - StringBuilder strBuilder = new StringBuilder(""); - int paddingCount = (3 - (buff.length % 3)) % 3; - byte[] stringArray = zeroPad(buff.length + paddingCount, buff); - for (int i = 0; i < stringArray.length; i += 3) { - int j = ((stringArray[i] & 0xff) << 16) + - ((stringArray[i + 1] & 0xff) << 8) + - (stringArray[i + 2] & 0xff); - strBuilder.append(BASE64_CODE.charAt((j >> 18) & 0x3f)); - strBuilder.append(BASE64_CODE.charAt((j >> 12) & 0x3f)); - strBuilder.append(BASE64_CODE.charAt((j >> 6) & 0x3f)); - strBuilder.append(BASE64_CODE.charAt(j & 0x3f)); - } - int intPos = strBuilder.length(); - for (int i = paddingCount; i > 0; i--) { - strBuilder.setCharAt(intPos - i, '='); - } - - return strBuilder.toString(); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/CredentialType.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/CredentialType.java deleted file mode 100644 index 6351c969..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/CredentialType.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.utils; - -public class CredentialType { - public static final String ACCESS_KEY = "access_key"; - public static final String STS = "sts"; - public static final String ECS_RAM_ROLE = "ecs_ram_role"; - public static final String RAM_ROLE_ARN = "ram_role_arn"; -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/HmacSHA1Signer.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/HmacSHA1Signer.java deleted file mode 100644 index ff763252..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/HmacSHA1Signer.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.utils; - -import com.alipay.easysdk.kms.aliyun.credentials.ICredentials; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import java.io.UnsupportedEncodingException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; - -public class HmacSHA1Signer { - public static final String ENCODING = "UTF-8"; - private static final String ALGORITHM_NAME = "HmacSHA1"; - - public static String signString(String stringToSign, ICredentials credential) { - return signString(stringToSign, credential.getAccessKeySecret()); - } - - public static String signString(String stringToSign, String accessKeySecret) { - try { - Mac mac = Mac.getInstance(ALGORITHM_NAME); - mac.init(new SecretKeySpec(accessKeySecret.getBytes(ENCODING), ALGORITHM_NAME)); - byte[] signData = mac.doFinal(stringToSign.getBytes(ENCODING)); - return Base64Utils.encode(signData); - } catch (NoSuchAlgorithmException e) { - throw new IllegalArgumentException(e.toString()); - } catch (UnsupportedEncodingException e) { - throw new IllegalArgumentException(e.toString()); - } catch (InvalidKeyException e) { - throw new IllegalArgumentException(e.toString()); - } - } - - public static String getSignerName() { - return "HMAC-SHA1"; - } - - public static String getSignerVersion() { - return "1.0"; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/ParameterUtils.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/ParameterUtils.java deleted file mode 100644 index ce9d64fc..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/ParameterUtils.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.utils; - -import com.alipay.easysdk.kms.aliyun.credentials.http.MethodType; - -import java.io.UnsupportedEncodingException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; - -public class ParameterUtils { - private final static String TIME_ZONE = "UTC"; - private final static String FORMAT_ISO8601 = "yyyy-MM-dd'T'HH:mm:ss'Z'"; - private final static String SEPARATOR = "&"; - public static final String ENCODING = "UTF-8"; - private static final String ALGORITHM_NAME = "HmacSHA1"; - - public static String getUniqueNonce() { - StringBuilder uniqueNonce = new StringBuilder(); - UUID uuid = UUID.randomUUID(); - uniqueNonce.append(uuid.toString()); - uniqueNonce.append(System.currentTimeMillis()); - uniqueNonce.append(Thread.currentThread().getId()); - return uniqueNonce.toString(); - } - - public static String getISO8601Time(Date date) { - SimpleDateFormat df = new SimpleDateFormat(FORMAT_ISO8601); - df.setTimeZone(new SimpleTimeZone(0, TIME_ZONE)); - return df.format(date); - } - - public static Date getUTCDate(String date) throws ParseException { - SimpleDateFormat df = new SimpleDateFormat(FORMAT_ISO8601); - df.setTimeZone(new SimpleTimeZone(0, TIME_ZONE)); - return df.parse(date); - } - - public String composeStringToSign(MethodType method, Map queries) throws UnsupportedEncodingException { - String[] sortedKeys = queries.keySet().toArray(new String[]{}); - Arrays.sort(sortedKeys); - StringBuilder canonicalizedQueryString = new StringBuilder(); - - for (String key : sortedKeys) { - if (!StringUtils.isEmpty(queries.get(key))) { - canonicalizedQueryString.append("&") - .append(AcsURLEncoder.percentEncode(key)).append("=") - .append(AcsURLEncoder.percentEncode(queries.get(key))); - } - } - - return method.toString() + - SEPARATOR + - AcsURLEncoder.percentEncode("/") + - SEPARATOR + - AcsURLEncoder.percentEncode(canonicalizedQueryString.toString().substring(1)); - } - - public String composeUrl(String endpoint, Map queries, String protocol) throws UnsupportedEncodingException { - StringBuilder urlBuilder = new StringBuilder(""); - urlBuilder.append(protocol); - urlBuilder.append("://").append(endpoint); - urlBuilder.append("/?"); - StringBuilder builder = new StringBuilder(""); - - for (Map.Entry entry : queries.entrySet()) { - String key = entry.getKey(); - String val = entry.getValue(); - if (val == null) { - continue; - } - builder.append(AcsURLEncoder.encode(key)); - builder.append("=").append(AcsURLEncoder.encode(val)); - builder.append("&"); - } - - int strIndex = builder.length(); - builder.deleteCharAt(strIndex - 1); - String query = builder.toString(); - return urlBuilder.append(query).toString(); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/StringUtils.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/StringUtils.java deleted file mode 100644 index 635be53a..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/credentials/utils/StringUtils.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.credentials.utils; - -public class StringUtils { - public static boolean isEmpty(final CharSequence cs) { - return cs == null || cs.length() == 0; - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignRequest.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignRequest.java deleted file mode 100644 index 7c5b4123..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignRequest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.models; - -import com.aliyun.tea.*; - -public class AsymmetricSignRequest extends TeaModel { - @NameInMap("KeyId") - @Validation(required = true) - public String keyId; - - @NameInMap("KeyVersionId") - @Validation(required = true) - public String keyVersionId; - - @NameInMap("Algorithm") - @Validation(required = true) - public String algorithm; - - @NameInMap("Digest") - @Validation(required = true) - public String digest; - - public static AsymmetricSignRequest build(java.util.Map map) throws Exception { - AsymmetricSignRequest self = new AsymmetricSignRequest(); - return TeaModel.build(map, self); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignResponse.java deleted file mode 100644 index 2e47bcee..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/AsymmetricSignResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.models; - -import com.aliyun.tea.*; - -public class AsymmetricSignResponse extends TeaModel { - @NameInMap("Value") - @Validation(required = true) - public String value; - - @NameInMap("KeyId") - @Validation(required = true) - public String keyId; - - @NameInMap("RequestId") - @Validation(required = true) - public String requestId; - - @NameInMap("KeyVersionId") - @Validation(required = true) - public String keyVersionId; - - public static AsymmetricSignResponse build(java.util.Map map) throws Exception { - AsymmetricSignResponse self = new AsymmetricSignResponse(); - return TeaModel.build(map, self); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyRequest.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyRequest.java deleted file mode 100644 index e4d592eb..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.models; - -import com.aliyun.tea.*; - -public class GetPublicKeyRequest extends TeaModel { - @NameInMap("KeyId") - @Validation(required = true) - public String keyId; - - @NameInMap("KeyVersionId") - @Validation(required = true) - public String keyVersionId; - - public static GetPublicKeyRequest build(java.util.Map map) throws Exception { - GetPublicKeyRequest self = new GetPublicKeyRequest(); - return TeaModel.build(map, self); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyResponse.java deleted file mode 100644 index d6148e89..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/GetPublicKeyResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.models; - -import com.aliyun.tea.*; - -public class GetPublicKeyResponse extends TeaModel { - @NameInMap("PublicKey") - @Validation(required = true) - public String publicKey; - - @NameInMap("KeyId") - @Validation(required = true) - public String keyId; - - @NameInMap("RequestId") - @Validation(required = true) - public String requestId; - - @NameInMap("KeyVersionId") - @Validation(required = true) - public String keyVersionId; - - public static GetPublicKeyResponse build(java.util.Map map) throws Exception { - GetPublicKeyResponse self = new GetPublicKeyResponse(); - return TeaModel.build(map, self); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/RuntimeOptions.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/RuntimeOptions.java deleted file mode 100644 index 9345d1c4..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/kms/aliyun/models/RuntimeOptions.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.alipay.easysdk.kms.aliyun.models; - -import com.aliyun.tea.NameInMap; -import com.aliyun.tea.TeaModel; - -import java.util.Map; - -public class RuntimeOptions extends TeaModel { - @NameInMap("ignoreSSL") - public Boolean ignoreSSL; - @NameInMap("maxAttempts") - public Integer maxAttempts; - @NameInMap("backoffPolicy") - public String backoffPolicy; - @NameInMap("backoffPeriod") - public Integer backoffPeriod; - @NameInMap("readTimeout") - public Integer readTimeout; - @NameInMap("connectTimeout") - public Integer connectTimeout; - - public static RuntimeOptions build(Map map) throws Exception { - RuntimeOptions self = new RuntimeOptions(); - return TeaModel.build(map, self); - } -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/Client.java deleted file mode 100644 index 628d52d5..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/Client.java +++ /dev/null @@ -1,793 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife; - -import com.aliyun.tea.*; -import com.alipay.easysdk.marketing.openlife.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayOpenPublicMessageContentCreateResponse createImageTextContent(String title, String cover, String content, String contentComment, String ctype, String benefit, String extTags, String loginIds) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.message.content.create"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("title", title), - new TeaPair("cover", cover), - new TeaPair("content", content), - new TeaPair("could_comment", contentComment), - new TeaPair("ctype", ctype), - new TeaPair("benefit", benefit), - new TeaPair("ext_tags", extTags), - new TeaPair("login_ids", loginIds) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.message.content.create"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageContentCreateResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageContentCreateResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenPublicMessageContentModifyResponse modifyImageTextContent(String contentId, String title, String cover, String content, String couldComment, String ctype, String benefit, String extTags, String loginIds) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.message.content.modify"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("content_id", contentId), - new TeaPair("title", title), - new TeaPair("cover", cover), - new TeaPair("content", content), - new TeaPair("could_comment", couldComment), - new TeaPair("ctype", ctype), - new TeaPair("benefit", benefit), - new TeaPair("ext_tags", extTags), - new TeaPair("login_ids", loginIds) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.message.content.modify"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageContentModifyResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageContentModifyResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenPublicMessageTotalSendResponse sendText(String text) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.message.total.send"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - Text textObj = Text.build(TeaConverter.buildMap( - new TeaPair("title", ""), - new TeaPair("content", text) - )); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("msg_type", "text"), - new TeaPair("text", textObj) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.message.total.send"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageTotalSendResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageTotalSendResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenPublicMessageTotalSendResponse sendImageText(java.util.List
articles) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.message.total.send"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("msg_type", "image-text"), - new TeaPair("articles", articles) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.message.total.send"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageTotalSendResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageTotalSendResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenPublicMessageSingleSendResponse sendSingleMessage(String toUserId, Template template) throws Exception { - TeaModel.validateParams(template, "template"); - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.message.single.send"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("to_user_id", toUserId), - new TeaPair("template", template) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.message.single.send"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageSingleSendResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicMessageSingleSendResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenPublicLifeMsgRecallResponse recallMessage(String messageId) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.life.msg.recall"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("message_id", messageId) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.life.msg.recall"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicLifeMsgRecallResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicLifeMsgRecallResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenPublicTemplateMessageIndustryModifyResponse setIndustry(String primaryIndustryCode, String primaryIndustryName, String secondaryIndustryCode, String secondaryIndustryName) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.template.message.industry.modify"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("primary_industry_code", primaryIndustryCode), - new TeaPair("primary_industry_name", primaryIndustryName), - new TeaPair("secondary_industry_code", secondaryIndustryCode), - new TeaPair("secondary_industry_name", secondaryIndustryName) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.template.message.industry.modify"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicTemplateMessageIndustryModifyResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicTemplateMessageIndustryModifyResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenPublicSettingCategoryQueryResponse getIndustry() throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.public.setting.category.query"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = new java.util.HashMap<>(); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.public.setting.category.query"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicSettingCategoryQueryResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenPublicSettingCategoryQueryResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicLifeMsgRecallResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicLifeMsgRecallResponse.java deleted file mode 100644 index 2655c935..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicLifeMsgRecallResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class AlipayOpenPublicLifeMsgRecallResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - public static AlipayOpenPublicLifeMsgRecallResponse build(java.util.Map map) throws Exception { - AlipayOpenPublicLifeMsgRecallResponse self = new AlipayOpenPublicLifeMsgRecallResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenPublicLifeMsgRecallResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenPublicLifeMsgRecallResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenPublicLifeMsgRecallResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenPublicLifeMsgRecallResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenPublicLifeMsgRecallResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentCreateResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentCreateResponse.java deleted file mode 100644 index 120d4ec5..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentCreateResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class AlipayOpenPublicMessageContentCreateResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("content_id") - @Validation(required = true) - public String contentId; - - @NameInMap("content_url") - @Validation(required = true) - public String contentUrl; - - public static AlipayOpenPublicMessageContentCreateResponse build(java.util.Map map) throws Exception { - AlipayOpenPublicMessageContentCreateResponse self = new AlipayOpenPublicMessageContentCreateResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenPublicMessageContentCreateResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenPublicMessageContentCreateResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenPublicMessageContentCreateResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenPublicMessageContentCreateResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenPublicMessageContentCreateResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayOpenPublicMessageContentCreateResponse setContentId(String contentId) { - this.contentId = contentId; - return this; - } - public String getContentId() { - return this.contentId; - } - - public AlipayOpenPublicMessageContentCreateResponse setContentUrl(String contentUrl) { - this.contentUrl = contentUrl; - return this; - } - public String getContentUrl() { - return this.contentUrl; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentModifyResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentModifyResponse.java deleted file mode 100644 index 8b93b468..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageContentModifyResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class AlipayOpenPublicMessageContentModifyResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("content_id") - @Validation(required = true) - public String contentId; - - @NameInMap("content_url") - @Validation(required = true) - public String contentUrl; - - public static AlipayOpenPublicMessageContentModifyResponse build(java.util.Map map) throws Exception { - AlipayOpenPublicMessageContentModifyResponse self = new AlipayOpenPublicMessageContentModifyResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenPublicMessageContentModifyResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenPublicMessageContentModifyResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenPublicMessageContentModifyResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenPublicMessageContentModifyResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenPublicMessageContentModifyResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayOpenPublicMessageContentModifyResponse setContentId(String contentId) { - this.contentId = contentId; - return this; - } - public String getContentId() { - return this.contentId; - } - - public AlipayOpenPublicMessageContentModifyResponse setContentUrl(String contentUrl) { - this.contentUrl = contentUrl; - return this; - } - public String getContentUrl() { - return this.contentUrl; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageSingleSendResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageSingleSendResponse.java deleted file mode 100644 index fee42ff5..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageSingleSendResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class AlipayOpenPublicMessageSingleSendResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - public static AlipayOpenPublicMessageSingleSendResponse build(java.util.Map map) throws Exception { - AlipayOpenPublicMessageSingleSendResponse self = new AlipayOpenPublicMessageSingleSendResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenPublicMessageSingleSendResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenPublicMessageSingleSendResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenPublicMessageSingleSendResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenPublicMessageSingleSendResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenPublicMessageSingleSendResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageTotalSendResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageTotalSendResponse.java deleted file mode 100644 index 44f600c7..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicMessageTotalSendResponse.java +++ /dev/null @@ -1,85 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class AlipayOpenPublicMessageTotalSendResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("message_id") - @Validation(required = true) - public String messageId; - - public static AlipayOpenPublicMessageTotalSendResponse build(java.util.Map map) throws Exception { - AlipayOpenPublicMessageTotalSendResponse self = new AlipayOpenPublicMessageTotalSendResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenPublicMessageTotalSendResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenPublicMessageTotalSendResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenPublicMessageTotalSendResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenPublicMessageTotalSendResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenPublicMessageTotalSendResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayOpenPublicMessageTotalSendResponse setMessageId(String messageId) { - this.messageId = messageId; - return this; - } - public String getMessageId() { - return this.messageId; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicSettingCategoryQueryResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicSettingCategoryQueryResponse.java deleted file mode 100644 index d9d1d308..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicSettingCategoryQueryResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class AlipayOpenPublicSettingCategoryQueryResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("primary_category") - @Validation(required = true) - public String primaryCategory; - - @NameInMap("secondary_category") - @Validation(required = true) - public String secondaryCategory; - - public static AlipayOpenPublicSettingCategoryQueryResponse build(java.util.Map map) throws Exception { - AlipayOpenPublicSettingCategoryQueryResponse self = new AlipayOpenPublicSettingCategoryQueryResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenPublicSettingCategoryQueryResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenPublicSettingCategoryQueryResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenPublicSettingCategoryQueryResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenPublicSettingCategoryQueryResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenPublicSettingCategoryQueryResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayOpenPublicSettingCategoryQueryResponse setPrimaryCategory(String primaryCategory) { - this.primaryCategory = primaryCategory; - return this; - } - public String getPrimaryCategory() { - return this.primaryCategory; - } - - public AlipayOpenPublicSettingCategoryQueryResponse setSecondaryCategory(String secondaryCategory) { - this.secondaryCategory = secondaryCategory; - return this; - } - public String getSecondaryCategory() { - return this.secondaryCategory; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.java deleted file mode 100644 index cacafee3..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class AlipayOpenPublicTemplateMessageIndustryModifyResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - public static AlipayOpenPublicTemplateMessageIndustryModifyResponse build(java.util.Map map) throws Exception { - AlipayOpenPublicTemplateMessageIndustryModifyResponse self = new AlipayOpenPublicTemplateMessageIndustryModifyResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenPublicTemplateMessageIndustryModifyResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenPublicTemplateMessageIndustryModifyResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenPublicTemplateMessageIndustryModifyResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenPublicTemplateMessageIndustryModifyResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenPublicTemplateMessageIndustryModifyResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Article.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Article.java deleted file mode 100644 index ad0510d0..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Article.java +++ /dev/null @@ -1,69 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class Article extends TeaModel { - @NameInMap("title") - public String title; - - @NameInMap("desc") - @Validation(required = true) - public String desc; - - @NameInMap("image_url") - public String imageUrl; - - @NameInMap("url") - @Validation(required = true) - public String url; - - @NameInMap("action_name") - public String actionName; - - public static Article build(java.util.Map map) throws Exception { - Article self = new Article(); - return TeaModel.build(map, self); - } - - public Article setTitle(String title) { - this.title = title; - return this; - } - public String getTitle() { - return this.title; - } - - public Article setDesc(String desc) { - this.desc = desc; - return this; - } - public String getDesc() { - return this.desc; - } - - public Article setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - return this; - } - public String getImageUrl() { - return this.imageUrl; - } - - public Article setUrl(String url) { - this.url = url; - return this; - } - public String getUrl() { - return this.url; - } - - public Article setActionName(String actionName) { - this.actionName = actionName; - return this; - } - public String getActionName() { - return this.actionName; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Context.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Context.java deleted file mode 100644 index 4fce800f..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Context.java +++ /dev/null @@ -1,92 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class Context extends TeaModel { - @NameInMap("head_color") - @Validation(required = true) - public String headColor; - - @NameInMap("url") - @Validation(required = true) - public String url; - - @NameInMap("action_name") - @Validation(required = true) - public String actionName; - - @NameInMap("keyword1") - public Keyword keyword1; - - @NameInMap("keyword2") - public Keyword keyword2; - - @NameInMap("first") - public Keyword first; - - @NameInMap("remark") - public Keyword remark; - - public static Context build(java.util.Map map) throws Exception { - Context self = new Context(); - return TeaModel.build(map, self); - } - - public Context setHeadColor(String headColor) { - this.headColor = headColor; - return this; - } - public String getHeadColor() { - return this.headColor; - } - - public Context setUrl(String url) { - this.url = url; - return this; - } - public String getUrl() { - return this.url; - } - - public Context setActionName(String actionName) { - this.actionName = actionName; - return this; - } - public String getActionName() { - return this.actionName; - } - - public Context setKeyword1(Keyword keyword1) { - this.keyword1 = keyword1; - return this; - } - public Keyword getKeyword1() { - return this.keyword1; - } - - public Context setKeyword2(Keyword keyword2) { - this.keyword2 = keyword2; - return this; - } - public Keyword getKeyword2() { - return this.keyword2; - } - - public Context setFirst(Keyword first) { - this.first = first; - return this; - } - public Keyword getFirst() { - return this.first; - } - - public Context setRemark(Keyword remark) { - this.remark = remark; - return this; - } - public Keyword getRemark() { - return this.remark; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Keyword.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Keyword.java deleted file mode 100644 index fa0f38d3..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Keyword.java +++ /dev/null @@ -1,36 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class Keyword extends TeaModel { - @NameInMap("color") - @Validation(required = true) - public String color; - - @NameInMap("value") - @Validation(required = true) - public String value; - - public static Keyword build(java.util.Map map) throws Exception { - Keyword self = new Keyword(); - return TeaModel.build(map, self); - } - - public Keyword setColor(String color) { - this.color = color; - return this; - } - public String getColor() { - return this.color; - } - - public Keyword setValue(String value) { - this.value = value; - return this; - } - public String getValue() { - return this.value; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Template.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Template.java deleted file mode 100644 index 4008cca9..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Template.java +++ /dev/null @@ -1,36 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class Template extends TeaModel { - @NameInMap("template_id") - @Validation(required = true) - public String templateId; - - @NameInMap("context") - @Validation(required = true) - public Context context; - - public static Template build(java.util.Map map) throws Exception { - Template self = new Template(); - return TeaModel.build(map, self); - } - - public Template setTemplateId(String templateId) { - this.templateId = templateId; - return this; - } - public String getTemplateId() { - return this.templateId; - } - - public Template setContext(Context context) { - this.context = context; - return this; - } - public Context getContext() { - return this.context; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Text.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Text.java deleted file mode 100644 index fd0fbb4b..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/openlife/models/Text.java +++ /dev/null @@ -1,36 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.openlife.models; - -import com.aliyun.tea.*; - -public class Text extends TeaModel { - @NameInMap("title") - @Validation(required = true) - public String title; - - @NameInMap("content") - @Validation(required = true) - public String content; - - public static Text build(java.util.Map map) throws Exception { - Text self = new Text(); - return TeaModel.build(map, self); - } - - public Text setTitle(String title) { - this.title = title; - return this; - } - public String getTitle() { - return this.title; - } - - public Text setContent(String content) { - this.content = content; - return this; - } - public String getContent() { - return this.content; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/Client.java deleted file mode 100644 index e907dc64..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/Client.java +++ /dev/null @@ -1,439 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.pass; - -import com.aliyun.tea.*; -import com.alipay.easysdk.marketing.pass.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayPassTemplateAddResponse createTemplate(String uniqueId, String tplContent) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.pass.template.add"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("unique_id", uniqueId), - new TeaPair("tpl_content", tplContent) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.pass.template.add"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassTemplateAddResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassTemplateAddResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayPassTemplateUpdateResponse updateTemplate(String tplId, String tplContent) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.pass.template.update"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("tpl_id", tplId), - new TeaPair("tpl_content", tplContent) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.pass.template.update"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassTemplateUpdateResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassTemplateUpdateResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayPassInstanceAddResponse addInstance(String tplId, String tplParams, String recognitionType, String recognitionInfo) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.pass.instance.add"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("tpl_id", tplId), - new TeaPair("tpl_params", tplParams), - new TeaPair("recognition_type", recognitionType), - new TeaPair("recognition_info", recognitionInfo) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.pass.instance.add"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassInstanceAddResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassInstanceAddResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayPassInstanceUpdateResponse updateInstance(String serialNumber, String channelId, String tplParams, String status, String verifyCode, String verifyType) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.pass.instance.update"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("serial_number", serialNumber), - new TeaPair("channel_id", channelId), - new TeaPair("tpl_params", tplParams), - new TeaPair("status", status), - new TeaPair("verify_code", verifyCode), - new TeaPair("verify_type", verifyType) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.pass.instance.update"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassInstanceUpdateResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayPassInstanceUpdateResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceAddResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceAddResponse.java deleted file mode 100644 index e2eac332..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceAddResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.pass.models; - -import com.aliyun.tea.*; - -public class AlipayPassInstanceAddResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("success") - @Validation(required = true) - public Boolean success; - - @NameInMap("result") - @Validation(required = true) - public String result; - - public static AlipayPassInstanceAddResponse build(java.util.Map map) throws Exception { - AlipayPassInstanceAddResponse self = new AlipayPassInstanceAddResponse(); - return TeaModel.build(map, self); - } - - public AlipayPassInstanceAddResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayPassInstanceAddResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayPassInstanceAddResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayPassInstanceAddResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayPassInstanceAddResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayPassInstanceAddResponse setSuccess(Boolean success) { - this.success = success; - return this; - } - public Boolean getSuccess() { - return this.success; - } - - public AlipayPassInstanceAddResponse setResult(String result) { - this.result = result; - return this; - } - public String getResult() { - return this.result; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceUpdateResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceUpdateResponse.java deleted file mode 100644 index 03ecaa1d..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassInstanceUpdateResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.pass.models; - -import com.aliyun.tea.*; - -public class AlipayPassInstanceUpdateResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("success") - @Validation(required = true) - public Boolean success; - - @NameInMap("result") - @Validation(required = true) - public String result; - - public static AlipayPassInstanceUpdateResponse build(java.util.Map map) throws Exception { - AlipayPassInstanceUpdateResponse self = new AlipayPassInstanceUpdateResponse(); - return TeaModel.build(map, self); - } - - public AlipayPassInstanceUpdateResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayPassInstanceUpdateResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayPassInstanceUpdateResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayPassInstanceUpdateResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayPassInstanceUpdateResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayPassInstanceUpdateResponse setSuccess(Boolean success) { - this.success = success; - return this; - } - public Boolean getSuccess() { - return this.success; - } - - public AlipayPassInstanceUpdateResponse setResult(String result) { - this.result = result; - return this; - } - public String getResult() { - return this.result; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateAddResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateAddResponse.java deleted file mode 100644 index 6b7f8f5a..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateAddResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.pass.models; - -import com.aliyun.tea.*; - -public class AlipayPassTemplateAddResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("success") - @Validation(required = true) - public Boolean success; - - @NameInMap("result") - @Validation(required = true) - public String result; - - public static AlipayPassTemplateAddResponse build(java.util.Map map) throws Exception { - AlipayPassTemplateAddResponse self = new AlipayPassTemplateAddResponse(); - return TeaModel.build(map, self); - } - - public AlipayPassTemplateAddResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayPassTemplateAddResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayPassTemplateAddResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayPassTemplateAddResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayPassTemplateAddResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayPassTemplateAddResponse setSuccess(Boolean success) { - this.success = success; - return this; - } - public Boolean getSuccess() { - return this.success; - } - - public AlipayPassTemplateAddResponse setResult(String result) { - this.result = result; - return this; - } - public String getResult() { - return this.result; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateUpdateResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateUpdateResponse.java deleted file mode 100644 index 4a491852..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/pass/models/AlipayPassTemplateUpdateResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.pass.models; - -import com.aliyun.tea.*; - -public class AlipayPassTemplateUpdateResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("success") - @Validation(required = true) - public Boolean success; - - @NameInMap("result") - @Validation(required = true) - public String result; - - public static AlipayPassTemplateUpdateResponse build(java.util.Map map) throws Exception { - AlipayPassTemplateUpdateResponse self = new AlipayPassTemplateUpdateResponse(); - return TeaModel.build(map, self); - } - - public AlipayPassTemplateUpdateResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayPassTemplateUpdateResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayPassTemplateUpdateResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayPassTemplateUpdateResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayPassTemplateUpdateResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayPassTemplateUpdateResponse setSuccess(Boolean success) { - this.success = success; - return this; - } - public Boolean getSuccess() { - return this.success; - } - - public AlipayPassTemplateUpdateResponse setResult(String result) { - this.result = result; - return this; - } - public String getResult() { - return this.result; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/Client.java deleted file mode 100644 index eb801f1f..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/Client.java +++ /dev/null @@ -1,178 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.templatemessage; - -import com.aliyun.tea.*; -import com.alipay.easysdk.marketing.templatemessage.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayOpenAppMiniTemplatemessageSendResponse send(String toUserId, String formId, String userTemplateId, String page, String data) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.open.app.mini.templatemessage.send"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("to_user_id", toUserId), - new TeaPair("form_id", formId), - new TeaPair("user_template_id", userTemplateId), - new TeaPair("page", page), - new TeaPair("data", data) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.open.app.mini.templatemessage.send"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenAppMiniTemplatemessageSendResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenAppMiniTemplatemessageSendResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/models/AlipayOpenAppMiniTemplatemessageSendResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/models/AlipayOpenAppMiniTemplatemessageSendResponse.java deleted file mode 100644 index 13073d05..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/marketing/templatemessage/models/AlipayOpenAppMiniTemplatemessageSendResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.marketing.templatemessage.models; - -import com.aliyun.tea.*; - -public class AlipayOpenAppMiniTemplatemessageSendResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - public static AlipayOpenAppMiniTemplatemessageSendResponse build(java.util.Map map) throws Exception { - AlipayOpenAppMiniTemplatemessageSendResponse self = new AlipayOpenAppMiniTemplatemessageSendResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenAppMiniTemplatemessageSendResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenAppMiniTemplatemessageSendResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenAppMiniTemplatemessageSendResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenAppMiniTemplatemessageSendResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenAppMiniTemplatemessageSendResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/Client.java deleted file mode 100644 index dad04274..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/Client.java +++ /dev/null @@ -1,287 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.member.identification; - -import com.aliyun.tea.*; -import com.alipay.easysdk.member.identification.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayUserCertifyOpenInitializeResponse init(String outerOrderNo, String bizCode, IdentityParam identityParam, MerchantConfig merchantConfig) throws Exception { - TeaModel.validateParams(identityParam, "identityParam"); - TeaModel.validateParams(merchantConfig, "merchantConfig"); - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.user.certify.open.initialize"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("outer_order_no", outerOrderNo), - new TeaPair("biz_code", bizCode), - new TeaPair("identity_param", identityParam), - new TeaPair("merchant_config", merchantConfig) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.user.certify.open.initialize"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayUserCertifyOpenInitializeResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayUserCertifyOpenInitializeResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayUserCertifyOpenQueryResponse query(String certifyId) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.user.certify.open.query"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("certify_id", certifyId) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.user.certify.open.query"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayUserCertifyOpenQueryResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayUserCertifyOpenQueryResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayUserCertifyOpenCertifyResponse certify(String certifyId) throws Exception { - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.user.certify.open.certify"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("certify_id", certifyId) - ); - java.util.Map textParams = new java.util.HashMap<>(); - String sign = _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey")); - java.util.Map response = TeaConverter.buildMap( - new TeaPair("body", _kernel.generatePage("GET", systemParams, bizParams, textParams, sign)) - ); - return TeaModel.toModel(response, new AlipayUserCertifyOpenCertifyResponse()); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenCertifyResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenCertifyResponse.java deleted file mode 100644 index 4590186f..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenCertifyResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.member.identification.models; - -import com.aliyun.tea.*; - -public class AlipayUserCertifyOpenCertifyResponse extends TeaModel { - // 认证服务请求地址 - @NameInMap("body") - @Validation(required = true) - public String body; - - public static AlipayUserCertifyOpenCertifyResponse build(java.util.Map map) throws Exception { - AlipayUserCertifyOpenCertifyResponse self = new AlipayUserCertifyOpenCertifyResponse(); - return TeaModel.build(map, self); - } - - public AlipayUserCertifyOpenCertifyResponse setBody(String body) { - this.body = body; - return this; - } - public String getBody() { - return this.body; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenInitializeResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenInitializeResponse.java deleted file mode 100644 index ccf2c06b..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenInitializeResponse.java +++ /dev/null @@ -1,85 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.member.identification.models; - -import com.aliyun.tea.*; - -public class AlipayUserCertifyOpenInitializeResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("certify_id") - @Validation(required = true) - public String certifyId; - - public static AlipayUserCertifyOpenInitializeResponse build(java.util.Map map) throws Exception { - AlipayUserCertifyOpenInitializeResponse self = new AlipayUserCertifyOpenInitializeResponse(); - return TeaModel.build(map, self); - } - - public AlipayUserCertifyOpenInitializeResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayUserCertifyOpenInitializeResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayUserCertifyOpenInitializeResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayUserCertifyOpenInitializeResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayUserCertifyOpenInitializeResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayUserCertifyOpenInitializeResponse setCertifyId(String certifyId) { - this.certifyId = certifyId; - return this; - } - public String getCertifyId() { - return this.certifyId; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenQueryResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenQueryResponse.java deleted file mode 100644 index 4bc2bea8..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/AlipayUserCertifyOpenQueryResponse.java +++ /dev/null @@ -1,109 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.member.identification.models; - -import com.aliyun.tea.*; - -public class AlipayUserCertifyOpenQueryResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("passed") - @Validation(required = true) - public String passed; - - @NameInMap("identity_info") - @Validation(required = true) - public String identityInfo; - - @NameInMap("material_info") - @Validation(required = true) - public String materialInfo; - - public static AlipayUserCertifyOpenQueryResponse build(java.util.Map map) throws Exception { - AlipayUserCertifyOpenQueryResponse self = new AlipayUserCertifyOpenQueryResponse(); - return TeaModel.build(map, self); - } - - public AlipayUserCertifyOpenQueryResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayUserCertifyOpenQueryResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayUserCertifyOpenQueryResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayUserCertifyOpenQueryResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayUserCertifyOpenQueryResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayUserCertifyOpenQueryResponse setPassed(String passed) { - this.passed = passed; - return this; - } - public String getPassed() { - return this.passed; - } - - public AlipayUserCertifyOpenQueryResponse setIdentityInfo(String identityInfo) { - this.identityInfo = identityInfo; - return this; - } - public String getIdentityInfo() { - return this.identityInfo; - } - - public AlipayUserCertifyOpenQueryResponse setMaterialInfo(String materialInfo) { - this.materialInfo = materialInfo; - return this; - } - public String getMaterialInfo() { - return this.materialInfo; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/IdentityParam.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/IdentityParam.java deleted file mode 100644 index b806df2b..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/IdentityParam.java +++ /dev/null @@ -1,60 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.member.identification.models; - -import com.aliyun.tea.*; - -public class IdentityParam extends TeaModel { - @NameInMap("identity_type") - @Validation(required = true) - public String identityType; - - @NameInMap("cert_type") - @Validation(required = true) - public String certType; - - @NameInMap("cert_name") - @Validation(required = true) - public String certName; - - @NameInMap("cert_no") - @Validation(required = true) - public String certNo; - - public static IdentityParam build(java.util.Map map) throws Exception { - IdentityParam self = new IdentityParam(); - return TeaModel.build(map, self); - } - - public IdentityParam setIdentityType(String identityType) { - this.identityType = identityType; - return this; - } - public String getIdentityType() { - return this.identityType; - } - - public IdentityParam setCertType(String certType) { - this.certType = certType; - return this; - } - public String getCertType() { - return this.certType; - } - - public IdentityParam setCertName(String certName) { - this.certName = certName; - return this; - } - public String getCertName() { - return this.certName; - } - - public IdentityParam setCertNo(String certNo) { - this.certNo = certNo; - return this; - } - public String getCertNo() { - return this.certNo; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/MerchantConfig.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/MerchantConfig.java deleted file mode 100644 index e6430081..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/member/identification/models/MerchantConfig.java +++ /dev/null @@ -1,24 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.member.identification.models; - -import com.aliyun.tea.*; - -public class MerchantConfig extends TeaModel { - @NameInMap("return_url") - @Validation(required = true) - public String returnUrl; - - public static MerchantConfig build(java.util.Map map) throws Exception { - MerchantConfig self = new MerchantConfig(); - return TeaModel.build(map, self); - } - - public MerchantConfig setReturnUrl(String returnUrl) { - this.returnUrl = returnUrl; - return this; - } - public String getReturnUrl() { - return this.returnUrl; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/Client.java deleted file mode 100644 index a4c8b295..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/Client.java +++ /dev/null @@ -1,115 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.app; - -import com.aliyun.tea.*; -import com.alipay.easysdk.payment.app.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - - public AlipayTradeAppPayResponse pay(String subject, String outTradeNo, String totalAmount) throws Exception { - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.app.pay"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("subject", subject), - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("total_amount", totalAmount) - ); - java.util.Map textParams = new java.util.HashMap<>(); - String sign = _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey")); - java.util.Map response = TeaConverter.buildMap( - new TeaPair("body", _kernel.generateOrderString(systemParams, bizParams, textParams, sign)) - ); - return TeaModel.toModel(response, new AlipayTradeAppPayResponse()); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/models/AlipayTradeAppPayResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/models/AlipayTradeAppPayResponse.java deleted file mode 100644 index 55334ff2..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/app/models/AlipayTradeAppPayResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.app.models; - -import com.aliyun.tea.*; - -public class AlipayTradeAppPayResponse extends TeaModel { - // 订单信息,字符串形式 - @NameInMap("body") - @Validation(required = true) - public String body; - - public static AlipayTradeAppPayResponse build(java.util.Map map) throws Exception { - AlipayTradeAppPayResponse self = new AlipayTradeAppPayResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeAppPayResponse setBody(String body) { - this.body = body; - return this; - } - public String getBody() { - return this.body; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/Client.java deleted file mode 100644 index 7923f80c..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/Client.java +++ /dev/null @@ -1,698 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common; - -import com.aliyun.tea.*; -import com.alipay.easysdk.payment.common.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayTradeCreateResponse create(String subject, String outTradeNo, String totalAmount, String buyerId) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.create"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("subject", subject), - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("total_amount", totalAmount), - new TeaPair("buyer_id", buyerId) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.create"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCreateResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCreateResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayTradeQueryResponse query(String outTradeNo) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.query"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("out_trade_no", outTradeNo) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.query"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeQueryResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeQueryResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayTradeRefundResponse refund(String outTradeNo, String refundAmount) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.refund"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("refund_amount", refundAmount) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.refund"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeRefundResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeRefundResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayTradeCloseResponse close(String outTradeNo) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.close"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("out_trade_no", outTradeNo) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.close"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCloseResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCloseResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayTradeCancelResponse cancel(String outTradeNo) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.cancel"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("out_trade_no", outTradeNo) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.cancel"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCancelResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCancelResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayTradeFastpayRefundQueryResponse queryRefund(String outTradeNo, String outRequestNo) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.fastpay.refund.query"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("out_request_no", outRequestNo) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.fastpay.refund.query"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeFastpayRefundQueryResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeFastpayRefundQueryResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse downloadBill(String billType, String billDate) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.data.dataservice.bill.downloadurl.query"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("bill_type", billType), - new TeaPair("bill_date", billDate) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.data.dataservice.bill.downloadurl.query"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayDataDataserviceBillDownloadurlQueryResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayDataDataserviceBillDownloadurlQueryResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public Boolean verifyNotify(java.util.Map parameters) throws Exception { - if (_kernel.isCertMode()) { - return _kernel.verifyParams(parameters, _kernel.extractAlipayPublicKey("")); - } else { - return _kernel.verifyParams(parameters, _kernel.getConfig("alipayPublicKey")); - } - - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayDataDataserviceBillDownloadurlQueryResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayDataDataserviceBillDownloadurlQueryResponse.java deleted file mode 100644 index df377d88..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayDataDataserviceBillDownloadurlQueryResponse.java +++ /dev/null @@ -1,85 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class AlipayDataDataserviceBillDownloadurlQueryResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("bill_download_url") - @Validation(required = true) - public String billDownloadUrl; - - public static AlipayDataDataserviceBillDownloadurlQueryResponse build(java.util.Map map) throws Exception { - AlipayDataDataserviceBillDownloadurlQueryResponse self = new AlipayDataDataserviceBillDownloadurlQueryResponse(); - return TeaModel.build(map, self); - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayDataDataserviceBillDownloadurlQueryResponse setBillDownloadUrl(String billDownloadUrl) { - this.billDownloadUrl = billDownloadUrl; - return this; - } - public String getBillDownloadUrl() { - return this.billDownloadUrl; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCancelResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCancelResponse.java deleted file mode 100644 index 4787efe8..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCancelResponse.java +++ /dev/null @@ -1,145 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class AlipayTradeCancelResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("retry_flag") - @Validation(required = true) - public String retryFlag; - - @NameInMap("action") - @Validation(required = true) - public String action; - - @NameInMap("gmt_refund_pay") - @Validation(required = true) - public String gmtRefundPay; - - @NameInMap("refund_settlement_id") - @Validation(required = true) - public String refundSettlementId; - - public static AlipayTradeCancelResponse build(java.util.Map map) throws Exception { - AlipayTradeCancelResponse self = new AlipayTradeCancelResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeCancelResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradeCancelResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradeCancelResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradeCancelResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradeCancelResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradeCancelResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - - public AlipayTradeCancelResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradeCancelResponse setRetryFlag(String retryFlag) { - this.retryFlag = retryFlag; - return this; - } - public String getRetryFlag() { - return this.retryFlag; - } - - public AlipayTradeCancelResponse setAction(String action) { - this.action = action; - return this; - } - public String getAction() { - return this.action; - } - - public AlipayTradeCancelResponse setGmtRefundPay(String gmtRefundPay) { - this.gmtRefundPay = gmtRefundPay; - return this; - } - public String getGmtRefundPay() { - return this.gmtRefundPay; - } - - public AlipayTradeCancelResponse setRefundSettlementId(String refundSettlementId) { - this.refundSettlementId = refundSettlementId; - return this; - } - public String getRefundSettlementId() { - return this.refundSettlementId; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCloseResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCloseResponse.java deleted file mode 100644 index bcceee1c..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCloseResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class AlipayTradeCloseResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - public static AlipayTradeCloseResponse build(java.util.Map map) throws Exception { - AlipayTradeCloseResponse self = new AlipayTradeCloseResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeCloseResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradeCloseResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradeCloseResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradeCloseResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradeCloseResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradeCloseResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - - public AlipayTradeCloseResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCreateResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCreateResponse.java deleted file mode 100644 index 1a0f91d8..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeCreateResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class AlipayTradeCreateResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - public static AlipayTradeCreateResponse build(java.util.Map map) throws Exception { - AlipayTradeCreateResponse self = new AlipayTradeCreateResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeCreateResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradeCreateResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradeCreateResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradeCreateResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradeCreateResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradeCreateResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradeCreateResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeFastpayRefundQueryResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeFastpayRefundQueryResponse.java deleted file mode 100644 index 3c132514..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeFastpayRefundQueryResponse.java +++ /dev/null @@ -1,289 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class AlipayTradeFastpayRefundQueryResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("error_code") - @Validation(required = true) - public String errorCode; - - @NameInMap("gmt_refund_pay") - @Validation(required = true) - public String gmtRefundPay; - - @NameInMap("industry_sepc_detail") - @Validation(required = true) - public String industrySepcDetail; - - @NameInMap("out_request_no") - @Validation(required = true) - public String outRequestNo; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("present_refund_buyer_amount") - @Validation(required = true) - public String presentRefundBuyerAmount; - - @NameInMap("present_refund_discount_amount") - @Validation(required = true) - public String presentRefundDiscountAmount; - - @NameInMap("present_refund_mdiscount_amount") - @Validation(required = true) - public String presentRefundMdiscountAmount; - - @NameInMap("refund_amount") - @Validation(required = true) - public String refundAmount; - - @NameInMap("refund_charge_amount") - @Validation(required = true) - public String refundChargeAmount; - - @NameInMap("refund_detail_item_list") - @Validation(required = true) - public java.util.List refundDetailItemList; - - @NameInMap("refund_reason") - @Validation(required = true) - public String refundReason; - - @NameInMap("refund_royaltys") - @Validation(required = true) - public java.util.List refundRoyaltys; - - @NameInMap("refund_settlement_id") - @Validation(required = true) - public String refundSettlementId; - - @NameInMap("refund_status") - @Validation(required = true) - public String refundStatus; - - @NameInMap("send_back_fee") - @Validation(required = true) - public String sendBackFee; - - @NameInMap("total_amount") - @Validation(required = true) - public String totalAmount; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - public static AlipayTradeFastpayRefundQueryResponse build(java.util.Map map) throws Exception { - AlipayTradeFastpayRefundQueryResponse self = new AlipayTradeFastpayRefundQueryResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeFastpayRefundQueryResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradeFastpayRefundQueryResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradeFastpayRefundQueryResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradeFastpayRefundQueryResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradeFastpayRefundQueryResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradeFastpayRefundQueryResponse setErrorCode(String errorCode) { - this.errorCode = errorCode; - return this; - } - public String getErrorCode() { - return this.errorCode; - } - - public AlipayTradeFastpayRefundQueryResponse setGmtRefundPay(String gmtRefundPay) { - this.gmtRefundPay = gmtRefundPay; - return this; - } - public String getGmtRefundPay() { - return this.gmtRefundPay; - } - - public AlipayTradeFastpayRefundQueryResponse setIndustrySepcDetail(String industrySepcDetail) { - this.industrySepcDetail = industrySepcDetail; - return this; - } - public String getIndustrySepcDetail() { - return this.industrySepcDetail; - } - - public AlipayTradeFastpayRefundQueryResponse setOutRequestNo(String outRequestNo) { - this.outRequestNo = outRequestNo; - return this; - } - public String getOutRequestNo() { - return this.outRequestNo; - } - - public AlipayTradeFastpayRefundQueryResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradeFastpayRefundQueryResponse setPresentRefundBuyerAmount(String presentRefundBuyerAmount) { - this.presentRefundBuyerAmount = presentRefundBuyerAmount; - return this; - } - public String getPresentRefundBuyerAmount() { - return this.presentRefundBuyerAmount; - } - - public AlipayTradeFastpayRefundQueryResponse setPresentRefundDiscountAmount(String presentRefundDiscountAmount) { - this.presentRefundDiscountAmount = presentRefundDiscountAmount; - return this; - } - public String getPresentRefundDiscountAmount() { - return this.presentRefundDiscountAmount; - } - - public AlipayTradeFastpayRefundQueryResponse setPresentRefundMdiscountAmount(String presentRefundMdiscountAmount) { - this.presentRefundMdiscountAmount = presentRefundMdiscountAmount; - return this; - } - public String getPresentRefundMdiscountAmount() { - return this.presentRefundMdiscountAmount; - } - - public AlipayTradeFastpayRefundQueryResponse setRefundAmount(String refundAmount) { - this.refundAmount = refundAmount; - return this; - } - public String getRefundAmount() { - return this.refundAmount; - } - - public AlipayTradeFastpayRefundQueryResponse setRefundChargeAmount(String refundChargeAmount) { - this.refundChargeAmount = refundChargeAmount; - return this; - } - public String getRefundChargeAmount() { - return this.refundChargeAmount; - } - - public AlipayTradeFastpayRefundQueryResponse setRefundDetailItemList(java.util.List refundDetailItemList) { - this.refundDetailItemList = refundDetailItemList; - return this; - } - public java.util.List getRefundDetailItemList() { - return this.refundDetailItemList; - } - - public AlipayTradeFastpayRefundQueryResponse setRefundReason(String refundReason) { - this.refundReason = refundReason; - return this; - } - public String getRefundReason() { - return this.refundReason; - } - - public AlipayTradeFastpayRefundQueryResponse setRefundRoyaltys(java.util.List refundRoyaltys) { - this.refundRoyaltys = refundRoyaltys; - return this; - } - public java.util.List getRefundRoyaltys() { - return this.refundRoyaltys; - } - - public AlipayTradeFastpayRefundQueryResponse setRefundSettlementId(String refundSettlementId) { - this.refundSettlementId = refundSettlementId; - return this; - } - public String getRefundSettlementId() { - return this.refundSettlementId; - } - - public AlipayTradeFastpayRefundQueryResponse setRefundStatus(String refundStatus) { - this.refundStatus = refundStatus; - return this; - } - public String getRefundStatus() { - return this.refundStatus; - } - - public AlipayTradeFastpayRefundQueryResponse setSendBackFee(String sendBackFee) { - this.sendBackFee = sendBackFee; - return this; - } - public String getSendBackFee() { - return this.sendBackFee; - } - - public AlipayTradeFastpayRefundQueryResponse setTotalAmount(String totalAmount) { - this.totalAmount = totalAmount; - return this; - } - public String getTotalAmount() { - return this.totalAmount; - } - - public AlipayTradeFastpayRefundQueryResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeQueryResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeQueryResponse.java deleted file mode 100644 index e6cd5002..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeQueryResponse.java +++ /dev/null @@ -1,493 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class AlipayTradeQueryResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("buyer_logon_id") - @Validation(required = true) - public String buyerLogonId; - - @NameInMap("trade_status") - @Validation(required = true) - public String tradeStatus; - - @NameInMap("total_amount") - @Validation(required = true) - public String totalAmount; - - @NameInMap("trans_currency") - @Validation(required = true) - public String transCurrency; - - @NameInMap("settle_currency") - @Validation(required = true) - public String settleCurrency; - - @NameInMap("settle_amount") - @Validation(required = true) - public String settleAmount; - - @NameInMap("pay_currency") - @Validation(required = true) - public String payCurrency; - - @NameInMap("pay_amount") - @Validation(required = true) - public String payAmount; - - @NameInMap("settle_trans_rate") - @Validation(required = true) - public String settleTransRate; - - @NameInMap("trans_pay_rate") - @Validation(required = true) - public String transPayRate; - - @NameInMap("buyer_pay_amount") - @Validation(required = true) - public String buyerPayAmount; - - @NameInMap("point_amount") - @Validation(required = true) - public String pointAmount; - - @NameInMap("invoice_amount") - @Validation(required = true) - public String invoiceAmount; - - @NameInMap("send_pay_date") - @Validation(required = true) - public String sendPayDate; - - @NameInMap("receipt_amount") - @Validation(required = true) - public String receiptAmount; - - @NameInMap("store_id") - @Validation(required = true) - public String storeId; - - @NameInMap("terminal_id") - @Validation(required = true) - public String terminalId; - - @NameInMap("fund_bill_list") - @Validation(required = true) - public java.util.List fundBillList; - - @NameInMap("store_name") - @Validation(required = true) - public String storeName; - - @NameInMap("buyer_user_id") - @Validation(required = true) - public String buyerUserId; - - @NameInMap("charge_amount") - @Validation(required = true) - public String chargeAmount; - - @NameInMap("charge_flags") - @Validation(required = true) - public String chargeFlags; - - @NameInMap("settlement_id") - @Validation(required = true) - public String settlementId; - - @NameInMap("trade_settle_info") - @Validation(required = true) - public java.util.List tradeSettleInfo; - - @NameInMap("auth_trade_pay_mode") - @Validation(required = true) - public String authTradePayMode; - - @NameInMap("buyer_user_type") - @Validation(required = true) - public String buyerUserType; - - @NameInMap("mdiscount_amount") - @Validation(required = true) - public String mdiscountAmount; - - @NameInMap("discount_amount") - @Validation(required = true) - public String discountAmount; - - @NameInMap("buyer_user_name") - @Validation(required = true) - public String buyerUserName; - - @NameInMap("subject") - @Validation(required = true) - public String subject; - - @NameInMap("body") - @Validation(required = true) - public String body; - - @NameInMap("alipay_sub_merchant_id") - @Validation(required = true) - public String alipaySubMerchantId; - - @NameInMap("ext_infos") - @Validation(required = true) - public String extInfos; - - public static AlipayTradeQueryResponse build(java.util.Map map) throws Exception { - AlipayTradeQueryResponse self = new AlipayTradeQueryResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeQueryResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradeQueryResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradeQueryResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradeQueryResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradeQueryResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradeQueryResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - - public AlipayTradeQueryResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradeQueryResponse setBuyerLogonId(String buyerLogonId) { - this.buyerLogonId = buyerLogonId; - return this; - } - public String getBuyerLogonId() { - return this.buyerLogonId; - } - - public AlipayTradeQueryResponse setTradeStatus(String tradeStatus) { - this.tradeStatus = tradeStatus; - return this; - } - public String getTradeStatus() { - return this.tradeStatus; - } - - public AlipayTradeQueryResponse setTotalAmount(String totalAmount) { - this.totalAmount = totalAmount; - return this; - } - public String getTotalAmount() { - return this.totalAmount; - } - - public AlipayTradeQueryResponse setTransCurrency(String transCurrency) { - this.transCurrency = transCurrency; - return this; - } - public String getTransCurrency() { - return this.transCurrency; - } - - public AlipayTradeQueryResponse setSettleCurrency(String settleCurrency) { - this.settleCurrency = settleCurrency; - return this; - } - public String getSettleCurrency() { - return this.settleCurrency; - } - - public AlipayTradeQueryResponse setSettleAmount(String settleAmount) { - this.settleAmount = settleAmount; - return this; - } - public String getSettleAmount() { - return this.settleAmount; - } - - public AlipayTradeQueryResponse setPayCurrency(String payCurrency) { - this.payCurrency = payCurrency; - return this; - } - public String getPayCurrency() { - return this.payCurrency; - } - - public AlipayTradeQueryResponse setPayAmount(String payAmount) { - this.payAmount = payAmount; - return this; - } - public String getPayAmount() { - return this.payAmount; - } - - public AlipayTradeQueryResponse setSettleTransRate(String settleTransRate) { - this.settleTransRate = settleTransRate; - return this; - } - public String getSettleTransRate() { - return this.settleTransRate; - } - - public AlipayTradeQueryResponse setTransPayRate(String transPayRate) { - this.transPayRate = transPayRate; - return this; - } - public String getTransPayRate() { - return this.transPayRate; - } - - public AlipayTradeQueryResponse setBuyerPayAmount(String buyerPayAmount) { - this.buyerPayAmount = buyerPayAmount; - return this; - } - public String getBuyerPayAmount() { - return this.buyerPayAmount; - } - - public AlipayTradeQueryResponse setPointAmount(String pointAmount) { - this.pointAmount = pointAmount; - return this; - } - public String getPointAmount() { - return this.pointAmount; - } - - public AlipayTradeQueryResponse setInvoiceAmount(String invoiceAmount) { - this.invoiceAmount = invoiceAmount; - return this; - } - public String getInvoiceAmount() { - return this.invoiceAmount; - } - - public AlipayTradeQueryResponse setSendPayDate(String sendPayDate) { - this.sendPayDate = sendPayDate; - return this; - } - public String getSendPayDate() { - return this.sendPayDate; - } - - public AlipayTradeQueryResponse setReceiptAmount(String receiptAmount) { - this.receiptAmount = receiptAmount; - return this; - } - public String getReceiptAmount() { - return this.receiptAmount; - } - - public AlipayTradeQueryResponse setStoreId(String storeId) { - this.storeId = storeId; - return this; - } - public String getStoreId() { - return this.storeId; - } - - public AlipayTradeQueryResponse setTerminalId(String terminalId) { - this.terminalId = terminalId; - return this; - } - public String getTerminalId() { - return this.terminalId; - } - - public AlipayTradeQueryResponse setFundBillList(java.util.List fundBillList) { - this.fundBillList = fundBillList; - return this; - } - public java.util.List getFundBillList() { - return this.fundBillList; - } - - public AlipayTradeQueryResponse setStoreName(String storeName) { - this.storeName = storeName; - return this; - } - public String getStoreName() { - return this.storeName; - } - - public AlipayTradeQueryResponse setBuyerUserId(String buyerUserId) { - this.buyerUserId = buyerUserId; - return this; - } - public String getBuyerUserId() { - return this.buyerUserId; - } - - public AlipayTradeQueryResponse setChargeAmount(String chargeAmount) { - this.chargeAmount = chargeAmount; - return this; - } - public String getChargeAmount() { - return this.chargeAmount; - } - - public AlipayTradeQueryResponse setChargeFlags(String chargeFlags) { - this.chargeFlags = chargeFlags; - return this; - } - public String getChargeFlags() { - return this.chargeFlags; - } - - public AlipayTradeQueryResponse setSettlementId(String settlementId) { - this.settlementId = settlementId; - return this; - } - public String getSettlementId() { - return this.settlementId; - } - - public AlipayTradeQueryResponse setTradeSettleInfo(java.util.List tradeSettleInfo) { - this.tradeSettleInfo = tradeSettleInfo; - return this; - } - public java.util.List getTradeSettleInfo() { - return this.tradeSettleInfo; - } - - public AlipayTradeQueryResponse setAuthTradePayMode(String authTradePayMode) { - this.authTradePayMode = authTradePayMode; - return this; - } - public String getAuthTradePayMode() { - return this.authTradePayMode; - } - - public AlipayTradeQueryResponse setBuyerUserType(String buyerUserType) { - this.buyerUserType = buyerUserType; - return this; - } - public String getBuyerUserType() { - return this.buyerUserType; - } - - public AlipayTradeQueryResponse setMdiscountAmount(String mdiscountAmount) { - this.mdiscountAmount = mdiscountAmount; - return this; - } - public String getMdiscountAmount() { - return this.mdiscountAmount; - } - - public AlipayTradeQueryResponse setDiscountAmount(String discountAmount) { - this.discountAmount = discountAmount; - return this; - } - public String getDiscountAmount() { - return this.discountAmount; - } - - public AlipayTradeQueryResponse setBuyerUserName(String buyerUserName) { - this.buyerUserName = buyerUserName; - return this; - } - public String getBuyerUserName() { - return this.buyerUserName; - } - - public AlipayTradeQueryResponse setSubject(String subject) { - this.subject = subject; - return this; - } - public String getSubject() { - return this.subject; - } - - public AlipayTradeQueryResponse setBody(String body) { - this.body = body; - return this; - } - public String getBody() { - return this.body; - } - - public AlipayTradeQueryResponse setAlipaySubMerchantId(String alipaySubMerchantId) { - this.alipaySubMerchantId = alipaySubMerchantId; - return this; - } - public String getAlipaySubMerchantId() { - return this.alipaySubMerchantId; - } - - public AlipayTradeQueryResponse setExtInfos(String extInfos) { - this.extInfos = extInfos; - return this; - } - public String getExtInfos() { - return this.extInfos; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeRefundResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeRefundResponse.java deleted file mode 100644 index 170fdc95..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/AlipayTradeRefundResponse.java +++ /dev/null @@ -1,253 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class AlipayTradeRefundResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("buyer_logon_id") - @Validation(required = true) - public String buyerLogonId; - - @NameInMap("fund_change") - @Validation(required = true) - public String fundChange; - - @NameInMap("refund_fee") - @Validation(required = true) - public String refundFee; - - @NameInMap("refund_currency") - @Validation(required = true) - public String refundCurrency; - - @NameInMap("gmt_refund_pay") - @Validation(required = true) - public String gmtRefundPay; - - @NameInMap("refund_detail_item_list") - @Validation(required = true) - public java.util.List refundDetailItemList; - - @NameInMap("store_name") - @Validation(required = true) - public String storeName; - - @NameInMap("buyer_user_id") - @Validation(required = true) - public String buyerUserId; - - @NameInMap("refund_preset_paytool_list") - @Validation(required = true) - public java.util.List refundPresetPaytoolList; - - @NameInMap("refund_settlement_id") - @Validation(required = true) - public String refundSettlementId; - - @NameInMap("present_refund_buyer_amount") - @Validation(required = true) - public String presentRefundBuyerAmount; - - @NameInMap("present_refund_discount_amount") - @Validation(required = true) - public String presentRefundDiscountAmount; - - @NameInMap("present_refund_mdiscount_amount") - @Validation(required = true) - public String presentRefundMdiscountAmount; - - public static AlipayTradeRefundResponse build(java.util.Map map) throws Exception { - AlipayTradeRefundResponse self = new AlipayTradeRefundResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeRefundResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradeRefundResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradeRefundResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradeRefundResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradeRefundResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradeRefundResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - - public AlipayTradeRefundResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradeRefundResponse setBuyerLogonId(String buyerLogonId) { - this.buyerLogonId = buyerLogonId; - return this; - } - public String getBuyerLogonId() { - return this.buyerLogonId; - } - - public AlipayTradeRefundResponse setFundChange(String fundChange) { - this.fundChange = fundChange; - return this; - } - public String getFundChange() { - return this.fundChange; - } - - public AlipayTradeRefundResponse setRefundFee(String refundFee) { - this.refundFee = refundFee; - return this; - } - public String getRefundFee() { - return this.refundFee; - } - - public AlipayTradeRefundResponse setRefundCurrency(String refundCurrency) { - this.refundCurrency = refundCurrency; - return this; - } - public String getRefundCurrency() { - return this.refundCurrency; - } - - public AlipayTradeRefundResponse setGmtRefundPay(String gmtRefundPay) { - this.gmtRefundPay = gmtRefundPay; - return this; - } - public String getGmtRefundPay() { - return this.gmtRefundPay; - } - - public AlipayTradeRefundResponse setRefundDetailItemList(java.util.List refundDetailItemList) { - this.refundDetailItemList = refundDetailItemList; - return this; - } - public java.util.List getRefundDetailItemList() { - return this.refundDetailItemList; - } - - public AlipayTradeRefundResponse setStoreName(String storeName) { - this.storeName = storeName; - return this; - } - public String getStoreName() { - return this.storeName; - } - - public AlipayTradeRefundResponse setBuyerUserId(String buyerUserId) { - this.buyerUserId = buyerUserId; - return this; - } - public String getBuyerUserId() { - return this.buyerUserId; - } - - public AlipayTradeRefundResponse setRefundPresetPaytoolList(java.util.List refundPresetPaytoolList) { - this.refundPresetPaytoolList = refundPresetPaytoolList; - return this; - } - public java.util.List getRefundPresetPaytoolList() { - return this.refundPresetPaytoolList; - } - - public AlipayTradeRefundResponse setRefundSettlementId(String refundSettlementId) { - this.refundSettlementId = refundSettlementId; - return this; - } - public String getRefundSettlementId() { - return this.refundSettlementId; - } - - public AlipayTradeRefundResponse setPresentRefundBuyerAmount(String presentRefundBuyerAmount) { - this.presentRefundBuyerAmount = presentRefundBuyerAmount; - return this; - } - public String getPresentRefundBuyerAmount() { - return this.presentRefundBuyerAmount; - } - - public AlipayTradeRefundResponse setPresentRefundDiscountAmount(String presentRefundDiscountAmount) { - this.presentRefundDiscountAmount = presentRefundDiscountAmount; - return this; - } - public String getPresentRefundDiscountAmount() { - return this.presentRefundDiscountAmount; - } - - public AlipayTradeRefundResponse setPresentRefundMdiscountAmount(String presentRefundMdiscountAmount) { - this.presentRefundMdiscountAmount = presentRefundMdiscountAmount; - return this; - } - public String getPresentRefundMdiscountAmount() { - return this.presentRefundMdiscountAmount; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/PresetPayToolInfo.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/PresetPayToolInfo.java deleted file mode 100644 index 39a8b307..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/PresetPayToolInfo.java +++ /dev/null @@ -1,36 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class PresetPayToolInfo extends TeaModel { - @NameInMap("amount") - @Validation(required = true) - public java.util.List amount; - - @NameInMap("assert_type_code") - @Validation(required = true) - public String assertTypeCode; - - public static PresetPayToolInfo build(java.util.Map map) throws Exception { - PresetPayToolInfo self = new PresetPayToolInfo(); - return TeaModel.build(map, self); - } - - public PresetPayToolInfo setAmount(java.util.List amount) { - this.amount = amount; - return this; - } - public java.util.List getAmount() { - return this.amount; - } - - public PresetPayToolInfo setAssertTypeCode(String assertTypeCode) { - this.assertTypeCode = assertTypeCode; - return this; - } - public String getAssertTypeCode() { - return this.assertTypeCode; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/RefundRoyaltyResult.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/RefundRoyaltyResult.java deleted file mode 100644 index 06602d9c..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/RefundRoyaltyResult.java +++ /dev/null @@ -1,96 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class RefundRoyaltyResult extends TeaModel { - @NameInMap("refund_amount") - @Validation(required = true) - public String refundAmount; - - @NameInMap("royalty_type") - @Validation(required = true) - public String royaltyType; - - @NameInMap("result_code") - @Validation(required = true) - public String resultCode; - - @NameInMap("trans_out") - @Validation(required = true) - public String transOut; - - @NameInMap("trans_out_email") - @Validation(required = true) - public String transOutEmail; - - @NameInMap("trans_in") - @Validation(required = true) - public String transIn; - - @NameInMap("trans_in_email") - @Validation(required = true) - public String transInEmail; - - public static RefundRoyaltyResult build(java.util.Map map) throws Exception { - RefundRoyaltyResult self = new RefundRoyaltyResult(); - return TeaModel.build(map, self); - } - - public RefundRoyaltyResult setRefundAmount(String refundAmount) { - this.refundAmount = refundAmount; - return this; - } - public String getRefundAmount() { - return this.refundAmount; - } - - public RefundRoyaltyResult setRoyaltyType(String royaltyType) { - this.royaltyType = royaltyType; - return this; - } - public String getRoyaltyType() { - return this.royaltyType; - } - - public RefundRoyaltyResult setResultCode(String resultCode) { - this.resultCode = resultCode; - return this; - } - public String getResultCode() { - return this.resultCode; - } - - public RefundRoyaltyResult setTransOut(String transOut) { - this.transOut = transOut; - return this; - } - public String getTransOut() { - return this.transOut; - } - - public RefundRoyaltyResult setTransOutEmail(String transOutEmail) { - this.transOutEmail = transOutEmail; - return this; - } - public String getTransOutEmail() { - return this.transOutEmail; - } - - public RefundRoyaltyResult setTransIn(String transIn) { - this.transIn = transIn; - return this; - } - public String getTransIn() { - return this.transIn; - } - - public RefundRoyaltyResult setTransInEmail(String transInEmail) { - this.transInEmail = transInEmail; - return this; - } - public String getTransInEmail() { - return this.transInEmail; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeFundBill.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeFundBill.java deleted file mode 100644 index 7bed9d6d..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeFundBill.java +++ /dev/null @@ -1,72 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class TradeFundBill extends TeaModel { - @NameInMap("fund_channel") - @Validation(required = true) - public String fundChannel; - - @NameInMap("bank_code") - @Validation(required = true) - public String bankCode; - - @NameInMap("amount") - @Validation(required = true) - public String amount; - - @NameInMap("real_amount") - @Validation(required = true) - public String realAmount; - - @NameInMap("fund_type") - @Validation(required = true) - public String fundType; - - public static TradeFundBill build(java.util.Map map) throws Exception { - TradeFundBill self = new TradeFundBill(); - return TeaModel.build(map, self); - } - - public TradeFundBill setFundChannel(String fundChannel) { - this.fundChannel = fundChannel; - return this; - } - public String getFundChannel() { - return this.fundChannel; - } - - public TradeFundBill setBankCode(String bankCode) { - this.bankCode = bankCode; - return this; - } - public String getBankCode() { - return this.bankCode; - } - - public TradeFundBill setAmount(String amount) { - this.amount = amount; - return this; - } - public String getAmount() { - return this.amount; - } - - public TradeFundBill setRealAmount(String realAmount) { - this.realAmount = realAmount; - return this; - } - public String getRealAmount() { - return this.realAmount; - } - - public TradeFundBill setFundType(String fundType) { - this.fundType = fundType; - return this; - } - public String getFundType() { - return this.fundType; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleDetail.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleDetail.java deleted file mode 100644 index ac475e38..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleDetail.java +++ /dev/null @@ -1,84 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class TradeSettleDetail extends TeaModel { - @NameInMap("operation_type") - @Validation(required = true) - public String operationType; - - @NameInMap("operation_serial_no") - @Validation(required = true) - public String operationSerial_no; - - @NameInMap("operation_dt") - @Validation(required = true) - public String operationDt; - - @NameInMap("trans_out") - @Validation(required = true) - public String transOut; - - @NameInMap("trans_in") - @Validation(required = true) - public String transIn; - - @NameInMap("amount") - @Validation(required = true) - public String amount; - - public static TradeSettleDetail build(java.util.Map map) throws Exception { - TradeSettleDetail self = new TradeSettleDetail(); - return TeaModel.build(map, self); - } - - public TradeSettleDetail setOperationType(String operationType) { - this.operationType = operationType; - return this; - } - public String getOperationType() { - return this.operationType; - } - - public TradeSettleDetail setOperationSerial_no(String operationSerial_no) { - this.operationSerial_no = operationSerial_no; - return this; - } - public String getOperationSerial_no() { - return this.operationSerial_no; - } - - public TradeSettleDetail setOperationDt(String operationDt) { - this.operationDt = operationDt; - return this; - } - public String getOperationDt() { - return this.operationDt; - } - - public TradeSettleDetail setTransOut(String transOut) { - this.transOut = transOut; - return this; - } - public String getTransOut() { - return this.transOut; - } - - public TradeSettleDetail setTransIn(String transIn) { - this.transIn = transIn; - return this; - } - public String getTransIn() { - return this.transIn; - } - - public TradeSettleDetail setAmount(String amount) { - this.amount = amount; - return this; - } - public String getAmount() { - return this.amount; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleInfo.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleInfo.java deleted file mode 100644 index 35b1c040..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/common/models/TradeSettleInfo.java +++ /dev/null @@ -1,24 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.common.models; - -import com.aliyun.tea.*; - -public class TradeSettleInfo extends TeaModel { - @NameInMap("trade_settle_detail_list") - @Validation(required = true) - public java.util.List tradeSettleDetailList; - - public static TradeSettleInfo build(java.util.Map map) throws Exception { - TradeSettleInfo self = new TradeSettleInfo(); - return TeaModel.build(map, self); - } - - public TradeSettleInfo setTradeSettleDetailList(java.util.List tradeSettleDetailList) { - this.tradeSettleDetailList = tradeSettleDetailList; - return this; - } - public java.util.List getTradeSettleDetailList() { - return this.tradeSettleDetailList; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/Client.java deleted file mode 100644 index 94f340b5..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/Client.java +++ /dev/null @@ -1,265 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.facetoface; - -import com.aliyun.tea.*; -import com.alipay.easysdk.payment.facetoface.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayTradePayResponse pay(String subject, String outTradeNo, String totalAmount, String authCode) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.pay"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("subject", subject), - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("total_amount", totalAmount), - new TeaPair("auth_code", authCode), - new TeaPair("scene", "bar_code") - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.pay"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradePayResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradePayResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayTradePrecreateResponse preCreate(String subject, String outTradeNo, String totalAmount) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.precreate"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("subject", subject), - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("total_amount", totalAmount) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.precreate"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradePrecreateResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradePrecreateResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePayResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePayResponse.java deleted file mode 100644 index 06ecc955..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePayResponse.java +++ /dev/null @@ -1,457 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.facetoface.models; - -import com.aliyun.tea.*; - -public class AlipayTradePayResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("buyer_logon_id") - @Validation(required = true) - public String buyerLogonId; - - @NameInMap("settle_amount") - @Validation(required = true) - public String settleAmount; - - @NameInMap("pay_currency") - @Validation(required = true) - public String payCurrency; - - @NameInMap("pay_amount") - @Validation(required = true) - public String payAmount; - - @NameInMap("settle_trans_rate") - @Validation(required = true) - public String settleTransRate; - - @NameInMap("trans_pay_rate") - @Validation(required = true) - public String transPayRate; - - @NameInMap("total_amount") - @Validation(required = true) - public String totalAmount; - - @NameInMap("trans_currency") - @Validation(required = true) - public String transCurrency; - - @NameInMap("settle_currency") - @Validation(required = true) - public String settleCurrency; - - @NameInMap("receipt_amount") - @Validation(required = true) - public String receiptAmount; - - @NameInMap("buyer_pay_amount") - @Validation(required = true) - public String buyerPayAmount; - - @NameInMap("point_amount") - @Validation(required = true) - public String pointAmount; - - @NameInMap("invoice_amount") - @Validation(required = true) - public String invoiceAmount; - - @NameInMap("gmt_payment") - @Validation(required = true) - public String gmtPayment; - - @NameInMap("fund_bill_list") - @Validation(required = true) - public java.util.List fundBillList; - - @NameInMap("card_balance") - @Validation(required = true) - public String cardBalance; - - @NameInMap("store_name") - @Validation(required = true) - public String storeName; - - @NameInMap("buyer_user_id") - @Validation(required = true) - public String buyerUserId; - - @NameInMap("discount_goods_detail") - @Validation(required = true) - public String discountGoodsDetail; - - @NameInMap("voucher_detail_list") - @Validation(required = true) - public java.util.List voucherDetailList; - - @NameInMap("advance_amount") - @Validation(required = true) - public String advanceAmount; - - @NameInMap("auth_trade_pay_mode") - @Validation(required = true) - public String authTradePayMode; - - @NameInMap("charge_amount") - @Validation(required = true) - public String chargeAmount; - - @NameInMap("charge_flags") - @Validation(required = true) - public String chargeFlags; - - @NameInMap("settlement_id") - @Validation(required = true) - public String settlementId; - - @NameInMap("business_params") - @Validation(required = true) - public String businessParams; - - @NameInMap("buyer_user_type") - @Validation(required = true) - public String buyerUserType; - - @NameInMap("mdiscount_amount") - @Validation(required = true) - public String mdiscountAmount; - - @NameInMap("discount_amount") - @Validation(required = true) - public String discountAmount; - - @NameInMap("buyer_user_name") - @Validation(required = true) - public String buyerUserName; - - public static AlipayTradePayResponse build(java.util.Map map) throws Exception { - AlipayTradePayResponse self = new AlipayTradePayResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradePayResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradePayResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradePayResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradePayResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradePayResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradePayResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - - public AlipayTradePayResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradePayResponse setBuyerLogonId(String buyerLogonId) { - this.buyerLogonId = buyerLogonId; - return this; - } - public String getBuyerLogonId() { - return this.buyerLogonId; - } - - public AlipayTradePayResponse setSettleAmount(String settleAmount) { - this.settleAmount = settleAmount; - return this; - } - public String getSettleAmount() { - return this.settleAmount; - } - - public AlipayTradePayResponse setPayCurrency(String payCurrency) { - this.payCurrency = payCurrency; - return this; - } - public String getPayCurrency() { - return this.payCurrency; - } - - public AlipayTradePayResponse setPayAmount(String payAmount) { - this.payAmount = payAmount; - return this; - } - public String getPayAmount() { - return this.payAmount; - } - - public AlipayTradePayResponse setSettleTransRate(String settleTransRate) { - this.settleTransRate = settleTransRate; - return this; - } - public String getSettleTransRate() { - return this.settleTransRate; - } - - public AlipayTradePayResponse setTransPayRate(String transPayRate) { - this.transPayRate = transPayRate; - return this; - } - public String getTransPayRate() { - return this.transPayRate; - } - - public AlipayTradePayResponse setTotalAmount(String totalAmount) { - this.totalAmount = totalAmount; - return this; - } - public String getTotalAmount() { - return this.totalAmount; - } - - public AlipayTradePayResponse setTransCurrency(String transCurrency) { - this.transCurrency = transCurrency; - return this; - } - public String getTransCurrency() { - return this.transCurrency; - } - - public AlipayTradePayResponse setSettleCurrency(String settleCurrency) { - this.settleCurrency = settleCurrency; - return this; - } - public String getSettleCurrency() { - return this.settleCurrency; - } - - public AlipayTradePayResponse setReceiptAmount(String receiptAmount) { - this.receiptAmount = receiptAmount; - return this; - } - public String getReceiptAmount() { - return this.receiptAmount; - } - - public AlipayTradePayResponse setBuyerPayAmount(String buyerPayAmount) { - this.buyerPayAmount = buyerPayAmount; - return this; - } - public String getBuyerPayAmount() { - return this.buyerPayAmount; - } - - public AlipayTradePayResponse setPointAmount(String pointAmount) { - this.pointAmount = pointAmount; - return this; - } - public String getPointAmount() { - return this.pointAmount; - } - - public AlipayTradePayResponse setInvoiceAmount(String invoiceAmount) { - this.invoiceAmount = invoiceAmount; - return this; - } - public String getInvoiceAmount() { - return this.invoiceAmount; - } - - public AlipayTradePayResponse setGmtPayment(String gmtPayment) { - this.gmtPayment = gmtPayment; - return this; - } - public String getGmtPayment() { - return this.gmtPayment; - } - - public AlipayTradePayResponse setFundBillList(java.util.List fundBillList) { - this.fundBillList = fundBillList; - return this; - } - public java.util.List getFundBillList() { - return this.fundBillList; - } - - public AlipayTradePayResponse setCardBalance(String cardBalance) { - this.cardBalance = cardBalance; - return this; - } - public String getCardBalance() { - return this.cardBalance; - } - - public AlipayTradePayResponse setStoreName(String storeName) { - this.storeName = storeName; - return this; - } - public String getStoreName() { - return this.storeName; - } - - public AlipayTradePayResponse setBuyerUserId(String buyerUserId) { - this.buyerUserId = buyerUserId; - return this; - } - public String getBuyerUserId() { - return this.buyerUserId; - } - - public AlipayTradePayResponse setDiscountGoodsDetail(String discountGoodsDetail) { - this.discountGoodsDetail = discountGoodsDetail; - return this; - } - public String getDiscountGoodsDetail() { - return this.discountGoodsDetail; - } - - public AlipayTradePayResponse setVoucherDetailList(java.util.List voucherDetailList) { - this.voucherDetailList = voucherDetailList; - return this; - } - public java.util.List getVoucherDetailList() { - return this.voucherDetailList; - } - - public AlipayTradePayResponse setAdvanceAmount(String advanceAmount) { - this.advanceAmount = advanceAmount; - return this; - } - public String getAdvanceAmount() { - return this.advanceAmount; - } - - public AlipayTradePayResponse setAuthTradePayMode(String authTradePayMode) { - this.authTradePayMode = authTradePayMode; - return this; - } - public String getAuthTradePayMode() { - return this.authTradePayMode; - } - - public AlipayTradePayResponse setChargeAmount(String chargeAmount) { - this.chargeAmount = chargeAmount; - return this; - } - public String getChargeAmount() { - return this.chargeAmount; - } - - public AlipayTradePayResponse setChargeFlags(String chargeFlags) { - this.chargeFlags = chargeFlags; - return this; - } - public String getChargeFlags() { - return this.chargeFlags; - } - - public AlipayTradePayResponse setSettlementId(String settlementId) { - this.settlementId = settlementId; - return this; - } - public String getSettlementId() { - return this.settlementId; - } - - public AlipayTradePayResponse setBusinessParams(String businessParams) { - this.businessParams = businessParams; - return this; - } - public String getBusinessParams() { - return this.businessParams; - } - - public AlipayTradePayResponse setBuyerUserType(String buyerUserType) { - this.buyerUserType = buyerUserType; - return this; - } - public String getBuyerUserType() { - return this.buyerUserType; - } - - public AlipayTradePayResponse setMdiscountAmount(String mdiscountAmount) { - this.mdiscountAmount = mdiscountAmount; - return this; - } - public String getMdiscountAmount() { - return this.mdiscountAmount; - } - - public AlipayTradePayResponse setDiscountAmount(String discountAmount) { - this.discountAmount = discountAmount; - return this; - } - public String getDiscountAmount() { - return this.discountAmount; - } - - public AlipayTradePayResponse setBuyerUserName(String buyerUserName) { - this.buyerUserName = buyerUserName; - return this; - } - public String getBuyerUserName() { - return this.buyerUserName; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePrecreateResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePrecreateResponse.java deleted file mode 100644 index dab81b61..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/AlipayTradePrecreateResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.facetoface.models; - -import com.aliyun.tea.*; - -public class AlipayTradePrecreateResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("qr_code") - @Validation(required = true) - public String qrCode; - - public static AlipayTradePrecreateResponse build(java.util.Map map) throws Exception { - AlipayTradePrecreateResponse self = new AlipayTradePrecreateResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradePrecreateResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradePrecreateResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradePrecreateResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradePrecreateResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradePrecreateResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradePrecreateResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradePrecreateResponse setQrCode(String qrCode) { - this.qrCode = qrCode; - return this; - } - public String getQrCode() { - return this.qrCode; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/TradeFundBill.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/TradeFundBill.java deleted file mode 100644 index 382d50d6..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/TradeFundBill.java +++ /dev/null @@ -1,60 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.facetoface.models; - -import com.aliyun.tea.*; - -public class TradeFundBill extends TeaModel { - @NameInMap("fund_channel") - @Validation(required = true) - public String fundChannel; - - @NameInMap("bank_code") - @Validation(required = true) - public String bankCode; - - @NameInMap("amount") - @Validation(required = true) - public String amount; - - @NameInMap("real_amount") - @Validation(required = true) - public String realAmount; - - public static TradeFundBill build(java.util.Map map) throws Exception { - TradeFundBill self = new TradeFundBill(); - return TeaModel.build(map, self); - } - - public TradeFundBill setFundChannel(String fundChannel) { - this.fundChannel = fundChannel; - return this; - } - public String getFundChannel() { - return this.fundChannel; - } - - public TradeFundBill setBankCode(String bankCode) { - this.bankCode = bankCode; - return this; - } - public String getBankCode() { - return this.bankCode; - } - - public TradeFundBill setAmount(String amount) { - this.amount = amount; - return this; - } - public String getAmount() { - return this.amount; - } - - public TradeFundBill setRealAmount(String realAmount) { - this.realAmount = realAmount; - return this; - } - public String getRealAmount() { - return this.realAmount; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/VoucherDetail.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/VoucherDetail.java deleted file mode 100644 index 0cdbe1c6..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/facetoface/models/VoucherDetail.java +++ /dev/null @@ -1,144 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.facetoface.models; - -import com.aliyun.tea.*; - -public class VoucherDetail extends TeaModel { - @NameInMap("id") - @Validation(required = true) - public String id; - - @NameInMap("name") - @Validation(required = true) - public String name; - - @NameInMap("type") - @Validation(required = true) - public String type; - - @NameInMap("amount") - @Validation(required = true) - public String amount; - - @NameInMap("merchant_contribute") - @Validation(required = true) - public String merchantContribute; - - @NameInMap("other_contribute") - @Validation(required = true) - public String otherContribute; - - @NameInMap("memo") - @Validation(required = true) - public String memo; - - @NameInMap("template_id") - @Validation(required = true) - public String templateId; - - @NameInMap("purchase_buyer_contribute") - @Validation(required = true) - public String purchaseBuyerContribute; - - @NameInMap("purchase_merchant_contribute") - @Validation(required = true) - public String purchaseMerchantContribute; - - @NameInMap("purchase_ant_contribute") - @Validation(required = true) - public String purchaseAntContribute; - - public static VoucherDetail build(java.util.Map map) throws Exception { - VoucherDetail self = new VoucherDetail(); - return TeaModel.build(map, self); - } - - public VoucherDetail setId(String id) { - this.id = id; - return this; - } - public String getId() { - return this.id; - } - - public VoucherDetail setName(String name) { - this.name = name; - return this; - } - public String getName() { - return this.name; - } - - public VoucherDetail setType(String type) { - this.type = type; - return this; - } - public String getType() { - return this.type; - } - - public VoucherDetail setAmount(String amount) { - this.amount = amount; - return this; - } - public String getAmount() { - return this.amount; - } - - public VoucherDetail setMerchantContribute(String merchantContribute) { - this.merchantContribute = merchantContribute; - return this; - } - public String getMerchantContribute() { - return this.merchantContribute; - } - - public VoucherDetail setOtherContribute(String otherContribute) { - this.otherContribute = otherContribute; - return this; - } - public String getOtherContribute() { - return this.otherContribute; - } - - public VoucherDetail setMemo(String memo) { - this.memo = memo; - return this; - } - public String getMemo() { - return this.memo; - } - - public VoucherDetail setTemplateId(String templateId) { - this.templateId = templateId; - return this; - } - public String getTemplateId() { - return this.templateId; - } - - public VoucherDetail setPurchaseBuyerContribute(String purchaseBuyerContribute) { - this.purchaseBuyerContribute = purchaseBuyerContribute; - return this; - } - public String getPurchaseBuyerContribute() { - return this.purchaseBuyerContribute; - } - - public VoucherDetail setPurchaseMerchantContribute(String purchaseMerchantContribute) { - this.purchaseMerchantContribute = purchaseMerchantContribute; - return this; - } - public String getPurchaseMerchantContribute() { - return this.purchaseMerchantContribute; - } - - public VoucherDetail setPurchaseAntContribute(String purchaseAntContribute) { - this.purchaseAntContribute = purchaseAntContribute; - return this; - } - public String getPurchaseAntContribute() { - return this.purchaseAntContribute; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/Client.java deleted file mode 100644 index f78465e3..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/Client.java +++ /dev/null @@ -1,179 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.huabei; - -import com.aliyun.tea.*; -import com.alipay.easysdk.payment.huabei.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayTradeCreateResponse create(String subject, String outTradeNo, String totalAmount, String buyerId, HuabeiConfig extendParams) throws Exception { - TeaModel.validateParams(extendParams, "extendParams"); - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.create"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("subject", subject), - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("total_amount", totalAmount), - new TeaPair("buyer_id", buyerId), - new TeaPair("extend_params", extendParams) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.trade.create"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCreateResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayTradeCreateResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/AlipayTradeCreateResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/AlipayTradeCreateResponse.java deleted file mode 100644 index d44470cf..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/AlipayTradeCreateResponse.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.huabei.models; - -import com.aliyun.tea.*; - -public class AlipayTradeCreateResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("out_trade_no") - @Validation(required = true) - public String outTradeNo; - - @NameInMap("trade_no") - @Validation(required = true) - public String tradeNo; - - public static AlipayTradeCreateResponse build(java.util.Map map) throws Exception { - AlipayTradeCreateResponse self = new AlipayTradeCreateResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeCreateResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayTradeCreateResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayTradeCreateResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayTradeCreateResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayTradeCreateResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipayTradeCreateResponse setOutTradeNo(String outTradeNo) { - this.outTradeNo = outTradeNo; - return this; - } - public String getOutTradeNo() { - return this.outTradeNo; - } - - public AlipayTradeCreateResponse setTradeNo(String tradeNo) { - this.tradeNo = tradeNo; - return this; - } - public String getTradeNo() { - return this.tradeNo; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/HuabeiConfig.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/HuabeiConfig.java deleted file mode 100644 index 4cc7addb..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/huabei/models/HuabeiConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.huabei.models; - -import com.aliyun.tea.*; - -public class HuabeiConfig extends TeaModel { - @NameInMap("hb_fq_num") - @Validation(required = true) - public String hbFqNum; - - @NameInMap("hb_fq_seller_percent") - @Validation(required = true) - public String hbFqSellerPercent; - - public static HuabeiConfig build(java.util.Map map) throws Exception { - HuabeiConfig self = new HuabeiConfig(); - return TeaModel.build(map, self); - } - - public HuabeiConfig setHbFqNum(String hbFqNum) { - this.hbFqNum = hbFqNum; - return this; - } - public String getHbFqNum() { - return this.hbFqNum; - } - - public HuabeiConfig setHbFqSellerPercent(String hbFqSellerPercent) { - this.hbFqSellerPercent = hbFqSellerPercent; - return this; - } - public String getHbFqSellerPercent() { - return this.hbFqSellerPercent; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/Client.java deleted file mode 100644 index beb5c12d..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/Client.java +++ /dev/null @@ -1,118 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.page; - -import com.aliyun.tea.*; -import com.alipay.easysdk.payment.page.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - - public AlipayTradePagePayResponse pay(String subject, String outTradeNo, String totalAmount, String returnUrl) throws Exception { - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.page.pay"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("subject", subject), - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("total_amount", totalAmount), - new TeaPair("product_code", "FAST_INSTANT_TRADE_PAY") - ); - java.util.Map textParams = TeaConverter.buildMap( - new TeaPair("return_url", returnUrl) - ); - String sign = _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey")); - java.util.Map response = TeaConverter.buildMap( - new TeaPair("body", _kernel.generatePage("POST", systemParams, bizParams, textParams, sign)) - ); - return TeaModel.toModel(response, new AlipayTradePagePayResponse()); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/models/AlipayTradePagePayResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/models/AlipayTradePagePayResponse.java deleted file mode 100644 index b920b0c3..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/page/models/AlipayTradePagePayResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.page.models; - -import com.aliyun.tea.*; - -public class AlipayTradePagePayResponse extends TeaModel { - // 订单信息,Form表单形式 - @NameInMap("body") - @Validation(required = true) - public String body; - - public static AlipayTradePagePayResponse build(java.util.Map map) throws Exception { - AlipayTradePagePayResponse self = new AlipayTradePagePayResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradePagePayResponse setBody(String body) { - this.body = body; - return this; - } - public String getBody() { - return this.body; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/Client.java deleted file mode 100644 index 16252173..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/Client.java +++ /dev/null @@ -1,119 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.wap; - -import com.aliyun.tea.*; -import com.alipay.easysdk.payment.wap.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - - public AlipayTradeWapPayResponse pay(String subject, String outTradeNo, String totalAmount, String quitUrl, String returnUrl) throws Exception { - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.trade.wap.pay"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("subject", subject), - new TeaPair("out_trade_no", outTradeNo), - new TeaPair("total_amount", totalAmount), - new TeaPair("quit_url", quitUrl), - new TeaPair("product_code", "QUICK_WAP_WAY") - ); - java.util.Map textParams = TeaConverter.buildMap( - new TeaPair("return_url", returnUrl) - ); - String sign = _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey")); - java.util.Map response = TeaConverter.buildMap( - new TeaPair("body", _kernel.generatePage("POST", systemParams, bizParams, textParams, sign)) - ); - return TeaModel.toModel(response, new AlipayTradeWapPayResponse()); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/models/AlipayTradeWapPayResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/models/AlipayTradeWapPayResponse.java deleted file mode 100644 index cb6561ba..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/payment/wap/models/AlipayTradeWapPayResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.payment.wap.models; - -import com.aliyun.tea.*; - -public class AlipayTradeWapPayResponse extends TeaModel { - // 订单信息,Form表单形式 - @NameInMap("body") - @Validation(required = true) - public String body; - - public static AlipayTradeWapPayResponse build(java.util.Map map) throws Exception { - AlipayTradeWapPayResponse self = new AlipayTradeWapPayResponse(); - return TeaModel.build(map, self); - } - - public AlipayTradeWapPayResponse setBody(String body) { - this.body = body; - return this; - } - public String getBody() { - return this.body; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/Client.java deleted file mode 100644 index b3f11597..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/Client.java +++ /dev/null @@ -1,174 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.security.textrisk; - -import com.aliyun.tea.*; -import com.alipay.easysdk.security.textrisk.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipaySecurityRiskContentDetectResponse detect(String content) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", "alipay.security.risk.content.detect"), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - java.util.Map bizParams = TeaConverter.buildMap( - new TeaPair("content", content) - ); - java.util.Map textParams = new java.util.HashMap<>(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, "alipay.security.risk.content.detect"); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipaySecurityRiskContentDetectResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipaySecurityRiskContentDetectResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/models/AlipaySecurityRiskContentDetectResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/models/AlipaySecurityRiskContentDetectResponse.java deleted file mode 100644 index 082f0820..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/security/textrisk/models/AlipaySecurityRiskContentDetectResponse.java +++ /dev/null @@ -1,109 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.security.textrisk.models; - -import com.aliyun.tea.*; - -public class AlipaySecurityRiskContentDetectResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - @NameInMap("action") - @Validation(required = true) - public String action; - - @NameInMap("keywords") - @Validation(required = true) - public java.util.List keywords; - - @NameInMap("unique_id") - @Validation(required = true) - public String uniqueId; - - public static AlipaySecurityRiskContentDetectResponse build(java.util.Map map) throws Exception { - AlipaySecurityRiskContentDetectResponse self = new AlipaySecurityRiskContentDetectResponse(); - return TeaModel.build(map, self); - } - - public AlipaySecurityRiskContentDetectResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipaySecurityRiskContentDetectResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipaySecurityRiskContentDetectResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipaySecurityRiskContentDetectResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipaySecurityRiskContentDetectResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - - public AlipaySecurityRiskContentDetectResponse setAction(String action) { - this.action = action; - return this; - } - public String getAction() { - return this.action; - } - - public AlipaySecurityRiskContentDetectResponse setKeywords(java.util.List keywords) { - this.keywords = keywords; - return this; - } - public java.util.List getKeywords() { - return this.keywords; - } - - public AlipaySecurityRiskContentDetectResponse setUniqueId(String uniqueId) { - this.uniqueId = uniqueId; - return this; - } - public String getUniqueId() { - return this.uniqueId; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/aes/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/aes/Client.java deleted file mode 100644 index eb160bf4..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/aes/Client.java +++ /dev/null @@ -1,97 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.util.aes; - -import com.aliyun.tea.*; - - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - - public String decrypt(String cipherText) throws Exception { - return _kernel.aesDecrypt(cipherText, _kernel.getConfig("encryptKey")); - } - - public String encrypt(String plainText) throws Exception { - return _kernel.aesEncrypt(plainText, _kernel.getConfig("encryptKey")); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/Client.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/Client.java deleted file mode 100644 index 04615d0d..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/Client.java +++ /dev/null @@ -1,273 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.util.generic; - -import com.aliyun.tea.*; -import com.alipay.easysdk.util.generic.models.*; - -public class Client { - - public com.alipay.easysdk.kernel.Client _kernel; - public Client(com.alipay.easysdk.kernel.Client kernel) throws Exception { - this._kernel = kernel; - } - - public AlipayOpenApiGenericResponse execute(String method, java.util.Map textParams, java.util.Map bizParams) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 15000), - new TeaPair("readTimeout", 15000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", method), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", "application/x-www-form-urlencoded;charset=utf-8") - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = Tea.toReadable(_kernel.toUrlEncodedRequestBody(bizParams)); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, method); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenApiGenericResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenApiGenericResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenApiGenericResponse fileExecute(String method, java.util.Map textParams, java.util.Map bizParams, java.util.Map fileParams) throws Exception { - java.util.Map runtime_ = TeaConverter.buildMap( - new TeaPair("ignoreSSL", _kernel.getConfig("ignoreSSL")), - new TeaPair("httpProxy", _kernel.getConfig("httpProxy")), - new TeaPair("connectTimeout", 100000), - new TeaPair("readTimeout", 100000), - new TeaPair("retry", TeaConverter.buildMap( - new TeaPair("maxAttempts", 0) - )) - ); - - TeaRequest _lastRequest = null; - long _now = System.currentTimeMillis(); - int _retryTimes = 0; - while (Tea.allowRetry((java.util.Map) runtime_.get("retry"), _retryTimes, _now)) { - if (_retryTimes > 0) { - int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes); - if (backoffTime > 0) { - Tea.sleep(backoffTime); - } - } - _retryTimes = _retryTimes + 1; - try { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", method), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - String boundary = _kernel.getRandomBoundary(); - request_.protocol = _kernel.getConfig("protocol"); - request_.method = "POST"; - request_.pathname = "/gateway.do"; - request_.headers = TeaConverter.buildMap( - new TeaPair("host", _kernel.getConfig("gatewayHost")), - new TeaPair("content-type", _kernel.concatStr("multipart/form-data;charset=utf-8;boundary=", boundary)) - ); - request_.query = _kernel.sortMap(TeaConverter.merge(String.class, - TeaConverter.buildMap( - new TeaPair("sign", _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey"))) - ), - systemParams, - textParams - )); - request_.body = _kernel.toMultipartRequestBody(textParams, fileParams, boundary); - _lastRequest = request_; - TeaResponse response_ = Tea.doAction(request_, runtime_); - - java.util.Map respMap = _kernel.readAsJson(response_, method); - if (_kernel.isCertMode()) { - if (_kernel.verify(respMap, _kernel.extractAlipayPublicKey(_kernel.getAlipayCertSN(respMap)))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenApiGenericResponse()); - } - - } else { - if (_kernel.verify(respMap, _kernel.getConfig("alipayPublicKey"))) { - return TeaModel.toModel(_kernel.toRespModel(respMap), new AlipayOpenApiGenericResponse()); - } - - } - - throw new TeaException(TeaConverter.buildMap( - new TeaPair("message", "验签失败,请检查支付宝公钥设置是否正确。") - )); - } catch (Exception e) { - if (Tea.isRetryable(e)) { - continue; - } - throw new RuntimeException(e); - } - } - - throw new TeaUnretryableException(_lastRequest); - } - - public AlipayOpenApiGenericSDKResponse sdkExecute(String method, java.util.Map textParams, java.util.Map bizParams) throws Exception { - TeaRequest request_ = new TeaRequest(); - java.util.Map systemParams = TeaConverter.buildMap( - new TeaPair("method", method), - new TeaPair("app_id", _kernel.getConfig("appId")), - new TeaPair("timestamp", _kernel.getTimestamp()), - new TeaPair("format", "json"), - new TeaPair("version", "1.0"), - new TeaPair("alipay_sdk", _kernel.getSdkVersion()), - new TeaPair("charset", "UTF-8"), - new TeaPair("sign_type", _kernel.getConfig("signType")), - new TeaPair("app_cert_sn", _kernel.getMerchantCertSN()), - new TeaPair("alipay_root_cert_sn", _kernel.getAlipayRootCertSN()) - ); - String sign = _kernel.sign(systemParams, bizParams, textParams, _kernel.getConfig("merchantPrivateKey")); - java.util.Map response = TeaConverter.buildMap( - new TeaPair("body", _kernel.generateOrderString(systemParams, bizParams, textParams, sign)) - ); - return TeaModel.toModel(response , new AlipayOpenApiGenericSDKResponse()); - } - - - /** - * ISV代商户代用,指定appAuthToken - * - * @param appAuthToken 代调用token - * @return 本客户端,便于链式调用 - */ - public Client agent(String appAuthToken) { - _kernel.injectTextParam("app_auth_token", appAuthToken); - return this; - } - - /** - * 用户授权调用,指定authToken - * - * @param authToken 用户授权token - * @return 本客户端,便于链式调用 - */ - public Client auth(String authToken) { - _kernel.injectTextParam("auth_token", authToken); - return this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param url 异步通知回调地址,例如:https://www.test.com/callback - * @return 本客户端,便于链式调用 - */ - public Client asyncNotify(String url) { - _kernel.injectTextParam("notify_url", url); - return this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param testUrl 后端系统测试地址 - * @return 本客户端,便于链式调用 - */ - public Client route(String testUrl) { - _kernel.injectTextParam("ws_service_url", testUrl); - return this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param key 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param value 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的Map指定各下级字段的值 - * 如果该字段是一个数组,请使用List储存各个值 - * 对于更复杂的情况,也支持Map和List的各种组合嵌套,比如参数是值是个List,List中的每种类型是一个复杂对象 - * @return 本客户端,便于链式调用 - */ - public Client optional(String key, Object value) { - _kernel.injectBizParam(key, value); - return this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param optionalArgs 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return 本客户端,便于链式调用 - */ - public Client batchOptional(java.util.Map optionalArgs) { - for (java.util.Map.Entry pair : optionalArgs.entrySet()) { - _kernel.injectBizParam(pair.getKey(), pair.getValue()); - } - return this; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericResponse.java deleted file mode 100644 index 25c8bd02..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.util.generic.models; - -import com.aliyun.tea.*; - -public class AlipayOpenApiGenericResponse extends TeaModel { - // 响应原始字符串 - @NameInMap("http_body") - @Validation(required = true) - public String httpBody; - - @NameInMap("code") - @Validation(required = true) - public String code; - - @NameInMap("msg") - @Validation(required = true) - public String msg; - - @NameInMap("sub_code") - @Validation(required = true) - public String subCode; - - @NameInMap("sub_msg") - @Validation(required = true) - public String subMsg; - - public static AlipayOpenApiGenericResponse build(java.util.Map map) throws Exception { - AlipayOpenApiGenericResponse self = new AlipayOpenApiGenericResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenApiGenericResponse setHttpBody(String httpBody) { - this.httpBody = httpBody; - return this; - } - public String getHttpBody() { - return this.httpBody; - } - - public AlipayOpenApiGenericResponse setCode(String code) { - this.code = code; - return this; - } - public String getCode() { - return this.code; - } - - public AlipayOpenApiGenericResponse setMsg(String msg) { - this.msg = msg; - return this; - } - public String getMsg() { - return this.msg; - } - - public AlipayOpenApiGenericResponse setSubCode(String subCode) { - this.subCode = subCode; - return this; - } - public String getSubCode() { - return this.subCode; - } - - public AlipayOpenApiGenericResponse setSubMsg(String subMsg) { - this.subMsg = subMsg; - return this; - } - public String getSubMsg() { - return this.subMsg; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericSDKResponse.java b/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericSDKResponse.java deleted file mode 100644 index 11039dde..00000000 --- a/vendor/alipaysdk/easysdk/java/src/main/java/com/alipay/easysdk/util/generic/models/AlipayOpenApiGenericSDKResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.util.generic.models; - -import com.aliyun.tea.*; - -public class AlipayOpenApiGenericSDKResponse extends TeaModel { - // 订单信息,字符串形式 - @NameInMap("body") - @Validation(required = true) - public String body; - - public static AlipayOpenApiGenericSDKResponse build(java.util.Map map) throws Exception { - AlipayOpenApiGenericSDKResponse self = new AlipayOpenApiGenericSDKResponse(); - return TeaModel.build(map, self); - } - - public AlipayOpenApiGenericSDKResponse setBody(String body) { - this.body = body; - return this; - } - public String getBody() { - return this.body; - } - -} diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/TestAccount.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/TestAccount.java deleted file mode 100644 index 0f3c3557..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/TestAccount.java +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk; - -import com.alipay.easysdk.kernel.Config; -import com.alipay.easysdk.kms.aliyun.AliyunKMSConfig; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.Map; - -/** - * @author zhongyu - * @version $Id: TestAccount.java, v 0.1 2020年01月19日 4:42 PM zhongyu Exp $ - */ -public class TestAccount { - /** - * 从文件中读取私钥 - *

- * 注意:实际开发过程中,请务必注意不要将私钥信息配置在源码中(比如配置为常量或储存在配置文件的某个字段中等),因为私钥的保密等级往往比源码高得多,将会增加私钥泄露的风险。推荐将私钥信息储存在专用的私钥文件中, - * 将私钥文件通过安全的流程分发到服务器的安全储存区域上,仅供自己的应用运行时读取。 - *

- * 此处为了单元测试执行的环境普适性,私钥文件配置在resources资源下,实际过程中请不要这样做。 - * - * @param appId 私钥对应的APP_ID - * @return 私钥字符串 - */ - private static String getPrivateKey(String appId) { - InputStream stream = TestAccount.class.getResourceAsStream("/fixture/privateKey.json"); - Map result = new Gson().fromJson(new InputStreamReader(stream), new TypeToken>() {}.getType()); - return result.get(appId); - } - - /** - * 从文件中读取阿里云AccessKey配置信息 - * 此处为了单元测试执行的环境普适性,AccessKey信息配置在resources资源下,实际过程中请不要这样做。 - * @param key AccessKey配置对应的key - * @return AccessKey配置字符串 - */ - private static String getAliyunAccessKey(String key){ - InputStream stream = TestAccount.class.getResourceAsStream("/fixture/aliyunAccessKey.json"); - Map result = new Gson().fromJson(new InputStreamReader(stream), new TypeToken>() {}.getType()); - return result.get(key); - } - - /** - * 线上小程序测试账号 - */ - public static class Mini { - public static final Config CONFIG = getConfig(); - - public static Config getConfig() { - Config config = new Config(); - config.protocol = "https"; - config.gatewayHost = "openapi.alipay.com"; - config.appId = "2019022663440152"; - config.signType = "RSA2"; - - config.alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAumX1EaLM4ddn1Pia4SxTRb62aVYxU8I2mHMqrc" - + "pQU6F01mIO/DjY7R4xUWcLi0I2oH/BK/WhckEDCFsGrT7mO+JX8K4sfaWZx1aDGs0m25wOCNjp+DCVBXotXSCurqgGI/9UrY+" - + "QydYDnsl4jB65M3p8VilF93MfS01omEDjUW+1MM4o3FP0khmcKsoHnYGs21btEeh0LK1gnnTDlou6Jwv3Ew36CbCNY2cYkuyP" - + "AW0j47XqzhWJ7awAx60fwgNBq6ZOEPJnODqH20TAdTLNxPSl4qGxamjBO+RuInBy+Bc2hFHq3pNv6hTAfktggRKkKzDlDEUwg" - + "SLE7d2eL7P6rwIDAQAB"; - config.merchantPrivateKey = getPrivateKey(config.appId); - config.notifyUrl = "https://www.test.com/callback"; - return config; - } - } - - /** - * 线上生活号测试账号 - */ - public static class OpenLife { - public static final Config CONFIG = getConfig(); - - private static Config getConfig() { - Config config = new Config(); - config.protocol = "https"; - config.gatewayHost = "openapi.alipay.com"; - config.appId = "2021002177673029"; - config.signType = "RSA2"; - - config.alipayCertPath = "src/test/resources/fixture/alipayCertPublicKey_RSA2.crt"; - config.alipayRootCertPath = "src/test/resources/fixture/alipayRootCert.crt"; - config.merchantCertPath = "src/test/resources/fixture/appCertPublicKey_2021002177673029.crt"; - config.merchantPrivateKey = getPrivateKey(config.appId); - return config; - } - } - - /** - * Aliyun KMS签名测试账号 - */ - public static class AliyunKMS { - public static final AliyunKMSConfig CONFIG = getConfig(); - - private static AliyunKMSConfig getConfig() { - AliyunKMSConfig config = new AliyunKMSConfig(); - config.protocol = "https"; - config.gatewayHost = "openapi.alipay.com"; - config.appId = "2021001163614348"; - config.signType = "RSA2"; - config.notifyUrl = "https://www.test.com/callback"; - - config.alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiOgupSXhUE3GkMDeCpeDwoEM2z+krBpaKPFbfS" + - "JgFVoN/M1s62VC6LhFI9aL4F76bqMGilQPpe2ukW5UmLR+C3OmliuqE/v5/UEpasnndcZMEKadQbWOpQ4eBHGkKTASQhtbgYb3U" + - "WS+viD5MfHS0+3h+sko8cW06jONmjG2tvFpnmooIjMawXByK8/f4vBMBk4ZQQodo4TT18mhyyyIoilhLH2EatQp/lov54ZhwHi9" + - "8LXeLw7Yt4QK8q7u+lB34V8lsu9zVMEMZExhoblsdjgzFAY6KzCn/QGnQE5e54i59+wONAyf2npUkz4cpPDJPLQ7KBu1febsZjk" + - "g9vZrXwIDAQAB"; - - //如果使用阿里云KMS签名,则不需要配置私钥 - //config.merchantPrivateKey = getPrivateKey(config.appId); - - //如果使用第三方签名服务,则需要指定签名提供方名称,阿里云KMS的名称为"AliyunKMS" - config.signProvider = "AliyunKMS"; - - //如果使用阿里云KMS签名,需要更换为您的阿里云账号信息 - config.aliyunAccessKeyId = getAliyunAccessKey("AccessKeyId"); - config.aliyunAccessKeySecret = getAliyunAccessKey("AccessKeySecret"); - config.kmsKeyId = "4358f298-8e30-4849-9791-52e68dbd9d1e"; - config.kmsKeyVersionId = "e71daa69-c321-4014-b0c4-ba070c7839ee"; - - //如果使用阿里云KMS签名,需要更换为您的KMS服务地址 - // KMS服务地址列表详情,请参考: - // https://help.aliyun.com/document_detail/69006.html?spm=a2c4g.11186623.2.9.783f77cfAoNhY6#concept-69006-zh - config.kmsEndpoint = "kms.cn-hangzhou.aliyuncs.com"; - - return config; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/image/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/image/ClientTest.java deleted file mode 100644 index d9099adb..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/image/ClientTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.alipay.easysdk.base.image; - -import com.alipay.easysdk.TestAccount.Mini; -import com.alipay.easysdk.base.image.models.AlipayOfflineMaterialImageUploadResponse; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.factory.Factory.Base; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(Mini.CONFIG); - } - - @Test - public void testUpload() throws Exception { - AlipayOfflineMaterialImageUploadResponse response = Base.Image().upload("测试图片", - "src/test/resources/fixture/sample.png"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.imageId, not(nullValue())); - assertThat(response.imageUrl, startsWith("https://")); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/oauth/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/oauth/ClientTest.java deleted file mode 100644 index 646fa50e..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/oauth/ClientTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.alipay.easysdk.base.oauth; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.base.oauth.models.AlipaySystemOauthTokenResponse; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testGetToken() throws Exception { - AlipaySystemOauthTokenResponse response = Factory.Base.OAuth().getToken("fe1ae5abacd54ba2a6c8f6902533TX64"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40002")); - assertThat(response.msg, is("Invalid Arguments")); - assertThat(response.subCode, is("isv.code-invalid")); - assertThat(response.subMsg, is("授权码code无效")); - assertThat(response.httpBody, not(nullValue())); - } - - @Test - public void testRefreshToken() throws Exception { - AlipaySystemOauthTokenResponse response = Factory.Base.OAuth().refreshToken("1234567890"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40002")); - assertThat(response.msg, is("Invalid Arguments")); - assertThat(response.subCode, is("isv.refresh-token-invalid")); - assertThat(response.subMsg, is("刷新令牌refresh_token无效")); - assertThat(response.httpBody, not(nullValue())); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/qrcode/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/qrcode/ClientTest.java deleted file mode 100644 index bd8a133a..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/qrcode/ClientTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.alipay.easysdk.base.qrcode; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.base.qrcode.models.AlipayOpenAppQrcodeCreateResponse; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -public class ClientTest { - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testCreate() throws Exception { - AlipayOpenAppQrcodeCreateResponse response = Factory.Base.Qrcode().create( - "https://opendocs.alipay.com", "ageIndex=1", "文档站点"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.qrCodeUrl, not(nullValue())); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/video/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/video/ClientTest.java deleted file mode 100644 index e400cbcb..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/base/video/ClientTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.alipay.easysdk.base.video; - -import com.alipay.easysdk.TestAccount.Mini; -import com.alipay.easysdk.base.video.models.AlipayOfflineMaterialImageUploadResponse; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.factory.Factory.Base; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(Mini.CONFIG); - } - - @Test - public void testUpload() throws Exception { - AlipayOfflineMaterialImageUploadResponse response = Base.Video().upload("测试视频", - "src/test/resources/fixture/sample.mp4"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.imageId, not(nullValue())); - assertThat(response.imageUrl, startsWith("https://")); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/openlife/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/openlife/ClientTest.java deleted file mode 100644 index 9a89046b..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/openlife/ClientTest.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.alipay.easysdk.marketing.openlife; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.factory.Factory.Marketing; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicLifeMsgRecallResponse; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageContentCreateResponse; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageContentModifyResponse; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageSingleSendResponse; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageTotalSendResponse; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicSettingCategoryQueryResponse; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicTemplateMessageIndustryModifyResponse; -import com.alipay.easysdk.marketing.openlife.models.Article; -import com.alipay.easysdk.marketing.openlife.models.Context; -import com.alipay.easysdk.marketing.openlife.models.Keyword; -import com.alipay.easysdk.marketing.openlife.models.Template; -import com.google.common.collect.Lists; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(TestAccount.OpenLife.CONFIG); - } - - @Test - public void testCreateImageTextContent() throws Exception { - AlipayOpenPublicMessageContentCreateResponse response = Marketing.OpenLife().createImageTextContent("标题", - "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED", - "示例", "T", "activity", "满100减10", - "关键,热度", "13434343432,xxx@163.com"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.contentId, is(notNullValue())); - assertThat(response.contentUrl, is(notNullValue())); - } - - @Test - public void testModifyImageTextContent() throws Exception { - AlipayOpenPublicMessageContentModifyResponse response = Marketing.OpenLife().modifyImageTextContent( - "2021002177673029ecae71f5-9af3-4317-b9ce-d3a8f238f8ce", "新标题", - "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED", - "新示例", "T", "activity", "满100减20", - "关键,热度", "13434343432,xxx@163.com"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.contentId, is("2021002177673029ecae71f5-9af3-4317-b9ce-d3a8f238f8ce")); - assertThat(response.contentUrl, is(notNullValue())); - } - - @Test - public void testSendText() throws Exception { - AlipayOpenPublicMessageTotalSendResponse response = Marketing.OpenLife().sendText("测试"); - - if (response.code.equals("10000")) { - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.messageId, is(notNullValue())); - } else { - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("PUB.MSG_BATCH_SD_OVER")); - assertThat(response.subMsg, is("批量发送消息频率超限")); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.messageId, is(nullValue())); - } - } - - @Test - public void testSendImageText() throws Exception { - Article article = new Article(); - article.actionName = "测试"; - article.desc = "测试"; - article.title = "测试"; - article.imageUrl = "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED"; - article.url = "https://docs.open.alipay.com/api_6/alipay.open.public.message.total.send"; - AlipayOpenPublicMessageTotalSendResponse response = Marketing.OpenLife().sendImageText(Lists.newArrayList(article)); - - if (response.code.equals("10000")) { - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.messageId, is(notNullValue())); - } else { - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("PUB.MSG_BATCH_SD_OVER")); - assertThat(response.subMsg, is("批量发送消息频率超限")); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.messageId, is(nullValue())); - } - } - - @Test - public void testSendSingleMessage() throws Exception { - Keyword keyword = new Keyword(); - keyword.color = "#85be53"; - keyword.value = "HU7142"; - - Context context = new Context(); - context.headColor = "#85be53"; - context.url = "https://docs.open.alipay.com/api_6/alipay.open.public.message.single.send"; - context.actionName = "查看详情"; - context.keyword1 = keyword; - context.keyword2 = keyword; - context.first = keyword; - context.remark = keyword; - - Template template = new Template(); - template.templateId = "TM9f1a1af9c3d9418bb0f66af22c817f41"; - template.context = context; - - AlipayOpenPublicMessageSingleSendResponse response = Marketing.OpenLife().sendSingleMessage( - "2088002656718920", template); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("MSG_TEMPLATE_NOT_EXIST")); - assertThat(response.subMsg, is("消息模板不存在")); - assertThat(response.httpBody, not(nullValue())); - } - - @Test - public void testRecallMessage() throws Exception { - AlipayOpenPublicLifeMsgRecallResponse response = Marketing.OpenLife().recallMessage( - "201905106452100327f456f6-8dd2-4a06-8b0e-ec8a3a85c46a"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("PUB.RCD_MSG_NOT_EXIST")); - assertThat(response.subMsg, is("撤回的消息不存在")); - assertThat(response.httpBody, not(nullValue())); - } - - @Test - public void testSetIndustry() throws Exception { - AlipayOpenPublicTemplateMessageIndustryModifyResponse response = Marketing.OpenLife().setIndustry( - "10001/20102", "IT科技/IT软件与服务", - "10001/20102", "IT科技/IT软件与服务"); - - if (response.code.equals("10000")) { - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - } else { - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("3002")); - assertThat(response.subMsg, is("模板消息行业一月只能修改一次")); - assertThat(response.httpBody, not(nullValue())); - } - } - - @Test - public void testGetIndustry() throws Exception { - AlipayOpenPublicSettingCategoryQueryResponse response = Marketing.OpenLife().getIndustry(); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.primaryCategory, is("IT科技/IT软件与服务")); - assertThat(response.secondaryCategory, is("IT科技/IT软件与服务")); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/pass/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/pass/ClientTest.java deleted file mode 100644 index ee562822..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/pass/ClientTest.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.alipay.easysdk.marketing.pass; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.marketing.pass.models.AlipayPassInstanceAddResponse; -import com.alipay.easysdk.marketing.pass.models.AlipayPassInstanceUpdateResponse; -import com.alipay.easysdk.marketing.pass.models.AlipayPassTemplateAddResponse; -import com.alipay.easysdk.marketing.pass.models.AlipayPassTemplateUpdateResponse; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testCreateTemplate() throws Exception { - AlipayPassTemplateAddResponse response = Factory.Marketing.Pass().createTemplate("123456789", getTplContent()); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.success, is(true)); - assertThat(response.result, containsString("tpl_id")); - } - - @Test - public void testUpdateTemplate() throws Exception { - AlipayPassTemplateUpdateResponse response = Factory.Marketing.Pass().updateTemplate("2020012014534017917956080", getTplContent()); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.success, is(true)); - assertThat(response.result, containsString("tpl_id")); - } - - @Test - public void testAddInstance() throws Exception { - AlipayPassInstanceAddResponse response = Factory.Marketing.Pass().addInstance("2020012014534017917956080", "{}", - "1", "{\"partner_id\":\"2088102114633762\",\"out_trade_no\":\"1234567\"}"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.success, is(false)); - } - - @Test - public void testUpdateInstance() throws Exception { - AlipayPassInstanceUpdateResponse response = Factory.Marketing.Pass().updateInstance("209919213", - "2088918273", "{}", "USED", "8612231273", "wave"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("KP.AE_ALIPASS_NOTEXIST")); - assertThat(response.subMsg, is("卡券不存在")); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.success, is(false)); - assertThat(response.result, containsString("{\"operate\":\"UPDATE\"}")); - } - - private String getTplContent() { - return "{\"logo\":\"http://img01.taobaocdn.com/top/i1/LB1NDJuQpXXXXbYXFXXXXXXXXXX\",\"strip\":null,\"icon\":null," - + "\"content\":{\"evoucherInfo\":{\"goodsId\":\"\",\"title\":\"test\",\"type\":\"boardingPass\"," - + "\"product\":\"air\",\"startDate\":\"2020-01-20 13:45:56\",\"endDate\":\"2020-01-25 13:45:56\"," - + "\"operation\":[{\"message\":{\"img\":\"http://img01.taobaocdn.com/top/i1/LB1NDJuQpXXXXbYXFXXXXXXXXXX\"," - + "\"target\":\"\"},\"format\":\"img\",\"messageEncoding\":\"utf-8\",\"altText\":\"\"}]," - + "\"einfo\":{\"logoText\":\"test\",\"headFields\":[{\"key\":\"test\",\"label\":\"测试\",\"value\":\"\"," - + "\"type\":\"text\"}],\"primaryFields\":[{\"key\":\"from\",\"label\":\"测试\",\"value\":\"\",\"type\":\"text\"}," - + "{\"key\":\"to\",\"label\":\"测试\",\"value\":\"\",\"type\":\"text\"}],\"secondaryFields\":[{\"key\":\"fltNo\"," - + "\"label\":\"航班号\",\"value\":\"CA123\",\"type\":\"text\"}],\"auxiliaryFields\":[{\"key\":\"test\"," - + "\"label\":\"测试\",\"value\":\"\",\"type\":\"text\"}],\"backFields\":[]},\"locations\":[]}," - + "\"merchant\":{\"mname\":\"钟雨\",\"mtel\":\"\",\"minfo\":\"\"},\"platform\":{\"channelID\":\"2088201564809153\"," - + "\"webServiceUrl\":\"https://alipass.alipay.com/builder/syncRecord.htm?tempId=2020012013442621326446216\"}," - + "\"style\":{\"backgroundColor\":\"RGB(26,150,219)\"},\"fileInfo\":{\"formatVersion\":\"2\",\"canShare\":true," - + "\"canBuy\":false,\"canPresent\":true,\"serialNumber\":\"2020012013520759738677158\",\"supportTaxi\":\"true\"," - + "\"taxiSchemaUrl\":\"alipays://platformapi/startapp?appId=20000778&bizid=260&channel=71322\"}," - + "\"appInfo\":{\"app\":{\"android_appid\":\"\",\"ios_appid\":\"\",\"android_launch\":\"\",\"ios_launch\":\"\"," - + "\"android_download\":\"\",\"ios_download\":\"\"},\"label\":\"测试\",\"message\":\"\"}," - + "\"source\":\"alipassprod\",\"alipayVerify\":[\"qrcode\"]}}"; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/templatemessage/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/templatemessage/ClientTest.java deleted file mode 100644 index 721a87f8..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/marketing/templatemessage/ClientTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.alipay.easysdk.marketing.templatemessage; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.factory.Factory.Marketing; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.marketing.templatemessage.models.AlipayOpenAppMiniTemplatemessageSendResponse; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testSend() throws Exception { - AlipayOpenAppMiniTemplatemessageSendResponse response = Marketing.TemplateMessage().send( - "2088102122458832", - "2017010100000000580012345678", - "MDI4YzIxMDE2M2I5YTQzYjUxNWE4MjA4NmU1MTIyYmM=", - "page/component/index", - "{\"keyword1\": {\"value\" : \"12:00\"},\"keyword2\": {\"value\" : \"20180808\"},\"keyword3\": {\"value\" : \"支付宝\"}}"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("USER_TEMPLATE_ILLEGAL")); - assertThat(response.subMsg, is("模板非法")); - assertThat(response.httpBody, not(nullValue())); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/member/identification/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/member/identification/ClientTest.java deleted file mode 100644 index cfbc3bfa..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/member/identification/ClientTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.alipay.easysdk.member.identification; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.factory.Factory.Member; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.member.identification.models.AlipayUserCertifyOpenCertifyResponse; -import com.alipay.easysdk.member.identification.models.AlipayUserCertifyOpenInitializeResponse; -import com.alipay.easysdk.member.identification.models.AlipayUserCertifyOpenQueryResponse; -import com.alipay.easysdk.member.identification.models.IdentityParam; -import com.alipay.easysdk.member.identification.models.MerchantConfig; -import org.junit.Before; -import org.junit.Test; - -import java.util.UUID; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testInit() throws Exception { - IdentityParam identityParam = new IdentityParam(); - identityParam.identityType = "CERT_INFO"; - identityParam.certType = "IDENTITY_CARD"; - identityParam.certName = "张三"; - identityParam.certNo = "5139011988090987631"; - MerchantConfig merchantConfig = new MerchantConfig(); - merchantConfig.returnUrl = "www.taobao.com"; - AlipayUserCertifyOpenInitializeResponse response = Member.Identification().init( - UUID.randomUUID().toString(), "FACE", identityParam, merchantConfig); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.certifyId, not(nullValue())); - } - - @Test - public void testCertify() throws Exception { - AlipayUserCertifyOpenCertifyResponse response = Member.Identification().certify("1226a454daf65c2abbbe0b7b8dc30d20"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.body, containsString("https://openapi.alipay.com/gateway.do?alipay_sdk=alipay-easysdk-java-")); - assertThat(response.body, containsString("sign")); - } - - @Test - public void testQuery() throws Exception { - AlipayUserCertifyOpenQueryResponse response = Member.Identification().query("89ad1f1b8171d9741c3e5620fd77f9de"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("CERTIFY_ID_EXPIRED")); - assertThat(response.subMsg, is("认证已失效")); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.passed, is(nullValue())); - assertThat(response.identityInfo, is(nullValue())); - assertThat(response.materialInfo, is(nullValue())); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/multipleFactory/MultipleFactoryTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/multipleFactory/MultipleFactoryTest.java deleted file mode 100644 index 5a3fc9d4..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/multipleFactory/MultipleFactoryTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.multipleFactory; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.base.image.models.AlipayOfflineMaterialImageUploadResponse; -import com.alipay.easysdk.factory.MultipleFactory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageContentCreateResponse; -import org.junit.Assert; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * @author junying - * @version : MultipleFactoryTest.java, v 0.1 2020年12月23日 4:19 下午 junying Exp $ - */ -public class MultipleFactoryTest { - - @Test - public void testImageUpload() throws Exception { - - MultipleFactory factory = new MultipleFactory(); - factory.setOptions(TestAccount.Mini.CONFIG); - - AlipayOfflineMaterialImageUploadResponse response = factory.Image().upload("测试图片", - "src/test/resources/fixture/sample.png"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.imageId, not(nullValue())); - assertThat(response.imageUrl, startsWith("https://")); - } - - @Test - public void testCreateImageTextContent() throws Exception { - MultipleFactory factory = new MultipleFactory(); - factory.setOptions(TestAccount.OpenLife.CONFIG); - - AlipayOpenPublicMessageContentCreateResponse response = factory.OpenLife().createImageTextContent("标题", - "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED", - "示例", "T", "activity", "满100减10", - "关键,热度", "13434343432,xxx@163.com"); - - Assert.assertThat(ResponseChecker.success(response), is(true)); - Assert.assertThat(response.code, is("10000")); - Assert.assertThat(response.msg, is("Success")); - Assert.assertThat(response.subCode, is(nullValue())); - Assert.assertThat(response.subMsg, is(nullValue())); - Assert.assertThat(response.httpBody, not(nullValue())); - Assert.assertThat(response.contentId, is(notNullValue())); - Assert.assertThat(response.contentUrl, is(notNullValue())); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/app/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/app/ClientTest.java deleted file mode 100644 index 30abf0ef..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/app/ClientTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.payment.app; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.payment.app.models.AlipayTradeAppPayResponse; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testPay() throws Exception { - AlipayTradeAppPayResponse response = Factory.Payment.App().pay("iPhone6 16G", - "f4833085-0c46-4bb0-8e5f-622a02a4cffc", "0.10"); - - assertThat(ResponseChecker.success(response), is(true)); - Assert.assertThat(response.body, containsString("app_id=2019022663440152&biz_content=%7B%22" - + "out_trade_no%22%3A%22f4833085-0c46-4bb0-8e5f-622a02a4cffc%22%2C%22" - + "total_amount%22%3A%220.10%22%2C%22subject%22%3A%22iPhone6+16G%22%7D&" - + "charset=UTF-8&format=json&method=alipay.trade.app.pay" - + "¬ify_url=https%3A%2F%2Fwww.test.com%2Fcallback&sign=")); - } - - @Test - public void testPayWithOptional() throws Exception { - AlipayTradeAppPayResponse response = Factory.Payment.App() - .agent("ca34ea491e7146cc87d25fca24c4cD11") - .optional("extend_params", getHuabeiConfig()) - .pay("iPhone6 16G", "f4833085-0c46-4bb0-8e5f-622a02a4cffc", "0.10"); - - Assert.assertThat(response.body, containsString("app_auth_token=ca34ea491e7146cc87d25fca24c4cD11&" - + "app_id=2019022663440152&biz_content=%7B%22extend_params%22%3A%7B%22hb_fq_seller_percent%22%3A%22100%22%2C%22" - + "hb_fq_num%22%3A%223%22%7D%2C%22out_trade_no%22%3A%22f4833085-0c46-4bb0-8e5f-622a02a4cffc%22%2C%22" - + "total_amount%22%3A%220.10%22%2C%22subject%22%3A%22iPhone6+16G%22%7D&charset=UTF-8&format=json&" - + "method=alipay.trade.app.pay¬ify_url=https%3A%2F%2Fwww.test.com%2Fcallback&sign=")); - } - - private Map getHuabeiConfig() { - Map extendParams = new HashMap<>(); - extendParams.put("hb_fq_num", "3"); - extendParams.put("hb_fq_seller_percent", "100"); - return extendParams; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/common/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/common/ClientTest.java deleted file mode 100644 index 58dafc80..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/common/ClientTest.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.alipay.easysdk.payment.common; - -import com.alipay.easysdk.TestAccount.Mini; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.payment.common.models.AlipayDataDataserviceBillDownloadurlQueryResponse; -import com.alipay.easysdk.payment.common.models.AlipayTradeCancelResponse; -import com.alipay.easysdk.payment.common.models.AlipayTradeCloseResponse; -import com.alipay.easysdk.payment.common.models.AlipayTradeCreateResponse; -import com.alipay.easysdk.payment.common.models.AlipayTradeFastpayRefundQueryResponse; -import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse; -import com.alipay.easysdk.payment.common.models.AlipayTradeRefundResponse; -import org.junit.Before; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - @Before - public void setUp() { - Factory.setOptions(Mini.CONFIG); - } - - @Test - public void testCreate() throws Exception { - String outTradeNo = UUID.randomUUID().toString(); - AlipayTradeCreateResponse response = Factory.Payment.Common().create( - "iPhone6 16G", outTradeNo, "0.01", "2088002656718920"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.outTradeNo, is(outTradeNo)); - assertThat(response.tradeNo, startsWith("202")); - } - - @Test - public void testCreateWithOptional() throws Exception { - String outTradeNo = UUID.randomUUID().toString(); - AlipayTradeCreateResponse response = Factory.Payment.Common().optional("goods_detail", getGoodsDetail()) - .create("iPhone6 16G", outTradeNo, "0.01", "2088002656718920"); - - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.outTradeNo, is(outTradeNo)); - assertThat(response.tradeNo, startsWith("202")); - } - - private List getGoodsDetail() { - List goodsDetail = new ArrayList<>(); - Map goodDetail = new HashMap<>(); - goodDetail.put("goods_id", "apple-01"); - goodDetail.put("goods_name", "iPhone6 16G"); - goodDetail.put("quantity", 1); - goodDetail.put("price", "0.01"); - goodsDetail.add(goodDetail); - return goodsDetail; - } - - @Test - public void testQuery() throws Exception { - AlipayTradeQueryResponse response = Factory.Payment.Common().query("6f149ddb-ab8c-4546-81fb-5880b4aaa318"); - - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.outTradeNo, is("6f149ddb-ab8c-4546-81fb-5880b4aaa318")); - } - - @Test - public void testCancel() throws Exception { - AlipayTradeCancelResponse response = Factory.Payment.Common().cancel(createNewAndReturnOutTradeNo()); - - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.action, is("close")); - } - - @Test - public void testClose() throws Exception { - AlipayTradeCloseResponse response = Factory.Payment.Common().close(createNewAndReturnOutTradeNo()); - - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - } - - @Test - public void testRefund() throws Exception { - AlipayTradeRefundResponse response = Factory.Payment.Common().refund( - "64628156-f784-4572-9540-485b7c91b850", "0.01"); - - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.refundFee, is("0.01")); - } - - @Test - public void testQueryRefund() throws Exception { - AlipayTradeFastpayRefundQueryResponse response = Factory.Payment.Common().queryRefund( - "64628156-f784-4572-9540-485b7c91b850", "64628156-f784-4572-9540-485b7c91b850"); - - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.refundAmount, is("0.01")); - assertThat(response.totalAmount, is("0.01")); - } - - @Test - public void testDownloadBill() throws Exception { - AlipayDataDataserviceBillDownloadurlQueryResponse response = Factory.Payment.Common().downloadBill("trade", "2020-01"); - - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.billDownloadUrl.startsWith("http://dwbillcenter.alipay.com/"), is(true)); - } - - private String createNewAndReturnOutTradeNo() throws Exception { - return Factory.Payment.Common().create("iPhone6 16G", UUID.randomUUID().toString(), - "88.88", "2088002656718920").outTradeNo; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/facetoface/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/facetoface/ClientTest.java deleted file mode 100644 index 14c599e1..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/facetoface/ClientTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.alipay.easysdk.payment.facetoface; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.payment.facetoface.models.AlipayTradePayResponse; -import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse; -import org.junit.Before; -import org.junit.Test; - -import java.util.UUID; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testPay() throws Exception { - AlipayTradePayResponse response = Factory.Payment.FaceToFace().pay("iPhone6 16G", - "64628156-f784-4572-9540-485b7c91b850", "0.01", "289821051157962364"); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("40004")); - assertThat(response.msg, is("Business Failed")); - assertThat(response.subCode, is("ACQ.PAYMENT_AUTH_CODE_INVALID")); - assertThat(response.subMsg, is("支付失败,获取顾客账户信息失败,请顾客刷新付款码后重新收款,如再次收款失败,请联系管理员处理。[SOUNDWAVE_PARSER_FAIL]")); - assertThat(response.httpBody, not(nullValue())); - } - - @Test - public void testPreCreate() throws Exception { - AlipayTradePrecreateResponse response = Factory.Payment.FaceToFace().preCreate("iPhone6 16G", - createNewAndReturnOutTradeNo(), "0.10"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.qrCode.startsWith("https://qr.alipay.com/"), is(true)); - } - - private String createNewAndReturnOutTradeNo() throws Exception { - return Factory.Payment.Common().create("Iphone6 16G", UUID.randomUUID().toString(), - "88.88", "2088002656718920").outTradeNo; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/huabei/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/huabei/ClientTest.java deleted file mode 100644 index 021fb8fe..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/huabei/ClientTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.alipay.easysdk.payment.huabei; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.payment.huabei.models.AlipayTradeCreateResponse; -import com.alipay.easysdk.payment.huabei.models.HuabeiConfig; -import org.junit.Before; -import org.junit.Test; - -import java.util.UUID; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testCreate() throws Exception { - String outTradeNo = UUID.randomUUID().toString(); - - HuabeiConfig config = new HuabeiConfig(); - config.hbFqNum = "3"; - config.hbFqSellerPercent = "0"; - AlipayTradeCreateResponse response = Factory.Payment.Huabei().create("Iphone6 16G", - outTradeNo, "0.10", "2088002656718920", config); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.outTradeNo, is(outTradeNo)); - assertThat(response.tradeNo, startsWith("202")); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/page/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/page/ClientTest.java deleted file mode 100644 index 75d54bf1..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/page/ClientTest.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.payment.page; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testPay() throws Exception { - AlipayTradePagePayResponse response = Factory.Payment.Page().pay("iPhone6 16G", - "e5b5bd79-8310-447d-b63b-0fe3a393324d", "0.10", "https://www.taobao.com"); - - Assert.assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - } - - @Test - public void testPayWithOptionalNotify() throws Exception { - AlipayTradePagePayResponse response = Factory.Payment.Page().asyncNotify("https://www.test2.com/newCallback") - .pay("iPhone6 16G", "e5b5bd79-8310-447d-b63b-0fe3a393324d", - "0.10", "https://www.taobao.com"); - - Assert.assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/wap/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/wap/ClientTest.java deleted file mode 100644 index fa53911d..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/payment/wap/ClientTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.payment.wap; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.payment.wap.models.AlipayTradeWapPayResponse; -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testPay() throws Exception { - AlipayTradeWapPayResponse response = Factory.Payment.Wap().pay("iPhone6 16G", - "b7f4bc7d-ea4b-4efd-9072-d8ea913c8946", "0.10", - "https://www.taobao.com", "https://www.taobao.com"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - } - - @Test - public void testPayWithOptional() throws Exception { - AlipayTradeWapPayResponse response = Factory.Payment.Wap() - .agent("ca34ea491e7146cc87d25fca24c4cD11").batchOptional(getOptionalArgs()) - .pay("iPhone6 16G", "b7f4bc7d-ea4b-4efd-9072-d8ea913c8946", "0.10", - "https://www.taobao.com", "https://www.taobao.com"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - assertThat(response.body.contains(""), is(true)); - } - - private Map getOptionalArgs() { - Map optionalArgs = new HashMap<>(); - optionalArgs.put("timeout_express", "10m"); - optionalArgs.put("body", "iPhone6 16G"); - return optionalArgs; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/security/textrisk/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/security/textrisk/ClientTest.java deleted file mode 100644 index 14d8b4e0..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/security/textrisk/ClientTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.alipay.easysdk.security.textrisk; - -import com.alipay.easysdk.TestAccount; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.factory.Factory.Security; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.security.textrisk.models.AlipaySecurityRiskContentDetectResponse; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(TestAccount.Mini.CONFIG); - } - - @Test - public void testDetect() throws Exception { - AlipaySecurityRiskContentDetectResponse response = Security.TextRisk().detect("test"); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - assertThat(response.action, is("PASSED")); - assertThat(response.uniqueId, not(nullValue())); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/aes/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/aes/ClientTest.java deleted file mode 100644 index 78af7c81..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/aes/ClientTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.util.aes; - -import com.alipay.easysdk.TestAccount.Mini; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.Config; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Config config = Mini.getConfig(); - config.encryptKey = "aa4BtZ4tspm2wnXLb1ThQA=="; - Factory.setOptions(config); - } - - @Test - public void testDecrypt() throws Exception { - String plainText = Factory.Util.AES().decrypt("ILpoMowjIQjfYMR847rnFQ=="); - assertThat(plainText, is("test1234567")); - } - - @Test - public void testEncrypt() throws Exception { - String cipherText = Factory.Util.AES().encrypt("test1234567"); - assertThat(cipherText, is("ILpoMowjIQjfYMR847rnFQ==")); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/generic/ClientTest.java b/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/generic/ClientTest.java deleted file mode 100644 index 3065f4ae..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/java/com/alipay/easysdk/util/generic/ClientTest.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.alipay.easysdk.util.generic; - -import com.alipay.easysdk.TestAccount.Mini; -import com.alipay.easysdk.factory.Factory; -import com.alipay.easysdk.kernel.util.ResponseChecker; -import com.alipay.easysdk.util.generic.models.AlipayOpenApiGenericResponse; -import com.alipay.easysdk.util.generic.models.AlipayOpenApiGenericSDKResponse; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -public class ClientTest { - - @Before - public void setUp() { - Factory.setOptions(Mini.CONFIG); - } - - @Test - public void testSDKExecute() throws Exception { - Map bizParams = new HashMap<>(); - bizParams.put("subject", "iPhone6 16G"); - bizParams.put("out_trade_no", "f4833085-0c46-4bb0-8e5f-622a02a4cffc"); - bizParams.put("total_amount", "0.10"); - - java.util.Map textParams = new java.util.HashMap<>(); - - AlipayOpenApiGenericSDKResponse response = Factory.Util.Generic().sdkExecute("alipay.trade.app.pay", textParams, bizParams); - - Assert.assertThat(ResponseChecker.success(response), is(true)); - Assert.assertThat(response.body, containsString("app_id=2019022663440152&biz_content=%7B%22" - + "out_trade_no%22%3A%22f4833085-0c46-4bb0-8e5f-622a02a4cffc%22%2C%22" - + "total_amount%22%3A%220.10%22%2C%22subject%22%3A%22iPhone6+16G%22%7D&" - + "charset=UTF-8&format=json&method=alipay.trade.app.pay" - + "¬ify_url=https%3A%2F%2Fwww.test.com%2Fcallback&sign=")); - } - - @Test - public void testFileExecute() throws Exception { - Map textParams = new HashMap<>(); - textParams.put("image_type", "png"); - textParams.put("image_name", "海底捞"); - textParams.put("image_pid", "22088021822217233"); - - Map fileParams = new HashMap<>(); - fileParams.put("image_content", "src/test/resources/fixture/sample.png"); - - AlipayOpenApiGenericResponse response = Factory.Util.Generic().fileExecute("alipay.offline.material.image.upload", textParams, null, fileParams); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - - } - - - @Test - public void testExecuteWithoutAppAuthToken() throws Exception { - String outTradeNo = UUID.randomUUID().toString(); - AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute( - "alipay.trade.create", null, getBizParams(outTradeNo)); - - assertThat(ResponseChecker.success(response), is(true)); - assertThat(response.code, is("10000")); - assertThat(response.msg, is("Success")); - assertThat(response.subCode, is(nullValue())); - assertThat(response.subMsg, is(nullValue())); - assertThat(response.httpBody, not(nullValue())); - } - - @Test - public void testExecuteWithAppAuthToken() throws Exception { - String outTradeNo = UUID.randomUUID().toString(); - AlipayOpenApiGenericResponse response = Factory.Util.Generic().execute( - "alipay.trade.create", getTextParams(), getBizParams(outTradeNo)); - - assertThat(ResponseChecker.success(response), is(false)); - assertThat(response.code, is("20001")); - assertThat(response.msg, is("Insufficient Token Permissions")); - assertThat(response.subCode, is("aop.invalid-app-auth-token")); - assertThat(response.subMsg, is("无效的应用授权令牌")); - assertThat(response.httpBody, not(nullValue())); - } - - private Map getTextParams() { - Map bizParams = new HashMap<>(); - bizParams.put("app_auth_token", "201712BB_D0804adb2e743078d1822d536956X34"); - return bizParams; - } - - private Map getBizParams(String outTradeNo) { - Map bizParams = new HashMap<>(); - bizParams.put("subject", "Iphone6 16G"); - bizParams.put("out_trade_no", outTradeNo); - bizParams.put("total_amount", "0.10"); - bizParams.put("buyer_id", "2088002656718920"); - bizParams.put("extend_params", getHuabeiParams()); - return bizParams; - } - - private Map getHuabeiParams() { - Map extendParams = new HashMap<>(); - extendParams.put("hb_fq_num", "3"); - extendParams.put("hb_fq_seller_percent", "3"); - return extendParams; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayCertPublicKey_RSA2.crt b/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayCertPublicKey_RSA2.crt deleted file mode 100644 index e6cfe374..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayCertPublicKey_RSA2.crt +++ /dev/null @@ -1,43 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDrDCCApSgAwIBAgIQICEJBI0ke5Hyfrab8lKfETANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs -YXNzIDIgUjEwHhcNMjEwOTA0MDgyMzM4WhcNMjMwOTA0MDgyMzM4WjCBjDELMAkGA1UEBhMCQ04x -JzAlBgNVBAoMHuS9r+aclOaIj+a1i+ivlembtuS4gOeahOWFrOWPuDEPMA0GA1UECwwGQWxpcGF5 -MUMwQQYDVQQDDDrmlK/ku5jlrp0o5Lit5Zu9Kee9kee7nOaKgOacr+aciemZkOWFrOWPuC0yMDg4 -MDQxNjcyMzM3MDY1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoAJUERAvj8MD0Vau -bxmbHS5+/Q7eOQ+nNrRNr8ul6/i3UQFOyBdxL+/ZQQUnI/qECsERyCknVYHv1e73jrSyZRQ/MqyN -u3/AoNRFn5/tXS1Mi7NBcgZ65QF8B91WwO4J438i+WpGU3g25qG5jpa1bTESLS298Bgpk5jg0W0t -HTCEQbg06r9LhMtCN/LPYMRXDfxcP0EqmvQ6evAxP2XPLI9/Kna4elVovS2gbQdpk5SuMUBWOnfv -PjS1U/rRGNnT4o/BctjXTRowEOJrgHrAW02kwfkZpgvL2AZ7e6K37zYlLWsxsM1j338oo+SJFEKn -jQANpBDUvX/vGvx4rVipzwIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCA/gwDQYJKoZIhvcNAQELBQAD -ggEBAEzRgkKjhjXpMncln5ND65SY1fN1KM8EDx6+meoX/tCD1HKaB0qqZidRSDRsVtGhz436YLHF -Vi6qyifMRse9ut26UJoK4DRUBY6bDtECDFnS5gLTX2imDMdH6oAgHmNVSvZrJbN+eAFbf52kjf/X -KjB97U6ZRpirIlCv+j4iEJTC3Cw/8cCS+/Asmnf+FwnPprSReHLrmJ9yNy1d2OX3o8ymbJZYCYMb -65cJha3CTkR/YZDuUw8yqJURmeDrdmAnCiJnGeP+vbm4dwtBamnoiWxh8t6o6xvn0VeeWtmey0Yp -Ma4OGxjVKPz2U/369ZGU471gXUXvYZm9ILzHi3S0O+8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE4jCCAsqgAwIBAgIIYsSr5bKAMl8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UEBhMCQ04xFjAU -BgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEw -LwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMy -MjE0MzQxNVoXDTM3MTEyNjE0MzQxNVowgYIxCzAJBgNVBAYTAkNOMRYwFAYDVQQKDA1BbnQgRmlu -YW5jaWFsMSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTE5MDcGA1UEAwwwQW50IEZp -bmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBDbGFzcyAyIFIxMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEAsLMfYaoRoPRbmDcAfXPCmKf43pWRN5yTXa/KJWO0l+mrgQvs89bA -NEvbDUxlkGwycwtwi5DgBuBgVhLliXu+R9CYgr2dXs8D8Hx/gsggDcyGPLmVrDOnL+dyeauheARZ -fA3du60fwEwwbGcVIpIxPa/4n3IS/ElxQa6DNgqxh8J9Xwh7qMGl0JK9+bALuxf7B541Gr4p0WEN -G8fhgjBV4w4ut9eQLOoa1eddOUSZcy46Z7allwowwgt7b5VFfx/P1iKJ3LzBMgkCK7GZ2kiLrL7R -iqV+h482J7hkJD+ardoc6LnrHO/hIZymDxok+VH9fVeUdQa29IZKrIDVj65THQIDAQABo2MwYTAf -BgNVHSMEGDAWgBRfdLQEwE8HWurlsdsio4dBspzhATAdBgNVHQ4EFgQUSqHkYINtUSAtDPnS8Xoy -oP9p7qEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIB -AIQ8TzFy4bVIVb8+WhHKCkKNPcJe2EZuIcqvRoi727lZTJOfYy/JzLtckyZYfEI8J0lasZ29wkTt -a1IjSo+a6XdhudU4ONVBrL70U8Kzntplw/6TBNbLFpp7taRALjUgbCOk4EoBMbeCL0GiYYsTS0mw -7xdySzmGQku4GTyqutIGPQwKxSj9iSFw1FCZqr4VP4tyXzMUgc52SzagA6i7AyLedd3tbS6lnR5B -L+W9Kx9hwT8L7WANAxQzv/jGldeuSLN8bsTxlOYlsdjmIGu/C9OWblPYGpjQQIRyvs4Cc/mNhrh+ -14EQgwuemIIFDLOgcD+iISoN8CqegelNcJndFw1PDN6LkVoiHz9p7jzsge8RKay/QW6C03KNDpWZ -EUCgCUdfHfo8xKeR+LL1cfn24HKJmZt8L/aeRZwZ1jwePXFRVtiXELvgJuM/tJDIFj2KD337iV64 -fWcKQ/ydDVGqfDZAdcU4hQdsrPWENwPTQPfVPq2NNLMyIH9+WKx9Ed6/WzeZmIy5ZWpX1TtTolo6 -OJXQFeItMAjHxW/ZSZTok5IS3FuRhExturaInnzjYpx50a6kS34c5+c8hYq7sAtZ/CNLZmBnBCFD -aMQqT8xFZJ5uolUaSeXxg7JFY1QsYp5RKvj4SjFwCGKJ2+hPPe9UyyltxOidNtxjaknOCeBHytOr ------END CERTIFICATE----- diff --git a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayRootCert.crt b/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayRootCert.crt deleted file mode 100644 index d370e5b3..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/alipayRootCert.crt +++ /dev/null @@ -1,88 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG -EwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw -MzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO -UkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE -MPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT -V7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti -W/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ -MxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b -53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI -pDoiVhsLwg== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0 -MFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV -BAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j -aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk -rUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2 -xAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp -dRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6 -vSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl -YUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1 -Pbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H -DtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98 -SZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG -PsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe -9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC -AwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90 -tATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy -nOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf -tJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq -JSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3 -IODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW -05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41 -T0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI -kkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop -PKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N -1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y -jXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02 -77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi -kT9qhqn+lw== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG -EwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0 -WjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE -CwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp -YWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU -WP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt -rpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ -4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2 -zVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg -wHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH -Rglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF -BQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM -E0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg -MiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq -MQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp -bmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv -b3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV -nJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5 -4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg -wykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw -WktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN -z+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g -KgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA -uTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp -emMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3 -U8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I -UugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn -DJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU -1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX -Yf4Zr0fJsGuv ------END CERTIFICATE----- \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/aliyunAccessKey.json b/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/aliyunAccessKey.json deleted file mode 100644 index 6a20aabf..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/aliyunAccessKey.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "AccessKeyId": "<- 已脱敏,如想要执行单元测试,请开发者自行替换 ->", - "AccessKeySecret": "<- 已脱敏,如想要执行单元测试,请开发者自行替换 ->" -} diff --git a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/appCertPublicKey_2021002177673029.crt b/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/appCertPublicKey_2021002177673029.crt deleted file mode 100644 index 779a21b3..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/appCertPublicKey_2021002177673029.crt +++ /dev/null @@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEqzCCA5OgAwIBAgIQICEJBISLTM195SDUTFcqgzANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs -YXNzIDEgUjEwHhcNMjEwOTA0MDgyMzM4WhcNMjMwOTA0MDgyMzM4WjBzMQswCQYDVQQGEwJDTjEn -MCUGA1UECgwe5L2v5pyU5oiP5rWL6K+V6Zu25LiA55qE5YWs5Y+4MQ8wDQYDVQQLDAZBbGlwYXkx -KjAoBgNVBAMMITIwODgwNDE2NzIzMzcwNjUtMjAyMTAwMjE3NzY3MzAyOTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAIR8YYwwcxy05HWMEvZ/Qur6tanpqhbogszVd7H67ychHaSrkm07 -y5ETOF2XVYKpIE+myucnEWFAyHkYAk2VQuvluO0wltW83sfAZ3peSdkEhBi+Oxq2IIOIud5l+c/D -PFHM3g4y773T/5l+cjZmXUK9ivNqZFndztL1rAraimdKhE10QRCJDO81sApyrVGR3AW0/4O4Teg3 -OjmsfN/V5GhL23I3N2wLfXcbo5gBnk7pvZlwQBuLzoh2E3JDERwO/LRzYD4I80jWk+I9U9486uGD -VmolrB7cLj3pPGhlHT2/7xEoZ6I8sPRPTj9ju64erEfiVtkVdyIJQlEMGWecmgECAwEAAaOCASkw -ggElMB8GA1UdIwQYMBaAFHEH4gRhFuTl8mXrMQ/J4PQ8mtWRMB0GA1UdDgQWBBTL7223IQHq1giv -oQ3o04ZCZmw/rjBABgNVHSAEOTA3MDUGB2CBHAFuAQEwKjAoBggrBgEFBQcCARYcaHR0cDovL2Nh -LmFsaXBheS5jb20vY3BzLnBkZjAOBgNVHQ8BAf8EBAMCBsAwLwYDVR0fBCgwJjAkoCKgIIYeaHR0 -cDovL2NhLmFsaXBheS5jb20vY3JsNTcuY3JsMGAGCCsGAQUFBwEBBFQwUjAoBggrBgEFBQcwAoYc -aHR0cDovL2NhLmFsaXBheS5jb20vY2E2LmNlcjAmBggrBgEFBQcwAYYaaHR0cDovL2NhLmFsaXBh -eS5jb206ODM0MC8wDQYJKoZIhvcNAQELBQADggEBAEgS8ebnKFT47mMVLW3dN0gZQXdX75tsY3wA -qmTMdP3Bd0ZodRXSHFFFMF1wWkmfKBUMP0tbKGT0cGpf1H1LCvFG+hQdxCPhn1ulq7neJx+0X7RQ -Nh1AOUuVmT8C960x3IHu57zGrRYs0wC6dL35XVxWoB6C8kpMrM0SYg7V94Qypp3efpDjDevcmzaS -M27JL6eU4eP8AZ29IRz2CD7LWEZD44RZTc/EQzoPmcFMB6VU54TGLNOWCckLL8AT7nS29JBALb1P -T0pCpDJKdrrFdq/zVcJFepszzqeqHnXc+WO4u+8ShsUXwg7s9rm3vEoEz5Yr6ZWGYQUDyNEwbIGj -ZaU= ------END CERTIFICATE----- \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/privateKey.json b/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/privateKey.json deleted file mode 100644 index 39daf4d6..00000000 --- a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/privateKey.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "2019022663440152": "<- 已脱敏,如想要执行单元测试,请开发者自行替换TestAccount中的相关账号并在此重新配置新的APPID与私钥的关联 ->", - "2019051064521003": "<- 已脱敏,如想要执行单元测试,请开发者自行替换TestAccount中的相关账号并在此重新配置新的APPID与私钥的关联 ->" -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/sample.mp4 b/vendor/alipaysdk/easysdk/java/src/test/resources/fixture/sample.mp4 deleted file mode 100644 index 26fb8b24ff1928299353599748b703c421e3d5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057149 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%0DXThCjUf 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%0Dr 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�bVi(g#i{6 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%0AO;5+#8$+kYXw&Eok0wF z7*=M|g19F17JPVxq)2#iuw0aomFkJT3Qor3$v3A@<3kg{||ceu{9lEU9~e;=YeRx38YagP+NYiLozH- z@CA4$c5AG97sgU(>gKq=&XLH5k$X|^s0(!;N zo1bX!G;HuDB+(N)BY&j3C00^@pkkj(K2of_z}YymLykJxFDiZzg$jJBGPB6v{&6-N z8LU!)q~;d7iJ+kBwnHTQ7J%blB?*vP&Xd5{x?4AWL{c(T%YB`Iz6!NXO|G@iOa(Q; zg5+8rwfT_QKRjI{TX;htcJj6bS*;~?5+!_l!?faH6;Et*5$fj~tW{}96^91PGmDiC z5&lblY~~iC<%4*>PHTT;$b_gk^@=R&-*4_dzw#pA)E#zJY`%tYjVyC`PDaWPv8rfb zP4n_($0#VXwZLLor3JF6ovvpu{J#d~W;5|xAL$bS`23?#smz-5z2HYD)+y_e+WA7r z+AP$o9|a&$=VZ03EUpzM7NQh{PR-6EvLieXi?tx_YdJbQ6FF#PJafEeQ&Pw!LWozW-R$1Ky}RJ9&z z7w0Us+umcMRQa2NPn-xmuc&gB2|;wF)Dm}3JGK@mE9PAFI8-+UjAvE_$U7$GVa$FP z9m{17jExR}=Qjo_Sf=-Vy)@@^r3PR6nLKE^+}Q<=q%;EiU;gaVvftRI(%WD;p6Rki zuM%I)KxgKnv`S$M6%*>oVMG0S?P7!UI9@Cxhg+^t{C-V3Ao;9P#~f-je*?%^hLBJY zY~usEJ(YZ^(-bhcSWzQ6h%2^I1pgof-A8%hpWP#9tmkrf%09$mu_nAioB&c(9T(|@ z@4M3AVeoJ%Q2;>`yjB@iSgI1(0Djlmt-m(+&K~g1I_ zM$RHL75nLkN$2n*Ib*#K2cTYF)K{6O9hO>=v9{E@)Z;nibgt1q>G^{u(b#o)!Q>1W z$hL#{Ay%w1xS1Dw%z$izFS}MZRVQpN?RcI;$*|bw?ka%qkSkg?v8bX(=L0k&7YnvX zXzR1^1Q>m7l*9;th+(Dy{4T%OkDMlB&)p;aO9Wu8T26s3J*ciWaM0&F^8Ek|y;}1? zl&0dqI@Ct&Oa2#}ETOTudc1cyNwtgNosj#$X`^rA9a&RBtk>YijULzQN*+>#9%?Xh z$KNu~v#BvpXn6@>(Z{KkrBq>?0a3$x#ad8tG0(PdCLq_=yHMA5xgyV;P%b64Kn0met9zW+O};L`>aTO2?6|l=jk}HjF-e=@En%71lAJ zt&F5Qxim)etL@oy(znJ;8Y!?IvLs+fEHJ+)p_X6Hus(r4Vl|tM9g%_BvmY=Qm@uZa ztUW|5T~U4Vpp}~5H^vu{$4f~DRSF4=@k>Jz-%7xXh)HZ%%7shZOYP{N##v>9`v^D} zUrOPO0ThV2MGocwzCc009*n=CKzAoQb-Nk}l1Fb^l0!;JC{;A)9a z=8p^VE;0QsC6nZt~fzrhU6v10KSYxB)@_M&ZyTD9+^DNI@9Kv92JI z^d9anO9?=cH}Xl++MRZnV2r=Ik!@#4g!cC6(E=X#&4lB_>+p>kNrS{s2AoH@jZ$8d z^oA&deJ7mdoc1)#YYd&JZ4TE-P`WL`m~3I%i8uccr>)vR zxK!@7eS#pLmWC$6n-3z<9=QLwfou2Ks12y%3{FaE-8Hrr<>Fsa*n1h;auU`5Ji64u zF*ETnG$!Y^@>ILpGME~erOFb<*evn@EZ7scH%F@wC_w;Y014|BK||~-f9+bz3&Wjr zq&9;*9pXuJ#tE4HmPwwLcq z8N!-oG09xk=zDU4Bdh%St&?DUx)FW_)C@>68{SurjTPeb(}J8rEx{BbXg+iwM$n5# z@99=zeSVY)oaS;z{k&>Pbvc5_V9#|vl6kpa{o$sXIK#>oH-*8fT<}wEZ%a?)nIFBg zD%dN3PaYU3UM{DQKHucfql_7+`Q}%`4qY>*5@2?IScBh8yVGYW7`e=4(EfEKSY}(} za2F0;2BXnsP=L$RyAofuD+0N~0oupYC{4oo5aeRKi6O{ohHn6@+&=mXa5!l{d<7?f zgTet54+o5ipA8r0L=_3^K;lKvA}eKK!KCsQtQSaW`Z;l2Z|p>7139VL8AA=%k1-uv z_JBkE4EbrH*3E>I%nRMly82jG)-+9UQL}2>J{f)p7`EklUE&ue=oNgVY&l22q`Ee> z5$~Rt3379T;L;U&na3)ma};ygCc&A}w>JJW&qN-LA(+K>Pu%5+%87@4arz}q2xHq5 zCuaz%jqY$I@jjD6=S`$5`FBur00ciwN{Bd=`Ib%}@b^Nr6dcih2U@vEiI0gjw8~pn z6tKr@U0^L*%6h3`!>pq;zzWCXCY1a~AVWj}`m_?>k!B~BG6HpL2#vqs5q#mXoALsh zH+|68q4P+`okg+(J|(w6Q_(pB;sU_*W{A1K2m3!FVldlqzzk!9O=cifjvmH-P^t-B zO(b+ED&NTdflO6(|5+I-sQWa#j4|HgwsJ5Qn5eR`Tuf%>y>!Y2Qe#+TQD+XT^b^M7 z1hU^7NE=QDSAe%MYe3cmi-CLrP}Ed~@droE;V!r=W6euBoAxNDC|Ni`N=bx1`2!7X zuA|}q25{zIg`<(ESm=n*=OQe|D*21k;*U`cDUC*Hc&V`UQgKShB7s9<)@EKj>wD<& zmnhcYPV-9Q{Hg}uLe-nrWZOrjAm-@SD?!J&%T0nS7egDCohi(_PZy2F2hFVS@*rHJ zSkB5@6;|fA0-ORFWi(wCCzyOh{}?G)DTvE{N>()4p3*<5nS)o04&bAtw6(v?M3c;H zq)Qj>K=-#)`B|(2S=?!p1yW*~nA?*-8XGTX(=NEd=x_ElyF2;=xF3CW4dZy;?d{XZ zs#qPUUYtQ=^cgh{Dxa29B)-g6bk%^e5+pR633aKA{>am?FanIHGfLlk9C zom_x+oubNZ2v`Ws|nQ-DTmAi4}t#%^73G zU7UG7h$C49h&@x}!S*WklH;;jzC~M(e|nC7wI)Mv3(>mD|gTO%{-6=qHlMyV0u@!O84dr9JiW3SORa?X~XQOZc+SzF(S3yCBw zt2=*QQTrtLr7Lt9aaks%Cgq>6>};r)r#j3bHNV@<|u=6bl8RH~w;?w97qS≤TcQ{vHBBmen zN*b~J`$K{%Wp9=`PGNNlAUp1I?l4$SZo_A%m6jNm7=AEwNi()`T>kLU5!UZmQ5v z6JF{B`7^pILklE5TJ5AjJ2a@B$N5a$wBBa(59epY6L(xxX3oV3;6W%e&)MG{;?=E! zVcu0-w}xdhV{nf@n%1CFrG#-czLPKdZgu|S9Hc`-P*n_S@ZnavgY3ZZHSKoG%Tup| zHO6HAEMWDo&B;v8+B@qC;ki1YBm%QQrwxN%;$zSt=H8CW^R?hkPRRe>mox3p@#6Ft z#qeYC1U$Z_Ct6eoc%6M&xW0hGA3xwsW}c9Py)bUP>HzsC9H!%U&;E)D0B%S5h0dji z2Z=Q6-ADBKt;G)K9y=-lxR7I=;Wpi7O0eQlU9_v0o;n^@dl1=agxQKQwI_1Xh<8{7 zofEMnY1NPZ$HmS}C zj>JIed<~XLA3uN({`7SfNZi7^Oyv{Aq>>ml7w-!Y(8jV^tHBIXrji4{1idE_tr@A| zxdy`fJ^fZt*YQ~5`aw+cw`eW5TglYF=Um}I= zyJHA(C;@dCC6B5Et}U6wgde51nX0_oTltKsRT)xw5GDK)Q@fC_(os-3ejCX=trk~` z2wi`v#%kWV6CdcZgNSgIy!tSmGF~U3#a~~c9{HU4(`}d9MGl=%mGSg$Ppz%#7`4~o znq>SM`IBiYIagG1FEbU?au zsMhA#yQEJlQ$+eOofvU-Ru5axMxqlndWk{&j65F!n6&ot&SA{8X2NYcFTEhMn~uAo z)Rh74lrQ^ML)ifm`es$0cDH$5JUon7oFP@Ep~U>Q4Dx9HL@_l1LA1n_MIa_Dnp?DV z-R_hyS9|xO?jBEPzRsV<{oo>7ad-m6V)D>~(DTasVlZ)tD_Ev&i2@6H&uaf2{RHhu z%$UJZY_SOt*Ljc1`=sI-8H4YI8n<4EY%%>GY3ZHMMHKotDu{-e0xk&Q$ZCYb(1xNM z$SJ0DBV>Tl1m`NfNa@Q-OjY5i9ylkp-OlL15W6S-GGc>7TWq;O-cXYb&c_RY0~zNP zz%Ojgt$<~Np=~yX+R!mRQ#^08ybPw32=F9oM6$jTkvMs=H2k}6qoe*x@-nhQ4V!8h zF)5{m$3DvC$i>R(Dp6xQ$cfmu@P`Cao#9>(?6jqaj$M&HEsfLlAZq!pJb)itX>xf& zJHFVBSRfr#eXpYWx>h7n+m>ZMHIiV!CJVg{Y$Sl^u-Syw3j>j0JbM@`}?L5dd~w!?!}_U0uM5XCw7SxIQ4QpcK1xH30zk( z1@7j>wb}Ob=o`rg?yGYgP*{aN_rsXh5Vct?a_?bs@B?>X3?%JX)x#26D%^`3!>X>L zK(pOpZ!Hv%foGrRgiaY7!RSn{Ql5&HDF_F2dkr<_j=^V}ibuXxXb6J*8Sf zp+K`zGo>w)W9JagTZqy#v_}7(s)*3KpPC_VM*i-Pw$3+h5ol;|ygK||y{{hW4$iH4 z(<_<)WZ(skBZ#w?N@4Y9c&eB&4%ITn{8fAaYOd@U#()Bu*Z~d{94ZzX1%m;hFkmbg z3k3xMV4z$qC<+|HD13LBZS(cJ-PBaNyt;&5t3sL|c3*E&>GgVdf6v40#|clj`NRK{ zwkgtxv?=b(5+uK<*c~wbvHc_Zf9S;U;qm%K<{Piahy82xoa~?7yNV`L#Ikn<&jC$5 z)XG3=7z;k_v-aI?uKPZ{>+}BCp^v$skb!;ImKB-%IqCVrNUuIMov~h${+2Xvi24&< zsd4fAKE?C{FKo90jqtd=?m`u*-8O06`f`OqR z+%Odj27>`$$W$yc3xtFwFo?`AjooiE)8kX$>p9==`aIs;Wy{{Rc~w)P_)p+`wd?v1 z?D=r|SYBb|iTk#^;(zb_UXG=IkDp*HJ8RAYj=-6hcF6pTobRVC2YM+_uFZce{{$YG)wTb;~=L)S~rR=tk zo2sV@(hpZpqnV@Xbvq#*f*Vr2$Q6rrRZ^VbfeBoyDwIA~>=`Q1Aj~hZuSaaJFT&d> zcR*Iyb{ce~9IG|S%rfoAOv)P|#eFr9Qz1~ySQ7C-R(Aux5FXw@R{8)Dg$LjM?f+f{ zf`MVd7%&zL1&IM*z*y)a3WS286TQ7={k&3YqNQgUc`2h=cP90_bUilz;XjYF|9rpq zK{5CoD#y2f$KrY}@|*vCIQ|uor~Umcr|pVx&^@~Qyf|8)3m5y)A4u`sz-4r0S~Z2m{&*0>psGU@RC51_r}`vCu3e2?S07Z#Hq;u5PL(O1iL%OM(Z}KcuCl z^7woIogd2nMd?St{z-CsKhCVuYLC_Yd*6;xT>>Qbb2ZIAQql9-g#YZ1{%YRaA1Cco z%lo#+mdyOqw|uop-8SN<2|RjDJXv_leN|9nn1_+u9jLQM3z?_61hK^g zYgg{>6dWu#3l4@xu8(Qf_yB+HN}U^5E$1F6Q&;Y77n_?qM6?6~ ziji!4>oXDybd`%a(nee=hP1zZ6I#$+kDc48`J9%jhFSgL7qK_>o;Z~hhqmNRB|?cu zoS@;9B@&xpfM?ftvxpFd2Kjyecm6GcfncE+G$sm#0^vb0Tq-9D1cKo}kW?fQ5r|G< ze0!Z|f4BJG4_|uc*WPu0B{Lfpjsef0It8U0SSizCSl#Y3+00_vd~7J?CA1opHG>YpAKv`=9a4o89%N+41$> zf53SH&}8i7)Z4cHb|(M!*T}acaP;(tf&hq&%gg(14p4)!Tl)oekuzuNXXBTobBk7( z4S7GE@JOMDJo(~`=`Rzta$Y@`O4U24I*WTHpW(jP2H2#E(pe;w>XK92adb;iN7Dd1 z+*B2Upf$WO5BOff%Mb!Ep#AIB{QtkOpez^*1_Hu?Fkmc73kCwkK`>BagA32*tJ}p^ zvhOc1o;R(uh&a^|o<_)CN9X_lhU|5Cb;aG+>HaiUnrG4EaR2zdVzgnKU+>CHBaXi1 zmz>>UD(%Nn>&0Cc)yLMm!}5DXtlK=VZw%)9WhWXlm!{6_JF4mL^}yql5y z)ZWj^HZLEM0etI?^Hf1=U)ZFPDw43?lvZdH|4EbXS0xlX@kf30XeN5?nNtihMY$GE zvbvliigTj$tP@VW1Y)Jy;);^gteT`V{37D_0o4ToVK`V&77Pi60bxNH$WjQH!u7q; zCiT0^jJlMP1>Mwza6diuKxh9n{(7I}@BY2sD&%AT@b$Wgej1xI`nFHu=<{`XV@~}* z{r*`?FE?{GZ25SJUI!CNcjK|qml+O9Ns3gRuWt)@_WkVVF3cydOIZ@VdqcOC`#nqC zZIaw4qz7qpmgksoJRA`@!sF;}8d6hNe(*o9UC@nx$YU0VFe;Du6FUUirT41fp%H~;`09zmNX zAcz0{r-T4ldq401uqo%fx#eC*mIY-2|2g4^O5&pXp75 z5mmK4cx9y0FtCa?QnS?D#OBIq;$8C_9G&q@f;;TNf2Znv$rU}Pklmh1#W~l+lp&~+ zXRr5rG`W$o*oWU%$wP*(t^m2DvS|o@-&9!M<&AQMAU(C(`?1wB8>njUqR+29!PzhS zRT=@riS#h_^u*|o#o*jIa54pB$-b$IqA$l&+{CR5btyjMds1G%Oxvt@#P@r2@@*yY z%n!V5QrCLVg0}goT`a5LR{8OkH4b2}L0WrY&}?+%>CR#f%lakZ)EgHxu~{ia880c$ zr)6^~o)Bm3DxkH~Bfb*2E_B_=mqkKdm0YW=9`{mt)?k5%BP-}?cxr2wq zi=s%@13MB1tYH&97Og8bc9TA?b%j&{>>a!xy-byd2)rIGL3oEh(!{+O0x)7Hc~x~~ z>nN!vH&&eDc!q0$Ni@!qXW*go{7Nn2TK{s?n69e8o(x^TM$^8}asU@@wk zPaS-EZK2K|{{7n;7{_N4%znkKD?|*XUBQ#KilS0MMoIfr`rjc1l|p4N5B2Rvg39BEBXm0yF$BhzH|h#YMSFF5%t6#80-BSxYsq5jLLE%QpFo!f{P zx(8gO+M-zlzJ4aIlnO$r8W$ddZA$XI=n(Azg18m3w-NKz+?)6&bX6aC2c|%o76y$@ zwuz^>75-P`Vhc87@=t*ui;Z7>Zra6faWd7>TNg7T?})B|qu1s^?5|c!2JS!eLYrUgJKcei zE)+m98geRrO(IS1SF667D6voNPQ+>}3)S9g+DpS*!0>4N5m#AzYKbkGDP z)Ns98hme^ZUH9a*1k{uG9)2X?=4EtUhnh>Q5We96fj$Fe7?i6Dlpg+U_&r8*z{P1y zoBr*uyY~L9&pZr{eL9bBgMiaJXlw#uO^N;{?_^M5yB?%L)?3x-*=vZ+*{BmQU~Bv= z@NC)a%2vCO^w-g0=oJkOxxptl_OlLbGq07lDutkre^7PGayd!PmY8~PAFt0jZs?*E zH?WUN1-{sA4_ulVY09yR?;Ohx_39w>WjnIAk=-99WLLJgn!QQ202_4I8#wiEvs&Mr z;iwyO8^X7kC8aj%F1AIgr1kvDYdX?y#w@5IqMG%MeywjbY6*wllpFdXuRoE7fRa7W zt+$@vLskI-lT^sZc5|sO;wAT`6{`09u z+83eZ8!_4qC~yiI;OO=#Mtt}M1SEZ18E}>8#r_xC>ALg~5|r z=JI~qY;|qDLP`o4 zmNh^IwlvJ2c|%90(EF{_Bo0^~A|5Fj?FbpP@}1{tPr|C+`TB}BaRVjF8bq?v%@#4D zeEW3`{WZ;u-8*xIj31T;&|d&8aaAfn>~W^;<1G^nMVJh}ReF>0J9RwU0K$W>SvM;uyMTDn$#(iF?vq|&W5-w%O|KtrHgl;9aT_q>7iU;H9x{`g7K~} zx}&4)%66P6E0IvLV*{`5oVUWm9&%sfJf&1ZZp)M$CUe8fO+uxij?8{F!WB8EK=NhU zG{j>*WknzbQGVC$!nB*O;d;VAIkRz|1k({NXO)Z}OL)%3<#+689_|W^U1iSQJ4r*y zL1gE|n}NSlhNSRHyD`qU(7b^X-U0K1MeBp7*A`!Q)s|0mB37w2{e0wnklFqvDP{_}r4_obyfRK(+a{EyoU8?%HHQ_wN?jwW9vm#L-JLhP1JdKsc zB1Qc%ilUi9kdYc&|Bl5~`;(_mh$s}~0I<}O_CyusC9ve_w&uer(JtZ8J&LX1-fIPG zk5mI)X)jZ8VO|XqNjSG!Z=_g!;*PD(JUY!@agfr%t}T1gaf9g-ZhRGrA_1SkA^Cbr z&g@)u(laDwtPiZ#_=Q_CjbzM!VY{f~3SZlWnD56)~yqLiWfC*^$83deJ>p;=t01Lil0cA`B5+lv+EqSbTmAdhn zx2oY)-z@4V;C1o#T}B!P0|BOj)$Qb9-%EMDQDN2CYQih@UiaUEJ|3F|&%aQ$FTIIu zIQN$Y09T4=+BGZo*7I#NO4{X%@Y4kd98?bQ5}?s!_R+(q8<&2b3{mD#1mMHIY$dY_ z-yMZQqv@L*UzC~bj&Aux@wzM`42khoa48rSP`W3BKT1>4!NZ+WuI|!BM2~vkUa=z zinR?fT-V(9s!pubs|1`ho21xE)k;nTX!=x8oVSk2Tn!s6;9n2(S{Sp9TS|PRYkb=&>zyWveqCoF0QmYuVP!}xt~l$lJ74K@8n z?Cb61mi_!gG!%qopf-;^cxup0jPc0GF|L67`|Fslh$$lASL%u%hmbaV>%6Z;fuvQ) zIKu|t(?K4>NPGcM6dRIfiDRtL;+*;~Xw_U!TLUZE*x6yt^a0rK*N}2Gq zP;fgj>jE4?=h1jUkb|1WTeOr#)r@j(_Sikdd%_b`(kZR=#7S8C#D}8|*I`ZN7E(|k zf-s2wY}$#;FZi?HxIS5KmpT-VF+w%Q#ef?KElx692y{ngbdQztQU+~@cH}$h06fdII$J6SY%*V++j510O)|ax&l(M3NQI=bU>T`~P{;8OtjxhoJiI z5GM6``UzzPKQ#2(s$quEpZExc6-~$6Rvg{PpaA$=sCR3C+B9G7Kvqf-Myq zDnLf7=|?Wstv{Qo@lfkF8N6xK7mo@Sf^6WeyIj4i?VX#QRXm*7o)2PHjAg5gL8d)L z0uE6=kizHvkkZ=c_Rg=!*C`-O`5Ec#gq5}#M?w`x!k$_qg5?n`Bl{49uq__NKT)*1 z85)j{?XUBBbei;=J@D?Zec&TRlD!o;@pE&!w3_L)p2i5}a0jKgB)xWEBWwxHB?(bL zz(@gP=jlo@nMFJ6NaRJ1)>)P&Q%Fvr7XIG0QttkM%l~M00;?)rjT{MC7FO+$ICrVi7YhHej%b?--5$C^Aazhj@b~?vu^h!dB!;+d0q=SULX0 zrm_rAoul3<{;uPDtxbt}G~FZ^PB3lC?CKNVe^=$y5oNgJy=-K4$qJlsCnbly2#vC& zB-Pflp7Mas6qf-kiMlr>-?UdaO|Tw7woNFuml|$U-mm>Ud8hkRzsccr227GDk>v+v<0PH=h z*CLU6$Wb+#OU2US86I#r9;iq|2xY0H5js+Xd!CuTNOVs?w3?aAvrK;IvzKFgFi_;q z=-Jq8Hm&nQTrt0G%3-pRDnZhwa~^++oh^ub^Q2u^5Z4!sitFIZ5noLr4%yI_^t`ZY z4o6>=qmA0!EJOf)0438DUbW2|}LG*`hNpiQ7|H3%3b#fbm38=H;oRF7XlS zssR^4JnIsOdW;UA@O;R2l?_0RKhyX=bVPdyf2}^nchibbKLzgY-fX%cl$Wz%_(WWn zbPnWir;9pNSEn5HD15M{auZ%SUra#X?LK%I0XHk`%tp3@=@NRNc$;6Ma%`-`O+_nA z(>r+Y0xk9|>)T4Z|9W7(^+e&7 z-tm4Z$lH_$S`T_@d5B%pTrVZ`(J1jhTKQ~4u-?BT_sL$4CE@W(dR3?G)>a%{6<0>$VxKZ#Q!=1MZm196t2xr#?(W zZLQOE7!?S2zP60B9Y)RWLR{loaFsD$5l?GgF~E8ke`M>Bl7)uVeM?w{Os#mz`Yv#W$kx$@*yGKwSq|^tH zrzZ=qNle7-s(8i5pIUP?ORiQp6=?4WZrORzEmvi>Mq!o#R?%1j_eOcBUYay4{r zOdiE7m4@GmW~QFaF5+!|uGwQ3;ahFX(jAeAsLv#VfkEncO^U@@(Qi z%357RsAA8h4TqWLk$$ggu?jG>n|TxNP9?ap|g&ew+wf7%PS z>TpQ-f@}o;$tve{dq+7CJ)XQ_xjes7*!Symj1w-SwF=C@;QwP1gzyhUhGnGb^-4?Y zjGfg9Hp)s0crY%)I zKwo{Y|7VXaXwODxD&Fd732E1Z3lfa(u6~V;sFifbk?3Y4pT#;77ZX|g#o@_YS+p?=RiPy2D3*>SgjctFH!orN0rR3KWxns~Y{mYi zXO1h-y5@g$v#yvjxoqLvjP@0W3#UtT`$SsOlU#|w?I2Y$nG2s5UhQy5F;@Su?P@K9 zWY$d8pJsuqkvWcq3pFKHG(5&KG@f{ep<%P;?kXud?`Pjz)zZ(>o~$Z@_nOH}d*)}s zfM>I*L4@X0RWJ|OZ>U+dlNxf&)|Z6RRFb2+;c?$e0A%+dVQlbWUbM$%l$)TX-h*s< zg%%Ful2b`lral6TE+B40{h4jliZdSFB^E|R{ti;YY^g`b33I#UcEhW^P>3VRD>F;- zia&#BjQ$AT?(oOFVBs_=H&=d_d3)<%OH@T2{qHhm@N{-WS>4Sn|8YluAidXeJZgm~94#U7F- ziyzQxgeEr?mbm)pD{4={IgBpIHd2`z048h>lx^z7!$*?#_i5!V@w+Qzn9d)zMt|kE zsXje#T7HXc51Oo0_>=Q;-7EVdoA6DT>Jf+G zGbR&&dpZs*z)3CT4V&~)>M>a^|J2P+dfD(0WOxiA773*qHvz5QkIO>-(ILrQV*Nxr z%odw>W2vEqzAf?WX-q&JQiA!L1?F~gU)UW9R;`m*9`BaU2cv9>C9^k`sKuEtHTbGuJ z*_r$SRac!$Cgo{-Op>{ZD})x{RKfHdOH;*t(*4A`f)b6UI~h`-lHQ}C32foO=-wEe z(DWItZEVVlhM}oyxsiV_UZ)$rp&65oJ?1z`5i>ogks7MV9nb*X;`#|x4$UIFRwyn{ zZ>q=+{)nIKE0c33#b{*W5LUz~=L_l= z4K*%{^&tPI#K~2nqu}hIel)~7=Bu|9nK%*>lLSH8x+|5nt@P~2(&2m_n~yXt z?l_F|T1_TZB4a+lfMLDP(Qok!3iFj9|K-yAsn z8`RV5X48wkiV)^krpQqw#cQdtaAFJyo3m_#H1A0Ki<{L|DEEb{pNp`R3_s z>UUIv9fpb*WZeX;-_S+|!V-KAzkynL=p=Dff7#T(ouOzYL!6R}oRH3U*^`!davYXi48$dPv13hnHJk{LkR+S zI0C7!Q@f&mpa#TG-Uf`&$Mm*dPE(Po2S>6LX6(|Dtb2LmROu_V1RJlMNefh_4^aRI zK4tM_wx7!l^Yt94LS_sSkr|t1)cUYi2K1@A7P%)=&wh}|2ZCd*2)k%wxPGlKnCoD; zRC^3C;KbYF_=~ngn#j5KTG=%-y;*TY@O(B{#k|(rFRMWs5L2IWlbltTAOI2Zyh*H{ z(d&wtBb>SPAdq&n`K2upqG-txGON52V}@+d6K~lKkAGvQvj4MD9Q&ug&};}#)@t)4 zw+=+^J&%g3y8y$aiDg*G>(ps+31R5oQ@|}6`+55LOny7^9t_oStJ7bukJ@{^=KbPX zRC>)%rqM)uxzQITplDdE*1>I=mbJmqCzW4OF(gX!6%=PPH)FiDR$;R&g21=}wt1p4 z?FQ$V4qs{B=_1!1gFqrA3%cqaC_UBhKB>&-oC{aKfirFnrT%^oPcGG&d7JME9io%e zk|x0*W50@Mht1!PY}hn|2#VtHXh0Db%1gt$U^XgMJP3=|wD788YsL6EWFC>9I_f`O2sh$5G_y9Iv;iUv;KY_7v68#`N!_%ekb!#_xODH@%&iZF6(a#`z6;{*j^pKbqkXvp6$(01%%;2Fi<2F2?)X?Fo_Hz7wh)D@!kEejce!p z_v^oo-dV$ZG?J!jwFhA8x8cn`S)jK!>D~IjmW?Gnd42!)527=5U)g(V`+3(suBSei z2po*RL#{*4vKnUlaB?&Bp5C%Re9o-nvJe0CnIbWm*)Nyt3CPX2$Fp|*oGNN6he{9U zjXV)j=5aTt^g@Z=Qo8N9!3kN^3x4Q8rlBhZK;Hs_c|dpn|1hFq3}HbqP%0)32?pU{ zpqwxi3k3qfaG*#i5(t>WC2`!YJ>R$QDtP;|=i76weZ0d`TCSyEL-oJy)q4-<4{PBk zTfd+9fcl?+2YpAEYDMMp{XAxuv)xVX37(Fx^1K@5j3wUQK7@h^wrD2g0267N7cUN9 z>DypOQDwnBbY1pb=K2>i^jCz}uN0iLX8S}%pW<3mfQ;GlgqO!~RY?ez;O>D+Obgox z7t)>(B8UjWgYSPI?>_?JV8B>V79{t5H`ySyt>e>X!uGB2QpcXt^yPrHAHnrqWfY@X@Mz}{B= zHw-zZ788Yo0%1^KOehN#2qyrid%E5C#jy&BQYtP+ zfd|sHQ2vShzF(eU{Mh~H~*y)61HzSuj53rFBvJO$@n(Sjcp3nR1ITD-MJ(6 zXQ`wioo=Fv39fw(<5V|=Usr^Cdr=%$>7XRKODbI5c}@o;rCGFn({`iH@2u^G#yjG) z_9{_GPnv4zm9QS)d^HGFNAF4DsE)P_fCvIO0Spu%EI11eg#lqeSacQ@1%&}Xu#ke6 z-|aHEuK25?RZ>)|sZlQNDoU}^JAM2-I=lO1|9$_)K6MYReQ0f+U4TAX@1xVZ3}r({ ztHbNdDHe~HU0B{Tp-aBzwzTqU!3s2Ck)V$U*R8HPhjYbBbVjc$Q{+77%OtcPId6h| z#_=n~csn`vfsqlMSh^i+Aq2*5QtX_Y=O6&>`9E$`A00bcbi_l{IK?4)_g{e47|A)#3=h#<@;Qc1!QuUSR#k}Wi2h`I2kv(aECoeH` z-BsR8P7tqOL#^5OW4SSv@4^uhB;DqdprGw9tQdA#p=YzIh#tXtnOF%-JFp@t3IX9j z23|n3Fb{U#{*!mjd+XtTy4L%acNUd+lgRu} z)4!YfuhKZX?v8`}PuaNYuUgkuu>IEMRexc@{OjXpwa*=0`rqHwm^QCAr#^6 zvF%X>ZZ#sL4djo={<{LGV=cU>m{yz(^Qh%^UuR`fXSQkEv#L817~|b`r`qwRWS;E= z8(sizQZ%}d6wpQmSZD?C;{!ed;+8LI0+Rt4PAH)&d>TvWYlGF@2Pz`DG7d%I-lecU#Fd)t}9=GI&uXOAvEZao9DR^Lxa zDe&@o=)!K=Yr9Yn6WdOF`Kh}s?f6sZvpjlh1IV|c>0&Ypi25E;V0>KZk+T1;YjPjg z^pV-eNL6!PN9?xO`a4j(4sVnCf6Rs=ON!Mz3!o9PZSseg2l7VT<;N)rFd!WVhIm9S z^6pRF6ftN{ic14TSxV=s>Q)e%GRr>fr<*khvrKCs{{C@TsA!hta0 zY%~)E0zngiUVlo~Nzdcnr9g4JsZzC4^r}cYP09ZKyo-H(F8+t3r?9K__<2zXrJ3yb z`||m9*{*#Y8X9f&{=wbjw^?@s(Xt<>=Am6V>iGYkPk+PJjG^5X(ZhZ<;0Em;Phg5X zaL}BZG&>WxNxaOz*&34LeZf7yOX+ZlWaA8vO%jq8BcfgpYSJ5CnC__ULwPd2dXx8l z?+H~RK(=T!SzA2=$tu{x>sD*y@@$kouv?T+oO1i_T=d+Q$9ciQmUWW)(nS{vQGK+s z(qPB{fFpna03De@n?@jq|Nf_h09boJ@BpvC=5c#My(;70T1wapv}uZoRYsIsLKICy zH(=M&HX8q0HkwgT946~d&m-uqZzqI@%Wd42&-b~I)Ojlg{x$v()jOOP!wj6gq@E@6x$AF@?Rh68^zS#MUv#tZX^n<&A^mk~ zv}D<9NAHjO2`_l^YX;(XenBO(nAj7aU38TJtKp(n*fEjqwkX8zRcLb+SPJKkv7ws* z8>tc4D^5Af*9E5Q&wyfIc=ue+1ECrZ#(+QF?_sI&N2|4<2=Uvyg-ewG9CPr(mwvgBIF+PrsNh$&|i29ZoYiy z$1@04G9tP}nm~Q;qLCh$|ABNSh>=U+T6T{5*e#rKlogGH6kM~B)~{=7T3e#ZVa6{1 z6xX>R7DDlZ{s*HJB1jW>!||~~tZ>Ev5d0|5dztGJwWhU^i`lO%+<%Pqwn=nH7mnGe zagGb4qG%Q99PtT5K)dZ~WN&l5O)_u2_UAGDMl>D<-v*?2<4^R<(>+>Z_Au>i@1rvl zpmb5O5$ZeuoZ+fma_wJXCbGx-J`Ov`19|=uIVjl9E zz=)7rU7M|+0=UuebIh4V6Q@9N>?l4xNEH>~Kj;xdf(}uj^5YOY;{|?Z=tp{i0b>Ix zN0^jaojm3#_HEL3jLZe6pkalqNzePIM?kBrcqWQ6sW(=0<-K*dOi~FJY6g3Q<34Rt z%Dk(YU>xT{=KvuH>i)vLUh3FS7Ka;V{|PQGg{?N$WIV(ylVm?J7$jRZkW4rieVC&w zlgE4~V|=a7DTKQe=pE-Btd(R}ICtRod`DF{MxeQIWw-aoEEuoI^+KF!wu3`MUx_QH z)GMB6$Ev^@o@=DXHK-E8n4M@W2=nM43uUPflQ+zCf?=~aGgYg==(yaA;40MF9x=4p zg2Vgl(U7C)>gLjL^i2ey<}jaqWytX*CIcIB*|WiP`-D~m9%vIpS8Otx09Er?pYYQss;2mfUjcv`3 zUO*cFx*c?T)j`#V9{J;Z|2&81Fe{saWix42$T~;r$w)i==e^Gai4%?NlDInNJ>Mi8 z4cWjFf@dSqSRsW?btAQ+y?z#fM#ID;K7DXP&be>{E8aueCgc5S#tn!rm^I7rP=1ho zu1h)b_(50=Mm@Fj1m$}@u3oQ++^V2pCk~dr z3a!)Xm3rVlx5_|z==`;ff`O1j<4jF+?^nNp)-d((v?X4&M1Lj*U?Pqgi8IoprOthm zrA=lricG#t7RfLs^T?bN@1a8oL@g%rSDF^(hSw-`*?YfVLa)g*;`z&V zoT3ob2&eLkP5fymXWf&_m|ukIGc!yPVaqz{VHqH zjTqJJ(|0(~<@xVb)JlKGFq~}_GlKc%(vd^fEPzj+B)(0gcHd<*4LK6Ss(lO!9#+}O zPUAG&kR(*|Q*!WY7m`}Z3rxmkAPc=Z{C(2Md$`VCstmFQy}c_^UkNGBnV`%K;AKiQ zl{xAzAt)$yJEq?YnZf4hYdM_s!-xt1XKJb#NoVKKt@e97tGP!JLl(FPnJB_+T|R27 zVhiFiFTv!ObpF2=6D4Y(_n&A)Wmf!GY0I5Mbo;pcNrzB}qU!=}@j>`Uh8S^p1|OM= z4VJQ%{adt7t|hX4<+#k>NxRTUK*+o`DU0V*&e;91V~JxI9tEJ@YF&6~jv0(QFW$Om zT7}YdNy9J~rBz4H}F>tFieeH6{{FsA4)3+J;p1mEjS(D#9p) zHkfbbGoSw}T!AR8hX+;L+#RuThLErw_MJ43*L zrQfi)kniPKT)M(yHynRYynEI|tO^OTaXnvq0Wp$R7=Mr0e=zUE;(mO>nHIE)5-!JM z!)o)iEb*mF>>@mp6GrM-Tcf~qi2-2|Gx2w+wuEW6=Tr*?@eGj(d!2(FUWu+=zlM;G z3Q4y%D4Kph4m#w*FiDLBhSeh_M@~hun;!}MjxYlE+i}p3XoyXGQtwtxD?AFs)@}qS zC(REw%mWSa=~6#I$v!=AVp~okgnq6{QBN=uqr0?{H++OxG%r9QiyU7Y3v|)>-Ju7X zBzg=t?HP3i1--eBoP^<=Ks)WlLl-|M>XSV0@8EP&aU)U6eDt0>-fzo2f$4*M1KTiz zSZ+;jpCr%mdK$+u_BmDFK(MAvAHiCj3`}{#7g*!8xvPtY zNw$n+sQNZzP8un@6WSOp2v9+WcVBbZXP5Y!ex`u!(T>j0_|sl?36F#ltl>khfS0u( zpSP*hFjg7%+sca5^Tma!~A9W8Wj`^G*5`CR`-HKwe&g$UJLCWrTcuus1Epg+yg=hs>x@t$s7M(v*G`=tzcI^YxbcrawsSr2=aT z%F&>cLX9VkoB8?sL!7?BY~gNPj(bG*ys64l#7EzU=NbcC!%sr3W%Lr=HjT;*L)*W| zkE~q;97hg53i4`2xq%GlXsqWVd?81q5M9`q%Ab zajxB`l)<$w5hw3jjlC_Lz9!_QM44Pl|rv=k!jlTpd?4FJ@Du zdE<5m2$XwmCpWSmhE7$Q?;^@Hkw z%vS}qPV_LjT6u-jF)_W0grR zxE0dP)kb47ys5W~HK3@GTYPKVLroasYv$a@ygqY7h*{m#g<^Yv(Ggg;z%U`VZ@LXg zgrLsvtAuVyre3F(aJ(GPEgZPrVE;!l!|r{cCK)#pockv+Svj$H1S!zt`nj8+#(dQ; zsI$=TBf3i>VvPkNt>wTI^O-RHbV`bRK^rGx+P^Bj~Bkqpq zam8~ zwl*GoJpMaCu5#z!9!rICjy9ee4HgSAfxkr>VUFuWF>A*D%_d5b!}a?oDPFH-YTDW; zekWKwzPm9ZLFE_>u>2bUq-q^R`)^wla#Ry-NG#J-9suHbknf*T?<4x1->0@cd$sFJ zqoj?zi-2;dS+V-v`K!gwks5F|O6q+!VT5`2xuU2At3`B8Q5#4yA{neP8qJAh7%ed8 z!7qo%lB((FMQQ)^<&$)ioVHz8kaU^EeV}+pWKQ$5(>Ne8#8MV6v!MMx!22zkXazKd z*3S}O4DU?<^Jks;#J@FP|9oQNepZujVE*^_+i+%;L&r6Bqw|rovLmcdF^6C>V?TdQ zH41(cOTLH%oZy_&RJ*vaTsPx}WC)9O82dReU-fNoGDX~g&Y9fU5V%LaMuA7$avS@Z zmxsWg_^b(@L{g>%MD~+OI{CG6$`o z*%U2y`JX9&ahPQ()LR8X@Kg2<=QRLo{ti=i5jA1i0TNU~{lW~hPtM;uj;v965Wf=WFWQ$_6@(R<*7H{i=;hDN+DC&jlO@RCXL;Stkwt zKt8aqh2epTXm7Cf+SS(DeUi(Iz`~x4jet7{10aEwIUKZzqUUy7HKF?+hZTUB1bZFO z;b50>l#Evl_|n$dtWw2_o3`#0*Ue_`^W-D7JVFVR06O4NfAe1ceu3v&SH$$Aj~j=X8C)T0&TvYxN=7@4{2GfkLAjK! zVlbZhtthV?%O8N>uvT_TpRH^=cxlMbXz8v*gR7%q9Wxr6RxLb{d$l|Ormp)bs#GB= z01*dJa9OH-lTDoPZY-}5(?qzT)rQ%g*F4E>WI6&%o+eRUxrHoz%7zzgKTGz7~&u}4`u8e9E4%m<1HP6jq}C$2S(`1Amv9FgS|_m z#r`^2Tqwftz(^vDFj>jsI#v{kUvxC2U!@(h^X5R+;wmW?hXUeG+U z^5$aq){ZrD*WxnxwGw-ek^rm4dc>9gP(xM{?W><(6kUb*XSN?^iLkycm3EDAl^bg` z*IewVr1x%uKomiw2fH)j!Y7uFvS6PNDn9iDinMiOiVV3I9*5?*G?RBz)^C4+&QsCy zEX_IH@cJCIgvS`i(gwfwtJhXTfD95qY;N_CW< zW;dG@$`J+?&cpp5wLTcIHd*MB$6GA7dSuOymC9yw=^F49Rr#J%@MA_T$2%mrZ_7U0XZ`OD8$;5GtQ<`NE~4H=#7$&67o+W%RlIdse~@ZQWR1 z7zm`;?y%7L`{x9TuX=2GU1n&N7)hxI7r)r7c_)x@?1e?SN zqNQ#wM5t09dq1ogpar&xv!qEKx!$`^&At*6Ku5(EPQ@ytk zC5`(icE`}1z#s)SljA0fP^S;HMDAr6Ev)Vf-D>1McqK4e=`LcenYMg6$--&2rWocK$x^x#)?JD;kzK`CwlG$Sxq$_By` zz7uEtZd-^O_-*UKmfB!cd(LCeoeCdXx%qF?M5rV8(l(H$r4T;E#oLt|$0K>Y6H?pb zY{|H@Awn;^ut7#cDz9qM`t5GYxp60US`Ki;;I$Y@-iXtxBf^$ia_gTzf;Bpyo68ya zJK59kcoOvpNdzC&H8daW%EV(3bhF8+C2-y58K}B7Vu7rL>c`x6WS0jf-C!q~s6xLq zbGBKKz_UHyzF991J{`x_x_uL0*mKnsexilz@B+k+i(JhZwLNnsWEyl_^Ecz6NRI%F z$;(M}CzpA+Vb!_cbB z{E2CcmNH4lHOAE1`>O!GpHqxx~Na-qM6dc7&NyoQtgmxnd8zl`4l-zN$ zp#A=`lc^>Izr9|QE){PgE_eFrxFAE8hx4^3LD;jwyxA4Fx&sdK$!$+2FY2V=8Gl77 zTFWfAPR;5U3Nj5v+JMsf6CBDPvo@}hYSXC)COD>U=1Svx}LuuGfUuM4}+BbR%4T_bYtsV8)XR(mq8K_LYnuZ7~2_hiu zP#7!0d1+7Yw&u1*;L^aQ9%{99_(7n!|0Zc;`{@*ju^rV@5a{g@8STe`7lC_f{Cu;M z-E2h1C?7L-L2?TzCJtnd83{M={S+XqNfrU;sNiQ9k9_!KJ+lgdg%|Ryn`oiZb)+vGId%#F9caqeH+i+>okU7)5*q4@o0v;T z3$81im)D#3564HBUI(3uqSslj)NC!sDH;BnZuS7tNCJG!XA~CI4>vl z7di&`0(Jl`Q|sc%!2-oX*$pl2X45wW>p@mVtvS3iGW|!Jt=x!CCnRL!4j~oQXVDz1 zPl7heI+73{m;r*Ka=ou0e$J=me|=u|>7Rc_5#RrR-3CQGs~UZPklf4ze$7W|qIQLGwD~hgv$IfeV)vT^D5~BK5(9rv+?!(plVWy4Y zy5H|dmB;7#ReLYH`@8O6_vAdO!rQ;V(chxA>sIG4!7S%Tv-7$9(}~+9l=eb6U?Z+> zQTCte64LX81wu|4ZdrvQ_7n@kqQZb?YHiCs!iIx(uCo0P%Zo)ths6dwG)|FrnF5($KX zV9=Oy777J}L13U!sbG$8#VJ>M4bN_!H zGx_!c!Xq$=04}_D@!>y@-X6Y> zpWpL*ar4Ec=S@{I;Ql_D{NCgK56;__`^@OCQo;ZJ^SmYy-^XM+U3W2Kgaj& z_I)VFmpvA*4rx-!%SY;fFCEw zini14Zv$ytErd=wI%9@6_6>D4=T7;Os=r0gzgs8EzB~3`i&Yw0ZoK9n?ex2VJcy&{ z*cWo#05xA-S_OezM-d|dge${r(@5`Y)+*>Zref{P4KZ0MINegy#4(|}w88O$fndN` zFcu6Ig8^YcXe_i52*M=*uf5*-<&x^U?k^&)qD0eKDhA3vHMbJENC{QC>Dk*{uY z&zH%gNAc{VtBR|7rKZT?o)h?9J{MI+p4P9nyxDG`y)pOmYa9D$silWFrg0?BxY3;= zCWy&i*?>x%K2=Z`-?jXJjQ8Y{0GAV*Dt;y5g?x6-Osmbal6V@;1%~xjbr@ zBc6>~x9Z;`XLXZ`vUuK>WhzP@QH;F z;OcA_D*S|-R~cECo66_t=CP8@CS4VV*2~y6)0_P{9^iQ(yWP0e(qSF5joSM;Xh4yx zmrsNzL!24Iy&Kmn(lPD)1SNmh+6i_F(l|`uN(J#m$#5axhzy$IxQYSaLYU?RF@*wQ zP_ZO57952H!H}@fEEft1LV+O|MK8au-hF3|yyf`v&U(qJ-j|#u$yplcexvKZtNPm} z6WrfwMn_a*aftC>DbliH~T{U9;rO4{%8CA?*3%? z(W9rMt451zZs>Qv&-d5&F0a3anm7Fv+>O^fuX_F8e%s=!jk`eFiesbF135SEraRbOp#pP0J<(92Q4QpqGnJA!4!z zG}f;f+bAeO!M#UyyGELE>udAuJk5N5BxWt zece8f?)10yH*f!zbf4wljVr5X;rsXa_KZs-_w)V>3_X-j{Cfk3Jrnjeb9{R(uWI}{ z@9^)|x~0C%+vA?U0n!Pp(Rd6~=b*H40f(wfssDScVvG-9^54i&-n z9(cl>bvlzqg<)2ik$CyiUUCZX`hkNW0sxKx03K>Vn`R(~|Nf_h09bwVn1Cx&kZuZL z0Ix9@3Jikq4RMH2YwI8w9sMo#IRu*DO}uI3hQa!)3qa`BK>ICrN zaHMyDsLd8cZr|-W#XV!ZP||iTU1}CEeA<~%Xjf=Gr^qc8R#3DN1Jq3&=6nPo)d#&U zS%wCLA6SfKg7O!*y~)iRsDS&`cn0(DtNaDPjCW=WS=#AF1KQqb|1sSyd)Upx1)Bjs zLR}2%rut3atMYC`3nJ`5ntEkPE>ad_Fn`97XEx1)FA=D# zne>75-XhCE=xx~KILf~a1OVvi$%Z(rx~TS?DeHG+I@5T*GMXF?hPd{qFMqPvY6f2FuBzS*xi4c~AA!%8fL`sO^`t*;;nU7~C7USG~ zCx{b=cjVqZ71R8fMf0o^ljOo!C1TFxk?y7gDYnn0=Kub5JysxbXr#C9U;As>7F8&a z=y*%JA==T-Nj7B(?veq~k!H_d=_j45J4b`IVi~42y5XM$MI@+_IX+J*6PWKpXzlmi zne?N8sk`DXlKc2@0q7yGcST%puXcr0aU?4aK&IHR4IpQ#>{cz9Y7x4*B4l&r=Q-czrw}UX7(m#&RU-yNe{@S7sW@G4LC(7LcSje` zOXSK`HhvHpzlEZa%4O2M4>oq48GpCh)#nSrkJP1(wYVAi9BWj_^WgiE84b_z005kchQhI)8Ni zo2p!0^A7{~Xqs$i@kMa%HAxrcl*wD36f#95lM5o3RA`h`OzKdcxNZ2yO0&K~&bfa-KO|Gp7>et| z!vDT&TpQS_!e^!zfcYK8B%5_I;m+3_I-ma6DWF=jyT726BtZW(kuA)c*=H znvz^HnFDXHGO#Du@x#U_-J@Y4-Sa#pIhtixhr0d4Vwdpf+2&5la}UY+?G|L6of8Da zY{&e9p3&Gf8lps38V4xN*qO@=pPEP6>q9m?UU(t>s_$@COmA&hjOF_p+$3tFK|T*W zQZw{GMm+$X7O^6ip9v7GBFbChumgbB|7VQM>F8DNiUbB+s$?%VP_5;lHA67s-IUd- z894*RzrMN&MDU9HW+|^eRVv5;sdf+LD2;NrZ5aWe&W>J!gXR(7gt0aVqd6H`ryQGs z1#Kko$Q=;>ejxi@Rzj5Z+stvtgZW!eauUh7P$LXyhg=+buv+I{VZP(!L{+xcgOASQ z84Fx!(OT6^m@Ir^a!?`Zxe5Sg(5QdU-Mb_GGmHl>JLA>n>2)4O*}otZ6dU zR(xk3D}8L>tLNl9PMb<|TGYF!!g|bb0`@I7heYBW)ko0-rz_P?T|$XI)i^W8bc_EE zFKrw$@p2|;u=J6*1}KyxEzr%j-DxVss-nQK+PD*cUHK)C#lL$FRVd5&0FUlrZ~cqY zhmGeNwXPS0Z2P3pM5%TeWb(-nfuFMDBG$!kNlZsMH#=bU-WjQ{Z66yLiyt85Gc{U@ zAU_5!)-!W{2ZON;o|wX1h>87bPwS8>t>ogn@3d)sCgidAPjOsDO0&@>^+s-c=OQvK z2{5-Sav;<>f5Wf2{Q0&0C@Do2xwgZYe$A~*yJhE++7@pJ^RTfvHxJK>d>Do;V{Qk{ zc}ieL>CPXYGW-o{60i<>i7yD&33ZfEhv_LA{!C`5B769KlH8{KYZgud=SM|(Wg?V! zd4{sOFwOvjHJ$ysyw~CMPT3qphKT1&;)9_ZMV=wdKNrI8b6T%(B+<@0*5E?Oe z!#Lcdc^ezJyGlOSB>}6$!a)p|Si8Fr7sI|tKhSx8QzjRwYz%lJfg5~mx#k8#JAWzn#K1c|Oe=fJOhY2<#K@Tp9==(jKKV%FY00*24w@((VHs`;s zSsG3vU+Ni8S7HB;lIT~dY6D{8|GAg7&D)Wp-b)ItLvR4VmY&OU4&M%#4pblPvTm+H z>&V*bYt^Dy(v()BykrI|c7CDR3RddW$gK3z_&16pb*N|Z@Ff*1P4whqqZ60xP* z-E+tpBHvE{Zru3UO&Bs#qv%e~S2Wiz@w`y~ID1oepe_vyAkAJoc>zsFAenMN1T#j< zf&+jpcq`BgdD4HwraRV};A7=w^%d|CPr|EP++6k!VJyB00SpWjXD}S=c14o=7~V>@ zB|Qanfgy9jKaf7DJHMu{y#g{QW}-yy^o&1Kh&jESh@p_?0-ainpoDSr%61}1d9df9 zoJ{8UGU%@x)B?ip>6~tC6)zEDT@cS0G?BTQ9ZU@qFV>&c@)GMAd)3QJqPp>#)8)ke z0n9G{lKklc_=#h`0fAl%AQIC{k+bMzLGb_YbrHuV1}C)aycfw$NSGY@x|`osF7}ft z^Ef$Z9BjXAf}aikS5%d#!+X0Gca_60Hh`8I4;Ay0Q)s6~$X!SVhUj5^*z}zfa~|J9 z$(7b8bK>lt{v#y$5JW{~%x$)Vf_PIZ{#W7(!SQ4Y3C?*xl#XmlVDy^7x=&4cGq36& z%*3h~SVA)%qT1at7>K$-C6AaG*5tFgKr0D=N+|KVSxuT{m`)`Nv?s3^9Ywt8(*~_z z>z9bR3cyC))!L&in+yJn`!vp?U;v~5Ml){PRJ89^i*y1St>Uw={k^Fet?_AQ(CyzQ z-jPn#+~xp_t!D!VUnrJ+lYftr#QurjLg@UK(}C>Ns6 zfZD`CGWKx@t?GGw(S0iEh;Mk=B4?+zVgxsw5)@kT!YR8p-e|A%c~GyVV&o_PKIWCn z2=19@rI_G<*4Ym)Y_l3LW%h1x61h(xmz>?UpZ7MTb13h9P#8O z@a9l>ahIT@NT`QsL`DMZyy>)WZG>KHAGj19{_XF-+Mg*@y#>sb$s6xG&PNV`F0K6+ zUzR`}vlz+moW`D}M6--x62?#f4Z9~LJfdU-6ly*L_@wV5L}^b(w)rvBG~&|2LN|0l zLWg<4{Z*YqylcO_X+!u+O+6U7ulY4)3aqBCs%NA_-Ey&sq&T)EL|0A8m;q`K?F#^@ zSZ?EWIr?$2i6SWwlZvTV6bxw8&}3hdo>9=@J_o*67UjES9aEA>5NyLyCsR&80IDJv zw*B{4N}|!uWLjsO_7ITuba$-PMj55Dqa+$)y~i2cB!{F}^>enMr$;5b__R^SktgqM zaZSEZS-`RmAtws5%XgxrThm{zkG|UwFy)4}yH!q2=Z1h{qr>f09&Og+>4e8Z`sGpI zyU7#r{hyVr)CB}#7-+OYrs9oH==+A8je~-KbcK4@UFR|93-Ckri6>YlRi83M#$y&) zB(^j~a+|8E{VPgwP~I;DZ6J_J7ViY$B$SW(&`I$G7C@nE3w=%Wci20-Rbki63-&K^pb#!Ys&pfObA`gTyqwAvAbup&_ zJWiiqYaiaYy+?bb(d|p&+=KxEz7sF`0`9#%;qk99uMW(&4UGfxvYTZL(O5{biz$>R zyw3c0*%X|=LKD|*a{-)G0+e@&*jfep{+Vhsh-Qdp4E{nGvp=D=sDT>SVjVk84N1Vg zXY5m2pbN=utN8qy1AYveFT{fdNBThULsF);%KyIjIr1NNQ4Q-?@Ql!)54Au{au`cOs;@xcWg;l+v*@$YBZYCSj3_COqyC%-L{To<+GFB(S ziY-%VOV#5pgNW1>_G~+u&a*<6mQzCQ1g+#RUbWQx7-B@Hwk>!0p1*J?SXo!_OAstDRFhhn&qH5(oM^`U9IFtHf#ytI;$B3#|36LzC`p6j>PJ1a z%qGp+lyU1`Up@(ZQRLIhaIkZQd&r=2_g^=$D2j-z1hPu!6{hqn$wp$*YEBg$CFoV` zO#O)NJO=3!cfy`jf*_aMYoiJ0Ek1Mi`h6Mt?HbLqLJH`lpJH{YuO0??Ly3odQbXY) z^9vDkzbG;LV2lyePa&0_Z3Amb%17Y3NA9Q(Ywt0Q%#AEh?%Z@l=e3yf#9f6o*7$?L zX%Ma#0H-!}s4isY2dy7kJhB5s#y|n-Oay)}Iwl#uc`v z3}TvKjLB5I(@G}m;`lJ7_Loz!Pv;Rj#Ij&cM=l~aDv{|y(HSqk4}(_y9osc!mX_dj z%F4lB;>fEwodRf}{wn?Uh(n0>bvK%xUv-IM|#!u%|oc zj{=}B#}iA;K&j~~pcj=3pOLHXoKkwbz34(DPqXstVfnQta^8X3ZMTWOX4=#=O67I| zh5vZExu88T*{4xuA}zR-MnKPV979XTG7mOkwC3$bC1urfuRgiW*kJUcw!9Q1s=PB^ zGtd!Vb~sX@^z@RoS%|&!u1~no%@#s9M5Vq|zUkoYhnCebsv0K}jez}x8uyTF)U7V3 zrJkoslng}!T?f4&prr*c!YbP6POh{h?mO8;QLe!*EKyN;1-mqf+LR9lx!iD@i+5+B>SEyW?c`z-N)82>*4zb%vVJI46kTlSeOF4c(AR*QNA%S2R#Lv zCz%E}z=AQlCE6%`Iu++?4oU0|Td}*Z!wC?}yIqTN?n zoJ&#F?|=1`**Oy3!s)%Pr7<$!fOf{u+(z(f9dhip+d#;*p$xJ@F@{mUK|dc zuYYja+ZHu=QbK0vmh<)6466Q*k0J54v|!0yC|Bgu@vW?}WrBVIfeC3AYs^u~1RBz4TsnqO+r@ErA)bMP`AlKd$?>oT-Y$1hPa+nT?s!xOx*YH%$_$+- zC|6DXN)U!!oz0x}kFrFK(oskxc>qRqF~}EYO@ICMwvFejag`Js_YZz%nK1ly)VUro z1I}I4e5|3^`wB`;wYeOLo4EE@s}d_e(HaVN(Nq*294y@>_pA}w*;!AWVIsEe&ABT2 z8)wY@!6V9DjdeLgyILfriQBo);Iw-#8Eq$4l{K0@!dxoWaBp+Xfl|cM3kZzru8k<#FMa974)JI19peMwqz7?5Cd-MDyzKI*UjyK) zZqn8Gst^xpvE%+8`hFu2+y${`{pg7u79v^7lyi;Ew<9a=M1HgrOS9T7dR-{~uAyom zN|A|s;K;t)l)n;5LJ#cG+L7hxp)Kowpm9H=1K0f<9tb9)c25~d?;P&W5!RCZA$l&A zE$C|6;nzfZgIj>>*F7WTUD2qQ7EbH2{GWIZ(v5owK0UpI>3?xmpH|nNmV;ODLaCYV zAY%Da3@ijT{f=E8e7D}a%;>tEtnlte0zZiU4j4aC$mZ4L=V0Fn%j=GcXkNR@=8^?u zPEy;s+SdCY^0^D*sceBLac!v5qSMNv2&!7@!rhQvRFGq#UJINAHX znh5yujzsH&YY_Bm91b;UBtC%~v11+Ny&U;L{(=%k-u{FGH_ICe*j#_O+L$b46GjT zIZvY!u{|U#Zz24Dt6MQrCFBePnL99>$J{spDnxT=`e4e&7?zUk_l)bAVb#=FOfz zp)Ufr!*B?bFC_l@H&jHRq?ya93eW(crg1X-jA_4zabwcfM<@)}7j6lKS}X29lVirw zV{+~=c4oaMAeAL-!{FB*E`GN;ewp+}DRBfst#gK?QYY;BSc71LbljAkNnz#h252xZ4Fxt{ zs$El`><}{Z@bEU{UiHNQ*$@{1ihY*c8t8#HkH=k-B7!@Z5k~2ti6!=Bq#0AJt!(J> z(^lR4N029E*g^(U)Jme2U08FYMsnyK7PejOhP*C)88~%r4JSsW$vEIgr693wiOrr_#RjeL^Dmv{kdx%heWHc#5HfwNBU22eBGEEd0ml=>Pe-0vzMwe_ zQFP1vl7thFp!(=Lyl|+0sZd)v8u=vA8egqy)v3k z!0(MiOsU9PgK+mhB+!M5&!UiMd&&@}EIKtx6o==y)7Jlk;0#%jzTd%8*ygp)nQaCq zP(WbRJ@w_cu=NjnH!3TkV!!5hD9yTLu*Qq@htP5tixvY}6b$ma^_`@ZZ28zNwW^f(A(e@zSEK^d1bJ+t5!Ts7aZ1=4?O*&*N0vPx zV-H=p;_tm5^aLN45R9vlu$^siL%&5wC5Y|WL5!2xL&hG~FnD{FMRpXeIjkUSoUPg` zWHkgQq%;`-XLB5P8P3E2P++W$lC7Ok^m~13TN;JVgSGs)-K#KYZDqh(Qd&@ z)37ql@HdH7Z$?XrZh=a+5Uf)!A0_HXX9vz#!9juokiA+F-KuCl=%fq%qfTeG$k<#;lHKCqz%Zs%c&QO=eZ*`$m$f0`9TQ1{ zG?Pr-!ky$FclK!zN|=N(X;H>a;rb9$;VbjNG;I&YW^j=KZ#`a%niqY#|7DF8R*yTM-?t$KtU&#QjnEG_3bT8C#3bZaIkL@4k4?-MO9 zanDH}49o-S_%q-Iy=!z><^Z}w^Dw-`}D+ba1Kr=V3`>1pw~N|QgW z-N!^Co$O$>tT9PZV`~+}3|8POI+4lKtwzK-Gb)*`RDF(p-J$gz26}s?W*+lj$-Tmr zA8+{r{j5l@IgAwBd1NRPw+0E(e)%$#U^yUhhui`dy|E8TkLbbephpaxC_u&NunI&Q=f$V@{Yc@JH>m%qw-oe&wk9?VZ(G9M{ z0009300RI-Bbi~AQLP|HKmiIAAS`+d5(2}3u%IkNFs1G5a<2XOl4h`)$VFXENiT9B z?}pz05!urpUz0zZU*{k0ygPfg?ZYf4{4b1mH8g$yoRFG1jFXPvFp!2MKK}Z9WS&AJ zo`2o-q>?|0MRrmppazM1WTHRoDTBq68OdiE?yOlpY4Owv%YU>5FtB|}kG^tszvxTq z?ZN2tk5212hHuqT=>MK)(SIU`Vew9Fr9U&fkJ!zo!CpTlRz0J--S>T9{9sS^ zO+>Gc=6g2(c0UZ%-^+7wn=#)v2xXp)KP{NC?5|F(xs;@XPDO~5NGucy2vA`VxUG6-did5> zbu*qOYWcnKHJ2h$(0pI`pCiAM>;7L35_EO&U*6+N7lZMg$K}7uoOpW-IzfI%R-M## zLc0(6d(q#+Nj{of>k?EyMxAZZYyX15?%igz{ysg9Sm9a1&7dr)4^Vk||FiXZB1bwP zSw#l5TPybW73ucolo)3AE5wRkd^#>F+9{)zl$=p10XnnG!U)wPAk}*SyX9wm6|w+E z6d&h*|Nr;)BZdUQps-*p8VeEv#elI8L?HJsv#se4HkCETb@4~nnn>tCi% zsL;seqxkYJ|5A&eKI(c_>7JB?YeG^ zor1smXY?y8<996b^Q_kVtdVaEZL%=t&DrZC!+3Si2Wacd_ z2@Ih;Js^j;x+l$?$uakl={>$1o^c5`M$;{)^5S4V^zog7~?L^A)e$p&q zbkgeOM!!`0YSoHU1ksF>C@r$J6ls(rSA9N2`ILsxI;ZkmVacYuorhJ5MaZq5KE?yj zK5f)-yHV>h)Q(ez67_!^>Y4lxM9MPX0~g!5Sp^(nTr?@q$IiY;uqDkkP$7`rF7@`? zO*-8~se4YbUU}n^$;D?1xqT$tq%dRvKoP(J1{54B77Pu-!J#mqG!`5Mg#lqeSV&U{ zp~rjk%D3jKRjF*3SBV;nDpv#U%j}otmhbVURipm{<`(LebnL#snk8xRv@MXDW~bRD*TPaa{EZy`dFPb+ycU3Ke%VRupqPTP$)ydF zKp1yRKwsB-->GJuiq7ZuJ<*R(S8u=kKfia2b%5n{Kh}GMx?E~~V?$@&)0~xD=(yY+ zR!3IeM|X0v`eth)rrIVWq?L8;KwF|l$O9EN&a#qQ%q=kj5TL)$KY#zku#hYi5`_ao zV4$Qh6bl8yfl$a$QWP14f-8Jyy>ZvSr^dYhAJ2UA)aR_vGD^0Rvg+u1hhXSc_y6|& zAKL$jAHe;YKMvKGg7{}L^bEgm_Pftp@VqIscp3HoyX>a;hJ#c}0bw{)C>IL_LV_TeNFsm>+4kdj_xx2( z{yClda^n)xSt6Di2lAi8>OK+FJ8Yx4FTC}Ux|))*UN?^{pfJ7i=qg&XQPI=oJwt|= z`kws^dyUdv=PdITKIXN(^gLR?B!oq_vU^EsC1&2XkpqNM!3Isx-6DK?J-S@>!@xC)A^(wTjRF^f1mqWq-_wmE3 z>+aS#+RdkX!iqid5VvEeK(gd{S?)Yd27ITJXdnSZ__wK%XBzW>O zrxC)5J+o8nDm8UfSSxdF{PUE6fJ^KDQE+kqb=L_qr*?qf4vnvHxAiGyRoqYm4g>opNFRvFS(S$J3^tHx0S}y;Wv`#?uoub0*Z&3~rT@BTRO9 zNi{R{mdI(vuj-Vdm$Z>6#q^NS$|Vl=5$9Lirt92W5zPg9P0Ic6<2@(rjTL)Gu~$m^ zTvj^A6!obMQX>KqgSG>z-%6t5%awXZKLU*f{TMK006-DI0012(L7RpkhyVVkgaBB5 z=_mp@ANGEGWneq;sOt&UR1G!qNTxFH4jgLi53VPeKMqw?E#Bpo?eq}W|EV0+*vYLt zj_I!OFQy~<$lp+qrnG)D&q9=J-;|3&yXxmt8Ye%<%2mPdvS5I)iHrYk^c<0<<9EEY z)BMKHW=SkbU2wk0fC4dEb|a~6Mw`A8kF;*Sd&J$?tM27G7nH8$);AbrATCbCZ%<$+ z0`1ItNS=0Yf+&*VQ-(L*TGifjpOZG5qR+}bJW#g1bi0XlP+8XG@%xl^fq!muN$?7~ zpu(vdBC{ORNfLcudOa5MfJ>c-<6RYPg3<$JDZ;JA1wEHYuABS%OVa+0h1U`F0Bfm5 zBfXI3-+%U!ZNEPb8TN>nm^qFuQVAblJyAU0%zsi-{8bV4TPa z>pTBadZ4#H5l42EyB*r`b01K}k=P&{;46GGU%qnco-(?-`r}An5*2vS=cx*ITsTf8N7 z{*c&*$1I`8-3oIvaw%n3q%>}9kM{_CoUw+Xjj$-@)&^}yBz&os=vK_mza|Sk?XNqL zin?wQXK`#EP=FgZzW9#-Ui3yGKRxz`3n006DjwYlmwcGdzxAlsW5Urbu#dz|Jjpi~ zzu2B;mT>RV9aiM=s8o~)#h;PbTjchk$eVTw?9Z9n&yR~?V<_OvKZ2YQ&BCo{*7nT1_b3O;0vq(uKq8tXBDz7o1w>Vu&s$Yg>;1b|hgXi%br&q^6 zcB!arC^mtTzu`9{&uLuihT3m~$iO3h0S`r*rV>99fM2hLf|FDEEi0i2vK6My)*zZt zJ5wti$8)J;xXum;OQL6mFMsL<4@(NOs4UM`3^S9EOT9mS*&c_Trgh;zTr}12he<~? zHOs23_G_7FFMJ+vNV;2=W-RaQmA`+h_w7U!5KAJ1t%@8g$O z#IgbMoZ&2A;Ta4n#{bljoK5|SOf*QmD3&+)NjyD?P6k(n8UfNl5!5bG~J(@v0EE{n#UZgS>i1li%q(72+!BNcJ zFe7tNgQOed`0`7>RV@I<$7bKS>7CaZFVzUPmDIMNfF4~PCwh_mcL6%{U-{`Q41A1( zXT1D(Ch76a)5A!3TlJQ2D?_*5JsCPB-=SUkX`7C`3QHa#Adt4JW;7gg5J1Rwu@LI? zvs?o|SOZ$UIT?}a20~>j5OA_Lm=tlxn zg@hLj#&WjDFfC7%`Tn18Ci52I{B}CeGt<6{I$)Q4Y6<$NshQ|tQJ(3^n6;; z(8%B)GkLO8uZ|G~DVP=dH^bRaw<69oDW;?b22b+%h0o5+)#xs67GxzerzlNs#3PC! zlxJZLQ{X!13{p(?d6p{-Y6Tn4gHePYwILiXgVVjm^$Ku9V=Pr%^K5AMT1?)yKtsSz z=b_Un%j}p7umliBzbfT=+x2vY;eKg~)2fgwVHT#sh|`4!BN;M&t^x{lY7Mk161Y~d z>_vX_xS)AU?ve(Jz&)2usz-NTDr@F(XgpP+1R8`jE`-cCviG^+>YT#FMOceq0&1v+ zV4y>Jhn!obK{2!3f&FE~mAYynKUNJzj9;Uwn|?$BUL{S2mr% znoY>Ioxr1#+qtVShiZA~$`@<$k+Tpi)8?75arP3@a73qFw3{~6{;rl$7WU!4R+}eh zQpRo`gspMS^4VfPkPugc#osh>(-H9!GD62!p~NhXy*?@PMfgIE`%v%J=&zJn{J5Q! zJZNBE4bL-v65uCj9s5R4Mx%X<-)sX-Y{)+}o&N%XX9jMu@=xGJ#xA6{@)}g!hhO+g zBWC#NcR@S62v?h`^g<|rl}j|Z4z8*6hs7Rx{tj{A)(&Aylcu2>dUgS-8^wN0)!&5d;K2-+iNy!MC z`()$YCBKaTB+gZ|lNUa>tRq{I7izWl{GH?wbfq=&xL0jOifiMRvi3cun##bQirA!k z`pzWrs2Ak6GTe^0@Y<8FBsgk+b5VOI(oIJ9q8A5ib3Am`wF}5KT z5-M)BjFWEO5d;`mSVM^PS_g*MME~=u!($rYrY=u5iP6afb{o~jyIeFXxnbW0s(o-o zTR-E5xoXt04XNOsl$n*IeX*7N<4iMkm(+)Ot`yecS|J6`UpjJ8Q93%$@DvFN8)}$4 zQ;C~T_2d6OeP4oh%ex%^GiGntk%QRX+$J`yns|~FpD0-@s8y?z_^N-yiL3574KL>| zCuOze|J<*V;@I*sXKndYFjy0FQj$rJAh1jGG{nviK{Tfz{#0$jMQp#~Aw@;h`a9NN zy;^&0B3Q*t07XKW4ELL#Xw#9(7jT9~Q36=Vua6n?@62&96YI$)sxIGUHX&Vk^8-Rb zd8*9!nh2O$?}cO_W+<;}?l6lc4p8A*ZKn4m zawYe*+S{q$Elg z?489)7_HUuCFk&&(hL@9dUegF&V7+1pe#);IjewF!h}~U(l-D}6lBjwOLJVu2zw`6 z=&2Tv-^q@cy@jg~L3O(dNwqP0e`6(<*;2*0>4D--{8Q4!G{5w_AWE!mid0?IVI?Zi z(*O&(Q*@9l!h*B(o47bJi|-Z>c$CUc%HsZczF9C6H`*GrF*+L9R{Zp;YD1~!fg4ZD zDl&FE^#dS0)A313mddXn%5UywI|5{u;k7HyQN0%1gJ@U0Ygm%f(+>1wT*5O7;M5B^ z7Vn%qgI6$L%%mU`rHgX&%*u39{Uly~v?PhL%z|R|qYOW>^P1T-`&To@;1mlUP|wMh z?1cyGADe8kW~Q>B`^*zDP=P|UskQ1UTAXck?&U8I+#GdR*UrDEA-LN5LNzJ`(2Y zB$m)~1wrd?2RonwPv*44-Ij%ojFAWK4vuP?*H(_EOT$x=6`F#}eE|BGMXSq#&)FZW zY~@u|KU+Q|bbCI)@NO*+uCZIO0AWYaOx)0GspkC*Um@P-W6$$3lN7(OA?By1@#Ww! zI#oh>nL*ZVv+)AP8rQrlAo%2@Qr!+AdZW~0gyEB4#P~N-u5R}dX;~uo{_@MYABp&G zG^`%yulQY8Y^(uUb_Yj0DtdOfzV@`K)?y!`qfaWLP;A8=?4C4~`lOG8N-lWf6-xh8 z_Q0$T{1uEwNA+QG!R8z+;e^44TiSWsfWjT2Rd^K&)nkmOqB!EPEslEqEy_z9g{R{c z=~`f^IQ3_vv#mb5Mlyg%Cx0^?mPzkg2*(asGGL4`krr8;Lgwq1^2ms-LE~%Dy41)v zZqmDBOGl@~Ey2x4z%i4MhX~r0!h^rkvJt@xV@gyDONPF%bR=btgu66z7*FHLJPx@@-u$@tJvAaHjUVw;Slu>OWg2jaa-8xvtO zu+vho9mN0uLC5t!SC*LaDKqxtsk&}P!`X*a69XWvo}?OqI+7EA0d>w&1jh7H?I5zy z&qUnPjxVif#QyBADmEa^)gaZ<(CNT?`@` zf5dlT+uZvi%u&I3-C@Qm`YrH}|lgMW22VPUjS{rZyieFkIZhSHqB zG;Y0?wH+^*vOCvq9BP|dVo5|JoeYh9G~12i415<6&mc?zQ2cdpyZAQF=Kf(ZlmplOPPx&wJ&=NAPKxm^ zbSjb)`Q(C&BK{(_TK6PQ6uq*i2a8!T;_{1AoIJ^1u*$XKToqDBaA19irrW!y65K~d zSRjm_(XvT-FJh(==|=f3Co;h9Y01YJQ*Nq2w&-@-C&>E`|(XiVbS zU`qQm=rMDg{}4f+taKd_s6<6_ZacBDSHnYW>a0szIfc*<7QXI%1_qxUsQ=yq_#QBS z_G_h>V{bm-%hlkYzXa#wY*>7!rVu(VoLadP*ym!c#P?wHZu#*cO+ntR9}@UghM0PQ zZCUk(EI+c-im$fIM=*^n5{@;HkfU-w`G8)(g+?db($bbSw;^O))~craq=AMK;8O!No1RC2Mj{Qvs%dgrHK;;7%j z^=*trgjo^YG=1NRdWXh1dPONdu*A&O6Tz1ldKK*r;`f=#H+$KCeSE$zVK1N@CXBvA ztxI`t{*vrCjhoZE|JhQzF+?$HLaotKvPL8{=1`0KL=lfO+xP9faKnL|MbhAWiS9mi zM9E+a=hmRMe?^O+0b7NcX93-o8+!A0i?_{oa@o9HzSqNFphOyac>Bl^nm>dj{(h@^ z)ks{uCrOQ6r!kPrqIel~R}_H}dP}!L=-E4V$!HT~$-?)-qGR`&yCN0doF_2qVM-Tm>$Ld|+@s6oh=#FIr-OpbH|BT|Vn{_+&=_UTCDx zrn&y8(R;;QM)qTmGOMrQjADDbYV|(oWnWz=UI>(+0bw= zw^+$?;y1wib1EsOlbWAJDu%uYO-8Z%RNOjjUsYvjrEL^V(&KOZK@&Kd+{!e**OLdg zQ0uRtUZjF3TZ!Kve>T;Xu^stG1`xYPaOL|=R*0(2EUTc<&-n`Go(|W9R?V^A{SzL; z(8d6<1%tZ9f5BW8Z7#MkQzJQyXV64+lnUZqzSSK#RWIDg(-I<61Ev1_?s;ZSgH2~N6AR>dp#cnc!8J+ zwOlsB+3WV3^9q!x*Th@N48Ke2EAShoPXAPi$htB`UWAyFGmC9(c9MK}JYB92Zu|%; zWI6;6^VuAoZLc0LM9mN*Dkl1B%~L$IV#LstP(BM(B2y89DIOHX1P@DXB-kzLRhzlm zfXWcn|Jw_*lT}fjTO|Tku!UxditIp2pLw^#HY(|hLOP6?Fyj1tzHUuA69oY`yX%NZ*Ii0x2vu6EM(pIHh*|!pk5fp` zD;^YWY5Pl`+<%eXI3h5u_%JQY-KAh@ybDLF-E8?+JRdX`*4c13CfM@9Ya4@qFjrK} zba6-FVb&A9{E-wPn*|fhM!lzvH#g$UNpg~sPbAc-v6s^#abVnOAsT~DH!#pgqpY^z ztceR|psbJ6zReA)S^{#tL!;XsUYx~_%*M1KulIa$-ESJ9c7A`b1}PwU86JvWdEgjz zFrm|Z7oR?#un^Q@ig9jIDG*HJAAVZK5x?WF43yS;FgA?n>#EJa>e&gbLYI+_-&upv zV`DytY#%TpfYJ1x&FpM05>hzTgfjNu7LM+_kzWu}py9c$c-i68aK0mqUCgrqCqnBI zwdLhth^|sGzE7^fPt&;)To&hJ2kTS@DVS+y%{dX6)_Uhi7ul#1azO}B3$o!}YLTZN zbGbn0k!1}IC~!0bZH7_d9iQtb`dIF{Ooubmf~ zw(E7&BEQzY{3dIGwu7mnt{xn#MJk0qLSEL8IcLPB>v8o(g6{m95tx1J{aw>Y{+Rag zC1gWhHni0^5sxgg=azK=rV=SCL0w$%NiDeaGyfc=SM8&{d>7F&+C^|~3d~XzI29Ce zm;aJ{yVT`b?R4UElP=H+a;;ohIMLT)>8E(?dLR{+yMD&GvyaMNgg)v?aHC-}wF3ffVRc0ExS6;0z6@`h#>t%B)DLS^JA*v!$# z&z&jG97gbA`rnZ1Ry4FI%voXU1#Z3b?q4H@#@5+ zuK?FIAx&;76X&YZSkLM;8n>tM(Xv;tB(uRPAqj#rQKs#{$@*|#rGyKWh#GeVV&s*6 zr!J>-1F+E@7&)O8;;c<2Rxz^G`1wsS3bZD-4^cw%-D=#?w3jJVsEe zXsWxY_fS^GE@=vVeNZ}|C`npgVB4<~?fy?oexxeBB`R>Ud4Ppr``@K+P@YZ#tB?u+ z{f7C-c+mSc)W^G3Dk?PD*_XoAZ%x+R5R0NjgEpT~_Sf`J%widx**2f*i{Gj57b3`4 zn+)iHR@4nZ1Cl{Y_9X1s-b$IJsBkrihHRxD{RNC0niBe^k`o#8NDh5bH^#|BknN`3 zo{w4TF~HM*;(1`k^Hq{~s!X}>*hSP|Cl?uOmP2xVyL->#l`5S z{p+u4iN_cIe=)#muU|^2F+%T$SEU(meRi6DaNRM9&_dOEliuvw2P~{m>?`}49UbwW4+5yPJ446A|N)Rmi4gnmzu z+IrDF$eclKo9mhQN#CYyKeK@}_R$-1NqDkl9?XGQ=6hhAlO~iEh^z`DlO3M+c6UQE zl$hBuSYmpG^eb)fSZmZksk81wW;?blChH6q;fFBY3!xc@DIG9e17fNBc1>+zIw~&{ z!hBcMt+s?^6S6fht$?JUpJ-Ld^eVB(TkZ)bKk7r5aX8G;0zKY)DbDhh)iIc3Y&lx3 zQlA~Z4sws`#fNTccYm_0-1{{D?N&4I`viSJlV6zkH!Q73Ev>()iwAo2K&leI}LBKR*2Y)F&~!}Co_K{7pVZUY(i)touZ%*ncwKeYI(Nv?Y*yg zLgG4+f*G*}L8e6`{S@g^Y#A0gX9AzZAgr&i|AAjBs8Tl?Bs7Otw9&0!3%wZIPGz$m zjxF8M38rEn7SEf7!J0nYlYd*G9$aVPqqHyx`kgRzw%s6-A`ad|F#E@1k7aa6q_qAi z;|R3jJ623rMGJwJ)7PNk!cgZem5O8Vxc)BC4Q!6!0_6_R{O35u`jO8m*(dlpvy$Yt zt;D#LJ!Tu4yQ8$mnJTqW_pe;Mt2CXZas^5!EpyoP?3^-3zvrA;Z>Gm@z{ysdevo>{ zTpZ~fowfM?Vms6L)R|2*-%tVe(O%$XWo`cSz8wU*?Lo9OK(GjxY1QB&r**u;WzZs* z?FS`yKNpddfc_YcFeDg!GBjDXt{o*5>iEG8pX$F_IuFaa1kG8%Yb~NJ||5^SMYX^bIHq~}SS@_Lo6ufO)_Kc>>jU0vbxg=RmBn+hW zqulyn953sX|4YO>cs&hg$Lq6sKgLVz{8mcCZVZ`t<8_guB4ULlD@v3=co5Nb_a?vea#0_#+Ng&A==e5*@i|Zz z=uG3}yh$SY#}x?bR(qazDwqZM!ke7*o|wdUt#PUujD17=9P{%=#`%yt)?7OmZ;rUe z8R0pq-=Sfy6e?(%*nnD55DVWZOe?enBOpMfX*5C=2EstFs7yHx1%iQ~uwX703I;-g zP@qUcQwWjw`My~_`u65?=BvGHINe=~)kK@sbU*z4EAIT?g z%C>KH|JwV9PclzK=X5=bc1L=1*d{Cyi3Fgq;4B&o5e7jNK0ec*j}=~b ztjn!<;46h|CCMVMo`-F8`9HYyXa4&&EJ@JK)lcimu1@dx{OOj+?$OErEHlZ>ctsNv zWpKoOJo#n!FN3?X{qLoCd1U2#XSQlPAT*LHif-{S<0Dybl{_HO5x%+Ppvdj2rI6)% z=w3qGS0H16zS6r@bT#0ow{r`aFg4W?cY&S>!2!i71^Dw(mnLQRsg2Fl7q7kGK$mnO z&n%r6-ry}=>50aJHMzu{(u5;>lV)0#$J!B?KCvKdC>sU@!l1CAEGP>F3}GON2qF** zuUUtl_p0MEUP*hI)+*yyQj&)Z=i8!|`06t^R5jCS{C)j5ecvZR*uNJ(>YvxHTEkD% zVpSaKemcLp1Gndc`9s*bx~ZE_XXndxICtx+9Oo1?^-1BfORwzbC7T=TSy@GasT!>d zOQDd>=^(M z1aJWa6d)`(3l4(;V8Ey_78C`A0b-z-C?W`<#`7{WMMko%R%;P)E>SFZ$0vWie^>da zem~#izt8_0^N+u_pZcrEjGNktTMC*67=x&wdaafDdG2{Uox`iG<7e=cqo2pIDvsQ> z7Fts@)|bgWe6Bnf!*>hlnLdMzQx7fDqf}+WN((Or>ZVY*ft@>>u>MD#X-0k}_+MzP zIeaL$wFDr_6leM*$m`O>qTbjl_ZgCSZ1@2xgys3F`k_nBFG4i3)U+163nP-Yt31Z^ zZOC)FP$u!*2ttFqe*d2T5`ti;Sd=Clh5~_L$XHGk3Wb7#V337I7q>Z8*N$u9ubvg?Wv7Vu=*Kx&FeqR3rF~? z?Egdc33$nIm?L4%f~T?X;LuU&uTEx8u0KTz$>$|j(DJY|QH0UzZ^RL18VEq$L;P_& zGrh zAXriq69$5zK(O2-6d43m0d>nS*1q4aFV?l3{8n95iqy19UJv{KkM(X3FCWj_^!W3? zqvaL<>)(9cRL9qSp-TFv)qf@N-<#B0CJEE2ySr<-&+cjw9OYSqc7vMYLk{g`x1^>& z4mHen(;vi|clK{s4k@GC3!${p4RTyE@5jrrgF8BQ5pVdo_z_85@$Cd$Y)%G?r^GTZ z5V9X-$w-Pzw1}51&vii|NY=tP!?ORob9(67NBZEu5}o`YsxC$q0neo`uo>xn`G$H5ks5!&3vYty3onlh^39V*Ko# znDH-r-8Ai8v<(o8TGO$XgwNV(VMO^=8M^MsI(`xZ+YSQ3fzV(~7!wYH!ho?5suBp0 zf+JOLa<6h!Nx5|brLL}BN=q6GM9Ka4@A&@ONgM;g`T^3J@nF@`t@8F$?k>|^Z~sR1 zR`2U6?XRcmpPuiL4nxfNfN#smp?GbY{vKO&?H*I3kppV>pYP@H(A81Pyn_63^!uH8 zXliVlT$4O`zwRi1@%`Sf>Aw{|z)P{7lDw zG|5#D29Yebo{v!mz4uKV_!2#i3fq^Kt?R}sPI*vZDcU^nY?goM9{77A3>g3r1aJTV z9M3_UrXYv^{-=ZhSbgaz0yv7ic?Xj=NtL}>0^RBVe=KFL14xy)!<5Mk>x>Cl5>4&u zn>WgBh^HC$t^Ib!tFVIhK;DlsVzr)7M(|RgbHOTyG6*qM{K?-+GU=!qS)L5-MY!Zw zO<@VEI(~Bm?H6)`&Fsb3k!*0`Z7|bzx)uiE^%3() zUG)kQPs`&(hX9pMi(i=nj)MmF5nT*1sGokvqpdj3)IMRewEjkYgt8lLKZDWfn%`i@ z)Da;<B@Q6-o4_Yv=T;|OZ3W^Nrww5lT1FaYV~znNagL8{){Hg`wV(%=$M{IZx0 zGmDw!yUH{@5JFiyj9^5-RVsPz-lbSmbRLR8L&6{S)1p)Hrs?i^V&TuTBqoSZ2fRXN zeEgT0e)f3ps4UljO;CiK$;Bv@&bK5T#^(FH1LWg!?c#)}rg`@T@afPtI58=Q)#Q(5 z|BD{gV~phn5 zG%)V3!-GnW6ZCI9XtSl@IGZODbzeFA2I6i; zZ9s&$r)otPE7RWl@vI#b516f=>UbhoB}xxI~v7S2}K zR6Pg%*CQ;V-2z^q6m=KqRW`M~wj<~^_Ne|~!{aFTWQlB!DI*oaf&o=Kya>kb2IFR!xdqV+F z+muKfPU-&UdpDp+L6byRm%cYz{Knz5m)3a_zknv{lZ+L38XWr)l$6o793$ZtXNsG{ z1bT`xJul;GVA_Hto{uEzoz6c<%^dIabE}tmLdX1-_6u|7sr%J%cihJLSC}A~!y$1A zpJHP8HanpJpnBkE+`(Dwj-qPYnLIa&x?qa+b9z12#!Hc)3sbvnoSt7ZeKI(<{uSpe zBH4tDYSl_eC7Xex2y;FN!$g3P$vbx@i_Sr-g-A%6*ocx_(}uOG-<~B|rP*|DLt z?t5lMHule^YjiblZxeBZL?j1}uo?f9;+|Z#8RVJsR2S#gIx{S`xTPqhLT3`zl~juGR0FWe-JQ1$RF$-nyI=k;_1?h`R>Y> z6#MYfNxR}0<+|X2OGv<^wgItB`ipzvM9My0e#u5@G!M!+6AH}dtrKY*M73Wh1hJMY zYmQ~=$EdsmAE1gkv&pGv2AeGd8$5nq2|Da#Z&o0woXSEhzD_cM%+rImIA(WS#PT+bx=vISAK9FFZEoZDK6-4|H*z;gJ!vah!avG9+l=nMQGVuPJ0K#VP0@g{=+s7Bs0m~|Bc{(@TFu`2B5QCiC z0U1fjmudp?)G}*Qo65%AVy@5BVUcLp!yI%gA`c|attK-2!iFdxBudBd+b=Xmed=_H zEz$@R$@Z{>D9>-3OU`d{%moEr_*W|*VJOnkHI0xvX0gE!xp#L>N0Lh?LC2F&dnE2g z*fL*QSXF;A$jwrv(VM(LttB1BA&WRLxCQg|DI|3LLX|ThLOUw^5?<$H1u>+#KU%=>A%<1mF%5J~TQ|Oo@oNL&M9BLA0qB*IADt1Uh*B9=aibcy^^|41`jAB@M5;{_Oy&FcHB{J94P7ZA#a?lmbl_} zq%J`0!`rA>mB>co&@z#LE4^>OFilQ8Fyk6)ACEj&I8Rnd@1e7bO3zw0y)A=lnN0~q zwd_Gt{n;VSe{{gp4+iv=hx2IF$8z+)y5i)|**WWN>$B;ev}pefYKMp!aWP(=G4BOO zP^L&;J`E}(85GFYr!rNb*2bXrkh?CH1^ipo9WZe0R7GlPov z6|y~tM%m{*oA!15JN=Fh5k>jyviPGg8gpnWIc4Qy#mh(tX0BfOA(X|ipi0Fs=ne}*uENwqVeHlHDFf!< z)Vb|mkbl6r(4krwREmpqaij)8DBagglQ$S? z-=RDp!u+e2A*Zk66FGvcmQb}E05A-lKe+|M6|5c>^ad!@T)pS)I%Hy6x6!V z%9eMmh~QC-7Re&iHM9%|FV@7}8W8ld4R+s7Q68KZJ@u_{jcmpg9BVh` zUybIxj2yUVHtE#I_Ca?W02wE>{HzMq^?i!4+C-(a%Kt+9F@An@kVI;;a#mR8;F&e z6=5bQ=-#D%8ZP|nHJWg)D}2m~@;_;V#?7@)3|Da5Pgd_>X68A)Hd067_PTD7M#Z|d znt{o8)TH`4nn_*Sa$F8ZXU>J66tuH3L@UpeNZ#_ql;9bYbKuOWjw+_wW)J$%sbdc> zqyiZwbE_6Ln9>_6agB-Wr4Ehv1;}aaQ4?Rv9o$jNN(x}zb|D>S3#|falwX*z-D1o#yyw#QyS*`!@4*$*$ zCud2W{S|2^U<=Y(EBO3_RC2)!T{z6y5Ne+&{h4ph$>5YhmvV+yw14$e!~ zC38)63YN-ePURFw;apeV_s7)X;wR})xCtW{d z6GU%`m$WQDD8ai#0YbPr8z>zYgLR3;*klY3mJ(Y4*T3`z|~B!b*_%V2ixeqJoL3%|aLZG2Ww!OEwEVmnKygj*J8k1m3(t90j`vsel$3j zcSqWdcLO`vX*AB!mM{%ek-Ot&BzH{kZjb@1a6rJ`;s-xh+(%VyPrGEvx zqs5_WDm}inx0h1wZijn69h@=^;Q^#=?jnWsqP81yE&+T z>KG2Vw~Zd+7YWyPoWVZ`RcKxIC z*u!lvnUiBFImbHYq>1tBZR;=1r0>*$%XM(WDw*4@t0M86E-H7e#3Uf@_)_x;V=m+T zMdSJ-2EXAJ=&BHMXaX^z$3j{jn-71TlkiOm4#+ofV4Z+3{(c5A*Dw?z zI`hV^l6=&gj;u_yp@F@Y-MBcU?PBl?IOUkJlra{y8LeeSyPUmk_wjJ;qfZgvQZ=De z5um4M0D}spDRvgfae`2iN3E;Qn*dn$R*fbaecAR5eRo4X=v2YH?%3n_aA z|J$cTvbt1RS-6mvRon=3;UIK4fq}@Z1P*Mxjm9IAnaS;j4Zdh{6-%W^kl1grR7Y2D z;6!2S;=T2ff;VK5@EXM+IP^O)B5eFp(ONe@aM)F*ZB(8;k11&~pl6keZzRf77FMsO zGu%Z+;C<%P9I_$g9K@66z4w5X=otEEo6&t`c&>aH(h+;s$`P3t5z5Okm&Yc)!Fq>R z`JVRzb67EpS>t$Q_h6J=7>=>`Ev=h{0f0*%Ij-E!-#izSJWfUdTW{=GFq9BquLd@G zCZqJsV2kXicYRD(oZ#21r_c(siUwUt(+dK6HD;fdp&}dyHotIeaNJOn1i|ARYGU9} z2kd#x4UL+GSOL3W!7na)Jws!G0-cCU-GGn#Ah~&gC`Yip4Sm$H7d#Ulc53KSc+_ei z;&+3^yLjfnI%DkvsjfGHI1Tn;Cn~o!XB_q%5c{TDC9&0Y(<07M`8^^f@OXbm89u&b z@GopTAZnTJhdMHYws>H0fT$mlts*G<>7^+iTnZ%@ouoO){Zc={Mf{Ef%Z6_3YbiCz zIesc8d|&L657XbwZ{P-XVmT17jdnrTV$tmt%Ez`Mdw<^sa)2*@dui+G+klW7wDDHo zcc6;i5kJOBxbyA5xoKbAgwlL8A^Qm{9?3z(&+}1^Vnb{;J?t85Rl}xe#@ZNc`fYXZUQyc!uzE7io$5ny{QV%C^F%b4Jc&N zw%z5^?(C0-x1e4T(`?*8b`mvK@=w0(l+gb1Rz@EAu}(I0O|4v)WCt+NGE&ev?iTl9 zC_o(`=ya#zo%gSR)bvr+e8-2{ak_XgCgBLAHOj$JAh}0>pN{~8PrCR|7iZ9CZu_L; zNpzO}kWreq$RQRBZ)Twyj3s$`Z(`UR`;G6>i`xaT(&GxdpN>Gu5C-*O6#>=HnVbZW z`{p%vR+)%x4F(eZ3Rw#{X1+ipfcVwKKHQP57+M(td1s zD$mT(+)}-0NpEJlOy95364XCJJ4ROna4NUya$~|E-(bK|vrBC~JT=@4mraOsZHV1* zG`1{lU{72eAy|>M<+hwS=0blJ!{)UJcvS8xLbS12H(SCCMFU%uxl{{tpcQ=aW`9CD z$`RKP8(0CERnv$F;`K%QPgBR;x%^x`pK1AgZ+_+2vMtK47EEj=)-pYV)S4Hxp)z7m z?|-#nYyTH|{u|lq7isfZLf?YQUua;5UT!8EB81?AoOurbqJWAnEj0Fkx)R5=d2Jyn zNMP!-2|O($6QoV)q=5hF@&T8kRUZ)Tw}Z8Rl<$&hTg43XjQ<3Im*Ic`Dt_GpVef-| zZDG`ID|JkiKIH9$Hk-bO)#RuDf%wxhL5l@0#9(K`DOTb+_m8$kVkmfpQDmYBa8~)m zBHo5Ua=2ejjq66B0%g5Mc;@%(2mq0Z7}Zz2<19uM59j&7qI-;$iLjt|Mmp`V8+7g_ z_nFXja6Y8cQt~JqBL#VwcFr+5suWTfzgD;vurJmJVvxGH%!}MKPM$Hh-mX3Duv!q6 zd!Q`x^$Bxwq8Hrgizf1(UO+0OQiX!0ED zC&34*cY8gZv)_s@o1G}N?N?r*ijXn&U^@h$xB8cnbjXwG9sn-0hKYAWGB5PQN`wRA zzW;=7xK?_WR``jy@ZNHg*%XsMeBz1S(9X{AleZ_*^Fb%Qfy)8(A9>8;>wo}Q_r2yz zP0o_}G}8N;*&W%Tgi;I_{1rhgLFKU6i0KPy$zgyOu zvCCaEpe~cYh(*J`T_coS-UiNPENnhz^w>Bjiw1QE(7H=iHbUCGEFAJTVBa^+fso@p zm({4h0iiPEwl&C4-eKBmyzrLWL`*9nMU`!|SF>|fca0KD3gN_iHw3y z_|^@Vm&T@OCe4`#{*XEST-J@(SU*c#&xrpO^%H z|KSF8CL}ADy|wW1#J04l5#j>!_X3!5$)vr&ZD@AaWryT6jOsGLY0stDA95WIY@;1F z&R9o8C=h(0*rnE76y&*7ML!30bnIf0M}ni(IMN^~XsQ1+ld@^RRESd|2kL}fG@KKP z`N7un*g1>|N0<7u<&*NpE=~i&Yy1p-Nz1;~$}~riPz_)=cVb+OYE(ykz9ia#auAVA zTPI38(x0030c8SvO`Hwx109P|bj=($NP0-ku|pv1RY)sDee5&6)~IO(M+aMOXLpC# z*|{H=GXC$-44d|Iy^Iuhs;3-UqgkE?YUIx~-@;Op+Y`1E)*LEyp1Zoe~zCM&DPydNjV|rtrz8p04Ca zo>`@g4IdpsPp6$up8OSrBMc?jmk*DVP&P(c>u>R{$f1B1aCw9xbXP+M$7W@*j-s4z zste(=-Ng;0YsK-7->sP}quJ*xCi9OuwYbWP6k+Ql0$8+xt ze*c-ug>Gz_=k241riwq(7)42IJMwe2pbMb5qo}n1_)74Z-y_^OoUa zXlbFk%9Waz*ttXIb1%4fd-?r_LW>z9->KA z0M+Ag|2PS)%B6BS!^E#F)fv4}2A*r#WwG;{7CR2_{3_Rg+PR;=0{Wh#p8*SpZkJa>4BiwTQ?4brMm?dOUo+k)I?{}Wts0my0K^N4`)*G9Zd z4m@w!BcaL=ftx)D>FAA!zEOgTnyi1(f2OW)8zz812? z%Au&)532P^7+2?^I6XYpO8>LPnEO>%+7XQuM>^0su+tFHUDI~+(E?`V9Us=sQjHO~ z*RR^$FzMP|>n`{K0ImaM%9$J;cr*L11Ci=!K{184JIFg_S+AX^(+A00%fE)4vPt9J72Q3fF6Zl~bYuH9!6!!NR5Zfp<*Jr4c8{zaeo zBS{4L%bq*vE3*hK1|M?Eqe%&_(eOtyCa7y*R<${-%$NXV^vWS=2Sg_p0TtsysiTUd zdz%{*$oHn=Elt&W#w^DIfLUV=B@NmY7%5Q&2+cn@?MaPObmu)$N;h*IR8^a5@AT_y zDW{%X<;=1E^mo(reDT$NTiiQy%g8brW)8HTZ>alKP(EGB)ciO*RF6_noata&r4? z23yLejmTCWb@w;YH=waF5eZ=So{A`$}Ky^IYk60i^e2srNp`mT!t>H{WVnt%ZW z6d)`Z3kC+kps-*p7#j)#%s`Mu3$EgY)#j>Zs-;L-a`n2kXmo}@)PAr3|7dLF=FQ~j z|A6zX|L*g88n2Ik@n=l;Fx*fth1$+tZ%?iCC!f>%@R%)(rhK&Z+hgAteN(H>dtRTd zxp*EiCY7&6`ui<^&D1776W5)nkhfWeU6#)p@w0`vysq@&r4_12m~v8-<`WdJb|S{7 zDH2z)6y$T#CZeAx6bT4c_U5<7-=FmL#d`Mc z_xJGC?^LzityN0Chs%FtJKtx>ek=K(<2(DFQ<#4n@S{uZ?0@!C{olm;9#gMMt_}fm zsOu_EZ4Qacf61Yfb=Y>qiJ|*{gGbNgUByB=h!P?o^f}}&SGU_9@Jo5lU(JECk+ge* zHeWx5IotYaW9T@ZFyK>|iVLoiS*6bglhLP5}2bQTH`!h<1- zKrWoj$F8*=INx3LNM*@2Q7Tj&Z}(#D{xj>JPVA@P52N{cAJKoS>L1lL7wQNQ2g&L2 zc+0EHKI7!b7KKeN@%(z^EUwpo&TEgz82`o(r1(Ey<@%?coAw;Ntr%c<{{8Pu_nHUi zJavvoe)jSbNIIk6EY@Q*UbN09gHER-BNz@8r%SJEcXL54brS7qRV6f=2+HFb&LMO5 zkyKw8Mp)tmVL|o&|NsAgVL(_gCKUzSEl>VYt5~{UQ+t#o3jBVZ7&?xNb=k|1t^GnWN zpPRD1_-p$5w{geQ58+)LG}*s(LT~^2@=f}R&TTQzFM4xrlQ!Lz7Gl;_D`A>jSN4ty-(Csn8W@9dGK#_qlHejl|*0|uZup4@OZ{K_O~o@TYWFyZsJsE(64d->HNW(@hB9 zn9os5Uue-Hai)tBVy~6YEz`Y7Ayzck&DrSoSm+P0u0bhrn!x;7Zrju4zuV6*d+&bU zOzUZ#}2O%m0eu$C?!@paKH%3fdQB~#^fr)DuxIpq~cv%`k!I45uG?QgGlZT@^J_j=_o+Y1|2DRwwdrz>|28g}(r zt2#2VYSrJ?l*k)S%Mh{p2HEyKJ@8s|aCiDr0d3UjD`M2PnrwIOd6zU1(*L|PI`*di z7MLfbI0{7bp|c1cCOtjE$bshoQdQ~0xfc&LZSfH@+VYh9hkEbRIvE%)R%|q-N>V6r zgLSUsEw=&?pytOvzyHO+Sn?VR4nsj5{v&$Th*qyJpWcmE0XZ~gA$KAungPg#xb{>v=r6c=xwmH5>+<=kLYkL-Pmx$B9M zyvp>*L|20oY(&1h+a}d%G0Po3SfLYqUn=QG$m+fiUYS=PW7z2;wWV`Ku)8<%5wglySV$rXghoLT z7+&5lxt)08RZ2|Kl9j0!Emyr~L+gigk>As6zT)!zisbY7Tj|*6dO0dL_saS$;oa9m zxo~u)aSq;JpZP~-5D!j7=deoL-(AFE&wQ;X#)Q z1_Hx@Fks9m3mpc*K#+uF5gWX6zH^F{y~z@kk}fQ|P6BxUL%YC@7f&yTU$>`Pr+?Y< z|D7Uw()4!~peM-1-cOcnoSeYxe;z5gp3R?W`(MqrjTT#yC9V!Kc7GHK-Q#9d!2jOb z{JE^r(d@&WomkU4gq*r`vdP~5G~rHCQu$o;S~P91{eKT=XY}0-_#+-q(mT<4^2?jx z9~&?KOxlXkuDGND0m**j4?;p2E^3-V`>Z=p{doX!DW%rW8s^dBR#kPm&n+$&nT$_S zWPGJm1+rtnTTh$}82}IjZ~y=tB0-zRAcz0{r-T4lee;-rB1O1*xs?T4knrYdQ5*uZ zc`s5A+F7;H{*bTz!i{&O3)0tTg5VuE9}QFPU+nEXR8NyEQ+zP07#>0z*c7Md5Ysre z2wn`wMgUP)m=$K@bBz)w>Q1{w*gCZ(JziOWHiqr#xA9(NwguBr12$r7zgQQm zX>^@c zEG;K_y+*Z!Yw3qHN;Amlm3YmE+3cs!FtogK@VkgDdL`BQ_WR)LX=}%~`wIJtsvJwN z!VW#zcmMj>fNZv&Wz8PO*~lM&VT~k3kDr5E|3y#7IHb-s3$#D^kU8mnG3_OVG=q9@ z2NsM)16((CFk)7Q$Gm>q9An_I#Hh)%8k<2|B|0kl7V1SR*z9tY&Gt!iUSR)4Q(c(pq0v zJ}ea|N}NX;HpO0o1YpmRkcE$b0iYHAga3AHcMrGcPjEtgb4D1_#(snSSjrWj=b4@qd~ z6kb09H*>!0!p3PZ!qfNF6f(-bbZJ0Qvh+v1H0@n?2@|}B4k4@Z>{ohp=RGoB{m*KG z{|xM2;U2-aU%ZU9W}y;A;lEKWao>xEr);E(e1x{X?TpAT{)+XI0X62K7dA|$z`vl` zS2eo|ZstP=)5a@tLO{H?**sr_6&HRcmzgxJU}sfuvW>_O4tZ$`6gSQ{FgdK1v}$T# zfR-ad4*_}Face#HS`uo8B6k=?ZXPG|n|e3X8y&2jt*C5>Wyy-an}RZB4VQZehisEkrmQ( z()N#HvmBWLy!ddtiRH5Dv`$1`kupJT!b$WB+0fRd3JE^a5{d+nrUv4&J+XnhsMvY6 z;1@iaNJUHDLlchbVCQf@m(TDOy4 zUFbnorXt1K|wFY*89(9uhEK0a_Q1$;^o0Z|^pbQqtm6#Q? zP=q5c)CBitX+Xxq#1T5OnkrF5VtEOFdKR)N>(fzob*~pF&F;-7ce}mjnS&y52EF2$ zv>m+f{7S^x&r(h;wqT_TQ8-{J_Ar+Zg=i=F>$=@}pHlG!j=|;J_Qf0Iv1`)k#vgcG z%5_S2z9zCzp#@6WQsZ5!?OKw!j&Z{Uz1>^AaPi~QFyf~^yBCsGl+q@7`pG8ABcCmy zyB2mm*r1xoetGpytxVbkMIn6G{IjHnU1X_6JRgGxSb|_EZ7AMbLmE_WlJ;+j<0iN; zk`u8ldcm$DZ~_}OBVSgQSx`Djn`{Lp{cGIaZS_BLmI0Qs#^p%Y^jx7lhR!Fu$a2L$ z-nI;?cVBt2hCHM8>vcBm1G-U2p9j1Ike z$|tZC+UEMl=;Z+90EqEaEx~Q`A6Br9t(E)AZM+BwrI2*_!Qj&mU$wGXSr9(t4j}{<3}(Ar?I2q* z&l|fg2gp8~kgpM{;>81f1LKO}dymFR%Inh>m4%m|I#;T^ww(+@rx2?_O9s`Z7Tfwh zvQODQ!ioDgqy~8!S#?WjBN6IiLj5NL9{wBf0zkZE>2+I?natI+6OdV<>!W!ru735r z`Gq3e-fc;q$k95BZ86sij{keJQ_k)dm^V`b#QA1L)|^6jNJ#^E0FJ}Qs|vD|kXEoA zFkL&|`qhAgu@J=pB}y(*cePFmf?;~ree1szzy#yqf12Dv5p(7GIx|fGYpc~Emik&VcC?zm*>{YGq>uCM#1mu6?ECgM5&D?>Dul?}U|j>L zD6Js8XfP^uWOHI10Ej-pP2kN%A~L<{1>Pw;fkP<~AA-7&&li^P>(vZ_a<_Y+dDXg} zqy!hk>nw+y76=+b(R3Ux_j>JCW>f2q*M%Ufn0xgCy+U|CX6ht0kM$QZ12P3v(dw9Q zU708g3kHm}AJ%gSHnkg$KovI#6bw?{Eft7y>~AiP1Yu~5as|rl8_f9Txmq9NsDU*- zU?LsAyL4Bdo7(-5NqgKz&o%@_G4c)3`KKn}lSN+bd31C`k(_v$Uaj|DHr6mQF`b(D z_jhD%T9>U%pezE`-LOR;75`jav+tXxDy;Hh3?lCaG-zic4ql4m{Rrp_{$|{#YQnrG z;@2;0*+35qBYMrJ74=`oxc};;)RzlvQIN^x;Z8mbouu-fjNnxL9K$#<;zo{%6@-^5 zsZxg}xt>}kN~L_J(Fi$G9Aew`G=>ufJbK~FFzeHoG@DwnzrIkE2WYRASCY8X#6O#ep-y0mHMn#0%UaS05t!$wxu;vuZg%1kG_^n$&S03C&U0IX|Fny#jPH9QKTZ)RK?r-dv` zPpADoQMk5f9Xj2rhH-bT(hn>Z0X!@WU>Z@%Et@JgF##!;yYzTo2Mzj#G zBwCT0E&D3=YJ@vhoYx_6;NE$sk*0)eLB5>=ZsQm=6woMFMfz1wBoot{y zyCkouonIE5Iv1PX@-Iq?=FSQ1h}+|Cu~_|e|le9%x*E$bY1 z0M|~*&2N`=TkyHTj{D%8BVQ*8+5gQ6j-5c3)2bhcFHWQ*bpvSQg&U#`%#uHUd{&HVv4J4 z*_zu^n@)rJaWq)lL9l5jF`%!q0lwTRE#N;J_KXP1(#+mY`a4Os|33s28-$aKfQ1GC zO)vgJ#RqA68j*l|#h5Ot#^>P2a{!&M`r&W$E2w!fk(7-Z1np##%sIJ&hq# zDJaudk78+rG?$a|%Pm`{1n`L~z{ibH?T8QXpla9RHWC`S?=vaBi7`*~^!TIprY+~> z{xy<01SwPkryEPQTno9=ssX|bgN)vQ{Or~{Vk4Meml)J+vHC!ZH)ul_4T)Tv_xIzU zl$^++U3fR!9AYKR+GP^YZ0HO{#>igwMN#xtr2V-K+b7-~;s0CojCoQwiukCH!j zTNPgVv5T=r9+?Iefl9CM=s1b4NKpRfNLMTgK8@L^Dn?2%l1x z_GC(m5Jl>Uq}bFqKbnjjJOIu4F|uBE-^3d(P_~f`(mLj&H4~dH)+9UxU=bKL%v3+D zkoZL_NE;0^VBagE-IEhF^f$Ms$TT&rbN9xcrP2&ma+&9YuTin3Hl&)$4H_gzEXHV& zxA&d7_*4dOP%=dlTiUA;7TZ){QnP7G&;~6wXsld$1hUWP9G0ZSbDa7;LzLseDb}pZ z#k+&qUqT?r8k!zi^EL!JA*u7yt%U>)u3$R&Z2LBI^cWz9+Lr$!hK z#fsW;^uRQbCtQk`RtEz;6(O}D5ThdCPZpEIbDYkOX$t#8vLkUNR_GUh}Pn0fPpnMn6t;Goe- z##k(g(yyAV;-RZc4-xEMUn0x3v(^}2t$w?%;0E5I_g0NoWrqqjJif5#k2+XPB)S1l ziJZj8{gkT*yMRCH$LTnTwYCoyCChrISEJ6c9g{Yi%ez=Px?=W8<#_*bDs85V>8#ej zsiywrERx0WbfUd!#MiWl2C|!8@sThDvxegBdD|1c1r-@-VIgnSN{zjK?iQUV(~8#lPy3crf#&u^=>8Y@SRn({Yl@Cb&;p~b z4NaAJCv6f!a2H1uvKej#AC+$%QmGYa{7gs*Bglo=@~HV1tF|!;=FcV3UPyKg#}Hhv zeJb|uS7z^9f!#Dm{&oAef~53we|N(-@%{x2-xu20I7yC8$ob_hNc~Ywl1P|zOl&8L z!$*$xmJ8o@iFE4QEuAsP++W;AeXE(>@2=&Zy-sVsn;QtiOf$9A$>dD3N$`YUPI$5g z{|^wFhy2@0Mf{%9Qn{lxA>hT+sFh}fYTc_2dGHr&8S!5`9}-7E8v1Dkq}T{LX(rbc zVZr(`uAW24l#U4Ad-m3SNm>BKasjin4!~E5-jI@oWST_Qk|UI^6J+J}+dv{DKSQj& zk?*m&jvn^*fz|KhsYEv#>r!p747_c*hNPW^wfid8Kl4bQ!twN+ia`Y2!aMCG=LJRQ zb{mK&_~!<_Bh$B$N>hO!a26TM2EoBem|gxXLf&w%tsve)Rmn>mYr0^|Bv#1V#B0)HVr?@x%@DX709ETM!R3`wsO{Q}G1ed;TQ7?Rvlu-o!CXuy4$6(t_-G z53YF_&b~-tBh%*rLL5jRpQJoH>dKx&igb;fflm>7Sga&XIJw<>iPIO=!*pzu@XK*1 z0kXWFEBO*i*ym`DoNi$r<@ynh@*u$p@s&5S4#uH}A9HXJ?+5u~G_aP{yyeVp!b^?L zxz5!938bHA1yOnps}g5}J&hV~(xR)!Pl&U;7+->;ErOo^SqQt6d^!$m`2v|HW(*L` z5*ILfC>B9u_?I^u3ZDn8OGO6M5y}CBZt#6mY8lq5@qEHQp<@xQRxfShKu+?BP+#E$ zibD(qhz2x31vtLp??5xpyO~Yjoo;05&D*>fG05rGR5A;YU~oJ2=37BgoDu46u&gg} z>}>43q&8|PNB#dKD+Jf+0-8t}32;%qN7kVpXi9W)%~fl`@U`8&MZD5P&8jfV_>stS z^=qAIZ>le_1Kt6c2g$ue&|D%AU^l6PN4G8TXs%Xw6oyK;jT7mQ>Uym9{g;p@Lkk?| zPEV$WlG|}}P+d-LOMv1aa{PfL)Ope-rJ_-)1l%lMNPl7|CH7<0kgP|a@^M$F=Z5KT zBIuu`Hh^pb-T)k<%EAI`}wVC>_u`P0fiM z2%Q1&{+5`tw&T2;5uk8CD@egQwoI5N)PjyOMxkA8jFbHA4v4ogRe+SBV)I}7^vgyu zT#hN0QUt=S5(}rW0}AFsMa8SJ6+mN30j`@O|CzjsmmlWh8!2vdFzo^$bjh3&=5(L! zbU!#t>UsK5?yrW4vta2ldPb$B(Vu6k%F(6tzz*muVVv)h&8d@ho1FICoR00DMd-rV z@vj9Q%~n%G8MG)QMhR5kZdg}gu;M!&VN@J5C8u~lgIS;yI;CD~W6v`^g7<55umfym zc-geZPQsPALD*+o96SoG4SZ{$_k!c!DHf~Ar$TirR7k-0dgfwn?V~K8fJHe-rti(< z%CMUYkF=2KHDuGqS-5*;7Ry!FlvyfVD}fF3ooI}^pC0&auh&$>u~({5J_gea^Dn<} zkzFVUsH3c?6uB0qV2Y%LBI-tZwzq|;4U6#<|nm8711A#_ih*$5c77_C_|aecXa`2 z6OMkk;)qDwPR2*LDjC1lZ*wS2QXKKJXcj10 z2{ALZO(hxaCFQVl2|JlcduM&RX7aU#kxU*iL7)StvOEla92`bLpWv!%vjT-Hd7!`O z`E)6g3S?|CgsfC>Pq=w`hriD)@{rW=0ZNFpw$esxa6I6sR@&{`{FuZG+*y44G=An> z+L8=5oW)FS_xYe=U2y_6moCCJ|4MP$r#Oiro1-cdEAHp=MGC4xEFbe3Lx7;B)+Wk* zZM8&+z_9WhGxe@ z|2j5?yVllSsEM`ZvlI1&7$D-K>p-emBE0=EMa!zqc%QT%phi4OWSbBh*F`-p*GQOU zHnmy2gXbEsWNa=GKKGn#lF#7I?%qSC>zK)S{u^#e5DOugn0^QNnFSrqmtk$1tXaJ< zO>C^bUHFi}>1H_;i0f-ziZKGHg6a55c97n~jR#)^=^?f(ZRsa~A^>c+mDCK5Tk*YY z4<`~5@_N|$7O%cVO&Vx}4l`lZlpGIz=l4*bMkrd8D&@tk2~?!1-Z-jyR<8a=?f}rL ziVoa(r3~QKTJ{aPBRkYz*9|+b^8Zas0KQ^Sr{Wf#z^xU6=%__$e40?+;Fpy=iEpo; zzv%g2AVNceXi6C^R9?eiQ>WTMekpqL{aJe3ZB^)31R!8wubn8hZJl3s)S$2+Z%Aii01E|2Qgclm@;5IOha zusmc}TYC_DdhJ-1>h#xRPMd1fi1pioBgKY3|+a7e(Ed#iS$F#_e1S8kq?2bgY&8;v(Z?gv@w2sA5Xml z^RoyhS?rt&LegSPnfMvb_?tWA_IaMzn%dwT={=Tmo_s^+6>CHwah)Nv_bsxnV z;v9m>8DNPYp?fmFz^U%VYfi%MTl^mW*s72Kz^+n1Bn2iY9{GTn>5GMDe02+Jw2Oza z54BUO<e6F?q8Cv z3g<*%Q*NUghSnfW%dl4^;A}5OLN3_TWLN%E$L+4RKwo0mbV;d6GB=IM#AE>Dua^8g z+Fno`!)>Ypj0Pt!!O;Oh8L(Mf%@t_Sw7aUS7H8d#nz^l9PdbEx-X4uFy*@m{-B=Rh zuW3@Y-zI_m$adMZ&oH1)MyOF1$eM_pHbdl*TXZ638TgMKrpaPc!vBWl;>~;#1C}93 zIEPB=cMr<)H*`QaOYYXEx z$$BerL7RW9IBs?%A8*%@BSt8Av*8LqWVc20D*^xj0{}iW0cxEZWv1>5@M^&U1QZ}F z7#ju!LV_@$Oc)al0>VKsNGcIQuUvO@yu7+4<5>&M99F98rH+}U+J7hg*67*ve-r-> zNjG`!ez%#OcU`z9;xCE`ISe2k)wKC~{W>r8BSLPBGe|bO{me4e{qdEvG-l9wO|f&a zHJ+*YO;nW0epnv9_Q0{lrKVrr{=L$CL-1_*UC;*Ga;kf+w%=-y3{zH?2>egmTFd2{ zQ@7OPX=`h?hAGlv6f{FNozr!y$@{(HY`H74oTc0NbLOaVLbJVK;3|b-Ys9@ZBMGz* zqV-awC4bJ*0uZ48-~apf#xPJUGz$ttL17?dEF=sGLg7I$P=p~<<1+Inzr|GCm%cU3 zxsyuOwUc)%L-rrx7k|02Zf+ux3*S=35ebx7IQ%hu9IJ(fQ&m+G7jxOyrRodQ#X)x%AV%E9* z8{!@sGk?_;Q5z@yzjfO=bOHE2?pP4Y5PVgCuxV6YRX+MAs6$b_Q#K92ezpY&d;44S z6k_#2Ui)a2;?|Hub&r+b{|4{bjxm3MxzN&J^P|0vZ9U9%J5IiLH$_1kUk{xcsr)Z- zP;mz%Hoqpqz;&Hdg)k%_T9A;06@nE}GB&UX!h`z1KmY#)0bxK`E*K>S1j2x@U`!|z z1p>i9uux`_sPdJm8w7D947nApRqE$pvZ|3Lj8#eeqgru}>5xGSLM;-Q-W4#&JsqupH)QCuR4y`%AXtbd3Iu{DFty%qUG?Ai`(@*dF9fwoEp!|Y z>)I*P`tv?t)~-l?F7}~b=lAGS2)T`DENgs!r7vZb{(Qfx|DN=#gm3q5nl^;nWBncU zHP_;v_jz)J3Z7g0IylUC{pwpT#*)$L954~lDN3IAS^@w^vteAXHH7paamt% z_tvZhZO~^^q>&RQwr!5~qyd8<0sxKx02`M&i>{TU+ZI=aLw zeN$s`%az}>q#Z8#-HK3tjl*`*v9(uNTO61qf?R$>ID@f-AZJe=El+>@ddf%)drtmkMfP8WJH;z+HgFHdc)HnH?D*$X=>3Qpvxlb5Gr4{2 zTD;<3|6(h|L|AZlZyCJme<4OsF=_oMz@W37RLw(nf$twpM&i)z%0ba-Qu!m^PI{a$ zW*i;Yc1v&d3n7gg*=Xitxx7u5lhvL`yJYFVidpmXJ!sn(U zBbVk9dBE_bo#;(dyP2)5{p0wWzzc4b2TI}J)jp;>ZI-y?eQtcLm{S|ua7*=^$B3ppx!8k&tvbsO z-?^9lYftllnb`Fs7_U{j9(93I5}w*+;v=#vh9+*sYe~wTha$kf52!K&XTw(T%g4KC zy)uar5$}pXO+`h)s{t3(dqsf>xcmZJcu0uiRz1*Pb5_LkUEC~x`)zj_$1=8pdT1b{ z&uiY#J4NVIi(EV3)R+|QjGL9S!vUyl_@{k1DQZ*^TdajQJ3-)ZCD=d=wCyBYptgSC zoX`!^imi5KF?2VfXCU2OOshQ`xFnV`)Ka15Mn7azPzbVXw(IF-Wl9%+{=A%k%H(60 zq zR!@7Yu}N_`CobGA}wEow_K(8g*>lBVYG|z|SC-aGf2*~83GDs+$hUk@|&)@Q8P1FfXICUE#Twfmv@ z95)7Y1INcWLtc9)-b-8opqXuQjA;^22RqjcoU$t**@~TKYR1I>5G{63=DAU)Al~bZ zpqo$iJZc|W;$m+S&gc8ZdNd1t2*3x z9W7Ie%@U|Lf2D_Rdjh9*Qjmr1GR9k&M~=MpLX>fEUIV4;kHy_9o(J{ z)Oss_=?i!dPoybrzt!h8QZ{cKxu?^?Iu?tXxt+W$#yQ~ijvGXL9jI(7Wsre&0K(j= z`qqMQc~+P2M|^+aj%!UdG5J7yaNEW-u}@Kd7Dxo3oF?Mi;OjS44*r}g`n9yI2W+*E zUKFWvsz;<-YJ64FT{F~|gb%N5d?2*i`m{&nsaWXawNNP{1wr)`jzSqz`rHF*SpxZ` zUar1rXFnUGv#qxu|DBitBQBK?5!!R2Tt2@`>0cNVx~*-P?=@;RHQp)YO2f{>7czz( z8=vxD37JP1z8n%JqBSs%>pdpe5cEl$qIQn5C_B2hX2N+Vj(y*D-L}V}a49uRMDd?3 zmAdF#DL{qd0up-(wxK%2{mX17{kLEJ1f5Alhn9)n?jj9JMP|!Q>br4|0IZ8B)8YLR zgrEa>#HnD0=8FgvJQLIyM_nGv$P58;R=SaZ8Cz7ho%HrGOGGW;b;25wE)w}9D9spRy4 zboTG6(d|Y=lJ@YN15!hI%4tMw+w6#33{Lx7GFe_-5RVi^FBmIA>m4a-g& z#e$AEWIkBi5gy24yHR`9HvjXTzmxSuFRHG0q!!5FFpxR%!@HkwZAS>XYj-%?)IR=a zv#G&#lXpY@7m>KLzW8DX!(?iOuR|}M{^YLVfytEd(O?p6!-r%Qh~gyg$Lv)9_S`84 zsbcV#j&llUIjUVT@ zW&=zK&iim-*qFMsxLjPjy^+&XR7r2S=lGN}if>NwX+?avcT?FKsrQ&25zNQI&ysm~ zlnz1>S<-rggDt0&Zsq)GD*7)3W`||)x90rjWbB~*{C~q;EK$FWsQD8i*!^#bRB1l> zOk0T33jaz^*0yg9?z%tQA;Ld73vas&z&_F?UD~m>KTA}Sm~Lr0qk?~e>-SbYIDx`s}_9QjcPhA1_wI6iruZ->BnAo%6mK?{s4|m zGxJu`PFH9{;MVjzdX0B%?|5)cJB{I8-qA#gF%&ufzwdqLxcR2RNL+eBU9zrqz^^FjpNMjs9KWo}emfRMF0v zazp^t4!yjpP7voP-eElP^TBygw&7KYrzS|VJf!z%++vCn)i&3jr$aaPUm2`Of)!vw5OSyYWSGR z-MCS*3AY`#ZBBE@2*zk>tFOGNc7pr)W_7w#+yrx>6-`}cb8;PC^1>fB62$y}-)8bm zC*e>`&#+=$Ya!zu`{Ejj-HUSe+CAr_>Ci%!H|we>d1;BY=0vGo5ukSAD#8O%H25U* zfeS?J`5;7Y9lTXXdKsUBO1HX7>-=i9T`CrI6_xpI-Em&|Dk3_)1W~mQ-U_KTs{3R7 zhjH)=yo;FJY>540fbrfzc3z&HQ*?}}i?|O%PJ>j(JMKmwTzT_cR2^hqhNtJdZT=L} zIj^v;6A`|<-`#)D-##c*zsW<|i{q;d_s+Rp9in|0=hbVJHmqIqJuXik4{Sv8PCvhR zN=}iLn8q(SVHbjrSx`!;>k;)VDw!8{=GEA4^@qUpYm;8Z)M9pg4Jgq6)7zvUh6tuc zePhj7rGzjJCl!0h5&{r4hgozi#*X0i%P;Tgm1>Iyh#d!I+DBvNW3DMKsWB5gh34~a zZkQLk5<|!4&5DHL%u9njCsPkNWS=DmY4MFBGyHl)N*B!Aoa5>1cg15|zov;f+sg3| zq#!lxOPV%HcPnCbFS@$`A*4ttVp`<>Li*|8cEHm*vqCDPI{^ZeFb-gFq4Zr#-GhiL z{Ix>}^+xpH;!)o|DYPw!jnX3Sl~r#yDFKGUZ~4TAxz$5mE<1HGm`sXtWMZ@%S_GEC zQP%GEg5%>xBYvC>tUXiAA$WwV^eT(z6sz3>37JDnt_tBW-J zmsyx8;Kg5KDVMuG4QfJ_+~u6qUC5|(XlwJ!qeyJq>XAFZ~akC47A31PZ1A(Qyi zWXtX)hyaLQojTDXz?Q7dZ$E5~GPRLb;eH1;j*ynZgt)jarRD&c)h(BuiqGX;dSiOF zsw<{BdgzJ(L(&B=CTV#>_zcSmOqgp+IErAZ%P!FQU+f5%tJoI+c>IH|k}eaLl?vv( zDYKtE#d~4ZV9l%q!89+RtScGgJk$al46m|PW?3%<1usrFrX$b+nN>?+m-?cuDZC^e zu)10+2<@+4QOskmQGx?(2qy7w$t&ETJgY4C86C^~5p0}M#mv(}lTk$wK*@HV7&`2< ze$o>U_8{}#qYV1$QJk=kjY)WHPIRy;c3Us@xuTE0xis7UfXfI``z-5657RcHkOkU($0Ab)>Sfj^K4!x%z6 zqc#((BG%y+4Q#$Ao#tMYT|I-JUjS3jxfMF1)ux$wN8-#|s#bP2?HB zwq0}f>HAj1Z8Hms-vHlzEZK;FTaZC~6)o~XQ+vd1+lMbnjMXIwbyVG@@?)=w^IO8v ztJwR6lEfhK(a_S`tsv=#qICcChnk*-Sn#!;;)--KXaDV|MP_Vm_F~W+2{)t!IGVIo zP=+Xi^zNh%Uc7|63f%Hxb{Wqx&zMgAlVXbqQ6ZRjlPsAU+qn#!Dnd7w$_0h{{(*8f z>bp9N=9l$~8%n1C2*@1VI?adZy(aBF=mh%`45oe_JtcZWR1@>YHgq8Mt#3#Mjesxk zo`DM82%?<~OR)=SvenF>^e*1ktaX(5&4_&UK;~{>lL3oR(};cWmKqZAXL?DV<1`NB znSYM+Pqsh3elvhgEbpB#qtq;Kut37K1>Ux8Z7NLWI{O2b&AOTiTm-cS=gqSb}0np(A6J3YUkhApx1ZMzb z%*!4t9pD<##x?1&0MJpqB4kflybc*(`WI*@M6&&)zIv(!SlRz-iJ$Tnnl;XalW}za zitgEaj9^owA?^%R^soWDB^B`G$Q%X;n1F+P!I<>2%E z#slUfkt-L*pLI0*gsdENK4cm! z(qQ7SA9C3wOi2i)gKSk*NxKrkQBZw6GF3;a3F-7OGza!up*9=Z1dKpw1pxBQmfzYX zYGrM7HVT!hh3S{9j&5Df6HakeXoz+NhIN6?7aG!2j`%XF4KD}hy-c1UBt2Q1?OQX3T$sIl@>8~F#w z)Vh=jAT#e-kxr zZih~{<1k@-CXFD-zGjg%{<0d!VUsMUfSqtu0VQglS%FXT9exl~BUfXDdClN}$Jg-j zKk*A1&?eF*mQ_G@#>K>wdY_I+%sUj2V4&Zi2#De}8kv^1*5q!f_U~X*j}a zntclcCC8+s`=<)_rnoMxF=p12 zuRHysQ(yb~P3;{xz?F^MyObK4sKQwb{a9Yiz*9 zu@3)NsLc4~m!A~jEK{adkuhB_G!MvR3c>bCw38^9t+er#XH7{^1FiZgd*=&MyG8V~ zb++P;l8rR^klil_$7{CmCJRy}s%ucX-dhHPGMct!{H&m zFvJ5$vti%{bg<5>BGi2MtMM7(zjCn?MK|&x@nBi0UJGPET|C?4cS@ld;EN?KpRhuE zBEpdxv$J&~m&LzSH%HXFIle)OZd9KWj15a&3BGlYFYppxq#?rLuE2@31}NJc4OKLu zQT1vd9PWl8cNPQG&Y=A27II!ZytU!6u#3wCX6+y+HZkGn(83q{CI{g@6I#%{(R5ks zzLI-Fl#Wi3VVWDirVInhRDl>VwHswf$UJhV#4`~>Yy^9tj;0z^HI7lXMjT=m84RXzBg#+pNIDz)M%{2W{5*q|M z+==h6>49@Z!))H754tLWa^LQ}&Kjx?2@%WNagnVb1L)QN;!eB0=wIulJ-d(LT98GP zcgd@1MZK!P9UmfO{0*9lE7P>-AOfn%+HEYXI)zbD%{vgNCN&7ZRdPyHZMUK<)ff6>GqqYt!(!V)# zTG7dL|EuvlT0{_(D)mbpxe!NJCTFR00@);hTWKEGe*0x@ z%e{Ys;^Q$FUVWtbXSm{Uy;ie2_GDMoBI!@5S#$jf)@w;~OLV=iJLCSc5VT+T&`#*W zIlnH-5HOYj>O%KFkpXEqG{eE{s6iGhWEoSU^6uh7L;@v}h0_)^KQ63a)v0y$I1e4L zr=tZ~Z~y=U0009334GgO-6x@$SRRo91XLJsS_}<^0bszGh!zS3hJql9U3a{St|-<7 zN|kjHt4UD@(%l~a<6fREANZGNWv{5&s^?#mHvsZEqMuc;>dbyM{Id9H7?poHei_HW z&X(cq}_v?TEdRNAa2C9b}{k@jJ0G(qQPDWYQ*J8uIAVO3X-uM6i_;v~fi2|W8=r9xu27-ZMArvST z2?SJOYWv3Tnbe*-WoXt`q?EZ_RHV@PH_&w7j;)y4|1@;(@ZA!<%+9V|68V>{8^$|ZaH_`ejTH;ymqogte)>rkG=D4(@_=rcIa2^T63`HmA+Mn zVbgc}Gtj~YrL@+C$i{xnLM{=5JXf>kW3^Q1p+}3kVOx#oVmBJs?B%o z%GG3*7gt?mx=hyt^*jGxi+|y9oGyU*BiTwTU$tvqEWhz|~_c3t}d8HfYy?)4y8@2RH z3GM6b=X}53z5A4v{oSEem5c zgo|{L4oCqRPNWRz-D zxgw#V{SN;>SHqrZdo2!4mq+iCzNN#M-SY7GYU(LHKB|5IYh6scJTW?UZL9TOpB%X- z%+IT*%xL0&j;b|DW3DD$Yfp~rV_Pt31bYXtfT;h)}xK$a1$iEUDhgR$yAxu zd~2CIAj+Ch8j`# z->RxRDK>z)cS3Zn0sjIZ&l(`enG!eXcWu1Y>4f#Du&Edoo-=z4C~Taf zB$^HSY0re7n3}MbE;3Qb>G_$>{2Ey+7&MfV#c^RwnO}2H$G}ONs#bu{nT<9Y?`)}&@*%Jtq~Vis#cd;AX;cw{*Bv?4 z5vw4RXiC2m)kQMP&!qiQd#jdDh;{qAcjMb_t(R>c^v}Ao7z?%EN))Q zxI{xyzdSbO9K3QSbBxUzxHV%mIT|xZBOD_b?=ah83TOBK;Aq*S3QHv>M44n<;_glY z+IQZlPIN|E>y^r^P1uO4Z-v<8Hky|9d7ct=3k)1iPAb$KASM&u#^EJ$H=k4&_G0&; z+hF-oLw47*XVc(w1#XSxPVq`Fs7)`~q+*4nMiYe2u7=&ZS?gV9gIOq9d_1&#fa&-U(0Lu8yEl{?Rj zMQ$0^ZxJkNX0_9EOf}K0+i`Gd?Na|xgX4;Sc^;}(RHd=5T`!j0BX(~_Jpc>?81V%~ zL-ndK*&$L1k*RX*4s=a&%dw8OP0CMwDqVO}qGCD8hH|P*cE6RKGXfq^no}yf+WO!% z7(7(}Eiqfa!cgq|{v_MFvsiR7_v7IUzH;Ww%I%E-g_U19l)I@2wll>tw=WAShn*fJ3Tvf8?v8W9 zR%CRXR@XYhNWFTu(*?F(H56jP`3EwCMcZbe$>6bdHzaBxs=0|Zt}`RuxtiT`NJf?Y z|DI|?W=e~f1aG5R49|ZhlVr`f`{(kq<7F+qwBD%LKl&|0GfR)3%jz7e`TE%=CpuD1 zO4Qy0HTN@bXxACpP1s|;?L~p?<1nD)?DkAx4s#O#d-SaL;(U&D=h>ir$j~TWlax4OojH3NJA@BmfEk zv1^R9a07E+YQO;^ohHTC{ju7#Qx6sdbrLenZi+ zS*-GUufAW{u-X{eHb1S8BSXK`{oZyyCZk7-@MN7p&kqg9?fiztg;l6R&6IqGuF>0uc&%C;}ESH!9R+55Ys_`i;tWh!)j*&bHqr0LR!-xdn zGqiGcV{hWrESPd0<0I1m*o~$-Ryh{J> zYJo0kcD^73;ab*<|9*L12@yMLEc9~pnw^hGP+V4b+AV)*KXOM&bkK8^Kd{2W3Z!pL{a1*?!e^Ra#>PTP}c)aw^>0;yJ zRLS)1Tjnc`pc~G-RveJk;-{9WoJ;M$N$fMq(HdD}l1@RJj+jX-I;ZvIgVP>-L+DquR9R@zhgZd5egQmIqE*wM?-2@ zL*Q@?f|$jl-?u=L`cf;KmhM2i6UJ%e3WPphiStbCgY!X}j8Bd=Ki9lW7-09f!WO6Q z*Y#ss#0WYu)I_kxhUWBqa!BIEVKvbQs|;EN5sOh|WH{+P+!%BH){1(q6<#@Hg=jR@ zcV=}WeDENn;?{rrOHiX(FR6s;%lkNhM3v9S&BN6;qKYW(2UGpVD2DGt%QU~m)W8Rf z5C}PSAA*adru_rihCQIOgQrMQ*t8z4g0iBjsZiDB(yV#0!29Wnw8}14y4)1v(JV`l z0$Dc@ZtPCkeVMAy4h9Yrdz5a|UClCpfrwCs<5{u<3at^=t7XGh%JEe%Jc`MW67cd4 zYc?|KVZouafLFPUO)6*awIi8F!{hT>FyLlry)iCGXkA}?&z^u8b}6=xK3N+=B`uEu zHol|3^t)G>y`0d=pY}w|6lz|6ZYzT8e4gsBT7S4 zQ{_16WaT<&`sSRboWEw~erWa!L%f?wBstU$nHDNdXRaj+r=?Y;LWUW9R3af_arOMY zU?woiaCqC>9yOXIbjI7(aS$85vXOD^ORG#X?Z+C~pp^Aa+Y~JkEaH-a(X;z@Z!(F~V#-k=%C^aRGDsTyPuZ=8qj3aw_87UOr_Eg2vm(K{N zB9**lBZ3<$$^m_hrfsWTA2^=*2MOxI$L-eQ{ma5nYq$z-J zgIGNfPgOj8D1WF;e~*aC!^kM&CjDVof7L7ey&c+G@~EZTJ33C|u4fgb3g5Edu7`P= zjhA|5_)v0p<82~`ic9Qa?2g@g$TK8GYk%TtheQUC8kDdiRxrLN%6rzP8pj^$#AQwx zRK;K1v|=K-kgv{A62b$j(K{~hE3r;j66B|6GjgRK7#i8obR69>$r(@jP6 zYTPYdQlhB?p#M6Ac)=24A#+kuW7z=^>s}_90Q3w7&z_o))QCKd(%B>fs76Z;T(X$` zGJ{CZ)bfv5NJ9lf$dko^W1sMW=AmmAdcV7}VL#*8DF}>5`*-QLXC%lyfp0?v%-sa0 z;?~(Db|z}7RW+CFF<}~^k!BurOVW%6UIcI~3+UD`kWS zGLR(1bq7J6J2^b2NTzUH1z8rxM;PtKpE`ZWENs8MLzD6<-RyK~2C~!80=Hy`+RAq1 zSEgVs)^Yuy-ESiNNT0AZ1KoV$=7)BTpo{5?{f`lQY-YlBZI@#u-R;Uc*h0qJQ<~A> z_eDLw^$n@gY^Pp%56v=EKbh8u_Fx!0sk>vcgXc>G5M%zdV<+9jV&(JX9jxy`;z=?~ zf^x|20SyqyH0?U^QrD5NyVbfdtw^gBTwIlLC&%kDF^G7MK*D^K@mlB_$BjcAqmX`$ zE7Gf4FqyGHn*r^iR=#3v>L*vTl8Q|t(k;U>XOk3KrxUPG4;@Ks?3Ux5{}b$91_vXX z%0u^7gbc|lz)h&+D67Uy)C5tm@D&P)g`ltIITY|$JYsFJjqSZO=QrLzm#~xrald|sMiu}F&J4Ck=H04kuETd+LA%FTcA)i2}Wc(9y z@2@~31mj;!>D8?3ZG@=s0|>ph`0k=_|I2#+nP7Wj)$Ur5UA$ZkDF`N?Uo^)? z7+QrZYxZB3Svkxc1T-FX;5E*-3V+K8fk2ux6i1}Dw~&!h(Aevct$%aI2&UFS0%EYS ztT>>US=hlfawT;Cugy$nk;AVhO!6imfc>X=HM?$tlcWCW1HSee9uvvfP?_UyGrbB5 zFt@+wnGb)&-akkbCT~@GsT)brcuv_we3;nqY4?fW#*DzpduPQ~WEyM%+Yf{G*rwcS z7z*2MwN}Q6$25RvfTvi1%aMfHmoUY3)gV7EV?}9prC~^KS;_>WUvA)pD(POg%;mGW zWhP6`F>U00P(lXcev)va7j%LPl4r-rFEv;h3hY}b5XcE10B6hvoFD#)AmwhMu#?>M z9nXew<}6$Vr7Z)NgUmvlqEeb&2Sgb83&(Mm@A-RRdxi2Cb*>Ci#{MCPut~OAxc~57 zw#RV7Tq&tYsO}yYYxnsHC(p(|W3~Yhm~>q6o$$j*{U;Q#ffa^NJ543_Sn1b$2w@Yt zF@y|nh^^@;Cvv9YxJHcNr5>~JVncar?VTTt;bjW=&g#@YgIb=BN3B~!mZ9n|lN-^a8xZ4P(Am!sZ z1$#kQBjdH@yNMMg~Lc=Args7J<=rt;y+qTzTViP6ddtrE82fz4#UD#W3Bm&*_!O_?_dz zi*urQjxG^i49M>|`SA`KxX>}fh0XWio;a5H*Y`i`vR21jWhB>XCo?(Qg-@E1LF!#m zKdwlW2kjw4(thW%m+H+#r-f-ivKb6m;_KT`tWXI8uHy?$i=YrE z{S%`mU^&R!d)?;gViI;_J$w7u_FY)h?Lc5fy?k~5NVU;}&yK~A2OlCIW5CQSeWOr} zH-No`2~AtIFm>U}L3>Ua2z5Lr>J_a!6LqLej|OU|H_;|GUvwPwA!&6B8c|9(*z97P zSX{&cjuqj=uigj%cX<{{?P0#lix}(Gw-mYlh*u=vjI(~QwR}VY{U}!WY_=r;*;0gz z#(5DnvH>$*KfKf6K-q>Hp%fXCjbxY^r+EK{+ybTr2!K_-E0&j+jLHE2`a_!#temy1 zaw-s5E%z>(Qi;6iNGPoPw%ZYVNXG#LA|~{Wt0%&addOkM53l<7CR71*+)5B!)wMLh z_qo@MTn=70*`uNXgmQ$xY9_pH_Q(V8oUJGvBP6p*J&y8FIG%P zw$hlt^yfwS1fLKMyMZ|^hSNt7)WlbwaHG)ZfbiPo&fqiyWMD)msw;q*0gyUx!$VbA zG1zm`&5{f>lnquyymf!W@02L%Vn)s(B1Jwk=25|oLLYLFaE-SP?;87dYcNgf(%Wzs zp|@oVx)uv%e;#K_8_Z2=A_&T6-3Rcf;XP+Wq#;y2tD1iH?Y}yKk8B#jU8yt59~r+f zQj;{V_ByNf8WR^S=ZmiPZ9NdiY`8XDp2iaVYX0+t|^bYIRG9XP0S z5C}(plP%?iqsMg7v8n@41!QxwTKPO{(m<&h-2&aR9EGcl9pHn$wy>V>!#UX&X9(fU zLhWS&dORJ;H8V|ekTgbKq=6CN4~_>^zd8#iPCQqCs;t}Z*aRgRFN92X&ZHpHQOL+$ z^$o78v)**ezuxcW5J)aaTMdxqVz2SEL3d~9g)bX>S83h0E{Ia!*&$(S?5~3(>|pE` z1n;LeXzZDk$3V!&0g+kOH+=ld$YTqA^yZcAFam9T_!5Uqn(%QMuVxkmq{3Sc0+E}- zs<}E)?Q>c$M;m%PUqM-|uS2pnMUu6XUiC|*<{-#?!Z~86vRV#UQet_XD!rD1zTkNw z`Smk_M2@qm#pDEbli@rk-wF6CY`?b-!Epvmg+eG((DlL1UtA+{XU%qTQisSq>53w{ z+r2=Xx}Hix9uA3RA(pSu>y7&F83*|=t`?Ggu+iqR@#c)XF}|b&TE9&g8j8ttxeBZ{ zbap-gF|dsEsj*jiXG~b)*CbNMH4K9^-k%_cGhlK`-PD3Ax4>0*I_oUyyV5aeS@6l z_mC;vZq{6gp91HJCh$zrnXxEK8_(*;&(liI_No1;s|ez)r^JP$C6ZHqlafCtao1T}6hvxJ0hoW5=dLSK@D& zL)Ur>ms)_hij$zqPiwAv+NzgFz*7yWFwNkW$|!mMh??w(g11^RDova&txT%1qG%`> zoD%mot|+(M^Oq~2K^4&VXf-LMP0@3SUZ>>0WbGihXGT^koA=-A#8=k8#8rE}jOvTu zWgc^d+-`$F3ED=#a2+v?TVsa3P|t&%#bQ$^QafI}enoeDgM)|pnq;esY~h4f1XP!X zJt4J)4#us+M`w3SodXC<-6OOYXGuRUw=zk^Dl>uTgK|xNdHTR3cF*K%-(62l2S75O zt%(=qX%Zpl|HEK}Z+BSUQ(%dT;>qr?s@T;OhY(-Rtk2hf_Ud8)rb64g2Z{L0OuwEB zklBk4cT8Etw^Hb0A_GPu^6D1lWRGx%wpvyc$wHoV?hhdiH%I;tG+Og_6G6HI65RQ{ zsL5x~p;)}}>d%*$+wKK$4(xQVqVS7BzvQpULojP=k%^(~aMZ>W!900-X;3pVhD+5P z_B}{07eZk_>CLi7891xC)j)?vw9c_|;|WnTl}9{}70nX6xy>MjB)f6dpbyHg zq=LbnYon&QsyZJbtT9voX|};W;DYvW|MgFKJqTp2cOV1|7`qrQDn2rwaY|V-aEC$- z?HMk~MwIT=Aq|Xu+t*gZkC2W_hSTPVC1m68ikRB=qfD0(#791FAw*6u2{_At%vC5) z#K4`=raxmBel*NIkV}~zYpvN2-04flY=tQgl>iWOkqbO&((yPPfWT(gU*Fyc4sojb z|C9wPD?uzdl|F$6bAph-DY&$IOIF1qY97@O zKyUmor5VUAW)`?4RohGPY@vcmgBTSYLM{)*C>lL~0)-12q1S@^IXz;NQwhpv=2^q< z9a+^2tKSu6ah*k|3}8 zW_jRWEP88c9vIh7crGcUlWOO9;cNn;NrPM3-2T9K5Y*LitVAvUfyU4ekRRQZW#Pg4 zlBf^PDbRWzGsBM89tc_Hjs|pyUW%(yXw&lS0U+~&xVP}yb2E%V~`}V^6@#@D*=|;8l6pUeiQsCxcyir&4ov!c@wF50mr=y|r$S9|~1S{xRFT1vvh&VD|iy@drmr73Q05SE=sW1%iZAfc)b z`P+lR4N=GJaMTI4h&mz9s5g@~!loSFWnNr}M4@Oz@boyy|CT_wD`=AWmYUq70Z@2Q zz8|HQ=j*ohq3Ak`spWk(_-bSR2;ScsSqZQ_}vS{RQ!sd>m!q(Hv95JC6~gs}VfuH_4qZz2t0L&DF$iF+GF z@pV0RCJ=b6R=Igh@8z04rHfv~=r~%9x%L-<%&`D;=5hureUTrax@ovrm;SZ!>}J0B zRKZ4VV?ORo#nNvRRC{}$#|4#SxiOO?qXBxn#--)UgCwY#U(->n0^a7Ieof5DBZ3zj ze~hZYx#@MqmLm|y1d7Ib%6Mj`)DRF=zT$ypgyE7APY)`on|?AF*2RAXh4divE^BA0 zo1LLE5@0XJItUAJI6qAxzy*GT#w|G)W!%}}#ftPPd94>85J`1}qPV)bd`hYw>m3(( zI>e~Uf34u~*GzgJ--?+NL=Bc?OL#qy!*e55x91BzLf>G}`m5YGb{OgebmK&5?}L%s zUocBlH)6Rozg_5nxYjeF4fomFgief0b*w-yuy^^A?0Y3zFnQTNf!66fho>3?C7W(` zXO!?pp?0WcS8I0DJfxPQbbu(h-4*GR`h$afX5wK$Dg38uNv$}doS*dDxjv3cZht7BAp}4>)&K-?t`}$=kTr$7&-gY$}izAxqZpF25%0WW`1$d(9gBb6X znAS@jHNK!(7y4U9Zx?+jB^%l%;zq0Y4TGg49?u=G$r9Nv0@dZ2za7Y7Iq^cqZ&eDG z4>pz6?=sB6_YB+luxv7rnV?a7%zk63#;?TS^A?9%NFf5#AvS*%FS=uV?7)K;Auhe~ zPDTB7A@u1gCqSAy#hwywO7iZ^8n1|9^t$UTX(BwlvsKI21n+L0vOC@*W2J}`%}lM0 z@)$W+*FNCQ)!{xDl`;jn+}CW3eYp@kmo9?Sg@wn5EXyW$hj2YEB`nd@+WiuodFh7u zJ{gY{$6<{b+nu*#u;Gi@R&VHOqrC;Hy**y?3>xO<3jLq04N`KF^;xX{$M>w=vXX8u zK3w)*mb@;rfszyuDEtVUeBW$iz8n&r06yHy*#0O%d0(8b=(B?B0Ua zba+;5U{vi$N%%9qyUJWkl#`nz{vH)|2#%Ugj?nW-Vge`?q-(JXB%B_bN&t!&iTuSgv0%@n%A#7?*eNyQ>N6ZNC$G!3gG1;93HO{pV<`4=xIcji_7l3K zUmHzB^K8IS5jAI2uC*^QL251%r`YVLWPuyz_X;c z+}ls>Md{_^NZZAtQ3{$AF?>rB_H&hh=5qzIVXu7oj~wEHq`^d%<<0hnH&ZUA{`+3e04}kCub6s5krk z2g*n+{*Lzct-xnPJn-m#t83cI3T`_XHL!N>QGLEVZ;TY zp{hY3RGBIr*2tfSg!wEmmtZJ_Q$Ec20fAH^t%~Jr4U7OH_(Au$+z`W zJ_C=BSGR1~myvC(i2YXR+a(-il+OPm*e@DWS_ihb-`y;^R-e{C`f9EaMS__&%<_kI z^z&J1R`fQAPbmI?mGH$1f`HAy>lr0RKL!S~%<4AJys(p-6^Z-=NR>aGBiC&cP|%-X zCb}OY0%SE|H8Zat7Qh%#AMY}m>}tOwob3@lHeF4)B3_p)&j##suvmr!^Fp1%Ojk@E z%`<`K`G^D!@4auSbMqX$HnBPU{?$w8KPa^yVY>X6Y#%fw@^t}P&=AdfE{00RI30{{in)MwCbb+##w zUVDgwUu%>qUx58I^m6*=J)aZ)R3TXve8rM5v-f@J%@6=Wa@YPplX@sfv$R{zfBKfW zj+wl^7j}pTrFO2?2x0|b&*i-`w9H>(5q5^HZr|WT-%(UlA`P9fB`6Yo@Y?QE5RJ=b zm;mW~_ffl)g+g|@F4rz3DFGx4#tVcZ1%iQLNMI})6Aps`V8B=~CkqM!f*_!bB9IHu zrn~XiHP)WK{nbrm$;7PTC2x&nvGga`^djCmFWWuTec27_T{)7`|3iikHXXO1;*0Aa z!7qu8d9Ntp4!5fEe=pDh62bO5afGC5qI0M9yt|&d2|DW7!LhIDY;*0kBmh8Eh{>#}t51QJ-aD+CF02}yzgI*ndP3U$~DAQvdk_EZ?HePs(Ln+*W-3q z%WbN4Bea+(`J2|H))tY!Xe{+AJb7+vW@nsJ@V&_7tv(d2g;C&YsY}gm1on4bFD2_^ z6-J{H#b31-frBFg0FD6&6dWu{6a|YRps?UfL<)(5fl!!5Dx1Gv+|;>S=}Pn598om5 zRlx0&Z{x%1a`uPsUD`unSC8vQr)RgG?@;^a!@^D6rhn=?Gc!xGFP)8u9<;EiUnx}<)nATMz}F#a|I#)*vHe0cU|DO1c# z4(Ob;7*s1tHGp%a%bw2ioe(s|Z1=eu6jlg1ZEA<)EGG*E1mQrCL}(E+ir*in@8ic3ar33) z&#t$g#%fJ(zk>3|c>HBNpA!C6Utjv6`gL~n_6`$%-Q5IzV@MPXy}PRq%@U73epwoA zC>~)m4Mm)^KQ{I%7kCjas=9ytr;(be=1g%;zMt|wKZX1~q?ik0i-koH4SS`fkIx6z zLDDbYs=}>>PJX|egBQ(BXQKEKp`=iR-=yH`#TcW6jI{8S&^&c5OXz_w65{sTHqewt z(dY#M&AOjJAs8qY5(R?+VAyCZ7z+i$!ho<`EEfw2!h<3TUVHH4*PplEskyDkTtKvXEXXERP zHplNJT#B`c&};kxlmXhkAo1+F+U%>;`Q2|36L&pb6W=9X5Hx#@ia5_0A_tY(Jx0sE zKZdipiDI>SlN8JeC{H5_R%n{!#cjpA&G>&@0c#^7Xt;%DoCM@fMkQb&xCCKA_rLeg zHhf`0STHsm1%&}*z))%u3Is}FXDxSEH>`+MnI%ig;!Sg1R%v6ZtNfGtJo;kOTWaq1 zeE;^>GpD^j=tW=8j;~ku-T1r7WS``@8p3+OE7c*`#y-p;PN zI#1C59deJFLZ6s-eSX^Wuj%#j$?d9Y^O&=8c&Bkv_G6=}X^e(xuE5N=RogBv-8E8Y z({BtO9LkaXW}eDqM?~d2%_ZusnRjB(mK!OPe(KkF=S7neK$tK_6d8_#V4z4U5(t@|D>&w76LM6A zN||Yw#Y@W-(2hUSy!m*0X#DiF{}1!x!LWrQzgm7iufIc>_rhby>pR2(NWX zl#eD8=$>28<{y;Sn0r2D_3yy_Yn1e5e)s^MqtoZQKbfi7B8v{}1Rz+)BB8ZmhzT*p za%@8vnuDIxvV-hu{VlP-0}{Qq8k;HPJ5^VomDR^0j^aP{HU;(P<+~ zlm&x$4>$qKX+lS*em55{;<6NM6ZlIlOe-Xr9_l24CJPjBr;%{woP2ruF;&{ZW&bx=O?rE;q+mTwDnRXaZtf6 z5=jSdllsJ_Ccswa+x@*iJNDEIwTHxegeP56s6SK&AL16;Zm}aC)@&ol8y&}KJthf<%EvDeeTsV&; zAm>v=hhVF81Du;4l49oP6K4lG0%GNOX*03;0c;J^(aaEZ@wskq7^Z~OJ|U$)@tCd&r5Goz3+;&!EjC1ru;)w|gZ zQW*NqD>5=Ti)WD8K~GVH_@^78&HxH0(7PU%^Uc5MTe`ZprMBf$@z!=jFk+tME){e% zx2zz1R*eZqc7?RdRhq^Kim@&Xk`deO1aJQvt1q~aQ5~f{$>|h7lnwiVx=`our|p?5 z;2Tk)+J~*L5+k;=(FAb<#GL^OlqGMZ|6d_*yu=Sp(2`kKRw_&j^kzza=pibl6N}l_gu|P8-#fZd_u61 zW(Vm|-u+aG=k1kM;lrJ^+SF zUXh5GuvmmiBzRu1`u?d!p`8!D$zkXGMnX^Wx;Qm#3mo5R{X4?@9ukA7i#+Q*r1zlx z+}5Wx|Ere4isi4YckFmLuqvL#f>HwFn$Qv>&)z7$`rU0x!zY0;t=&q)$m1`*4BX|C z|7|{{4ibT%cHcsQw;O3LILQA13VJ{&Fib~MAZ_JXX@O!Qvu!18NjV>IEeO*9y}M%H zmFwnspte*fqj|ogI*(4?`Pf>rH?gqWHhLT>NVoz*fj*gjrC$Lb(FL{!&D!L^Jpu|Q z)tGN7?3g!hH)yEc6;0U?36Mv*+kS@bl1i4@5y`uAp%yf{;rRnd<^w#hGi*ZpzaDQ- zJeBPq48YSS>lvHA#J+PgGNr<$ZINup$tqe4B=DnM1nCU_`UHYMqCX{@mY)QYdNCw| z5*2B)S?gy79phAAv61VeEY~Wm>A!Q*Q6qNM&?sKl%`kWaHwKI|{qEJorVL?<-r*t|86%=^k=Ll|$xjr(s8ysVl%a^UgxD8e)PuO+xc7&T)E7(w)tChJvaTWc!1hgqXFF45jr$myk*S_%K8l z&Hyhs=0x12MQpMqFY+2@YMq3 ziPn*dp$#ce@J2f4jV0V%9!HQ$c+gyhc*8pM2;%HAxOT=)6qy@Ju`W;meaj|Y-)!;b z;u`Ba6*f^qv2#dBHl_>~{Ziw+a4AJrxTnAA0%WAblC|9}$lS?5AMtZSM7(Rk( zdo!kX49F4C$!`Atha>o_9BVJKJCgqd5Wyr=Ff1YwVf#V-5#7D7f%J5=jGtIG1d64*O@{uHuxdmjT(0tstKPb7{>OwCuGPfAb9V`sE=&S@{9!EI$2@vA&e*g}R4J<-n zHn#6#_>2vpfsJT}>H|wi4fxcCJv7=cHmF6L05da!GKTAE#?1bTfML;{5|UeCF35(I z7=MYi>k*4B$kl-7kB>ZLAeuiA!=_AoEwj2$6rn1B4z!uEK#UG}daE|D0vcZBSdagH zl3XxXoBoM;H3Ytafv<<8Z*!vGoPa`zn~e{Tzic9Fh*hmBE7Ra^2MqzQyXP80gpCn` z9HAZzwLc5Vkk}H}$rsKhtZLx{qRUE^X`OaY%Yx8$kgfSOt*;d*xR#>bMz4fOrU*E# z2Vmqp@kGW384Iu!?Wm@7?W`09&gY8%KdMSX{(4l&*-UniF2~oQD++VNhJD8&#nF83 zy&SOfs#QCTp*j6AA5%p-ADPxi?TII1w0tCFg&n9_v!^B&Hw7_vCTjrtVLY3<3R5>A z80f2w^OtxO=!`9)WBaR35JgNy?--fX$*4id5bh}#cOdH6*rpc^8SrF5N0%<_a8{fp z8^>F9iNOI&FGiSV>Od^-2qVjbI>X6w?H{L9Lp*D|^E93^(xpdJlPyzZN$P*t&F`J0 zCaYpYY@ks=7(LMSkB8C3il;sU7;|N|ss0u6tA9`c6F@*ClX+RyE~!zty=y%gR+t%> z3JwwQknc_-b7}y-^?Qin%ps=BU()`-w-6jGM{y+Q7q|D;eNEnT#(*qJ`mX7|IJ{;3 z=30YC9?EfXzx(vOd2}R7vEJfcbCb+nwlHu7UsmUb=Vt*66ut;bGS@OMM!r~blzgDWg<*Nz z-go=2jB(qrRFA7m|9G0xyUif&40$(bKnj7s&*6xaYMQ|BE`+dN*63=n>F*wD#(`Or zJ{9ro%!s}?mkH>HYZ?haLsr2cgC9lMlm3^Z5{2?Ac_dxC3Fjf^sXRE9K6eWe!F8Jm zeu6-T%j88iMQft==0RK(h)m0SIQmsYkyx&@%j?8s-@y$!^%7i`o8wPdG+(HWki{fY zE`mYdv<2wuB&w4;amrH%?inAu*^V#Y$cekvPSS8Qd-U94g_$l2lWn%PH2>H9id`;a zp5EOrjfK5)n{*u89v&lji$+2t_K$osf>cS5DTe) zdZH$MlY7J4#0bAydm58@rCHH$SVykQ0oVTLkTUK_I*A?a@e9HPk(~0#8xe8n-3;h` zbE2a@=w=8_nhx81)TkMhm?D4t{L4=`$QveF5`y~0*rq`;a?JlXc<4aW9=4yEg9 zx9cIwpol`zkC}{*CcZRt7J1cs+?I4;p~+mm0U++Xn;lQs&PPO<|MU&OL=j#q6Tg(@ z79!N4EtG-bzQ1;ha@k-5E9BhO`^KDsU4U^Npl3xiealKds^zk7u@d!IANO*Se|6Wm3j*eJF+ramt;^TCX$!XGEm9l0`YC5NRJ-#lxJ|-rxs1GBx>jp(-YYrmYme*T*BbSjdz0fkdxJ%4SsaBpuD zp}M!?H;fl8CH-h3(7i3jky-oRMU57&inP#Xc#!xS+QqoUt%1}Q(9#HS`8Bz%M$uyUqPJ9V@XX@^@;LxS6Q({SrXFeDRA zW{Qo}w)=q+r`o551exf3{X0aoQ$Rj&d&I2(ak;_^yx0ZBan0drt6)eX%+%I)+Zh=t zgM!-Y#++}GpVHW~mF;ZNzT|YZaOYmW+=`e0Tu&EL+z;m`?-&^w&XMwj!cX*aAVnrc zVgLrG|?d@bmQH=uee+hG||wrU!QA!wj(R(5|M zAzyKIgXHpU{%t+aw&Y)M>VWPlf%%Eo4w5mY)o)JvU)jL$A@9@9qa|d8o1w+p-fO zom}Cke&3KG8ePRm2_@(PfsvBcat?kh16dIscX{fen}F-~PjauDkX?x$Np;Fi*TI*S z4v@?OXAGH4zDNLb9uW_m98*CT$?Ut?7_O~ zy-n{io==>#d zG*rYGE2meesejtV&xD5j*Ly?Zq3$>0Ih2F0LYX%^hK1__XCNByQc>QkXP>T}WE5k$ zS~@bpb~Ojf*K_~u@XTbm+2j)??bXBp`(5I>dix&SO*%?@AUO8E{tZ&1UhRtZ;+J@5 z>&Ze)Lvgyyixw3Kv2qORuw|Q6!GO7IR$MUl7%jnSiC%BS3L^-fC^YlX;niLp@MIZg zx8(yL(%?^7Z5y?>BlJ)b?M9;a)gx-3FSrk-o5^9uVF8-2SAKD#)$pUNncnz-M2%ew z;fbJ(60AE#(Ct7%b&?yAThutck+>ewjc&_WoGS5FP>g;^J&V4ATTZE1!^DGMA=~gK zUt8DWrpsM|7t%~)Am$&Q&XD7lU3AiP94Er#^0-&&G;7n1o*-v~6{d*ZDz>-z5nBXjPyZ;RFw)JoaF}Fj?h=n_*jQM%KF6^$}Rej+`R2W;cBoRD~+IT&F0F^4xiZlMC`pvJp_e>|v0w5F+dvPf* z=6KLJx@MFAmm>bCq30Uvivc3Yz^P`@w@oD zma4$-6;`VVv}yzy;8I~Ve;vIJCQxgX%yj3!ZTlJHX6=lDa=Dx`2OZaxeP_8 zIO>4KZ}+DzY|JyIvmRJR^zsZ?060c0ycj^`sCL|TP*059@5XYY3(h?t*o0tdKv#C# zsPS2bTT5sanW3*k>iK3gi+f0Jr*Xa4sgESkh-v@o9$QbwJD_Lf@o75;yB4X1^==@B zu&$h`g~TaLO8Jd&9QEckZ+J$;HKNx8+y^YnhW(^kpgljkTX2SC*YtJ^E-u%;e9}Z2 zmedh{ZYWQ}R_2){c-usFwrgAj;ul;cGteq02i_AVpHxjXtp;ImR-P1r)@%9;LnUxn zIRgduRYwSBXt2*ekxlP~LPuk35o!J9f8>mj8iQlWt)$zdX#?9Wbg>uL9B;yrjf9(> z#f>Olt|7&WZRd0884zd|(-Xyls7%w^9FcfoxMGPAmu0A%kx7!B5mw6jVlUD|`{x(H z)N=rHq#o{*qr+GG0izMmB&PN{_I!)AD;Qi(@F##q>2y1jo>od^Bt((Ew=A3qLVksA zyOiO~mCY3Y1NGH^Zo2)LEzAXcf>oCkh6N^pjJ|jQ2Iy#Rf?e~qx`oP@Q~$Z+w%1<6 zFKM=!FgsHQE3xFPw>EW4_(BtFSI=#X5ym99UELNphU2aRr3RY5IsuL>yDjUOo+{%; zz;EpfXqEol?|CRY1k}0bEkBSMR^@!=3kf_RqD-uGmPTObI8HO^R7qnf;30NnNm64i zI&ttkuw!W}C&dd3HU!PyPI;z39Q%7npeUB~*n2;-genC`+bS@Sg}r()l+6Se@;>NV zj$M*(6(IX;`)G-O77waBjbczC-9FHE)tqn%2>h12g@$F!Fy7aWXfavT^h zQD8&Laxn&b`8p5!LYflO5CehWfr@&`W5dSpX4g{XL(3Ags7K)=8|x@jT)%69*^udasI;1 z+UUA8io}n?=rxwedg%vJX2%?1*g>u`T~{Ez=2%fHr`WKn!9b``Bq13D!XUao* z$FsdXG61UCq{q8nI~DyrmM0u88pXu#t++kh_z=qZ#;a6Pm-Fp%_ihwTr?e#GKYTcN z1TN@LgBgX3jWiMP>_#$5bn8kl#6y}O;D|j8F0#A_DO`g@1w*L_G1fqYV4zq?7z~92 zLSVpHG8zj82El-^&@40w1VW(@s6?O^t8%=1dUaF3X6eT767PIgua^Q3!~Yu3qUrvR zPs#Nu|Gr-->44@qd(+Y;FY5XZw{QPX@3(51vt`lcldp=|<6-;)Gp4V%HBszFFdUU1 z4p2wx3Zy%`KZ0s<-REuEwY(hM7q3M9(~Z!t5N-hj+JVi48W`2Yt*q2}74PRT-Ow^4 z8u-STI@ZY{>xL|rM1sd(6Cn>Wao5BpGaBAQ%NR^3n~YTrlZQe0z%=U@RIF1_H%^v0zLzAcX`ZFqwr+=~t5?wMsqsd4{1}^Zz~eb+s``y+2(!e^_DJzU@@-%gfTQ9y7Eqm0H06Q}ybjPjuO!@m?#w zyR?2XZCgdF+4J4iH%RMO3eq;0;Wl+1NnuDHi!M4qL|>XqQ1oe?Sg@UF(6DB3kC|qfUsaJR0@QKA|Qy2D(>;S zt!=7ggp{jQw3TRdJu&?-oi~a%x6k(Z|9?LJwwv+v8U6aSf3tX85pM0HpxDRv?QTV+ z%jjmn^~Wu%p~so`SK(KFhx2D!u{+{k7IooF?_tlt@u(oAH`@Cy91D0Q3cWq| zzNYHMOi}Kk=~Df@-1r*Q+7rm>riqK=<#I*QTt_T|P+BS_?y(IR6{LyEk*&Lc!H@v} zM*##B7_=q~4TT|rFkmzm5(R{YAc_nucQ>o&@8d3)mzt>)Bulv}>Zb$fkKelQj_)6n zKX~(!v-g$R@JQct8gDJ~{j#S1-ZN+3|BFe&j&bJZU7lhQC??T_z0;BSo%`&H-v(CO zreEP`Z|Vp(SL-La&Uu@K1uA+x4#&^Cjxplyd~NmG9Q<80hn&||9M^Fx^MgG*2{>1! zY|blxI88r_L?X8eGe&$i##E;il#nv{atcNzk{Tz-q>9p;;6$Bt+`V2n5QPWx^*jIm zF@}L)(3mh58V18bK)_fqDGUVy!9o~FBB#Z7JzduvcgNfDzVAJ|_U}C8UY5-wta((o zYagzs=s)4qpFgA)pY5`3Ha^QakH~oF13&)%PKcI&hWfdV&&Dv?tk`ml_`k!ph=oh;>PA)9b~+1TBDt6&P+8lc&VZvfX9H+CR-s+E1 zHAF#_q55_bT^i9RG%H(BQZ-J~2*DLcbXOq?fk7%IWI`E>0bsynG#CpCg8@LWq%0T< z4F_2<{s9sF;1SDLKiqV-Z{sw{Ozs2@GMuI+ObW zU@RyK2!??mh)^OU3-S4<70T*fy?X|RK7M! zeaqo6daNhc1lX}c((NNw-O2;&g#yEY&|oZR8xjJ-K(J6`B?$yb0ai`x$DYzEYi&}Z zp=(+tLEFDnFNbF@KeauT4&$+4uA`lw;V)N=|30sW%i;as`R&==R((8`cGF55HmAq1 zLf2pjZrEG2fB5_uxQ9F&Z)RSv4f6Zxf9ppA=T>1TwDn2PNz8`~rvG=ZgS5A~d}ST~ zw(DB0*P3_wYf)eMOB?_X|MoAqR9(mI3S zyOg%XChxgu>API6$uX~RgCb7&*qk`Qct*I@!G%gzIe5ud41fp%H~;_`DnXh?Acz0{ zr-T4lect#1U{oe?HTfE{*MWSpmI05wWR*iE7|p*E5crdmlI zV|)w?gNVew{w7`#L@xM#JnvYR~uGX9v zV$x+cS+U{+!G?g7z*B*sNd8tZWW%*VbH-!qIrB5@GO%ZZYC)iHhHI+U_zC4+jF=}a z4L;e~+H<=l9w~WC4wG{X&%?og8U%~9;Ltl)_TmnB!yhkq&%{WUBbt{p`^xfJ*>36c zTmRZT6Z+~ud;gFVMBC}o8R;=2DisbZNw*kl@qEP$am#hl8XxHODf#3+_EJH;Zlr#?@#Irr zQ2yK^?FMiU&bvPKyvqSpQMUUQ4RFFP4DL!f);t<~0d~r6N1XqRe!{~ENS7C=Zy(6B zFVO9ecZ_{?4>Z&3O8D)_i~1l8{geqh+E&!SU~I^zO2On+e2kRm9N!K6TaZzhu!W+4a^AIAn{I94cV z9p$=RD93>y6BH6soE!<`9#skxT00KuBsy8cih@Q=TNguHKR^D8W2my5_cZB71SQY$ zrMC<)+LARr?}(5O=&0e#Xd3nCj-MO7iXtO_^%`d?bDFI#aE(mg{?_J{AwO~^qp0-DIkVcE~^?)Q56NutaPF4KMS3xSSR5P4ay z^+q^?D^rS>X}|#M9*Eg{Kt(Bag#0@Vgg_+$P6BB~oOm7P_BY3*vEm5qD~=EpA$Cw@ zOc-Rit@B@M2V2BLe-KGUX#qoXx*WmC+#3n*&pTN1P!|RMAB~sPaoLvq3a&D*{4wCO z-=TViN*18xYdZXBk0OLY6JcqE8y>ZKk%QJZET2=eHvXZHG672H^k>%*c*UhrL)k<&d9dP4x2v^pa_m(n*S8^HbQ1aS)m_ed=(M z5vsihZ{40k-iZVH?@rJ%w_(k%&m}6noP(AUXwN_Oxl?$@`S45?F4IZz=lVBGC&xH7ZjgtLfhl(zLBXKY2+QI-0B91pj2bpgDviTNNab{ zND1HhPDeHQqD{Uhq*Jq@V&Hu@CJ&Rd$9TlyjJ0M)yq=l(oqLd4RPH`(&=mdz3%d+=7((4IdH$J%oos}_LqMS^!&YFe1z?+=ht%+?>t)=^zS z=-l8;d*)e4Yd;2D);om4D!wkaQC=mHvqjGrWf#M+GA$O(N9oYU=jr)nvi=)F~14ORt1~N zfb254^afSNx0>(YG^f4OOA`X(+TeqxYyn&-C4Gx&6S=ze&LV7*02bYXmSD}RE99Ne zF8cCwm@dNhQdualut?!@-dY112tRy$=Jv0;-FIKyWA$W1m4*5cBy@-srRP{ug9DH6j z0MUfk|3wGdSmgghI1zey*6injpZSHN;Ec76Y5?;rh+G`IVt**upYE^Zd;dStdh*Bc`@BCX(f}Ph_u%-&5;v(6|)l49imTa7D1;HWE=CK)YpDwS=)XpG?*k z*;l4<>lxUG2Z~qpyp_;B7{!|C=Lv+1w4dOYBj@8wCU49P18lbtUF%(I5tjyJ7TCt& zu%sjb8{k zTi6V-wW=i)BT(zLN<+HLw{~WsTegjVE<}mtp8|V?eP9fl!?8se7G)m`N(WG@78FQgXs-fwwU$fGy*>8h-S(qd{_r>XY+_sAo}?m z9}cMnXz_-^ZPoT>2k^#t@8r#EVvB0$LQ0TsP)hX*% zMw9ZcPW@LZPetm?`v-!iUONIu5%BAGJH^ILiQ77kvfhrydAvNbACZVk10Zb3rh&Pd z%y@j2D-f$)Qvv_DlKH!3Ch9Tkk67e7DG9Df`L(Q$T#-0)@klyB3E&LoS53P)$wFf zr>CtsYcT3X$ga!X3wNQ#j`&KGSv;k1phr~9JS$OcZW5fXZA| z1u+}KynADh_J33PkO-hS6oxRpgn-c>@BAM|<7SFOk?WNIf~|^!2t~yy4? zHhsBUV;libbS(1K$o=EazW9lRsK?IgTC%$AZlU{^f8CUrU~OOd0D83OT%KTDwr0aGlSGNKc{7PTosgS#Nrjb0SAreOs5(Tiy-yiR8zS%Q ztBXaLv3hLuo$Fa)N&>OLvhwqS6R72MxV3mPyc=B#0BW(8LUrDZ5Xtu=rXetQZ($nQ zOJwKE+w1Xh`PwKZSH~x2x}N*zvL9#SlSg?f$bN#?PPPBXbvqgd}a#K5eJ*aLO!!J>kS4~lb1vwxi@(;3s0W_{>B`=5d z8QbwTD6hNq^>%uw+3qJWciGMOq4=1rWu|jm52F@6{b)JK27kwr?HbiM<^!xHO`Ktg zaY{cuu!)9ryo=b|ye3i*etL*dv6E}Yyz{$*-QGm!q()e=>5z;7D^y0W1bLHbXNCb< zrj7O=bGY)K8H)M%m;tr^0tnNHPXY~+SoQKXkJ)8ro2XJ;LrX~YBx~n=)&E&mzhhWp zmn=2W#KHVoj(C#4Z~Sv}7z{b~ydf^(1H*#dBIJHc_5&QF8xH|{u1M#26(#fG;ls~6 zXy7~S<}JPj^6Z_!G;M&cRI0FGf58knv}-bWmiOavS9$nzx(53jGu}XZs^Uh3Q_<`5 znQE~hRPq2Z0};glE2{F90tp~g$j zbEHSV?zbv!eeZnshIFhu9OwM8ky6F1E=nu`Yg9bhYnR4<>lPmb#7`D=Tr0A0{32uOaz-+k!T|kd>L14tSpNbc4}LpTFxs= zfzJ*Ew>DWjxRvVDuol*=%g)-?^LepgwoxH*9khKf<@*q(%bMEcta{qVo%k*~@ZKWQ zu0C-@r=YDmqWZ%+vt0}t)Airk00Od9XAJM2gj@Gdt4!ipBpw?TWG&lKEhl!yW-ATS zru?>a1{((4lbKT^%kp~0?EF?D5CT1>slkSC@wffx1sNrUllbm1H~&5SP2JDkP$i?c zV09Wf8B1LKcS{nLxLN%~DEn22Z*iT4LMbtX3umAIcE2bLmZ@w@#AD=rHO`7#8N%jx zKZ`_M`B@cZp3d{~K3X0VI_GNlx}S`u0AdD+O*i`{HEmtWqT>G;D3pEO_u(un(rXpO zBkMn-=6P6dR&XY@(S!PcGxbfJNpl1`DTBZ`OInTm8|Awt;W#O{EH~}AdAjsBQ}hB3 zQOpTr!iRAgg9_u6fHvX%#Z6YK`J168g*Whk4wy+KSGMtwePCvf0?xjq@+TnzMl^yt z$V&Q3cuaI_>=qSzfHqp!s11dDf!nu3ogPzcD}H%j-_Z_4W-KX5vLzHu9;#r<|4@ii zwwRJvS5f8LL1UJoWxw*YP&hYiDIon64yoGG35szXrqWOSr9J0s^XxH2{Vv%~f5|r5 ztK<8;V6YhAsJT%8w*h0K7Hb+)L&r{1zhna z#+>lh?1(HB)Iofqpfsf}9Y@F$nHO4)*NO_b%O$rw3BWoqia{m-@Io@|Kw`d5>81a{ zRH-Zm5Jb=4%#bkTrs9C3uj%s3vAlp@P%eAw=$h#VqB!?aA+o|(DM?8Kw3IKsOFh?b zZ$ty}49s}a8vc#SgsR+GF5;IND+Y*PmXhQPfUNY45eYz+cW}!9GLo1%<=w6N0-TI3FObqt2=Z(yvkKerJ_;PwpxAC%8Wz3nKfA3Z(4J#m zj0#c5$+8khgFV#m^M9nk!obB``-Jk}s(b#+C>gA~z-SYxjkPn_{28WUI8#z)wUtN4 zdz&GCsBt{`JQ*Qzm(Y&anPO~te8S60pMbz~cC&Pa?7*iq*C3vMwK{8@552u^)zAQn% zb&{jC%TCSAo ziu@%@Lu@bEoC8f#_&BeMv{mgckk~LYE$eZvfXzAs{;TAp3Wc1nDxF}yrNva2cWz0b zbe9}@Bn$V>9v08b_FsYm_^|R5Y%b}G62k^K9UT~d+M0GWgnk0aC^yNs9NrgNDOyw3 z8P0Ze`C=kkIy-Tw3tIlPtCx}0xqfc%nbGAQVX^pHCZ3xOrpvLw#LWcnqob6yUQX1R zpPkImy5QBzpMogGR=IVW5Jj)%Kfrl_?TGVJk0-)d-(^mrtHNjMwlDCO#PTs@BbE#Gf&tKEq#2C3f3i;fJi@ z^%a1tqevb9s;x0Ug5P4Kz0r(nYS#M)7EsC0mV0X*DmPPVHaG4`n-H#i znM>eA!kx7^QD+)ul^vUv;WnDd&|2+iV(4s7bYW07jpfk3cp-Lk2bNa1Y(Ro_V3^5u zYWuE_W1)D$yQ|)4S8gkDDRD{fPQ`*rG{_;?VX1w9oxbqk|^rMnCH1%EUY{ulz3!R#*$jmVKJ4v%omuc!NDu4 z87DR-t0)6m%Jn_Zc1|KiRf2$?Y*w+uAH#WDOoI3gdca4SLrRSN;i$abC{ZLc0mPNB zo2LffsRU+X)agAcN5aQo15H;i{@&n91`$;*%ige%f6rNHKZVXyQTF2|fWLdd3bqL`!8yDNN|;x}}d1Mt^Q6oLV!-K>sOZQ)*5# zmHqeemNO_%UPYfpst$EJj@r}(d!tPpLctI@V(aTxfgf6A99fZe8qq!j#M<#pqKwe( z2v|YO%_Q*p#FtR4%4;Ixeq-^K4+`m-%^HwGrCH7O4NUsWsdc{7bzF9Tb*e=xtc#W} zmIdQ0jVXxQNy~Jt;jU+id!TXMQY+FCXMs+Ejb(593ekxs*dY@k+%t5kLmdIj-I#_1 z05Prsbfi66Ez8aS92lu#QrNRrqyGkH!=Trx8KnDwZ&bWglUsmE>6l|U8*CrYiM9r= ztzagz6&qA)*SZ#Byr^$%R1O<9TZ`eed)tBlu}^m(Ew+(j-9Pq8zWLm+f&d zwk#Xq$lb$^Bct(h3>2ke<$>W}j?Kf9EO=W=ZB+f<0~IMhNcp~Wyuq!zOH^fBokX#S zpIV86bY0S+v_7(q_<1jiQ-$m9Z(dxNqpK8V=c!>Tq+kTe;S7-I*Dm$y3ucyst5r-m z;P|x`yS3|+P$ct10eX@4H+IV7WoNOa;zrFj4H9S`KN8t`$N2&OBIyk6hBnb%FZy09 zf5x^LGvW*sj;`#hEDN)Z8(@zzkXX5H5C$0L>E31r{0|(4$M*2bMpPE=osdb#q>;U< zn+BUxkdzh3Z)L7FVYI}_aUm77(h(Hceo|Z(+EmBWI`(KF8oW8kys{DWK~3zVTg3A= z;R#9GF1qiEb6^ga9lgo^i#>F>{JJ#-dGk24-!!#{No5QPOni@U(d51brfaP&Iy~pX zTt$a7WSU!hTl*qP7KD}^x{&n%$)`?=GcDp1e?ZsP?Y@z$iaOP`?=s5J4EFdES^VPE zEEs7p&w6r#TH#npN=<&T{|#SRb1{^X5K!#0fSq>?sB84>#=Yk{Ot>nwUjA{Aeh7YS zdZj*x{c-0o;Y7M-vw$YRXw)3V+V1B>>1QZyM8WRQr z#IVps2xSCwn9u z_uu!IrC(R}rvb)I(K?l>tzxd~W(Z;Gr{A7eiJ_te&v>R`^yLIRZKlt`U73?eyz458 zV+q3oI`kySa`%jffD>6c5xFX##$n!N-G`X^W&jcA{hTxUSO06lD-O8qTgI6sU_M|op<+^&qv9H^xy=`T%P41Ff8BOY>D1LpNz6)4ThAozd9y~7DW-31 zTF9!d#AH~dY#H7(LY|;!)D*p-eu@GW0>q%eSTGt34g|q)z?d!;5($DqK@dbF5kuS7 zyY)UkdX;i6g~N2K_!52W7VHHM1k38M+scQT^cW%>DoZ(1tikUZDFMuX(S3xk;V+rki5jtDFuKMUIy_4@QSMc)L~+^zi;F< z^=mpQT2`Qn&hOfs(lI{8oFPX^9xE~VC!C~ibd_TiD|fpJyLPO>^@##tz}PSrOa+XB zP>{r+75HUb<|1pGsGGS~tGJcLQpH^B_IdK|!S1}B$Nl*9kmLC{Sv|l1%jVeVs$%{= zT0Oix`!HKH{@pw`VB4_pl9@d}K9@%eXSF``mc$YAk^Fm^J#h)xNGx6=F1|_ewDd#&Z0Y$4Hky`N<(WPV2Je zT?KC(PUnPXB8a)v^F1zv8iWU|rZXsqIFW2g*Gj+Xmg#NYGb>SP+xH{-8|vhn_{tqT8KjQ1>C>{jCi|0b%7Xx6!I3*O&CQK&Hg&V6!= zl=`^OkQ0wpp(?x!or{j+4-yI{bJyFheABO8ZN=4U+QyXC56_<`@6=yTzsz4? z?4ncK>zeo#^YTmDT_E=F(^7X2PCFIwPDu7HgP(;S!bG&C-h1 zI}BV4H+rqkDUHbj-)`&1=zI&*522>M0Z%nvW@?6+*28oBiz*% zS4%-#Q&6JzVf^WOl_rV&05@A9bfxu?Wl&A)MCwIHIgoPm!Ik9mkz|o zF#DU1LbphD=;P<7$*-2rHQsLSdi%4xJ=XZ)E<7fCbYbS333Juu%F(wjvY7tQLb~V2 z_p<$t-j(YN1kYTQ$Zx#X@LBn}PqO~0^Iy-4{y*ZhzaH7Wbt$}!G8Bnox#QYS7GY(O z!&g0mu#80}tfD_|ZM$LP=+!5h8Xi?(J42n_%1Jg5kC;mZTTjviB+yTnSt_+ewOC6A zD0QO6DVo`04@@{61_Hr>uwbl63km|lK(J6GAqfOTK@lr{K0H#ms=C%xl`y)xjV`2A z=tsYO-V4FZV>)l<&)4fDfB)xIb*Hrkb=(>q{=2;Y+}3mxCl;QEaYUpH)kdm8MNQT( z<@*&h&(nsxXWi`yJhjzao4V|~XU!V6uxhP|kwu+*X2H|K{4A|H+XBDP-C3tU3$;sr z5@`(U1;IW#B%N7llIf(2SLF5mPwAXwj-cugMJb}8g1Yh-C6TYnlkxJ1MjP25{!~3v z$$J%jLf6fXTbdpWoMk3edcsYRvyI~$pSXv4PAw?No-VhH0fQg{0FD3v7;8bAW*~?E z{-=ZhSbIFk03!fWxq{8SpLJByWPan#>)Cm!KpLRY;j z)eqXr{(toVd0{i`_P+G`Z>pe{xA-=&y+ca{`|0(H$=B zVjWNn#*i%yo;kisI7XA{eCU4(^p189J*{ZhFdV+dk7vNLHSip{iA>8IN9ubap^~ts z@1(!;xM|#;GX6XDgqR)ml}v=I4Ck<|Y;m|iGBfXxH~zm{NU_MK-k9{e_h$K^y;zOU zvZ}*t-T&xPk3hQ8DX(4sU>J1<^I@O9xIl7&=6bVH>@$t`kHOi#<#IO)OeS8G=mJUR zRDRs?H`UXC1!*(BTv1*qfKzB=wC1|8mNJYnkumV<}XS`8s3K=Ce%%BZQGgf}M+=xNm zT5GWKycy)VuNYin{NKHiF-K(lq&358!s^FeCDNuESo%Zvk%`pupJ`|6UC;to+s=z4 zw<4ED3~``^B%vLK8xUVA`N+!c!=&!H$eHjkQ90VjzF67>$u~m7ZY=er2<7tcdHv|l z*n#W03rhrD;5(tX6~+BVaYB-F3;O{<0?SJUc8@+rjJ4KO_Kb3XOzFhYpdk^hLCD0M z7)xT?H}Fhe7uMgjIAia+KQ#7Ub;0|U!9bDQLmG!dEJ#Ki5DNBV8HP@&%m|&A-iu%# z#o4sUK!=UPh}P}U-YhdtbON{Gn8_d&F;w~kJ%`I))Lc3&ZO0!Q%m4OkCjD#s!XkFc zj;yY%8=OHG2gTN|DNl=0P%|wrb83%N}nOY@UDjx?d=9>;U{bj?T-6P#w@|8Z!! z;&rOfZvUUk0y9Y%Spa(~>5&;CWgQa89CQwrs7rc4nG00t@bF=AYK&g6Hx1#LWxDpg zRVaC)IDS~f9*n1No=~Ib&q+IvYu4MG*B!M1Kjzs{k~lY~`EXzacI_xw*yD0GcHXM# z)R{4*azZCE5eRtpYHV>~e&2+V37ACcmA){Rdwc^Qdmk1dD0XL^$oYyAtS3yosibzI z@9KxxV>EO1cv+Mrl~NHl5jMs>?JGCQhonitb4&%erPGUPy5L40HQ^B-;QT-Y21}z_ zm*;bZD;Otl?Wey8{5`kLLF)!tdWY4R-Fg7SdyziNkaE?M6O04ETax^0vl^XXJ5C}M z&ZW9D{yP}V;JKe~A;L9a)oPgh8K<78ysKBbKV@AeipQHd@)N(YZv(3g#j#eUWJt;1 zuKi1pR*_7eq%09_LU_;z@Hsr~;1e_+udyd?=}OjOeQE8{%l=XdP{lc5CH863>mMTI zc6U;9A%k{uRdGQ{pnj{$ZH1a;>5PsUv-%;r9OMu-hM?iz$|jY=HVgVSb?m+Sh$U0Z z(ipmpY6^nCO?c+k<;iB=_3W%BagE|+6@R3crgLzjdmc+^(sD$_l{fJuV=$MD14HNWW0j01M; z*5W7T;QczVMpL~I(KuHODop?>qPwnp&fRLULgbxsC23wj%hfkvtk%FhH7hk#?ibu( z#ehcKtJfR4xLdf3z+vxyCg7Ccr?9A9Q!O!+xRnoRZz^ zf+-BHD|6I4iuQr||FAi@Qh7l+!S6iTX4ZmWj18(EziJL5i#h|yyS{Rnbu@0>vMA09 z0Z{q4O=|W?Dpul`r5dhl> z6x(Vs5k(oCAD7{@r*3^!$zoBeE9xYQ?x+CKO}dF+tzXnKWH`{SdS>{LBJI61l)lXJ@Awm!~V| zE11{^82jXv-oeGycXht^fu$Edio%7&;55TRMXG1iXRq8fA14$u`|k~}XT&cscD}r~ z2tOjo&$>g_flhdv;oF~jpZnuOo?Q_3g)LJFsB+!g3qPEczRsd2$=LrPrC`U1B$@G; zbqUn$bgpIt!quZe?4$4!1mw*~EqOidq=+JOo^jKjG`0_QDKqEfGhutbMm-CVMb`u^ z1iPsTDSGCINscO)4ZmNO1|c^OpfEH70MbA$zfcMXK1P!&OG%W{mXK^&LHlm~c3#i5 zuWJW2hhQa*>#&L3D5($H+D|2yrp#f&K@m~f4wt4`!Q4p3Ajg6k7TR&WKj-L7DMp!l zW_QNN9HJ$P7yj@%FrWbNxct(0u2x?&=TKLV08~RkHV7h-0DUfw`bw-U@nGYg&b@dA z6LE7zU9I+;#{b3RkV{{`#z&)tU_0(4Hk~eYjkQnF><|cPDdYZ{Lqy+IAm9MlZI-%) zNqaBqq ztD-$OOkFXybZ=hAon9Ed#)ww-5+}mUo>md7Z3ot;bE9EA=NFQIK1}IbuX=(*xL^deH0$&q9j*25-JJWJ6^3C)O$CSr%x-WS(Dr z-f*b!Zncnjsxd;{R-Th)N`2YBz|g-SCnO7X(E&oCmoF`CT-^SO;xWmo9W6AuC{qw{ zyBDV~!AYmW;ZqQ;Q~)aV?3>@|Q7Q-p+A|WeqNPb#g*ldEPkpX*jOb~NEEph}??Yr63 z)Vp{PS#(pK;wOJX8gIkE8)`Sg7{Qv5I+`peJ}IYPM1CfFOy~W#w&h~&`LI4ZhMoL+ zG$}oIg(WYKDN<1=HhzfBSt#p_u^zR4ioe)J{GA~Q+#+~J<-Zvn9WWuhq>07TDpiSV zvM9{(R7F^?5*fh}J})QfyXdKs6~Zq0bf(n`e|spi5rdkC?rvn~m!RjNU1CV(r-6KX z!SVt0i+6Je&PuvQJh7nBBqpIcl2*|S#CuH#k&6nO3uBnu?TrQocmR6g47?Cr=eQ%) ze4`5=AXTYY65vfDuws6kF9Kr+S;9)nOP3v#YQ-8@V3hEMy#Cc`=o$j#1*iOauj~-+ zr&!3qj0Ssl3JlQc950>yI*VE$9qBXnQsxGNLmokF`swR$W(HQYXOwgAey;YC;&ofQ zidZ~RZNjwTsqMJjsnq1QX|OT}*9!@Ea_|u*Jjm#B`QrLBThf&TF@p1TlpKP2S5h*A zYp{|UqSA6Ue~kVD1`oU8r5CD#0!fNbDbkNc=Mth~4%qgb|3YHGg0ja;lADfP3xWQB z=1NbFGaOT=^fyJ!ZuF4d^unp6NM@fo8~5U)5xDn1bqIyuW!o+iC1jc2k$81ZCDOG+ z+m1nMNypM=BGv$8*>``IW0AqVWMZ#?>gXGDn+XE>pjVo`sakFp0w~`KJRxPum)cSq zYtk!}s~d=6E#v>ErWjfL*C`1g&b2SOyouS@AEN*kuqP*v$iaT+*Ij;5QEkAKgDu;1 zT23oIgNh4aVcQIo=_)k2&16rYZCb+}&qrx>L13t-1R#_H12@=)(evP6;T ztksLtx9K(1TP)y|2m-CTED4j96)M$Uvnud>r6wd|CQtJ;bU`k~k;#mzJ98E4Yem=? z2+8CU=E708Jp^-6%g`=iT?;tkptm+g5d35DNRc?9?9~EPX6Y=&q}}~d3R_{?R#!Ir zkl1DpG1shx-7;{=(x~HeH0!~5GIDkIQo4#jWQt#eR1a5PN!$$U*(6z(j0eMqfESl- zc!#-kfe#r`qh1=6UlBk-^B%0C#*6LoK5$u7)fq*9W<^p!=iTnSlUFD9b=-UnmX+i? zQC35Yci+Z@*i`Y1m@8L&ouq75F-6BRdgsA}M1+v~yuSkr@ z>v6r%U?Gi0PMRlZj{HDKL(Z>Sa}V;J>ELZ%PYa>5u#aP~$wdxYK z1lafqr*qOw&ycR)bKrO%;XRtokMgA5`+{)8>a_0z3NejV4!Y>w--5CXjhD#Yz_=!Q z7(j_r8j0RpiZG#9Amfo8+m#e|=9~A9Z>}&WB{{zD3MSF=eB@;9cGwIn@T`o6p(QF9 z`7HJ`yj&?ZO+TOfu|3p_JEIDwcwapdRF9)d!4V}(fY}+&Sf^pH{g!<*i(j}Kg&9f7{bFkvL%nJyjH=ChQ5Vg`qCND}Fj`}Q(Vow>kD{V&S&;_wRuqcaVt&sTYk!`MyR z8zCINkUnyzv?EmO2t0|;8T`=(Qg7_6SlFSMZ{U)VA71@Bajun;-g{*jK(g;W!bzGe zM$6s&gVQbkfxzip2Fu?z`_7-I?ofy{Kei(kqpF%-!k<&)MwICCUQM;mtvPi3WSXdr&)U?j+J33iEfHS zLD;mdzEf)8-vL~mzL1X2IrNQZF1fhG3XXx$*CRX-6$BMo89GNEW?mP$vK(M?Es2j{5`HmI?y zivDR4O_C}%i`0>6UquI{cE>F1!kvL7a9^o7$8Sz-REc)?Q5FBOHI+UYs-$H6i9(Qp zJ9W;sDX7bv(~<3`DAHRkOjCcRXM=e(Qy|95AT=i)PF5kXDpS$|wHq!mdDaXI86Hb{ z#<{`^!p&98SP|@?b?iCLwz~pR)R|dqUFU?&?3grr08umX>%*&%afwysKyb$B;4ng5 zFM(62H#rk8?L8jKpnCPnLUwH?RG8>P$nV@2`RzLv6)sNh#WyyKRCudxNgakCTix5( zGN$!^<(Dozud!tzU-Jhr2_a|v8Ly}f2OOZe=~^4RybY%d6c)^eW<54Sgw~iHT}H?v z1P1p)gaaz)=GJIOaShawSGbcHetUMf{&F@C`CEBme)wMzXzLPz69k_A^Eoe_71gz; zjQfVE74p|=EkWqN20l@!+5i4{+n5}(aOR;pH4HoR_nB2m;2lXW4z?7AusHC5={^f7 zh^3Clz9heVBu~L5eGe-=95Zqn5V*y~@4ewMl#7`8Do1ID%Nq`-LH|4^m{aNR1Q=v) z2SFqUR`t(f1clw0^PFi$)fLDpxD6k|=&6~`*PQu5EA?tdaAMW0{a5kn%3JYY6M}&? zUV*|^3-2JK*Ibw6(u1m6KagvzhkxVo@`?!8*BRBcLMl|IxzYEYM+pXQU&tfXX{7CL z8!C#HRJsuMYJB;rXAaNMQMl$H_sSW(M*CVJb>ieAq@p0iigD%yip7e_^5KQSJd^@Go zD7xskIdqzslmCEP4cqkVJa6)|uqjn>kDXT9c!6Jaz`>H}MPb;+4q(aL7Um_wSsN4Q zs9_@w&e1|lK3l!J+K9Y-+<{SD{8sJTQ9A&j5)M1?HH8tHqr7`xJ`3S>{psR|Mfkj= z{gB~4UfY5S=IWRIncoOKihYeYJ1~C974SodU_9cR9;V*mm2KFI`%sc~V6FjU;ohsP z4bm8~yp))^Erpq;OSrEOFxMkw^q!~6@KY^2PMR$eKqxSc$Eqk(pyp3ok!7?;_kE@e z89NDd5+oly0XR8U9@GWwadeUwza)G`{zFPp4xoHpNj#v8{|GT^;1&_ACT^CsIa@=~ z>aFe7|DY0Mu5-`WLt8v9Do>AV){qxaQsShj91MfeZUH+~^(5L@3wBK&4%*qwc0JA_ zl%J%-&<{Gg;Pal;JML3L^Kr>*H6m3!$pA9PbS$cA6S`x2Gs!s6d1H7G=_sAVL(_g77`SMDm^Ld;+%N%$2}X zad143^W~z6h#UWK{+aLk|Eol!i1Cp@B*LcC<}0ryt|PbO@+g3&#=m$Ka-93>1b@ zRNfw#B#Y-po{=a!&==dx0Za)7jv2-%1-cUmWD^Mk0ieKGFcusJg8^h9h$t5c2t;8M zHS60q@BTkdB~DsZ`Sr%!WRk+>PB6G^fYR*Zq?@j-M1vt zW9`0#M&;_c-@hEM8utJm&x!I-kQ~ z+?E0I8{0{8uGw;H@K+c8eg-Z|`rYIS7Nj>0;wCiIa8wB(*)IY%c%@R?|FCkw7#A&% zZ!s`R59C@OrN;_f9SDIKP=9Z#|99V*P$moog#ltfSTGh01&0G+AXrE;5R8H%U!=*6 zRpPh8XI!l-RduSgl(FA+9?4$^1~-=?KOf&eZ&`aUKkxdZ(dcj9{r-jh_zHc$>C?Zz zm0rTf+tbyLx|p8!sw4H!OXY`VySL}p>T2uxTokKmJkEy}YedLrb4HizYV_H06H0;i zNSNL!jg>*kbdUc)HWa0w(ZjNy9s_zExzx$ub`i1 z$~D%cXA%DX+$sEF$4?EPHr3z#aKj$%9m#nDv<7E&x;tPmznkCF=NwF=*~5iDo_2Zb z&c8l-tFWIRFP^I=Z2P!K8?Y&*YG&9 zKqKc5NQx2+;8#M6uof?rjmscKxyy?B!3A5A@(dX4Your6sLxo$TF|`BykiY2!m&~u z=^KLvKm-9C0R$8bC>9)s1jB%^tTYxAg@YkrxKL^`34~I=c5i==9buU|$6h|YTwN|a zPdHG>zrT2X+ylsO+2DjcHgRA3W>ih6%p1~*&^@@`hDw_Q_%B8#6 zl>Va=a;ur16@pZDp7|jJ9sV@3)D(bvL)=myJAm4q1yLrjqQWgSDNBHaC_n3e{`#>@ z6AJ|b!GO@5Oe743gJD3hTr3v~1;m0;7)Tm9u4!pi@okbPvZjL|8d`cc~ZUe+PmCf4Nd%1v>^Q0seZ3j ze8ih~G{d>tq0i`@(^C!?^|_5)NWm+53%}j^8DZ6_vsUt7#Q(_wAawW3U?z44S)ZyvAhEo1i^wZU@RC51_Hx@F%V=E z3J64@5w+tzyl1z+ozzJxH|N#dnA9bz>!DYvG(Y?7|MmZSl5O?hdM!46go~Y|8ytQ= z5&nHJ@(+Gq=5G8tX2qa-^-t-U-Waa%Wsl~rGWTT}Nq^?<%~FyT3ne)@JPb{yuT(mr z*5jk6n&I1HRne>KXL>K)Wp{N?R0P5z7PmgpZ$10_xf(PZ{MEK zo&OQq$%a1J>w5*!55f5gJ7xPP&VCUeZ^tbN<+aFWr^+_2yGa|#2VAQmDBLTVC3!;9 z!y}DhOYhIr4{SFJ1_blwx(w7N6;d4?u1^A5>kC_ZwCVcO zJ-Es5&3)69nO5FAv_kqj2X0k#eVp(>L^dlj%5>fdl?5hq@mlA$QoxhN1RFn*@R~SC!506_B+>-fK*#6mtk{0qf7+TmNA!!qHN@em@!`IOKYP z4W?e;i-Wh!+l0k*@M(GC;GLvlJXKyaVcG0yS^5P=Rfo7qo?@0@uGujYi&cDc?K_}2 zf9*RdV7-hRbCcBO1?ed_6O-J%PM;H&gPasKcyli=~^Kx76OQ&w5FEyGyc&3GNY1)h}G&+$B zitldvA-sF-wwM0#wVm6^_(|`Vygbxn(0|E`do65XfIWLJYmN4g6^2UQp&J766*}U zzq*NSd2}2qs0(H$ryM6g2B#O|=XF)Ue!w&TjD>3}P*8WJD|eLU=1QE5 zHP;39{M6=ZowP|G^BQ&@skRQKQ>2ZEvziOG!?)a>E+*$LJ>Zz+M34m{fa9kBxDe}f ze=)~r4G<0vCG8Gf8ye;iTI!K-3WJ11GAng_!)d~H^=K63GOIX-i%@l^8TaL3Q~UV{ zn7-Vv4u`B+1v^M4wgB=4tGl2EFuQuV0Knkx|4P6Xc%i>$KGZxZw}Gl>wsjEo0@x$? zQlsX}Ka*-VDwDjtH%&8atF5}h|A^=`EG(0Kn9JLLbSw~fX3Ni#4QemgBi2ssW#Zmd z)f?tsG5jCAe7K!zgu=xzaa6O!vssgJzs#dDI#3w8i$BST+QFkej?H(0d51&+`T1B| zDWArCwA)4=Nkm;$kC?6##UI{W;tyR>fuOB8r*M;{#?e5$w$lG{xteR)l(T}Xwnej)|K>zJi91V4!q?_! zuPy3HqrnVC@tfioG|Re>%EczP$+f3e%*zt?GXTsE18{HBREb!pO4~FN(m0 zq@g#^DCp)Fm3){yx#RBAK`t5{R)@xVTZ#wsYzK7WKjXm(lU-I1ekdB;DqEPqU-t*M zSIQ!2{~?hp?IzZ+8+1KAChE;yd(cRvmUUAM$9bM`7*pi5NYQm@oRW*EL3NP4Li|3! z07(1pwU@{-XD--??jw>C4wT>I&eQ?8a#ijs2( zH17LyX&FJ~5ku!g65?y)EYT(g>1QPFk^jlf z;y4uohc${tWay{wjzDhQRA-u@|JUxUDFbPeW=j^!d@lEnP^P$}%$OP~{Mu8R>WZq+ zGn4PDv3}V{MBWP`vxwYTPQD7xv!n*FIcG$_4NI(#k4N$qLNHf(a0=DVo}*{3>g3O> zG){bX!x&+{G9|Knnu+pE-=tZTJB9@9hHNnhvwkHyF*%)w!0)|HxD8v(!Lr}n@`eY@ znhQL{vH)6C)@NS?pE>u0V$HWkUbop7>yK|tW#w1JFC&riOGY)_)9!^<2QHEGeX<1) z@|>KnnI+(~!@>4Db3isVasHxbdddF(e8E+Mx)toBUX{*mT&-VQQrv&fZ!gvq+-2{c z3Hz)zd0X;!ShvEdo9o9&vp`D{lSlG}q#eaai;~6fWu=5(nqU+D5;u(r|4n);%vfq1 zL>#}k+RRgTSj{@0k66i!zmtk|TkVq5Q>_o@XR`>{`Janwf^-+6KPt$3NiTE8;^DHR zBfS_8=g(})g{&4VQ`IId^}U{KKbF8wjwCWl$fDHv08-p}(Ky&nl2HZFCXK!I?GN6n zjgElN?IZ~-L=UxM@lwJwHzG;)N=kQLSwr#`rT(#6gL>)Izu?uwj&vRFXv$s~~R z8!MzJqu@~XS~fEZ4zRyPBxdJ@ZW@T{zLa5-esh-a+Metof&*&|#tH_l^Eh{;Z3Kxq z_0#v|^=@zS)?@gk`^pw-+1tuKU4mXlw*)2TmR=!48&E5->T2SzdHR;;{y+8LYJl)81muZ7}Z^cN6gwKy#h^`r*Olo7Qt z!YQedQ)WZ4x|B{1<)`f7qeQc-xaV`JZ!0rh2`)?^GH*M%&+IASBu-{+(uj2v2>hbK z6`LoeGw-vl$Mvir-V`HNZ8E5WWygb*eH#nKq6uS|ukKFpFjzU3yM!HjFQ#UJi=lm)@F3N1AaYBd-_m9O8MTm7L8V@epUuDCeL$F zp_)pSZxvXEG7`y}X^aOH6h?-eI$Jt^*o|qGYM>ARr#uA~c;gY}#F zLCV1dnL1BwMwHpT-w*()42fX;`S`S1TPS|iw{W(CUSFqXg8qj}uk^7k=gSsex#5=t zFW^O}sK(w}BOe8jD+siSEv*#*s*$$nkp^+P4zZN=1k(X~!0?J;sgK+&)Bof4X~D2SZoMx7N!}km+_H!V8^fee4ou#kjYX0m@j;C(3UG+xoxrPnr}7U96ma7y zha|vfsKC~wvzE)|mZwU&Vl99?y=Y|SPYaNeqspgoGp%{`Ov6a^T|XTx^Q`- zP!EGSs*FYb^@fMqeEWc(3O_9{#;QW&H?Kj&97x3HMS3oObVm{W5LM8rn*(5>Sj&uN z95BKnV&cRLd9>5)lM7#BdlZlywmOv;oN7^NIG(j|xNY&3?=8Ol3o2j-E2IZdN zY9v0#?I>0(J?sRzi%6Sv^b;X>|c9bRC#imgBZ}U}7scotT6{OzH5!RMo^pWy4Zvi9e%Zyo^%JifR;4K_oeFFP&leBwhSh!lO8Bj%!rk*23rA0Uvr)e~*?23jDf-XcUCZ z0#POU%{%YIsV}Ag_Z8Ej7i~+(&Ru4Sn(Y}JCK=Tsyo=Sm8GmOzNE|=rMOrLqUYfve z_KvNZr)?12GfE(c$N01<@-0cG6c{O$)*yqIc>Na(AG^8i=zXJYGk+NmvAq5|YvJnv z8weD!BOZ9ObGAcD@GWPp3+!WwIBP&B`xY=zM81%y!*>8Jv8TU%_aTWliV%Hsr0IEa z9wt%D%UYd|*o0sUtNUHZ`T%#EV0<`iZuA^M4ERA*JI`eDRVigGzFV0`pcmsb+-Xa? zZ#d5B3Yr52UdrN10qgO)2lJ~`CY_25Q%n~PV3%o^f{2h|mO9x~I@-AvR#>Z2E#kcZ zxxw*f4$4!etz-i&2?OtEeOlS}gI*P9gAoxoK9`-n1VyvaA(Jb=Q*KP)gv$)DWnQ_| zGQ?7onU=OhaxU40hn6zwg>v3TX7Qv`CV2DMI(!e9d8 zkcZ**VU8}+kx&^A%eV(7(ZtS?Xj0xP)YIr)$l}XD*SsP zF0H&-&kFKdBa1M^?#f%$L~zdt!d#c9xS-?_-ZW7CfNBQ z8+{{o16oC_lLC4@pq^j?#Wb7kR_Yaz;mNBU&yFGAEa~O%qe(0A2^*c(0O#lONaHoVuv|aYmJORT5Fqq_f~S9ioc7lXn7PeEe}HNyON$FmbGw93DvO=z1pKF!0ZVZ`9~1C78;RP@Gr~TD(BH3u!XS3tMu$Up#dya zEK~w0V0UH^tE+s{q@~xhKR&pu4e)_dVzytsJl-f^GnhZed(%<4rR)~hw0|V;ZN)Fv zh&+hFPqeNwGk!&-k7IDQ+zJ%^ml#G|YqIKcJNBLrOg>qctEjJ( z-8680`eq@J!8kC70lekA^*}WB{28g!L5sbSo+aSb>qTZ>!gU#_W>(jAm z7M6U{mFP^nIf7zv?s;OiyG`7-eP=oF$&C=G%q%rJt!OYK6~g7)wy}a^J4F%(@)F44 z@9G#LCYT&T$;^c0=X6~ahw#%u5zc{29g@MMpv$7?%t~u;#mOdZ7;UqJD+j7J7SsNC z)g*N>BV}o)Ey#XV5@Y;A2@khifOg6l&{|#)i{$g}37NrEET2ZRfH9)ZRJRgm z5(^AFC8A8=Lzc{Lf<>ESX~l}}lLV_t1Rnr6JKZ-lhJsc0iR$Ttdm6AH5xfE=qS1KQu|5AmUh1_HLC3*zm%IJR zP9!T-z``|vBkj17bvZZWx5K}ecQHhtVgIe2i;UV|ThPs=1T?-o61CJAsu#y$f{lX( zgDPKeRC_UIek|%7&s6vzy3E*tPS6-W#HN(X>L3& z3v!FqukN0~tY!XLG#e&}#H9v=APQi*Z1B+P8sMq3 zL!(W6C0sa`LQ=jW2RUtBqWY@nJsH2`9trr?B zD(QZ7kaY*ybn{&}kw){XwR%=X`ZuYA1e+1elKW2fGO}cRaAq3Fwx!no`FC+Ea`Bip z+;l+w^ely4q@Rz8+-R^z87I8Jifu{fsxPgGA0qFhyjgy}+vwgUNxDHnB!7JramrOC z-AtAD7Rnsusrgp^T(fjq0n>gYk=51eAXj$Q<0SRPKRQsSX$i~PZ+VCgx6%UEJ@5uG z;2A*HONC2*7FhYz&7QIuWn`@$-=qK|7$Ivr|9oDuTFs=%tdC~xt3(@h~%-7Jr%~7i_Bl_U*1Xf$uLOowC-&r?n=IO?xD!O zhXdNehRp?j%bVC;&j;9PA!$uB^l2ywU|^R&ateRq--u1;iNzdeW-vLFFxeES@8HsmYz=m6=DoQ_B<7Nt05!UWoI3cZKcfO z6}kUa`W$T(qfq+&HxqY2inMAPB0Y4T1sBYp+dxG0_2FRNBY>(>AGI4@vAAW@sNC#! zce6)6eb{$C0*&Q!n@GcyYn|`vgL9USVwFsGe$|R$n?)ni9M!!dg8KSg_FsaCX!+q< z3JGOUg8g#~1fJ)c4K^qoR0@ZmG|03|N~xF=dH!BV4JXtC3D= z_p%OgET^5YIduBOW*ly^d+crXR-0iGYP2#(A~CQwq=-1YO`R&XU^pCGk0^w8@4tzM z;H(?f7CymhbI{lVh_EX5{*jEs%k`eemB<(ofE|;Q7eHe&v0Il$@t=!WA}HJWVbKnN zZ_!cSF5Qnf`uj}v_1T=CW6ZM)4T*$@F`P!9n-2%^X@HCn&=)U%Tdc$3FuMrvqZ%2) z#_kWOxJ7X#l6M_YDojoF>jhns{0FbC2Jy_gxGXR`Iveey&5KES=iztGMe3!VuXnm$ z$xfX71V~wRKzYEq>}d#GoW(AbUN`WF^_7zWWB`3Y(>&D(&4Uz1`Pd~a%#I$bpLJ%_ zSAE|nAzyf<-%qpW!eVH#xEw}NaylbMLj~qgyQQabhi1ZV;4&N&gS+}ro#<1lAlE;` zr-MFzmH9Lc%PIj>d418xr1e=`2_>_Rt^=~Tn4&>@hUvzNsb#ws=-rE?T-AmziTw8Z zm2^9srZe49|9x9@^0XtG1T#j)bD{nK1soIUunPWiUa=PccAQpZ)W8@zgGivJZa827 z00ROp=|OpnB3SR$c!>dt0R$8fOcVm{{6YzYfnd;}EHn%T#Q||3Tqqb51cIU-Y6v9yN~oldoQVdDdgi zYP;%PKz-Blam;yt4ZpWOL!jwP)BUD7o6pxqBl1nGD_I`awdT&a50YE8Rt*jsfAa4HQ)X>yakYmhg6IM zbH8dv(YuUMk(E&|X~!;Py4f&LnzOK-0k438R0oy--EbgSDijL}g#mEDSa2E>1_HrA zz*sOO8im3mF$q8|ochnMemq)ld`W!XaVswFWok;*3HWAUk-{(qZs&;T?59VhkeY-^RC&6^HbMAe+b2V2Kz|Ui+>)%Ai$mf5Jwnq=#8q!{p@O0zKW^ULo1%k&M~D>8nd_S$Cdi{3b+R@p})%vl6jaG;JCHVP6#9*x(<0DVC) zU@RyL1_;A|u%Ij`69odqK@h~t@lA6#tkp8my~Ko&yHaR>_Wy&2QvF)L|M}b65%27u z>NV4-tJ!R|_jgghty$yZpE`ftQ~z&rXL0uMj!(O8&X~kLrnZx#n%au&fGOTZhzhsg%<)j^W zB`au*Uoqp1SE9ZBpkT-VfFpnb02CN#77PYM0brn5FcuXC!o+~Ekm5rKmEyNs-`=&& zao@-3^^$YKRn$wIRpcOTZ_IlCl^-DgSLZwlUG4d4ojhMp#T!>Jr+b&?wo2dGdzipH z2Q1of$^942L#K~`-!0E4JjNN`QND>S*W?I$5gUMGNc(GgX8}V)IucJFy*{6G!k{;8 zH|6M|Hx_-jIU*fPH@CD_3BwCRiey?sqMV?M0y|3)(=)>{Iygyg$Ohh{EjcCGitA)!nf70Th zKdzrJ?8JKw7-gIPd#cYr?n!w)rRo%R~<4F~kBeVK#0848nm>u&7K(3kCxrfUsaJ6bprh zf?%kKA|eQw0%qsFb$nLl-DK8p&#pC+MyEVwtUp)z_ub!yvJ1@u^sc>9ZuCoBx;CJ` zx=a0OC?P}0+cofiCE&?Bo60l7Gii3y%ooFnZk>PI;YByOi&2kGScFkzzwevdhg|w4 zYps63XM9)MN>XI|ZF|^G2O*jf)b8)`n6&LlbW)d{($YaWke8`x$vQ!CH+z4PzR6-a zhQDgF676mQ7~CQ;E|krIC{6%I6c*{<%k#JQ3l0Lof-vB0Y77O0gCQ7DCJ`BgMA~lo zl*LrH2g8OeVa^fxCBXF{hv-=Pkhw>jnDWV=Ud$IQa zIee^}x4X^#&!mvqEW)(e-uiaY8CT_^o4L(y*|Ej0fJ<&H(|FU0eS^b}8$x#(%*o|5 z^N_JTukSqqx^Jx}58i`|37dH*NdwJX$6_B5uL_7~GhHZQe}XhQCws#sA%-Z(L;)=u z*UhrFlF+rMW?t6Ypcpa$APC?902dBHnx-I!|Nf_h09bwA_yN$YnYpm0k}(|B9P~n? z8F@3vBD{phOz`c~{WYa)b8a^p;wGZOXpAj6FO$+4G1xJM1B`tP3#cT?P^G!)!x~5V z$zAt1-0OE8SE}9|r{!*N>uz`?R^gb~He&}1Z+t<)nuCOhZ*=B4e0@mZ;)Vf7cW+y? zt0f&8>b-bclbVY6)b)XNBMnl|L6scU3;;B2_atqJHIK6Y4bb*i^TZlsa@BHjtLIyB z8+%cwPy~q{K8WyA@S{WsrsiGL=;g7Zp74QxPfB>nU|Ur~xse6CfzPb5z3g_BYW*ZB zPJ|z8ds+?lkwJK&%IHc$SgbD>nM_#O^o4>3yre}U)2j6~X~KAgOc8uxH_><7QN__H z^W23CFAmx1!29h>>ePCl=H>I#+BT$-)2+4ERoP>xbl5n9t$}S+l({?}vWqQ7_kHgD zR>n`RAsBZCm3pgBnLgHR>o()m|JMu30=8}ZJ}L3LQw^3paQkorf6I0ag%*)Q2}bUG1-HAlaFAJ|oLp|sX5XGm^fK}{WX)cx>rcgx>=~?Dk02d z9SQq`IettrkqUa@2ijOyyOhT8*?HY+W8c+hZ}qCGYfs1?X}F;zEKIO(=aC@6e=Jeu zLi{^`W(0{lQknd+ivC^SdgxS@aC3Ubbs92=asK0PJ(fE3+}{uBtk)Zs%>4`ZDmf7&iRi8jr}!r8y=(cSniT)&T(l= z^RS#@EGh1|%m2J*;LujHTm5gUReOPlb|&Z_@IkPAEBb#-9_L@KF3z?QLAT;0MRk+I zt)W1(OBe#OHjo;Rb}=Qk8KHoVBOAf-J>egxjcc@Qw_i0>&^#%c)hHN^o;mSZ@qzoC zWX*TDl?z(bRIh&cq*>bjgMR`u{j`0y5oewr%>m5MAsjqg?=Z1Z=o}|D#9CL3T2{3GZ-Td;I;56w_ST zul+s+pK>4I2>U`{p3^kKczaOD^SJ(m6H8fPetWio`O%U-WRx0NhM7!Og7VbU-6t>S z$*VWbbP4&YtwxM)vJZcO({ssaY`aKQT-pbm%oUaTLeN!Dz3IdR`8TN?mOz6wZ2kl) zDK&@;vwC4R5nV_MTWb?7#;?b{KW846Zwn7@?C_r`W_XY200*zh%D@=gpN;{2Et7uI8R%01!4?SjPQrL2{P` z75@^4VKnwqm!(N%A0nGZ!xxl!%%IL~e)Mw?c+lF|ZC1K!k`L)XDiqhWROAjfdVmqc`h%>z|`lK|4+ zTGyATgQ6#kogDxaGiDTFKPOz%J}jx!Sx@e%RAJKK%L^SIRccW%MnHT9E34!9bOb}X z_O)LvxAHdP`nrsVQTsZB7h-jvD4Cj#y=}Zs=p2+wVV*rn7TY%4o;1-d9iBh$RPA+n z-2~=%8ZS_;rmGIqG^O+bLycPp$L7qu(+zBsd+w-kdx62xleSTYzI(Jii1gwQ0aV2Xu=S>dr58=M zeRlq%{^uhY{^`GUmHvNuK8Z6$H+qTlhWV=~=BerZ8n2361Jfk`j97<$o!>jVzT#m6V6bt@i0q(`bm>Vm5s{OVLDfE%$XF)y0mp&60N{9<6T86M4bhhjjrHfbmyLAtud ze2-gF=RpnMO`F==^oKa6k(glAHcjYl&v2tES@Uem7N3x{96<0QsUL~N z6cbV$-GJITNz+4_7o104xzZ7R{c3e@+OAEIhRVT@9rQN7EwSv#;2XLZ@5LYncT5WMg;0O}Aczh8bgx>(V zAF_bAZxt%o1H_WMAfkku2-T$Dy6!olo-Mz=e!_4;!TIL^xKcN|9YWocLTWoSW&Y3ayS zl0d`)AgySdHeD4haXw-jMp9d2kTL6B6l$HXJ^K!Wi#S4a$QI?yN5tK~_Cc6PCh=+( z5^_PGPx?xlfNd499+zIU>?C*(1xRgl+Y%|SuZ9g$=Y^|gR>1%^-$%RBw~fFs)65i0 zgD#WOo1Q>d6%V}t4T(bnWQ!4WL$7OKPp;($#Z!VX9Gltdsr@gTs$OnO9PMb`or+c% z85R8$ocQ*Fx(*w#$qAQIyd%IiAP)Sc&t&u{*fHIZ1OcVbGpYW1)r>3?xWL zk=5SB83ujk;)ylK5VpDR$wahFwJ3Q} z{hJgV9P=YnDKH=YA4BSjrMCD2{$!nQP`3i|0l%L*!0ZA&c#2d;%9wV{d4|ej6$+af zUo}1Hy>qmg(u0?u&hGlsmAYOsum3i^dI`K)IMNr{nF9j@cEKz`d}a3#O?*i}lh1Jw ztRZiTxc*Ui)OV0qI^85Yq>cD?YOj_8@h0&Se zG?Dv-U+P|^rUF5hF}Vc$0))=kz`Z7Y$13;rL!sK@`1_=Gc9OD_OjJZtZ;}j;EQud$ z^^Y6;t;bhr5_~>}1g1gdq0bD_4xWekWy%9Z802TCGzoEz@dT*GlJW|u};|P0wvxtO%m2rX7%ASlxV_t zjfZI{yp)El;0J37VWo%#WIJ!^`s?+Xlb()uG?yizK}jz`v=Y;z7%w}qE`{N93f zon%Pbl@s&jlJ8~z%;=Sz?ZUYskFG}*|4=DU1kE%kX9s$99(YTf30I|-6WhunKXwv3 z+uIZpPzf3@Kl@(gH9`!N6tl)9`ZRfgpuO@JcSGPs>J^6u?xI~~J!hB4vqkI$6v=(4 zWmHDPZ5|{sH&DQS=qB3_3=fpO6Xwy`000JE3H1WY=knt3aQsWTCIpO|K2@B%d=R>3 zy@kWu{Rr5*PUm*bSLl(k+U~mQCohKNVh#B`gPN=~Z*`n3^t9kD+T(Us^NX=|Iveu| zc@4arV-S1H01Y-wCIQthx-a6@$V$8!x#uZ|Au>eyTZ958fTQ%c|EB9Hr3t?ZXRKil zo|e_?itl21H0J?}ObvE|R;jLAvOU{w*3_wN9&Ag<6Z6`ZEo^ zT%O1}&ms$VV=%$Wz+&y$7c?#6LRBguZ&BtH4h3zZHmm*?#qhK=KhjpI zt0VNdfMKF3a&B3x38m&(htw=`}(Lgx-2 z;QICm;a4Qfbz*%ARU=9dX+~$w@DZWDvFAk%5B=d=(@!SJ|6@d!?6ZqdWQ_;d1X*a3 z88;RRDAupDOTXlLM>t3+Lz7h^va{`0K#5~yjj_kh45uXcd0#Tq|AhKV4X8vmW;W?G z97*H_J%Wk!Ec`b!-U7{sRtyPG1-C_XChVje5>q8}j5>kw;%@rA*Q~YTZ=fcLO$*puT`-Dl|-(XB|R|z`N4M@RvI`LS9dYp_t@*-wp13DLtw)8dfw`xjSKZ zf+BE_u4721t`3GezSzDsQja6;e=r=T0mP4-0Z#To3W)4`|{zu*c|McJwH>>x+V@nrNf}wn~a8GDXh>(>$whI zS+ntHT~t{<{itWlR6eU;d+#lBV^+`UAp@Mc+%mp@FQ$;37C$389Z?ifEji1BR<}6) z*GEvX6Z8g_MK>3RHJX(~86H6*sRd;lrkTk)#S=G(eO)$3oYVNr!{ zTu8?k{yDwhS$hz4)n^%Y)b80eTAR7*xMqQ=6cdHhU@j zJ(hG-+fcBEH%!``DN+ZQUjw@?o00$-!W4TwQtjiO^$pNqgNkK>m0LnI?S_6(=HrK? zzc{owk%Fk|s3_O;_Vw`l+Kf_g(WgV$9>$VZI?#=Ly#HUQJTGlQx3G$w{_Qf`3Npn3 z#n3VGDo?#F2ZKenZj1*fY`LtmE1_s*UD7OOY0%9L1(^^qJIhW9?_ERA)(lx}zNA(^0!|401Zi z|H+Jl1Ri)o4YxD20LiNA8``ePvZ|?b9u`x469P+yw~YfiwuGpVgr74ynp9k7py(=t z23;bqxAir zO4ywBfl_U9z9_fdy>0I)z|LpcRWM!?j-FEEQ`~FBIexQ$x zwYbJF0pO{Y(H3OKu;QCPz-@#Oq&z`jU0dHW3JX?@XuVX~ADA8v*r|evKxX#Qam;&F zf~^*iXWZOF&{|HT1Y^kdcYJGP^o$8`Pf>tY^i4A$O*PEN&vEHszk+VxRe;Lnxyc%R zq0IpLtVC0&W=^H62dBo`(cB8HMAPNcu8;fXVFtKQUcb`v$*k?EIZKsaiDc&C@3K0l z<~hxMMyH>M0kTP;nt`RMXK8j>!q!99C7%^0g=VmTM;t}^0fXXXbn9Ga6TN0jS!G5a zretB<1r!Dyqy+|$(G!~1L}doiS4NvcASOZX*2BQ?N`3$0^jq8)@~K`g3eC?-%6EH( z`mqgWt$^Lsi(Swk>xqgA`XH>l%?V;yTlG+IS(Nr6`kz5}?MZ#|$iiNJbdT+@+eWNr zuoVrZeKYl_EY{Kr{)^Nj?B~kg=P-cFxVrr^yHo~gVO-?AGFPvze%eIKY&Q6*0;{Uk z;Tw_)&4M6J&2H_^FA5>H(gp}Y$snLU4>g=lk^j)a&be*3mBv5^X5L)G&oAEk+E`Jf zU(DEZ$j1B$X!ia4Fo&HQ#CW}RuOWJv(Z0v#K?zewvQMl%VYyTPG&#{es63{&RpffE z2vJyX0q}UM7GcyT+6<+{HU3Q&CG9--KL(SlBLMaG~ z`f??sVvq4!7K9Fp%bD8#v9UP)fCHms(@9*JPKpk?x(>Wf#xzbymEZF_PQG}@a2bO1 z=xJwbzy?XgegrJZbx_!&railp;O**gy@qw&zwGocG;>b{jZDv)j`2tWq~Dav6={zK z9unl4SS;*v(ggzke@E$``Abv(T1q5vQ)VisS_}8z>sPGPllhaW!7s22-{P!LryV8u zR+mb{<`aE({U0COQXfEjz{X{fD9>Mf6z-%lnOc~g4a8GOU;qFE0T>G~6@*-pbjNv& z1^fX76bvj#4F!tffY_Lj77PV~fnc~$Bq1S$O5^h{zaD+Nq{+^;Cp>2qiqnZwQuIGg z`fBarm#{_p!~K5^T`%V;_-nFW?zvsZprl_G!C15$kIGBHPoKqz4C%Y%6}*x3KD*xW z$nSw_00J{demXRca!xfM5ZB&HarFI>^eajz8cfWQ*V?RSc?@#L@VgY**079;=#IlT zftdOsj6Vde&g$~-P^(EGn0WopU;>RQ3J!xx1mH-!Qs6=qAM1bn|M-L{@Gpjbhv0vjhgQ$~J?}=} z)^dp{>G#b}<9p?!-~Mn9&wnJvk1Yd*jS+wOhXCNve{~ou`YIDmV2!3SoO9Fu{jgL{ zfBJ_MgRaX+kC&i07Xu|DPcMI(=2>A?d@46o2H)=_F|EeC_Q+ZaNf}C!vf)p|IGlm= z@z{V-X8=-#QdMw8G;_oVWD^Af!J$B$Fg6Ve1j2xzSTGb4g@S<~ia;%AUcE-7s=3W^ z#dCYrmn!cTh(GK9==?r~ssQ|MyLrLdN6>fl;I-peCimB>%>eVGz=mRf5Ap(1I!wbd zzz+IV_p}LcV ze7VaJ@9vRM3IU*lQ&T;NmugKxSg%4br;U@^g9zi0>7s7eq|dV77Pi9f+300xtTLrqZ!8d&GpUQ<)So|7CGfs zuIuLNbTqb1&;OsUBiY~7xOr&#caf`=?do1JtC#+pKPOKPm5jdq)MY!k6$oy=f1%Xe zzpJfIt!!=aJ>q8e#(<16`=NK=`FVBiGR7ZLk|s%;3R%ugI&BeQc`Yg%4SIzruu`$1 z_884GP5M_@purgaJyGODagxhi7SN|X28=ku3r`GP)Gv|@{^?NPd)#&{qj^{gHcKosX za^LXscx>OMDn$v72Tjp$qD&QejUvsSZJvYD*sbWuOtlArnIPu3_*O7CPSB|oZ|Wu>!Gj9HaLP0Q)L}n2y^6s_s=g#JH*L`>GiqxglT$-z-Sln-Wd$j4@w7+9~ zC-@`!uaumyskK+=wcP>88Gp0q#|)#n-p>S}sq^aS@VbWia{%JX2f$>R%}YGM z54$;T02Bd^{M?xcuYf&|`St`tlQ?HP_xicJ%_)kGZhR{lkaXs2>aiu1{Kqd?#5wJ2 z1h7+f>4!L0;1W~q>TrlG63~0XQWCpgmF_uqWZy*#(7IE_aYB4y@=)%^GAUL)Y{#r%J@ zbGrLUL;4lv*#HmCQK)@$F&E5!aR-l>F-0)Z@3M^N4}j)@h8akAJ8+h`O@pAdydD_c zQGy$*?=*4C2}}!id^wrPa7XGT`&i$e$8xlSW7-z9pqosI zRe(VyTEQ4len_(a{@)NRNDT%8!+@}$G!_&Ig8^ZnSST_Gr95n^&J5!F<2Q9Am1{KC zO3Ubc#!h*Ae$sU6hfW5grJw%)9>43;;r?{uUkNVHF2C+?f!AMg+4K2wqnrO$OLXz< z@9)uDGV?KYK_k5ruY0n6UKQe8)1hJQ*J3Zjw`Fw|KHdoYy**T&div<5=$1zx{4_t_ zH1{(x%tWuYoK6ZZeSZKE{TG#^Lu$14wTM5Ldg^ssm9T%(eXTvl?}kl_vRf?;y;C*C z@y<4Gl-QobH%qBet%B3GwIgdxkN8I=;0MMFg@pm2v7n5!AqY$XXFh#yT)n}TO1;Y# zmXf5Q&}+KK&F$yo(>V4|AD$m>K98Lpzb|KpX20vr7Cs#={1JJZnDFoJ!5@ns;<`J3 zA9*jcwp%%0*B*Pf-Td(I{87UhxzJg8uzCG`CcDS;JZI4E&L^v+)my3!bJD{5yQHxh zZojvg9JS4zIK{)aXuV7;>?!%*=exlBeBbo;8vk0}gfwDQSE*O)kxO9;U0L1+Xmpx- zd&4Wuei|I0j2iD0Est5EiZ>buMK zTJ6BqULjd9JC-GOykoN^(QE#DSmq^1xVXc$+f0x(8sXNvx*&3<3CHlLBYr`RosY1C zkX2W;O_i8Fxp2MXPDk@Pgyrv)4Xr$alXbhccgpXkvveN7oas*5Fa;UM+XII+wlL%g z;muJ7YXWer1NVZusz3}3-RBDD*K9r~*YJK*wK1p*miRg3Nq;K8uuXtSb=O2|we}RyUz?q8Sap zM4vMq$~k352L0XS>A&b;WeJ=1?HPPR4fdp@Z$A)c()H(d+(3^iu%_41*A5q!m5V1J zWPdVFe<^_iu_A9={8`EVczm8?Y#5(4m()e3ea z#gYIa;u~OG%Kn!70IpCY3oM~(C9XE|*)N;8MIyVL8<$-S4xlSh>E=^Np=XJ8ZwQjl ztzDRj@P}VwAtu_^iC^xpm-0W6CvxI`V_G6S*vv6BRN z#wm|EJPI&NdvIg5cWoeEz%Q?29U@Qaw*?yLY7#Rq{mBVkk^6vb`}qJKwFgi;hg5yu zp4q(Az3!>77r%*by+VRDVr!>XK;g5))Kn@Zil-c#<%V#HPWKe2`ex@k|9R#>rdKhy zv*VHnzMP;6VO7b{XMPt(yzC4s#B1Y$El_et+%9sqH;QZ+Woo9S3p^Cb{$O}3_lJeh zHr=dX%LqW5aRAgfm<>4x8(X9FGZI{{7JUyc>2)IpWVf&r?9W=4!h8qjZ3c8yKF76z zO5q<+y~9q`X@+kL{=>m%@%PAk#?)Zn#*MPCV}a^nn{aRY#vog+DL|>^?{IHwACzRl zzIAUR-Udbhx2TFY2i=pGyEg$#W`R!9DA(RKX!x3Q76N9*EcDHht!ScJc!iDKpb-)Ry8QR(zp1{D7fQEUHj);T|$O*)xR$* zV>iYM9wytTA9|My8y=+Kocffuah=o)5y}Ffy{*(y3#>)vnxa6wL-lUC#3je7o5l!@Lf4t2 zqqq8t{rKmw&<>)2m(i6-C+8_=N>o?Q{$xE8_ng0Dj!%hHvV(29%Ad6Duv+#j$F%H< zOGS=q1@tFDyF`gYU26&~}JLCZ%ePyHd@e_=Q%GQicxuc2TG#O0(go z%8VOMw}@Rt2sm;RqU)n=_E%Wp{k2#R+VZfqm@m4*Q3&i=FykRd|KWh3dOeh=MxA1F z_Z-%ZviTX?(rWD_yxm04Jdq*isDf#4kvi{m)IDDxzND})4^V!VBgiDj!G6j~e};>G z?T`Sv3M{`O<-(1la*LLCF<9kX*)5gnId)f|u|rm^Pd+m2N5#q{Fp-D=%QnJi!lLpx zB*b|zt`q@uEt!PEh8jTqK>#3qEu&NHbm11v9wF2*p?X6(t@=FR+`B98|42A&frP{m zC+(u=Ju8*H7*fps2VKcuY;=|YywiQDG@(b~%@&YaJpGHLOHzO67_~`T8>Lsz7}6TF z=YxDfK&uA+8mh^B)WQM*Jax{O!HwRCLN6c8)ZEy3^2CVG^B09_%7s0fGNGF#zlgzp z?dPosQ7R2{tv3b0PvfED7j4c&iqFXx^LVc1FSuNwolE?09UCKL+{%ZNax~C?beAoW z_=aBpmL&Uj#2*%H=M8{IWbz#be?-4zyE}CXs5psnU0PDPzs1jK`*%C;8GH%Aw~q$% zK+b*k6PLsarmYdC`1|=_pSP)>oW|W}V3u2r$g(HV1Mk?Vfh(K@$;gvZDM@0`2|5ll z^OxNLyI9VR^|J@GYx zVCn_X+z|)!2jVjkOTTRMzUiJ=r?~7M5joe|d$h!ObH5F+ab^dXUV>l5vy-%H-C-lE zOvZFNT%(nDb3S9wn-DT&yvTnLXX=FmgKRY?q+vuQB>~A_j zL^^^brYB7n_f>#L9V zVU^>a4A#s@)3pCdTA8gHk31?+9&o#2YNGx?e$|pw&s~_`{W6r}&CmbB-Uc!u8aKG0;y(jbW=9+@L*FAtu z>DwH@uVOonF-#tj!wunrt$ZX7W^D}0vw?VKWio{I*J1&XkRmkI28~pfID75hWu3^v zp3|zyFNlW@gIXE{bGc8PZ8tdG16oXLDLYZL_O5{OCpEhNEz>&g5Rcictj|h8Hf_bY zF*HzMjpvZh0H|lEeWuJTB33u@=`|m^`7#D>bxV{v2iaG&K}4xH$Si|C!#8+yf>WRhomQMP6{I`)--cOA zP5qH9UqOCmZ$!V|=Qga|tAHDTNsqrKn;}JGfjTM*qqDj{d7L9~EJ&qxptOz{d}C}5 z%QDh;)AHul*y+uB!cJi|4HYZjbWgfW=SBLSoq|IXF1^P&=}&E#TA?+`!vfOn{wj^l z936~m=aCNv1>tvNho09;ymXUZu!7c#sD|^9AZnVikKpRRkX_w@`ac9?zKll#! zfkVLv9(XhLZ`I*A($BBH>J&|qDxa3_3nCd01#Vz(YVzT!F^J%j06X6>B*y8k<2_IA zz*rKdWrpRw2&ruO_MeSa6W2*fTId>DPR}+6f{MELRAh@O5P$NbKBQYVa(OBT*Sbig zg&j0m?6PZ~2UhVJtKc9Ji0zV{mp-weH=i%o0&H-+E3kc@lBVPsJKt}_R5(mxhSAPu zzIRmo0U;$;X1b3+nPFd|1b~|Y(E55hwC#u3kM)9z6LPBQ;quqKX(KeKVCy_+z1Xev zjH3JK#0~RQwP5B^?POX1<1fua--z8oRm23dVV>z25Y`C9_Q#I>c3i$t@EFG2oeF1s zA|yql28Qj6yQ47mnt88k@XxA!|9LjG6|1^8a69C)Yd8MD&IN(Y{|dn8uHE zZ}isPzA$cgE65+)livEfLVLYQB{!gYEb8(Ea0Ms!A=!Zg*#D$om6-zr4gIA_QTk%> zp~ssWPgS1hj8GmN|HB$)_bHz~ELn;9^LuxmhGgLwdCX?Y+?S*`RhapNl^vwouRs<^ z5hlPyj_bu4XLKfWu(p=nWD6xo{<@+pa{!wYcoEG9%ZVMMxu=5)>c)E*V2W$MPP$vs z<3wfgB)C8ft~yJQ_=M|aA?Q+5))i3pi$zDFv3rYCjMWSJ9BTvr}?;9MM=^PjL`J|zEOSGKi z+=b{yPES^Ib_x|ekv3aui_3*|Zv+L4 zB>%m{Z!t(wQ4$w>M}{RE3%R}><69Q;xtp4kL$avV@w9{de_rdmNI$%{Q!~e;M!URp zl_JI2UZM0Rvcsm9qZROMNBWgMI$8X-9oXps*cX~d$nZOHkZ)(NeoE(kG9WU-1 zOGhBh3|(Y)Y|9kFk4o=j+ORF3a#X_ShNXL0?U{RskEBI6)(2dZ@o6@Xy-RBRxla#G zSu5rVu>%viz!8#Zk5!=r6RnTL=3TJLhYy}Y$(A`lAO=~-U-|q{XH7LF8{Y)OEaD2= z^przC%F!nLG^YZ*r}NMlp<>@FGwm(-OOq4)Xa=Y{`uc~?qvJDQ#-vuUaH{VA2E+Ma zvvAY(UVP9y$Nf+EeJ&izYA|F<+`f;gk}nE8m`Ip$Zr5<^Y*Eof-eS!jY-)^)rWTms zIgc(w7C^YcAkqK^x1ef=JUtM#B1QmGf_PYnUd#lVhJHIU3|$s=JPRC-GkG+B{p%8Z z2I@t45Nat%ocA~4)fxyVqZj;TQk9AUDQEIaKE~K}&ry|!I4puY_NQ@QH@yqe6Fs?+ zZUp)$44=}Pp3dcjg{7CGtNn_}12b2*gNR{YypT=SMMwUdKxFS;9XYMuv&4wiLqhjp z>=_rj$tdce-}B8!X6l9!py2!O+LEMHaZOt;I3V9Y3Vcv};o#8qWr2tlM#Wm41>{w9 zJnt<^DdKQ)HLx%_tJOIKJNBQz_R|mOmTTIB6lX%O zV8fBHw}ytmd_JKTDIh}9(OB~aZme%wtppwbYR#I8F_U(qi4}|0n3HWA6|TiZ%}DnL zv&syW=EC7y5x&E=SSfjp* zdByyv2E_u`S3t`WW1OXrhFk;aJ5-{WWv~}c^o5>RSBlJ{R$F;2opJ*qSM>`5Nhus6 z_Ett$pQqsv^(eOL!ZaFsE0vD1(=~sj=p);X02AbNX}2zUtw8C92m^mi&SGh0?dyUa z&KyWKZ!jx;WfZmPM#VR~=*=6J%M^^mS&27=824`Mt*4kdJ_|UI1b@&*^zE9FBOxO*;%QbM56Y|-}oUF*XIqnAYyDtw`LGL^t#f>XL@9wXn|yGr%G?TP2c$SaZP_x98AnqPW0UX>iL;hecv#s8PMeZP}xu+`++@yk3L z7!6fQ$fFz{@2*-AgR_#Eta94#7333$0_Zx7g{eCJ*Ct?iBC{1?Y*&agFc{rp4xUR? zd()cY3ToZx-iAG$t;6NWoaMdp+?s(_PPl@Ql@kl}jk(S}9?tXMa>C@6?_L>^| zA^MC(JE#%EksJ3IBP}n6WQ#hAbybRwF0nfRf*BustTZQ9yWWYJm^tFVg*EJZhf5D0 zbQrJiOanl+;-QG--RnFGix(t~xn{G;a-^Z=o!H_9r?;W6HIq%#KlE&8ew#G~0J8KK z|E-Q+Fh=Jni6z#P)MhXt$dOT{P}6^0rw5Gi3s37fT}R_(`Ec>35#M5aJzwq&;;T66 zYq_yGYtIb@3JVTYJq*%=zk@81hOUhz_(K6wxvYMgJq%(hpB*B;3hqe(*V+XJxG{j z)Tmm+h2@*o7zgx+c3BgHU_#D4A{1Rress|@(dvFEnZXK=%}1BE@~_#&>@&OcAGCTk2RczuQ@&Eo3*&pSJXs6izhrKO z4dDfYYk@S(uR7Uj)RTa7e5C@m+ez-4KfputMDV=?ET8WxYw6(OctLy>#yPO;5<@r> zXHO=PNelo00{{SZgG8FQ{`>-=6|8t5U;zRY5KKxE1&1Mk$gD0H6NQA~P`Jn@5mL9# zdw!bNUAfj@KYg;vHAybnYtDz=zhc^YsK3$pu-41DD*uI_FLCUOaNtj6_uDNsc<&eL zKayjc_E8#RURUcvwVDpg%{rb~JvVEOD2KDsfVKTbD4iHFusUV87J zI`_|P-&v~E>m!FeZPr&q=zj0#n-}RXb1$2IrZ1=BKl*q#mxh#Teh^f@lV4REk@8$8 zF5lEw@m#;8+cqEF!s=!44cY|)oSshi7@f`+48S@q>>~6j856mF9hJiOi%JLK_|^2r z#wg!E3l_LPEm+H@{$U^s+FJ{!MZ~8#*d%=6B*npsR0L&JCLvIlST11*WD5lX!hx|M zEGP|yf`O30P)rmd2vp;H*RL1sWosvWP245cqR>j$k@D@2@d)MmG`kAV=k<4ozf~0R zmR)tpGu=WU3V8jtTStF36_26?6nKlXPY<4d>;><$JNgW~MHxnDBa?i$@*6(y{-3=^ zqoygik`qSQ0jId{VMB}*kJ2kZq`Ho`ZCfCS9M)5&byA2?In0&a2SmETrvPL|@uoTq z1Co4jrUza(qkb}Q)e;6f06WUNwe0NU04{&>cXTPnBw>HE?iaDGzuMqXb;!z*T(cVXXO z*L7rMcrkcaMO8(9;x)ErqPCSr-9QU4|Ds)JV?lZ_9l%%WAYK-AuXjXySu(F%Lt%-K zIHhqnlBy9?Acc!W-c8V$v@oX$7Ux}6mWx73Fi!MkV9xr*put!$CKLsW0b-z7DiaEX zOzY*k)T_$ZdKXuddW4fvQy_7Yjd%Y3AIHP;Yq@%Uy**T{?HV4R5*%N@{=;w&qpPi| zr=;>^-i;nD+eTh=sz0h*x5lq$*z=>cw)_60@|zGT{g0>S2HFWN-L;|8UAvSKE7(Z+86>>?$B}!NUafrWW zFR~^nB)J}$oQ9_ZK#X19Ci$)Sz>V^!NmW7=)wWb$bt@g3Q2K!_|Lrwje|pEIT3{d+@+VyuaK!fuKEuM=`0M7lTBvOjVNm&#%Piq zFI-tvd0h?U1A*fi?t=`RUB)JT#^iZP&1!y8!T#votoqOi!dn_yFp(9B&g?C8{+{~w*vLT9MO$W;WOvz9WwH|CA76eK3AlaVL)MQ4}# zt+uJE&cJUg%xE{S#f2jp)!B$v2p?a45WOl#Sa{gulTU z$?E`)73HY}Ej@22pQ9eUp^L9MzGuQDc+easHjY=U4(b7~5v}T4n?)#ASQWz!Y}q(8cO3@_ZZLIu1jp(nM<#@e=|n+mk5f4aZ`DHr_j0! z@pYZOdZNOZCiD6*n!8}w^H{{8EgRsq@NbjjBoH-gwzq5IcN?C6xR2SVX7vN0y8@Ks z5Hp2`yGK$-va8Mb0kjE2xl)$V`a%3m`UUpLs>>sL(6t?iA2{7)Pl=$I?9#f@gPqdv zAM=_^M@yf?=;5o;BZ~m|$2RP?sX4(;J=+vNWzZ1L;8J*%eVF~#heqqC&1NTm0KebE zP%dI0i5?~0Iv1R{g-!ltcp1oglGQ6#_#Oh{MapYoSE+sY}>7 zn*OB&8GxAuQKX9*qL;{HzoIQiVr|L6ZiHNU(W#!HM_y)Oji4`FTyvA^0b~XZQHK*E z`NMN{a6MLA`twkmIu}n*T2D91V40?0!_Fo@7U^uI83yj9UfM~Dm zg)9DmC>W8ejK0V`voOARZ`WnhyEoFXCvY4#=@)~qV&_8_PcP{Pm4TxM>CUwMBpbR4 ztK9~_Fz3pxrOkHSC#bleo0*L6HRRDXimz}N1>Jq$3g};v9?U9<2}BkF(mmQD4}phh zX-(AIN_1wWwhVK)%P>rpXqY`k;;RCbz}*j{vk(^X(_>J0&fF+bZU^Xo_CQRP7M4Sh(|k z+hIktsYQ$_E_6J!i2H_%QKcAg{ClWho>4PtSm>k2#x$R#Fq+d#KroX@Vm&&SKHXOf#0Z!W6&{wdu)v}VhVPK_AXr|U<<+K ze%cOJsa*)H&!USL*uk}adVvprg1KZPpXFu`V8KmK+uayLFinJG=Cn$mD@HWatPj0# zSa;&KHOyr3d`E!npg9`%b`=CBcQUeAUhiBMB?M}KDiLksACE{Sa_Qh=j-|h*w-R=! z%-!LX4{{R%H;mTNZ=}H`MI5=^@LPx`gBdapHCJeW_QqItX;v3vH};Itgu2u@w~w7duo6@ z4odVQzI>y;$Y#DG!8d?Z!S2RZ&e#ygjpAX0W&F9RJ-xM7D7t8U)&-Y6uPQkCxW1$8 z+#10+FTu`HQTU2mz;=s5^aq?n3|>M>Hz89p0cU#<^$1AF%M8^k%$L(?97{OOlR6JR z>}cr%!;D|oS-(YWYdQI^as<$7U|n5S@vQPXw>?jTp?tY=5%?Y?>y z2M0|xY%f%teun~dNRc1Esibs$cC2oj;BDStv#K0QHt-U~fq|u<*Jy9Tpl>^qa7QNZ zgZFa1ElWe#?KiO!#Y|89hd&46?X2&rMQEoXgpSxL3kf0U95iIWgBHH3mKEk8JxnQF zIZ(NP2}0Go$icg(Ws1)_B^|NSCJ&=vQ-e)#u*y{)`86 z4CA%1*eE>*uZ0J>%jV)+}`uEjK$j0%P zGgv@{6dtcE`cZ;YEmItt@J@k<-FPPDm((XXyfHJv(2_uHV$haT5;a7B!1|9Eu;IG6 z7J=I@a8&SHL0=XMhn6V+!y#4MV>{jP&Q!(8q?jLQI%pHO6jwKCkjke7`tG#bU&9_Fvpwlr*p4wW97_m)yn z*e4*Z&(b;9iNm<^Jy!>|zOK4cq7Q?YB=1sOU={*W%OgVv2zfsl;#9f(I67|Lqbcx70i{ngL4%c;}1-qZ)StM`^zz@P)PD6xj3;lfVO@P)9aAP(JA84r#tD&Mbuz$|N zF~oS3ux~asR>MD%*K^=O8LQT)4PzM@4*gZ!>(f=m^c9oEEjHhA_fD9B#6hUo>_q+4;Z1MvFiuCl|C*hAa7zsmr9JB(g2QK z7E(Q@NLzrI-jZ8O5k^CT6DMZLq4%Ub1u1K-E;>rEjI75ShIRuF`SSqk=-P|Tyd3pC z$E{LY5bT!Xtb+NgN0M$>^^5!2YEE3v%e3gAqotwSr8^cGumD!Z3|v7-kX@$V$G5MH zM8_GASd2|5z5|4BQsQKS+dD5s&dB8w-RzmpMchOj8#O!{w<0c%%_JmehSx)rhY)u^ z?x|VY0%~KC;d&02-L(lIWih3TobE4N!YQB1uc-qANS9$Pf|1iE*d#cO;= z1MPIiE9Ter

LC>)SaH%{9T1RrT$JIk-cVxh0f;@VjkvEIPV=!~x-krAP8Z3}FHV zC^r49sP0Z#qKQLR1^C}wVi|wqE7>t136gfxwXHa5RE}t#0|4DFSF=2GspvdXUj zMkZkZNo5VZPif-qF}y-EK*#6^W=DzX?cMYk7YhK5kp7oB+Hex-a`M`d%Tm#yc-$Q3 zyYo@s9cSxs2(Tuhon7eAopEtW5(e05V7d1wkFZHrTyw5#B0+65n?+5aNyEm7p|+7g z+>*q@e^tAT#MjOL@M9PKU)Gh6dPsO#l3WbJuh*TLaVa4`)l`Qbv}%O7J`^G+Qbz=Q z0ZzCw*PX{OI*2hTe%FMF>Tb8F4`qNy_2r`oZU9A{U@A&3MX=Ze`*FmR3w&Ofv^Iak zXB)Cdm&{5$7I}3to7g7))O{vV_GQmTe!|eFKM!6BtHBxBR=t2Dzdekm?)*+Bn7kTN z8dVM3p4)d|d*|MB;V?!4$OGwlu=kWKZ=y*;{CFa}S?l+Lk#Ek89Nw{fJIVeq*~1dO z2~H3BuMAMbiXXaXAFN=ILkvdZ*HBxgLOQ`KE=IFO%$~pCdg< zeYq2mK`7pzH(c4{%&H<=y9z1wB@H-uM^EJXPl>5KqM|;AXxw^a{Il8b-@@+sN@vu$ zSTPRps*$ThWz0i}$m?A1!cdB6`&{I;#3*D@X(a{KT#d4S*=O&mT#J8(a- z=ym$^I6e~J3I^q)%C@pJ%@DN?Q*WNh zP|_}ox$H{du9^aBooGH{zsJR6 zn%bFO7)xmh#{`(6p5<8=!ZdFKA0&fdI9NE)k}yaBpY%|Io651Rrm7L&pF~0{$8|Tw z7>zRLQlzJT*Z){LbS)#dtH7^fNd+R$KupVerm0aIgPn67xS!LJiJ!c*1HTxN)Oz$e zOjhD*URyDNf+ZqVcWTYSzS!&qb{N9)j|ca9gM8R{hXb9>T3*EhbF^Ds0iS-pR`dY! z0FSl%Z}dsrP}Uy{*#tR1NVXU5incgClPkNS@;X0#C_mjgD1KCkreNV&moXKjH{aX! z&i@)8S}CP18?L?&YR4}D8-6u=cB^PWTWv=!dE|K~^rr0o zZU!P?g5D198iO3uq97pywe949@X&%Iv)-zRQtGu>ZZW6AE7R4LPXJ_Ru#b}cZQVz}LCwQV?sA*ow z0;xw^A}yx#qA0)rm_Ulm{l6M}shlgr1FElU?yWpE(vs&rF}5ptfn3W;5*ZLFMT2|q zxn5ZAZ`rc+*!?7JnMPtRLs|hT^*}peY$z)r%A}z&#wHf=hTOA;RDU(iw znG(9hocqpL?$w9NGi_)R#S+hmT1VOh8m`pJ?u_rd+Wy`qRrPEdDT%~==!lmI$6mMP z8=V_1g04YoJc%O0Y0DCH9m2UGoy z41_(7qUQfyao%+``QR1N$up%krYn%_MqN10YOHB1axug8eB~ObYcLaNiu72hN?4KT z{phOiKM8I6P4p7nU;UQ9vPoz`#&L>A{u3zKmFZr!nssMM)x2yBq=#BSQ0YF@ir8$~R#?rWfv?)f8ri$}O6H)H zpxQn!Pe;Tj9dW-kDC329oVLYI%pz_r+JKE3p}+xup4$~TL8*~tjK58WIl+@RlmDT+ zWbR3HxRB&pKHgwj(RAW!Ko{`vQFU{H;M11oyciZnlf<&Mm@ z4|ndcX$Wyqv{H+#NPc$F}o+(NZN%RJp2!)sMx-lOw(l&haPCt+PmaEn`E(I^MO|+}6xR#oX?gNR2~F$SL59_=x1cdt zEW{AE)Odgc;Yb@7E?Ai29G7MS5TN^elmF$$Aj~Wj3PDR39Wlc}l%>F2(2xi$7pz43Gh54_%18*9K?-(LN_M_xcf4p-#TZ%X3(b9Q5 z(zf!o)jWQ!#_=Tw>-^#sc(i}rl_|TpXXu%x*VFp#Dt%LbnD_SGrLyzOx}NlEJz73| z{r$cnG1(7s2)F%3%>GDIX21Mdem&(` zh|>SoLSydnyX@@0y6!F$n^IL}j3bk-teNLv1K6_ht~)~A+~|FHRx6{C;P3rYTPn9z z8)Jl|P4xoApuku#77PW017Sc|FeWM#!XYq-$RZ_Ue;=L_`IUJQ6%wN6l915<;o%+{ zcXj`})oy)07u(-IM*m$gQy2B_>*&lF-8E%#{873@@A%>IpU2JhisEKay3%p!S#hOl z-StqV2RLZ1yk(ZpM^~|Xy;;|9_KAm|&o*t#a$Taj`$sNlb)RLn_t>dTbH_PP$p1;p z|Df@3kvpFx3LgXJs-XpRT7UhF+-2w>W!X%1-V;g$$hH% zF`#3ahCf}&BM8zlup%QO^0lEUNy`0W5MamvfFpna^b`~<6cY+V0b)pCG#L$r10jJh zP%ai42*M;ViC+8f9M@iVJ#p8*d{yr6C6TGDha1rF7XPgO^q;ncgwO1?|my7k3C#95&2KB9xc$}qRCK-DC zo-hK8w1kF2aH%)~@=VbXAqo%IxqbC~NreJoK(J6WB@2axAz;9qEEy98!ohH;TuLJt zgu*6q-np*)ecf;0&pPkf-<{ivxOv>)o^>lj^qRl(e_c-RjY)ccz3AUxZqj4PLtQcX z9|D7)!4(JodMGCct@k#j;ApqtW3BtItZ3dBT-gz(Mz`Q&aatHw({v0kM8qpeTO3h6KG<^d`5jrEoDJ5Dd=_F(_6*-?D(c&}RUQ zu2~RsUBfndN`b{GnUh=Ng=MQ@J{`_#UtdDdUgwW>_vF06%<*nF$?uYzd5 zdRnKxpID6<_-zgKp>I#9KLH4(d*%d}@2qOu^|0GStb6wmqp-}n&D`}j~vK!+-d zr{yrp1fj2M(BJH+bOxEH|6Sb2HJvT}DvG+g!nJ+nTqH$57g=a43sV69Qn6=9GQyTA zLXoonfE1uUP;M Pxqofnrw`mG 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

>il5P`S= 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

Yok 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

>(m21 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 - - - netstandard2.0;net461 - true - AlipayEasySDK.Kernel - antopen - antopen - Alipay Easy SDK for .NET allows you to enjoy a minimalist programming experience and quickly access the various high-frequency capabilities of the Alipay Open Platform. - zh - https://github.com/alipay/alipay-easysdk/blob/master/LICENSE - https://github.com/alipay/alipay-easysdk -

Alipay Easy SDK for .NET allows you to enjoy a minimalist programming experience and quickly access the various high-frequency capabilities of the Alipay Open Platform. - Kernel for Alipay Easy SDK - 1.0.6 - - - - - - - - diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/AlipayConstants.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/AlipayConstants.cs deleted file mode 100644 index f1b0f5ae..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/AlipayConstants.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Text; - -namespace Alipay.EasySDK.Kernel -{ - /// - /// 支付宝开放平台网关交互常用常量 - /// - public static class AlipayConstants - { - /// - /// Config配置参数Key值 - /// - public const string PROTOCOL_CONFIG_KEY = "protocol"; - public const string HOST_CONFIG_KEY = "gatewayHost"; - public const string ALIPAY_CERT_PATH_CONFIG_KEY = "alipayCertPath"; - public const string MERCHANT_CERT_PATH_CONFIG_KEY = "merchantCertPath"; - public const string ALIPAY_ROOT_CERT_PATH_CONFIG_KEY = "alipayRootCertPath"; - public const string SIGN_TYPE_CONFIG_KEY = "signType"; - public const string NOTIFY_URL_CONFIG_KEY = "notifyUrl"; - - /// - /// 与网关HTTP交互中涉及到的字段值 - /// - public const string BIZ_CONTENT_FIELD = "biz_content"; - public const string ALIPAY_CERT_SN_FIELD = "alipay_cert_sn"; - public const string SIGN_FIELD = "sign"; - public const string SIGN_TYPE_FIELD = "sign_type"; - public const string BODY_FIELD = "http_body"; - public const string NOTIFY_URL_FIELD = "notify_url"; - public const string METHOD_FIELD = "method"; - public const string RESPONSE_SUFFIX = "_response"; - public const string ERROR_RESPONSE = "error_response"; - - /// - /// 默认字符集编码,EasySDK统一固定使用UTF-8编码,无需用户感知编码,用户面对的总是String而不是bytes - /// - public readonly static Encoding DEFAULT_CHARSET = Encoding.UTF8; - - /// - /// 默认的签名算法,EasySDK统一固定使用RSA2签名算法(即SHA_256_WITH_RSA),但此参数依然需要用户指定以便用户感知,因为在开放平台接口签名配置界面中需要选择同样的算法 - /// - public const string RSA2 = "RSA2"; - - /// - /// RSA2对应的真实签名算法名称 - /// - public const string SHA_256_WITH_RSA = "SHA256WithRSA"; - - /// - /// RSA2对应的真实非对称加密算法名称 - /// - public const string RSA = "RSA"; - - /// - /// 申请生成的重定向网页的请求类型,GET表示生成URL - /// - public const string GET = "GET"; - - /// - /// 申请生成的重定向网页的请求类型,POST表示生成form表单 - /// - public const string POST = "POST"; - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/CertEnvironment.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/CertEnvironment.cs deleted file mode 100644 index 2597cbe5..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/CertEnvironment.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Org.BouncyCastle.X509; -using Alipay.EasySDK.Kernel.Util; -using System.Linq; - -namespace Alipay.EasySDK.Kernel -{ - /// - /// 证书模式运行时环境 - /// - public class CertEnvironment - { - - /// - /// 支付宝根证书内容 - /// - public string RootCertContent { get; set; } - - /// - /// 支付宝根证书序列号 - /// - public string RootCertSN { get; set; } - - /// - /// 商户应用公钥证书序列号 - /// - public string MerchantCertSN { get; set; } - - /// - /// 缓存的不同支付宝公钥证书序列号对应的支付宝公钥 - /// - private readonly Dictionary CachedAlipayPublicKey = new Dictionary(); - - /// - /// 构造证书运行环境 - /// - /// 商户公钥证书路径 - /// 支付宝公钥证书路径 - /// 支付宝根证书路径 - public CertEnvironment(string merchantCertPath, string alipayCertPath, string alipayRootCertPath) - { - if (string.IsNullOrEmpty(merchantCertPath) || string.IsNullOrEmpty(alipayCertPath) || string.IsNullOrEmpty(alipayCertPath)) - { - throw new Exception("证书参数merchantCertPath、alipayCertPath或alipayRootCertPath设置不完整。"); - } - - this.RootCertContent = File.ReadAllText(alipayRootCertPath); - this.RootCertSN = AntCertificationUtil.GetRootCertSN(RootCertContent); - - X509Certificate merchantCert = AntCertificationUtil.ParseCert(File.ReadAllText(merchantCertPath)); - this.MerchantCertSN = AntCertificationUtil.GetCertSN(merchantCert); - - X509Certificate alipayCert = AntCertificationUtil.ParseCert(File.ReadAllText(alipayCertPath)); - string alipayCertSN = AntCertificationUtil.GetCertSN(alipayCert); - string alipayPublicKey = AntCertificationUtil.ExtractPemPublicKeyFromCert(alipayCert); - CachedAlipayPublicKey[alipayCertSN] = alipayPublicKey; - } - - public string GetAlipayPublicKey(string sn) - { - //如果没有指定sn,则默认取缓存中的第一个值 - if (string.IsNullOrEmpty(sn)) - { - return CachedAlipayPublicKey.Values.FirstOrDefault(); - } - - if (CachedAlipayPublicKey.ContainsKey(sn)) - { - return CachedAlipayPublicKey[sn]; - } - else - { - //网关在支付宝公钥证书变更前,一定会确认通知到商户并在商户做出反馈后,才会更新该商户的支付宝公钥证书 - //TODO: 后续可以考虑加入自动升级支付宝公钥证书逻辑,注意并发更新冲突问题 - throw new Exception("支付宝公钥证书[" + sn + "]已过期,请重新下载最新支付宝公钥证书并替换原证书文件"); - } - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Client.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Client.cs deleted file mode 100644 index dfb84df8..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Client.cs +++ /dev/null @@ -1,521 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Web; -using System.IO; -using System.Threading.Tasks; -using Newtonsoft.Json; - -using Alipay.EasySDK.Kernel.Util; - -using Tea; - -namespace Alipay.EasySDK.Kernel -{ - /// - /// Tea DSL编排所需实现的原子方法 - /// - public class Client - { - /// - /// 构造成本较高的一些参数缓存在上下文中 - /// - private readonly Context context; - - /// - /// 注入的可选额外文本参数集合 - /// - private readonly Dictionary optionalTextParams = new Dictionary(); - - /// - /// 注入的可选业务参数集合 - /// - private readonly Dictionary optionalBizParams = new Dictionary(); - - /// - /// 构造函数 - /// - /// 上下文对象 - public Client(Context context) - { - this.context = context; - } - - /// - /// 注入额外文本参数 - /// - /// 参数名称 - /// 参数的值 - /// 本客户端本身,便于链路调用 - public Client InjectTextParam(String key, String value) - { - optionalTextParams.Add(key, value); - return this; - } - - /// - /// 注入额外业务参数 - /// - /// 参数名称 - /// 参数的值 - /// 本客户端本身,便于链式调用 - public Client InjectBizParam(String key, Object value) - { - optionalBizParams.Add(key, value); - return this; - } - - /// - /// 获取Config中的配置项 - /// - /// 配置项的名称 - /// 配置项的值 - public string GetConfig(string key) - { - return context.GetConfig(key); - } - - /// - /// 是否是证书模式 - /// - /// true:是;false:不是 - public bool IsCertMode() - { - return context.CertEnvironment != null; - } - - /// - /// 获取时间戳,格式yyyy-MM-dd HH:mm:ss - /// - /// 当前时间戳 - public string GetTimestamp() - { - return DateTime.UtcNow.AddHours(8).ToString("yyyy-MM-dd HH:mm:ss"); - } - - /// - /// 计算签名,注意要去除key或value为null的键值对 - /// - /// 系统参数集合 - /// 业务参数集合 - /// 其他额外文本参数集合 - /// 私钥 - /// 签名值的Base64串 - public string Sign(Dictionary systemParams, Dictionary bizParams, - Dictionary textParams, string privateKey) - { - IDictionary sortedMap = GetSortedMap(systemParams, bizParams, textParams); - - StringBuilder content = new StringBuilder(); - foreach (var pair in sortedMap) - { - if (!string.IsNullOrEmpty(pair.Key) && !string.IsNullOrEmpty(pair.Value)) - { - content.Append(pair.Key).Append("=").Append(pair.Value).Append("&"); - } - } - if (content.Length > 0) - { - //去除尾巴上的& - content.Remove(content.Length - 1, 1); - } - - return Signer.Sign(content.ToString(), privateKey); - } - - private IDictionary GetSortedMap(Dictionary systemParams, - Dictionary bizParams, Dictionary textParams) - { - AddOtherParams(textParams, bizParams); - - IDictionary sortedMap = new SortedDictionary(systemParams, StringComparer.Ordinal); - if (bizParams != null && bizParams.Count != 0) - { - sortedMap.Add(AlipayConstants.BIZ_CONTENT_FIELD, JsonUtil.ToJsonString(bizParams)); - } - - if (textParams != null) - { - foreach (var pair in textParams) - { - sortedMap.Add(pair.Key, pair.Value); - } - } - - SetNotifyUrl(sortedMap); - - return sortedMap; - } - - private void SetNotifyUrl(IDictionary paramters) - { - if (GetConfig(AlipayConstants.NOTIFY_URL_CONFIG_KEY) != null && !paramters.ContainsKey(AlipayConstants.NOTIFY_URL_FIELD)) - { - paramters.Add(AlipayConstants.NOTIFY_URL_FIELD, GetConfig(AlipayConstants.NOTIFY_URL_CONFIG_KEY)); - } - } - - /// - /// 获取商户应用公钥证书序列号,从证书模式运行时环境对象中直接读取 - /// - /// 商户应用公钥证书序列号 - public string GetMerchantCertSN() - { - if (context.CertEnvironment == null) - { - return null; - } - - return context.CertEnvironment.MerchantCertSN; - } - - /// - /// 获取支付宝根证书序列号,从证书模式运行时环境对象中直接读取 - /// - /// 支付宝根证书序列号 - public string GetAlipayRootCertSN() - { - if (context.CertEnvironment == null) - { - return null; - } - return context.CertEnvironment.RootCertSN; - } - - /// - /// 将业务参数和其他额外文本参数按www-form-urlencoded格式转换成HTTP Body中的字节数组,注意要做URL Encode - /// - /// 业务参数 - /// HTTP Body中的字节数组 - public byte[] ToUrlEncodedRequestBody(Dictionary bizParams) - { - - IDictionary sortedMap = GetSortedMap(new Dictionary(), bizParams, null); - return AlipayConstants.DEFAULT_CHARSET.GetBytes(BuildQueryString(sortedMap)); - } - - private string BuildQueryString(IDictionary sortedMap) - { - StringBuilder content = new StringBuilder(); - int index = 0; - foreach (var pair in sortedMap) - { - if (!string.IsNullOrEmpty(pair.Key) && !string.IsNullOrEmpty(pair.Value)) - { - content.Append(index == 0 ? "" : "&") - .Append(pair.Key) - .Append("=") - .Append(HttpUtility.UrlEncode(pair.Value, AlipayConstants.DEFAULT_CHARSET)); - index++; - } - } - return content.ToString(); - } - - /// - /// 生成随机分界符,用于multipart格式的HTTP请求Body的多个字段间的分隔 - /// - /// 随机分界符 - public string GetRandomBoundary() - { - return DateTime.Now.Ticks.ToString("X"); - } - - /// - /// 字符串拼接 - /// - /// 字符串a - /// 字符串b - /// 字符串a和b拼接后的字符串 - public string ConcatStr(string a, string b) - { - return a + b; - } - - /// - /// 将其他额外文本参数和文件参数按multipart/form-data格式转换成HTTP Body中的字节数组流 - /// - /// 其他额外文本参数 - /// 业务文件参数 - /// HTTP Body中multipart格式的分隔符 - /// Multipart格式的字节流 - public Stream ToMultipartRequestBody(Dictionary textParams, Dictionary fileParams, string boundary) - { - MemoryStream stream = new MemoryStream(); - - //补充其他额外参数 - AddOtherParams(textParams, null); - - foreach (var pair in textParams) - { - if (!string.IsNullOrEmpty(pair.Key) && !string.IsNullOrEmpty(pair.Value)) - { - MultipartUtil.WriteToStream(stream, MultipartUtil.GetEntryBoundary(boundary)); - MultipartUtil.WriteToStream(stream, MultipartUtil.GetTextEntry(pair.Key, pair.Value)); - } - } - - //组装文件参数 - foreach (var pair in fileParams) - { - if (!string.IsNullOrEmpty(pair.Key) && pair.Value != null) - { - MultipartUtil.WriteToStream(stream, MultipartUtil.GetEntryBoundary(boundary)); - MultipartUtil.WriteToStream(stream, MultipartUtil.GetFileEntry(pair.Key, pair.Value)); - MultipartUtil.WriteToStream(stream, File.ReadAllBytes(pair.Value)); - } - } - - //添加结束标记 - MultipartUtil.WriteToStream(stream, MultipartUtil.GetEndBoundary(boundary)); - - stream.Seek(0, SeekOrigin.Begin); - return stream; - } - - /// - /// 将网关响应发序列化成Map,同时将API的接口名称和响应原文插入到响应Map的method和body字段中 - /// - /// HTTP响应 - /// 调用的OpenAPI的接口名称 - /// 响应反序列化的Map - public Dictionary ReadAsJson(TeaResponse response, string method) - { - string responseBody = TeaCore.GetResponseBody(response); - Dictionary dictionary = JsonConvert.DeserializeObject>(responseBody); - dictionary.Add(AlipayConstants.BODY_FIELD, responseBody); - dictionary.Add(AlipayConstants.METHOD_FIELD, method); - return DictionaryUtil.ObjToDictionary(dictionary); - } - - /// - /// 适配Tea DSL自动生成的代码 - /// - public async Task> ReadAsJsonAsync(TeaResponse response, string method) - { - return ReadAsJson(response, method); - } - - /// - /// 从响应Map中提取支付宝公钥证书序列号 - /// - /// 响应Map - /// 支付宝公钥证书序列号 - public string GetAlipayCertSN(Dictionary respMap) - { - return (string)respMap[AlipayConstants.ALIPAY_CERT_SN_FIELD]; - } - - /// - /// 获取支付宝公钥,从证书运行时环境对象中直接读取 - /// 如果缓存的用户指定的支付宝公钥证书的序列号与网关响应中携带的支付宝公钥证书序列号不一致,需要报错给出提示或自动更新支付宝公钥证书 - /// - /// 网关响应中携带的支付宝公钥证书序列号 - /// 支付宝公钥 - public string ExtractAlipayPublicKey(string alipayCertSN) - { - if (context.CertEnvironment == null) - { - return null; - } - return context.CertEnvironment.GetAlipayPublicKey(alipayCertSN); - } - - /// - /// 验证签名 - /// - /// 响应Map,可以从中提取出sign和body - /// 支付宝公钥 - /// true:验签通过;false:验签不通过 - public bool Verify(Dictionary respMap, string alipayPublicKey) - { - string sign = (string)respMap[AlipayConstants.SIGN_FIELD]; - string content = SignContentExtractor.GetSignSourceData((string)respMap[AlipayConstants.BODY_FIELD], - (string)respMap[AlipayConstants.METHOD_FIELD]); - return Signer.Verify(content, sign, alipayPublicKey); - } - - /// - /// 从响应Map中提取返回值对象的Map,并将响应原文插入到body字段中 - /// - /// 响应Map - /// 返回值对象Map - public Dictionary ToRespModel(Dictionary respMap) - { - string methodName = (string)respMap[AlipayConstants.METHOD_FIELD]; - string responseNodeName = methodName.Replace('.', '_') + AlipayConstants.RESPONSE_SUFFIX; - string errorNodeName = AlipayConstants.ERROR_RESPONSE; - - //先找正常响应节点 - foreach (var pair in respMap) - { - if (responseNodeName.Equals(pair.Key)) - { - Dictionary model = (Dictionary)pair.Value; - model.Add(AlipayConstants.BODY_FIELD, respMap[AlipayConstants.BODY_FIELD]); - return model; - } - } - - //再找异常响应节点 - foreach (var pair in respMap) - { - if (errorNodeName.Equals(pair.Key)) - { - Dictionary model = (Dictionary)pair.Value; - model.Add(AlipayConstants.BODY_FIELD, respMap[AlipayConstants.BODY_FIELD]); - return model; - } - } - - throw new Exception("响应格式不符合预期,找不到" + responseNodeName + "节点"); - } - - /// - /// 生成页面类请求所需URL或Form表单 - /// - /// GET或POST,决定是生成URL还是Form表单 - /// 系统参数集合 - /// 业务参数集合 - /// 其他额外文本参数集合 - /// 所有参数的签名值 - /// 生成的URL字符串或表单 - public string GeneratePage(string method, Dictionary systemParams, Dictionary bizParams, - Dictionary textParams, string sign) - { - if (AlipayConstants.GET.Equals(method)) - { - //采集并排序所有参数 - IDictionary sortedMap = GetSortedMap(systemParams, bizParams, textParams); - sortedMap.Add(AlipayConstants.SIGN_FIELD, sign); - - //将所有参数置于URL中 - return GetGatewayServerUrl() + "?" + BuildQueryString(sortedMap); - } - else if (AlipayConstants.POST.Equals(method)) - { - //将系统参数、额外文本参数排序后置于URL中 - IDictionary urlParams = GetSortedMap(systemParams, null, textParams); - urlParams.Add(AlipayConstants.SIGN_FIELD, sign); - string actionUrl = GetGatewayServerUrl() + "?" + BuildQueryString(urlParams); - - //将业务参数排序后置于form表单中 - AddOtherParams(null, bizParams); - IDictionary formParams = new SortedDictionary() - { - { AlipayConstants.BIZ_CONTENT_FIELD, JsonUtil.ToJsonString(bizParams)} - }; - return PageUtil.BuildForm(actionUrl, formParams); - } - else - { - throw new Exception("_generatePage中method只支持传入GET或POST"); - } - } - - /// - /// 生成订单串 - /// - /// 系统参数集合 - /// 业务参数集合 - /// 其他文本参数集合 - /// 所有参数的签名值 - /// 订单串 - public string GenerateOrderString(Dictionary systemParams, Dictionary bizParams, - Dictionary textParams, string sign) - { - //采集并排序所有参数 - IDictionary sortedMap = GetSortedMap(systemParams, bizParams, textParams); - sortedMap.Add(AlipayConstants.SIGN_FIELD, sign); - - //将所有参数置于URL中 - return BuildQueryString(sortedMap); - } - - private string GetGatewayServerUrl() - { - return GetConfig(AlipayConstants.PROTOCOL_CONFIG_KEY) + "://" + GetConfig(AlipayConstants.HOST_CONFIG_KEY) + "/gateway.do"; - } - - /// - /// AES加密 - /// - /// 明文 - /// 密钥 - /// 密文 - public string AesEncrypt(string plainText, string key) - { - return AES.Encrypt(plainText, key); - } - - /// - /// AES解密 - /// - /// 密文 - /// 密钥 - /// 明文 - public string AesDecrypt(string chiperText, string key) - { - return AES.Decrypt(chiperText, key); - } - - /// - /// 对支付类请求的异步通知的参数集合进行验签 - /// - /// 参数集合 - /// 支付宝公钥 - /// true:验证成功;false:验证失败 - public bool VerifyParams(Dictionary parameters, string alipayPublicKey) - { - return Signer.VerifyParams(parameters, alipayPublicKey); - } - - /// - /// 获取SDK版本信息 - /// - /// SDK版本信息 - public string GetSdkVersion() - { - return context.SdkVersion; - } - - /// - /// 将随机顺序的Map转换为有序的Map - /// - /// 随机顺序的Map - /// 有序的Map - public Dictionary SortMap(Dictionary input) - { - //GO语言的Map是随机顺序的,每次访问顺序都不同,才需排序 - return input; - } - - private void AddOtherParams(Dictionary textParams, Dictionary bizParams) - { - //为null表示此处不是扩展此类参数的时机 - if (textParams != null) - { - foreach (var pair in optionalTextParams) - { - if (!textParams.ContainsKey(pair.Key)) - { - textParams.Add(pair.Key, pair.Value); - } - } - SetNotifyUrl(textParams); - } - - //为null表示此处不是扩展此类参数的时机 - if (bizParams != null) - { - foreach (var pair in optionalBizParams) - { - if (!bizParams.ContainsKey(pair.Key)) - { - bizParams.Add(pair.Key, pair.Value); - } - } - } - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Config.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Config.cs deleted file mode 100644 index 8ea78022..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Config.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Tea; - -namespace Alipay.EasySDK.Kernel -{ - /// - /// 客户端配置参数模型 - /// - public class Config : TeaModel - { - /// - /// 通信协议,通常填写https - /// - [NameInMap("protocol")] - [Validation(Required = true)] - public string Protocol { get; set; } = "https"; - - /// - /// 网关域名 - /// 线上为:openapi.alipay.com - /// 沙箱为:openapi.alipaydev.com - /// - [NameInMap("gatewayHost")] - [Validation(Required = true)] - public string GatewayHost { get; set; } = "openapi.alipay.com"; - - /// - /// AppId - /// - [NameInMap("appId")] - [Validation(Required = true)] - public string AppId { get; set; } - - /// - /// 签名类型,Alipay Easy SDK只推荐使用RSA2,估此处固定填写RSA2 - /// - [NameInMap("signType")] - [Validation(Required = true)] - public string SignType { get; set; } = "RSA2"; - - /// - /// 支付宝公钥 - /// - [NameInMap("alipayPublicKey")] - [Validation(Required = true)] - public string AlipayPublicKey { get; set; } - - /// - /// 应用私钥 - /// - [NameInMap("merchantPrivateKey")] - [Validation(Required = true)] - public string MerchantPrivateKey { get; set; } - - /// - /// 应用公钥证书文件路径 - /// - [NameInMap("merchantCertPath")] - [Validation(Required = true)] - public string MerchantCertPath { get; set; } - - /// - /// 支付宝公钥证书文件路径 - /// - [NameInMap("alipayCertPath")] - [Validation(Required = true)] - public string AlipayCertPath { get; set; } - - /// - /// 支付宝根证书文件路径 - /// - [NameInMap("alipayRootCertPath")] - [Validation(Required = true)] - public string AlipayRootCertPath { get; set; } - - /// - /// 异步通知回调地址(可选) - /// - [NameInMap("notifyUrl")] - [Validation(Required = true)] - public string NotifyUrl { get; set; } - - /// - /// AES密钥(可选) - /// - [NameInMap("encryptKey")] - [Validation(Required = true)] - public string EncryptKey { get; set; } - - - /// - /// 代理地址(可选)例如:http://127.0.0.1:8080 - /// - [NameInMap("httpProxy")] - [Validation(Required = true)] - public string HttpProxy { get; set; } - - /// - /// 忽略证书校验(可选) - /// - [NameInMap("ignoreSSL")] - [Validation(Required = true)] - public string IgnoreSSL { get; set; } - - } - -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Context.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Context.cs deleted file mode 100644 index 1a4d8a9e..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Context.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using Tea; -using Alipay.EasySDK.Kernel.Util; - -namespace Alipay.EasySDK.Kernel -{ - public class Context - { - /// - /// 客户端配置参数 - /// - private readonly Dictionary config; - - /// - /// 证书模式运行时环境 - /// - public CertEnvironment CertEnvironment { get; } - - /// - /// SDK版本号 - /// - public string SdkVersion { get; set; } - - public Context(Config config, string sdkVersion) - { - this.config = config.ToMap(); - SdkVersion = sdkVersion; - ArgumentValidator.CheckArgument(AlipayConstants.RSA2.Equals(GetConfig(AlipayConstants.SIGN_TYPE_CONFIG_KEY)), - "Alipay Easy SDK只允许使用RSA2签名方式,RSA签名方式由于安全性相比RSA2弱已不再推荐。"); - - if (!string.IsNullOrEmpty(GetConfig(AlipayConstants.ALIPAY_CERT_PATH_CONFIG_KEY))) - { - CertEnvironment = new CertEnvironment( - GetConfig(AlipayConstants.MERCHANT_CERT_PATH_CONFIG_KEY), - GetConfig(AlipayConstants.ALIPAY_CERT_PATH_CONFIG_KEY), - GetConfig(AlipayConstants.ALIPAY_ROOT_CERT_PATH_CONFIG_KEY)); - } - } - - public string GetConfig(string key) - { - return (string)config[key]; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AES.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AES.cs deleted file mode 100644 index 351acb73..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AES.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Text; -using System.Security.Cryptography; - -namespace Alipay.EasySDK.Kernel.Util -{ - public class AES - { - /// - /// 128位全0初始向量 - /// - private static readonly byte[] AES_IV = InitIV(16); - - /// - /// AES加密 - /// - /// 明文 - /// 对称密钥 - /// 密文 - public static string Encrypt(string plainText, string key) - { - try - { - byte[] keyBytes = Convert.FromBase64String(key); - byte[] plainBytes = AlipayConstants.DEFAULT_CHARSET.GetBytes(plainText); ; - - RijndaelManaged rijndatel = new RijndaelManaged - { - Key = keyBytes, - Mode = CipherMode.CBC, - Padding = PaddingMode.PKCS7, - IV = AES_IV - }; - - ICryptoTransform transform = rijndatel.CreateEncryptor(rijndatel.Key, rijndatel.IV); - byte[] cipherBytes = transform.TransformFinalBlock(plainBytes, 0, plainBytes.Length); - return Convert.ToBase64String(cipherBytes); - } - catch (Exception e) - { - throw new Exception("AES加密失败,plainText=" + plainText + - ",keySize=" + key.Length + "。" + e.Message, e); - } - } - - /// - /// AES解密 - /// - /// 密文 - /// 对称密钥 - /// 明文 - public static string Decrypt(string cipherText, string key) - { - try - { - byte[] keyBytes = Convert.FromBase64String(key); - byte[] cipherBytes = Convert.FromBase64String(cipherText); - - RijndaelManaged rijndatel = new RijndaelManaged - { - Key = keyBytes, - Mode = CipherMode.CBC, - Padding = PaddingMode.PKCS7, - IV = AES_IV - }; - - ICryptoTransform transform = rijndatel.CreateDecryptor(rijndatel.Key, rijndatel.IV); - byte[] plainBytes = transform.TransformFinalBlock(cipherBytes, 0, cipherBytes.Length); - return AlipayConstants.DEFAULT_CHARSET.GetString(plainBytes); - } - catch (Exception e) - { - throw new Exception("AES解密失败,ciphertext=" + cipherText + - ",keySize=" + key.Length + "。" + e.Message, e); - } - } - - private static byte[] InitIV(int blockSize) - { - byte[] iv = new byte[blockSize]; - for (int i = 0; i < blockSize; ++i) - { - iv[i] = 0x0; - } - return iv; - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AntCertificationUtil.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AntCertificationUtil.cs deleted file mode 100644 index 006d70f1..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/AntCertificationUtil.cs +++ /dev/null @@ -1,326 +0,0 @@ -using System.Collections.Generic; -using System; -using Org.BouncyCastle.X509; -using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Crypto; -using System.Security.Cryptography; -using System.Text; -using System.Linq; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// 证书相关工具类 - /// - public static class AntCertificationUtil - { - /// - /// 提取根证书序列号 - /// - /// 根证书文本 - /// 根证书序列号 - public static string GetRootCertSN(string rootCertContent) - { - string rootCertSN = ""; - try - { - List x509Certificates = ReadPemCertChain(rootCertContent); - foreach (X509Certificate cert in x509Certificates) - { - //只提取与指定算法类型匹配的证书的序列号 - if (cert.SigAlgOid.StartsWith("1.2.840.113549.1.1", StringComparison.Ordinal)) - { - string certSN = GetCertSN(cert); - if (string.IsNullOrEmpty(rootCertSN)) - { - rootCertSN = certSN; - } - else - { - rootCertSN = rootCertSN + "_" + certSN; - } - } - } - } - catch (Exception ex) - { - throw new Exception("提取根证书序列号失败。" + ex.Message); - } - return rootCertSN; - } - - /// - /// 反序列化证书文本 - /// - /// 证书文本 - /// X509Certificate证书对象 - public static X509Certificate ParseCert(string certContent) - { - return new X509CertificateParser().ReadCertificate(Encoding.UTF8.GetBytes(certContent)); - } - - /// - /// 计算指定证书的序列号 - /// - /// 证书 - /// 序列号 - public static string GetCertSN(X509Certificate cert) - { - string issuerDN = cert.IssuerDN.ToString(); - //提取出的证书的issuerDN本身是以CN开头的,则无需逆序,直接返回 - if (issuerDN.StartsWith("CN", StringComparison.Ordinal)) - { - return CalculateMd5(issuerDN + cert.SerialNumber); - } - List attributes = issuerDN.Split(',').ToList(); - attributes.Reverse(); - return CalculateMd5(string.Join(",", attributes.ToArray()) + cert.SerialNumber); - } - - /// - /// 校验证书链是否可信 - /// - /// 需要验证的目标证书或者证书链文本 - /// 可信根证书列表文本 - /// true:证书可信;false:证书不可信 - public static bool IsTrusted(string certContent, string rootCertContent) - { - List certs = ReadPemCertChain(certContent); - List rootCerts = ReadPemCertChain(rootCertContent); - return VerifyCertChain(certs, rootCerts); - } - - /// - /// 从证书链文本反序列化证书链集合 - /// - /// 证书链文本 - /// 证书链集合 - private static List ReadPemCertChain(string cert) - { - System.Collections.ICollection collection = new X509CertificateParser().ReadCertificates(Encoding.UTF8.GetBytes(cert)); - List result = new List(); - foreach (var each in collection) - { - result.Add((X509Certificate)each); - } - return result; - } - - /// - /// 将证书链按照完整的签发顺序进行排序,排序后证书链为:[issuerA, subjectA]-[issuerA, subjectB]-[issuerB, subjectC]-[issuerC, subjectD]... - /// - /// 未排序的证书链 - /// true:排序成功;false:证书链不完整 - private static bool SortCertChain(List certChain) - { - //主题和证书的映射 - Dictionary subject2CertMap = new Dictionary(); - //签发者和证书的映射 - Dictionary issuer2CertMap = new Dictionary(); - //是否包含自签名证书 - bool hasSelfSignedCert = false; - foreach (X509Certificate cert in certChain) - { - if (IsSelfSigned(cert)) - { - if (hasSelfSignedCert) - { - //同一条证书链中只能有一个自签名证书 - return false; - } - hasSelfSignedCert = true; - } - subject2CertMap[cert.SubjectDN] = cert; - issuer2CertMap[cert.IssuerDN] = cert; - } - - List orderedCertChain = new List(); - - X509Certificate current = certChain[0]; - - AddressingUp(subject2CertMap, orderedCertChain, current); - AddressingDown(issuer2CertMap, orderedCertChain, current); - - //说明证书链不完整 - if (certChain.Count != orderedCertChain.Count) - { - return false; - } - - //用排序后的结果覆盖传入的证书链集合 - for (int i = 0; i < orderedCertChain.Count; i++) - { - certChain[i] = orderedCertChain[i]; - } - return true; - } - - private static bool IsSelfSigned(X509Certificate cert) - { - return cert.SubjectDN.Equivalent(cert.IssuerDN); - } - - /// - /// 向上构造证书链 - /// - /// 主题与证书的映射 - /// 储存排序后的证书链集合 - /// 当前需要插入排序后的证书链集合中的证书 - private static void AddressingUp(Dictionary subject2CertMap, - List orderedCertChain, X509Certificate current) - { - orderedCertChain.Insert(0, current); - if (IsSelfSigned(current)) - { - return; - } - - if (!subject2CertMap.ContainsKey(current.IssuerDN)) - { - return; - } - - X509Certificate issuer = subject2CertMap[current.IssuerDN]; - AddressingUp(subject2CertMap, orderedCertChain, issuer); - } - - /// - /// 向下构造证书链 - /// - /// 签发者和证书的映射 - /// 储存排序后的证书链集合 - /// 当前需要插入排序后的证书链集合中的证书 - private static void AddressingDown(Dictionary issuer2CertMap, - List certChain, X509Certificate current) - { - if (!issuer2CertMap.ContainsKey(current.SubjectDN)) - { - return; - } - - X509Certificate subject = issuer2CertMap[current.SubjectDN]; - if (IsSelfSigned(subject)) - { - return; - } - certChain.Add(subject); - AddressingDown(issuer2CertMap, certChain, subject); - } - - /// - /// 验证证书是否是信任证书库中的证书签发的 - /// - /// 待验证证书 - /// 可信根证书列表 - /// true:验证通过;false:验证不通过 - private static bool VerifyCert(X509Certificate cert, List rootCerts) - { - if (!cert.IsValidNow) - { - return false; - } - - Dictionary subject2CertMap = new Dictionary(); - foreach (X509Certificate root in rootCerts) - { - subject2CertMap[root.SubjectDN] = root; - } - - X509Name issuerDN = cert.IssuerDN; - if (!subject2CertMap.ContainsKey(issuerDN)) - { - return false; - } - - X509Certificate issuer = subject2CertMap[issuerDN]; - try - { - AsymmetricKeyParameter publicKey = issuer.GetPublicKey(); - cert.Verify(publicKey); - } - catch (Exception ex) - { - Console.WriteLine("证书验证出现异常。" + ex.Message); - return false; - } - return true; - } - - /// - /// 验证证书列表 - /// - /// 待验证的证书列表 - /// 可信根证书列表 - /// true:验证通过;false:验证不通过 - private static bool VerifyCertChain(List certs, List rootCerts) - { - //证书列表排序,形成排序后的证书链 - bool sorted = SortCertChain(certs); - if (!sorted) - { - //不是完整的证书链 - return false; - } - - //先验证第一个证书是不是信任库中证书签发的 - X509Certificate previous = certs[0]; - bool firstOK = VerifyCert(previous, rootCerts); - if (!firstOK || certs.Count == 1) - { - return firstOK; - } - - //验证证书链 - for (int i = 1; i < certs.Count; i++) - { - try - { - X509Certificate cert = certs[i]; - if (!cert.IsValidNow) - { - return false; - } - - //用上级证书的公钥验证本证书是否是上级证书签发的 - cert.Verify(previous.GetPublicKey()); - - previous = cert; - } - catch (Exception ex) - { - //证书链验证失败 - Console.WriteLine("证书链验证失败。" + ex.Message); - return false; - } - } - - return true; - } - - - private static string CalculateMd5(string input) - { - using (MD5 md5 = new MD5CryptoServiceProvider()) - { - string result = ""; - byte[] bytes = md5.ComputeHash(Encoding.GetEncoding("utf-8").GetBytes(input)); - for (int i = 0; i < bytes.Length; i++) - { - result += bytes[i].ToString("x2"); - } - return result; - } - } - - /// - /// 从证书中提取公钥并转换为PEM编码 - /// - /// 证书 - /// PEM编码公钥 - public static string ExtractPemPublicKeyFromCert(X509Certificate input) - { - SubjectPublicKeyInfo subjectPublicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(input.GetPublicKey()); - return Convert.ToBase64String(subjectPublicKeyInfo.GetDerEncoded()); - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ArgumentValidator.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ArgumentValidator.cs deleted file mode 100644 index 228f8980..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ArgumentValidator.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// 参数校验类 - /// - public static class ArgumentValidator - { - public static void CheckArgument(bool expression, string errorMessage) - { - if (!expression) - { - throw new Exception(errorMessage); - } - } - - public static void CheckNotNull(object value, string errorMessage) - { - if (value == null) - { - throw new Exception(errorMessage); - } - } - - public static void EnsureNull(object value, string errorMessage) - { - if (value != null) - { - throw new Exception(errorMessage); - } - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/DictionaryUtil.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/DictionaryUtil.cs deleted file mode 100644 index 3285fb31..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/DictionaryUtil.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System.Collections.Generic; -using Newtonsoft.Json.Linq; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// 字典工具类 - /// - public static class DictionaryUtil - { - /// - /// 将字典各层次Value中的JObject和JArray转换成C#标准库中的Dictionary和List - /// - /// 输入字典 - /// 转换后的输出字典 - public static Dictionary ObjToDictionary(Dictionary iputObj) - { - Dictionary result = new Dictionary(); - foreach (string key in iputObj.Keys) - { - if (iputObj[key] is JArray) - { - List objList = ((JArray)iputObj[key]).ToObject>(); - result.Add(key, ConvertList(objList)); - } - else if (iputObj[key] is JObject) - { - Dictionary dicObj = ((JObject)iputObj[key]).ToObject>(); - result.Add(key, ObjToDictionary(dicObj)); - } - else - { - result.Add(key, iputObj[key]); - } - } - return result; - } - - - private static List ConvertList(List inputList) - { - List result = new List(); - foreach (var obj in inputList) - { - if (obj is JArray) - { - List listObj = ((JArray)obj).ToObject>(); - result.Add(ConvertList(listObj)); - } - else if (obj is JObject) - { - Dictionary dicObj = ((JObject)obj).ToObject>(); - result.Add(ObjToDictionary(dicObj)); - } - else - { - result.Add(obj); - } - } - return result; - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/JsonUtil.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/JsonUtil.cs deleted file mode 100644 index 61ba186d..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/JsonUtil.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System.Collections.Generic; -using Tea; -using Newtonsoft.Json; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// JSON工具类 - /// - public class JsonUtil - { - /// - /// 将字典集合转换为Json字符串,转换过程中对于TeaModel,使用标注的字段名称而不是字段的变量名 - /// - /// 字典集合 - /// Json字符串 - public static string ToJsonString(IDictionary input) - { - IDictionary result = new Dictionary(); - foreach (var pair in input) - { - if (pair.Value is TeaModel) - { - result.Add(pair.Key, GetTeaModelMap((TeaModel)pair.Value)); - } - else - { - result.Add(pair.Key, pair.Value); - } - } - return JsonConvert.SerializeObject(result); - } - - private static IDictionary GetTeaModelMap(TeaModel teaModel) - { - - IDictionary result = new Dictionary(); - IDictionary teaModelMap = teaModel.ToMap(); - foreach (var pair in teaModelMap) - { - if (pair.Value is TeaModel) - { - result.Add(pair.Key, GetTeaModelMap((TeaModel)pair.Value)); - } - else - { - result.Add(pair.Key, pair.Value); - } - } - return result; - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/MultipartUtil.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/MultipartUtil.cs deleted file mode 100644 index bec7d38d..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/MultipartUtil.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Text; -using System.IO; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// HTTP multipart/form-data格式相关工具类 - /// - public static class MultipartUtil - { - /// - /// 获取Multipart分界符 - /// - /// 用作分界的随机字符串 - /// Multipart分界符 - public static byte[] GetEntryBoundary(string boundary) - { - return Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); - } - - /// - /// 获取Multipart结束标记 - /// - /// 用作分界的随机字符串 - /// Multipart结束标记 - public static byte[] GetEndBoundary(string boundary) - { - return Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); - } - - /// - /// 获取Multipart中的文本参数结构 - /// - /// 字段名称 - /// 字段值 - /// 文本参数结构 - public static byte[] GetTextEntry(string fieldName, string fieldValue) - { - string entry = "Content-Disposition:form-data;name=\"" - + fieldName - + "\"\r\nContent-Type:text/plain\r\n\r\n" - + fieldValue; - return AlipayConstants.DEFAULT_CHARSET.GetBytes(entry); - } - - /// - /// 获取Multipart中的文件参数结构(不含文件内容,只有文件元数据) - /// - /// 字段名称 - /// 文件路径 - /// 文件参数结构(不含文件内容) - public static byte[] GetFileEntry(String fieldName, String filePath) - { - ArgumentValidator.CheckArgument(File.Exists(filePath), - Path.GetFullPath(filePath) + "文件不存在"); - ArgumentValidator.CheckArgument(Path.GetFileName(filePath).Contains("."), - "文件名必须带上正确的扩展名"); - - String entry = "Content-Disposition:form-data;name=\"" - + fieldName - + "\";filename=\"" - + Path.GetFileName(filePath) - + "\"\r\nContent-Type:application/octet-stream" - + "\r\n\r\n"; - return AlipayConstants.DEFAULT_CHARSET.GetBytes(entry); - } - - /// - /// 往指定流中写入整个字节数组 - /// - /// 流 - /// 字节数组 - public static void WriteToStream(Stream stream, byte[] content) - { - stream.Write(content, 0, content.Length); - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/PageUtil.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/PageUtil.cs deleted file mode 100644 index e6a0a2b3..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/PageUtil.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// 生成页面信息辅助类 - /// - public static class PageUtil - { - /// - /// 生成表单 - /// - /// 表单提交链接 - /// 表单参数 - /// 表单字符串 - public static string BuildForm(string actionUrl, IDictionary parameters) - { - return "\n" - + BuildHiddenFields(parameters) - + "\n" - + "\n" - + ""; - } - - private static string BuildHiddenFields(IDictionary parameters) - { - if (parameters == null || parameters.Count == 0) - { - return ""; - } - StringBuilder stringBuilder = new StringBuilder(); - foreach (var pair in parameters) - { - if (pair.Key == null || pair.Value == null) - { - continue; - } - stringBuilder.Append(BuildHiddenField(pair.Key, pair.Value)); - } - return stringBuilder.ToString(); - } - - private static string BuildHiddenField(string key, string value) - { - StringBuilder builder = new StringBuilder(64); - builder.Append("\n"); - return builder.ToString(); - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ResponseChecker.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ResponseChecker.cs deleted file mode 100644 index 040c3d17..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/ResponseChecker.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Reflection; -using Tea; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// 响应检查工具类 - /// - public class ResponseChecker - { - public const string SUB_CODE_FIELD_NAME = "SubCode"; - - /// - /// 判断一个请求返回的响应是否成功 - /// - /// 响应对象 - /// true:成功;false:失败 - public static bool Success(TeaModel response) - { - PropertyInfo propertyInfo = response.GetType().GetProperty(SUB_CODE_FIELD_NAME); - if (propertyInfo == null) - { - //没有SubCode属性的响应对象,通常是那些无需跟网关远程通信的API,只要本地执行完成都视为成功 - return true; - } - - string subCode = (string)propertyInfo.GetValue(response); - return string.IsNullOrEmpty(subCode); - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/SignContentExtractor.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/SignContentExtractor.cs deleted file mode 100644 index 1dda8b10..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/SignContentExtractor.cs +++ /dev/null @@ -1,213 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// 待验签原文提取器 - /// 注:此处不可使用JSON反序列化工具进行提取,会破坏原有格式,对于签名而言差个空格都会验签不通过 - /// - public class SignContentExtractor - { - /// - /// 左大括号 - /// - public const char LEFT_BRACE = '{'; - - /// - /// 右大括号 - /// - public const char RIGHT_BRACE = '}'; - - /// - /// 双引号 - /// - public const char DOUBLE_QUOTES = '"'; - - /// - /// 获取待验签的原文 - /// - /// 网关的整体响应字符串 - /// 本次调用的OpenAPI接口名称 - /// 待验签的原文 - public static string GetSignSourceData(string body, string method) - { - string rootNode = method.Replace(".", "_") + AlipayConstants.RESPONSE_SUFFIX; - string errorRootNode = AlipayConstants.ERROR_RESPONSE; - - int indexOfRootNode = body.IndexOf(rootNode, StringComparison.Ordinal); - int indexOfErrorRoot = body.IndexOf(errorRootNode, StringComparison.Ordinal); - - string result = null; - if (indexOfRootNode > 0) - { - result = ParseSignSourceData(body, rootNode, indexOfRootNode); - } - else if (indexOfErrorRoot > 0) - { - result = ParseSignSourceData(body, errorRootNode, indexOfErrorRoot); - } - - return result; - } - - private static string ParseSignSourceData(string body, string rootNode, int indexOfRootNode) - { - int signDataStartIndex = indexOfRootNode + rootNode.Length + 2; - int indexOfSign = body.IndexOf("\"" + AlipayConstants.SIGN_FIELD + "\"", StringComparison.Ordinal); - if (indexOfSign < 0) - { - return null; - } - SignSourceData signSourceData = ExtractSignContent(body, signDataStartIndex); - - //如果提取的待验签原始内容后还有rootNode - if (body.LastIndexOf(rootNode, StringComparison.Ordinal) > signSourceData.EndIndex) - { - throw new Exception("检测到响应报文中有重复的" + rootNode + ",验签失败。"); - } - - return signSourceData.SourceData; - } - - private static SignSourceData ExtractSignContent(string str, int begin) - { - if (str == null) - { - return null; - } - - int beginIndex = ExtractBeginPosition(str, begin); - if (beginIndex >= str.Length) - { - return null; - } - - int endIndex = ExtractEndPosition(str, beginIndex); - return new SignSourceData() - { - SourceData = str.Substring(beginIndex, endIndex - beginIndex), - BeginIndex = beginIndex, - EndIndex = endIndex - }; - } - - private static int ExtractBeginPosition(string responseString, int begin) - { - int beginPosition = begin; - //找到第一个左大括号(对应响应的是JSON对象的情况:普通调用OpenAPI响应明文) - //或者双引号(对应响应的是JSON字符串的情况:加密调用OpenAPI响应Base64串),作为待验签内容的起点 - while (beginPosition < responseString.Length - && responseString[beginPosition] != LEFT_BRACE - && responseString[beginPosition] != DOUBLE_QUOTES) - { - ++beginPosition; - } - return beginPosition; - } - - private static int ExtractEndPosition(string responseString, int beginPosition) - { - //提取明文验签内容终点 - if (responseString[beginPosition] == LEFT_BRACE) - { - return ExtractJsonObjectEndPosition(responseString, beginPosition); - } - //提取密文验签内容终点 - else - { - return ExtractJsonBase64ValueEndPosition(responseString, beginPosition); - } - } - - private static int ExtractJsonBase64ValueEndPosition(string responseString, int beginPosition) - { - for (int index = beginPosition; index < responseString.Length; ++index) - { - //找到第2个双引号作为终点,由于中间全部是Base64编码的密文,所以不会有干扰的特殊字符 - if (responseString[index] == DOUBLE_QUOTES && index != beginPosition) - { - return index + 1; - } - } - //如果没有找到第2个双引号,说明验签内容片段提取失败,直接尝试选取剩余整个响应字符串进行验签 - return responseString.Length; - } - - private static int ExtractJsonObjectEndPosition(string responseString, int beginPosition) - { - //记录当前尚未发现配对闭合的大括号 - LinkedList braces = new LinkedList(); - //记录当前字符是否在双引号中 - bool inQuotes = false; - //记录当前字符前面连续的转义字符个数 - int consecutiveEscapeCount = 0; - //从待验签字符的起点开始遍历后续字符串,找出待验签字符串的终止点,终点即是与起点{配对的} - for (int index = beginPosition; index < responseString.Length; ++index) - { - //提取当前字符 - char currentChar = responseString[index]; - - //如果当前字符是"且前面有偶数个转义标记(0也是偶数) - if (currentChar == DOUBLE_QUOTES && consecutiveEscapeCount % 2 == 0) - { - //是否在引号中的状态取反 - inQuotes = !inQuotes; - } - //如果当前字符是{且不在引号中 - else if (currentChar == LEFT_BRACE && !inQuotes) - { - //将该{加入未闭合括号中 - braces.AddLast(LEFT_BRACE); - } - //如果当前字符是}且不在引号中 - else if (currentChar == RIGHT_BRACE && !inQuotes) - { - //弹出一个未闭合括号 - braces.RemoveLast(); - //如果弹出后,未闭合括号为空,说明已经找到终点 - if (braces.Count == 0) - { - return index + 1; - } - } - - //如果当前字符是转义字符 - if (currentChar == '\\') - { - //连续转义字符个数+1 - ++consecutiveEscapeCount; - } - else - { - //连续转义字符个数置0 - consecutiveEscapeCount = 0; - } - } - - //如果没有找到配对的闭合括号,说明验签内容片段提取失败,直接尝试选取剩余整个响应字符串进行验签 - return responseString.Length; - } - - /// - /// 从响应字符串中提取到的待验签原始内容 - /// - public class SignSourceData - { - /// - /// 待验签原始内容 - /// - public string SourceData { get; set; } - - /// - /// 待验签原始内容在响应字符串中的起始位置 - /// - public int BeginIndex { get; set; } - - /// - /// 待验签原始内容在响应字符串中的结束位置 - /// - public int EndIndex { get; set; } - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/Signer.cs b/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/Signer.cs deleted file mode 100644 index 29246894..00000000 --- a/vendor/alipaysdk/easysdk/kernel/csharp/EasySDKKernel/Kernel/Util/Signer.cs +++ /dev/null @@ -1,260 +0,0 @@ -using System; -using System.Text; -using System.Security.Cryptography; -using System.IO; -using System.Collections.Generic; - -namespace Alipay.EasySDK.Kernel.Util -{ - /// - /// SHA256WithRSA签名器 - /// - public class Signer - { - /// - /// 计算签名 - /// - /// 待签名的内容 - /// 私钥 - /// 签名值的Base64串 - public static string Sign(string content, string privateKeyPem) - { - try - { - using (RSACryptoServiceProvider rsaService = BuildRSAServiceProvider(Convert.FromBase64String(privateKeyPem))) - { - byte[] data = AlipayConstants.DEFAULT_CHARSET.GetBytes(content); - byte[] sign = rsaService.SignData(data, "SHA256"); - return Convert.ToBase64String(sign); - } - } - catch (Exception e) - { - string errorMessage = "签名遭遇异常,content=" + content + " privateKeySize=" + privateKeyPem.Length + " reason=" + e.Message; - Console.WriteLine(errorMessage); - throw new Exception(errorMessage, e); - } - } - - /// - /// 验证签名 - /// - /// 待验签的内容 - /// 签名值的Base64串 - /// 支付宝公钥 - /// true:验证成功;false:验证失败 - public static bool Verify(string content, string sign, string publicKeyPem) - { - try - { - using (RSACryptoServiceProvider rsaService = new RSACryptoServiceProvider()) - { - rsaService.PersistKeyInCsp = false; - rsaService.ImportParameters(ConvertFromPemPublicKey(publicKeyPem)); - return rsaService.VerifyData(AlipayConstants.DEFAULT_CHARSET.GetBytes(content), - "SHA256", Convert.FromBase64String(sign)); - } - } - catch (Exception e) - { - string errorMessage = "验签遭遇异常,content=" + content + " sign=" + sign + - " publicKey=" + publicKeyPem + " reason=" + e.Message; - Console.WriteLine(errorMessage); - throw new Exception(errorMessage, e); - } - - } - - /// - /// 对参数集合进行验签 - /// - /// 参数集合 - /// 支付宝公钥 - /// true:验证成功;false:验证失败 - public static bool VerifyParams(Dictionary parameters, string publicKeyPem) - { - string sign = parameters[AlipayConstants.SIGN_FIELD]; - parameters.Remove(AlipayConstants.SIGN_FIELD); - parameters.Remove(AlipayConstants.SIGN_TYPE_FIELD); - - string content = GetSignContent(parameters); - - return Verify(content, sign, publicKeyPem); - } - - private static string GetSignContent(IDictionary parameters) - { - // 把字典按Key的字母顺序排序 - IDictionary sortedParams = new SortedDictionary(parameters, StringComparer.Ordinal); - IEnumerator> iterator = sortedParams.GetEnumerator(); - - // 把所有参数名和参数值串在一起 - StringBuilder query = new StringBuilder(""); - while (iterator.MoveNext()) - { - string key = iterator.Current.Key; - string value = iterator.Current.Value; - query.Append(key).Append("=").Append(value).Append("&"); - } - string content = query.ToString().Substring(0, query.Length - 1); - - return content; - } - - private static RSAParameters ConvertFromPemPublicKey(string pemPublickKey) - { - if (string.IsNullOrEmpty(pemPublickKey)) - { - throw new Exception("PEM格式公钥不可为空。"); - } - - //移除干扰文本 - pemPublickKey = pemPublickKey.Replace("-----BEGIN PUBLIC KEY-----", "") - .Replace("-----END PUBLIC KEY-----", "").Replace("\n", "").Replace("\r", ""); - - byte[] keyData = Convert.FromBase64String(pemPublickKey); - bool keySize1024 = (keyData.Length == 162); - bool keySize2048 = (keyData.Length == 294); - if (!(keySize1024 || keySize2048)) - { - throw new Exception("公钥长度只支持1024和2048。"); - } - byte[] pemModulus = (keySize1024 ? new byte[128] : new byte[256]); - byte[] pemPublicExponent = new byte[3]; - Array.Copy(keyData, (keySize1024 ? 29 : 33), pemModulus, 0, (keySize1024 ? 128 : 256)); - Array.Copy(keyData, (keySize1024 ? 159 : 291), pemPublicExponent, 0, 3); - RSAParameters para = new RSAParameters - { - Modulus = pemModulus, - Exponent = pemPublicExponent - }; - return para; - } - - private static RSACryptoServiceProvider BuildRSAServiceProvider(byte[] privateKey) - { - byte[] MODULUS, E, D, P, Q, DP, DQ, IQ; - byte bt = 0; - ushort twobytes = 0; - int elems = 0; - - //set up stream to decode the asn.1 encoded RSA private key - //wrap Memory Stream with BinaryReader for easy reading - using (BinaryReader binaryReader = new BinaryReader(new MemoryStream(privateKey))) - { - twobytes = binaryReader.ReadUInt16(); - //data read as little endian order (actual data order for Sequence is 30 81) - if (twobytes == 0x8130) - { - //advance 1 byte - binaryReader.ReadByte(); - } - else if (twobytes == 0x8230) - { - //advance 2 bytes - binaryReader.ReadInt16(); - } - else - { - return null; - } - - twobytes = binaryReader.ReadUInt16(); - //version number - if (twobytes != 0x0102) - { - return null; - } - bt = binaryReader.ReadByte(); - if (bt != 0x00) - { - return null; - } - - //all private key components are Integer sequences - elems = GetIntegerSize(binaryReader); - MODULUS = binaryReader.ReadBytes(elems); - - elems = GetIntegerSize(binaryReader); - E = binaryReader.ReadBytes(elems); - - elems = GetIntegerSize(binaryReader); - D = binaryReader.ReadBytes(elems); - - elems = GetIntegerSize(binaryReader); - P = binaryReader.ReadBytes(elems); - - elems = GetIntegerSize(binaryReader); - Q = binaryReader.ReadBytes(elems); - - elems = GetIntegerSize(binaryReader); - DP = binaryReader.ReadBytes(elems); - - elems = GetIntegerSize(binaryReader); - DQ = binaryReader.ReadBytes(elems); - - elems = GetIntegerSize(binaryReader); - IQ = binaryReader.ReadBytes(elems); - - //create RSACryptoServiceProvider instance and initialize with public key - RSACryptoServiceProvider rsaService = new RSACryptoServiceProvider(); - RSAParameters rsaParams = new RSAParameters - { - Modulus = MODULUS, - Exponent = E, - D = D, - P = P, - Q = Q, - DP = DP, - DQ = DQ, - InverseQ = IQ - }; - rsaService.ImportParameters(rsaParams); - return rsaService; - } - } - - private static int GetIntegerSize(BinaryReader binaryReader) - { - byte bt = 0; - byte lowbyte = 0x00; - byte highbyte = 0x00; - int count = 0; - - bt = binaryReader.ReadByte(); - - //expect integer - if (bt != 0x02) - { - return 0; - } - bt = binaryReader.ReadByte(); - - if (bt == 0x81) - { - //data size in next byte - count = binaryReader.ReadByte(); - } - else if (bt == 0x82) - { - //data size in next 2 bytes - highbyte = binaryReader.ReadByte(); - lowbyte = binaryReader.ReadByte(); - byte[] modint = { lowbyte, highbyte, 0x00, 0x00 }; - count = BitConverter.ToInt32(modint, 0); - } - else - { - //we already have the data size - count = bt; - } - while (binaryReader.ReadByte() == 0x00) - { //remove high order zeros in data - count -= 1; - } - //last ReadByte wasn't a removed zero, so back up a byte - binaryReader.BaseStream.Seek(-1, SeekOrigin.Current); - return count; - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/java/pom.xml b/vendor/alipaysdk/easysdk/kernel/java/pom.xml deleted file mode 100644 index 22ab92e9..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/pom.xml +++ /dev/null @@ -1,215 +0,0 @@ - - - 4.0.0 - com.alipay.sdk - easysdk-kernel - 1.0.11 - Alipay Easy SDK Kernel - https://open.alipay.com - Alipay Easy SDK for Java - allows you to enjoy a minimalist programming experience - and quickly access the various high-frequency capabilities of the Alipay Open Platform. - - - - mvnrepository - mvnrepository - http://www.mvnrepository.com/ - default - - true - - - false - - - - - UTF-8 - 1.7 - 1.7 - - - - junit - junit - 4.11 - test - - - ch.qos.logback - logback-core - 1.2.3 - test - - - ch.qos.logback - logback-classic - 1.2.3 - test - - - ch.qos.logback - logback-access - 1.2.3 - test - - - org.mockito - mockito-core - 3.2.0 - test - - - org.slf4j - slf4j-api - 1.7.25 - - - com.aliyun - tea - 1.1.13 - - - com.google.guava - guava - 28.1-jre - - - com.google.code.gson - gson - 2.8.6 - - - org.bouncycastle - bcprov-jdk15on - 1.64 - - - - - sonatype-nexus-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - - sonatype-nexus-staging - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - MIT License - http://www.opensource.org/licenses/mit-license.php - - - - scm:git:git@github.com:alipay/alipay-easysdk.git - scm:git:ssh://github.com:alipay/alipay-easysdk.git - http://github.com/alipay/alipay-easysdk/tree/master/java - - - - antopen - antopen - antopen@aliyun.com - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.7 - 1.7 - UTF-8 - - - - org.apache.maven.plugins - maven-jar-plugin - 2.3.2 - - - - - maven-deploy-plugin - 2.8.2 - - - default-deploy - deploy - - deploy - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.7 - true - - ossrh - https://oss.sonatype.org/ - true - - - - org.apache.maven.plugins - maven-scm-plugin - 1.8.1 - - - org.apache.maven.plugins - maven-source-plugin - 2.1.2 - - - attach-sources - verify - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - true - UTF-8 - UTF-8 - UTF-8 - -Xdoclint:none - - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - - \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/AlipayConstants.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/AlipayConstants.java deleted file mode 100644 index a7208cff..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/AlipayConstants.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel; - -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; - -/** - * 支付宝开放平台网关交互常用常量 - * - * @author zhongyu - * @version $Id: AlipayConstants.java, v 0.1 2020年01月02日 7:53 PM zhongyu Exp $ - */ -public final class AlipayConstants { - /** - * Config配置参数Key值 - */ - public static final String PROTOCOL_CONFIG_KEY = "protocol"; - public static final String HOST_CONFIG_KEY = "gatewayHost"; - public static final String ALIPAY_CERT_PATH_CONFIG_KEY = "alipayCertPath"; - public static final String MERCHANT_CERT_PATH_CONFIG_KEY = "merchantCertPath"; - public static final String ALIPAY_ROOT_CERT_PATH_CONFIG_KEY = "alipayRootCertPath"; - public static final String SIGN_TYPE_CONFIG_KEY = "signType"; - public static final String NOTIFY_URL_CONFIG_KEY = "notifyUrl"; - public static final String SIGN_PROVIDER_CONFIG_KEY = "signProvider"; - - /** - * 与网关HTTP交互中涉及到的字段值 - */ - public static final String BIZ_CONTENT_FIELD = "biz_content"; - public static final String ALIPAY_CERT_SN_FIELD = "alipay_cert_sn"; - public static final String SIGN_FIELD = "sign"; - public static final String SIGN_TYPE_FIELD = "sign_type"; - public static final String BODY_FIELD = "http_body"; - public static final String NOTIFY_URL_FIELD = "notify_url"; - public static final String METHOD_FIELD = "method"; - public static final String RESPONSE_SUFFIX = "_response"; - public static final String ERROR_RESPONSE = "error_response"; - - /** - * 默认字符集编码,EasySDK统一固定使用UTF-8编码,无需用户感知编码,用户面对的总是String而不是bytes - */ - public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8; - - /** - * 默认的签名算法,EasySDK统一固定使用RSA2签名算法(即SHA_256_WITH_RSA),但此参数依然需要用户指定以便用户感知,因为在开放平台接口签名配置界面中需要选择同样的算法 - */ - public static final String RSA2 = "RSA2"; - - /** - * RSA2对应的真实签名算法名称 - */ - public static final String SHA_256_WITH_RSA = "SHA256WithRSA"; - - /** - * RSA2对应的真实非对称加密算法名称 - */ - public static final String RSA = "RSA"; - - /** - * 申请生成的重定向网页的请求类型,GET表示生成URL - */ - public static final String GET = "GET"; - - /** - * 申请生成的重定向网页的请求类型,POST表示生成form表单 - */ - public static final String POST = "POST"; - - /** - * 使用Aliyun KMS签名服务时签名提供方的名称 - */ - public static final String AliyunKMS = "AliyunKMS"; -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/CertEnvironment.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/CertEnvironment.java deleted file mode 100644 index 835456d9..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/CertEnvironment.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Alipay.com Inc. Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel; - -import com.alipay.easysdk.kernel.util.AntCertificationUtil; -import com.google.common.base.Strings; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 证书模式运行时环境 - * - * @author zhongyu - * @version $Id: CertEnvironment.java, v 0.1 2020年01月02日 5:21 PM zhongyu Exp $ - */ -public class CertEnvironment { - /** - * 支付宝根证书内容 - */ - private String rootCertContent; - - /** - * 支付宝根证书序列号 - */ - private String rootCertSN; - - /** - * 商户应用公钥证书序列号 - */ - private String merchantCertSN; - - /** - * 缓存的不同支付宝公钥证书序列号对应的支付宝公钥 - */ - private Map cachedAlipayPublicKey = new ConcurrentHashMap(); - - /** - * 构造证书运行环境 - * - * @param merchantCertPath 商户公钥证书路径 - * @param alipayCertPath 支付宝公钥证书路径 - * @param alipayRootCertPath 支付宝根证书路径 - */ - public CertEnvironment(String merchantCertPath, String alipayCertPath, String alipayRootCertPath) { - if (Strings.isNullOrEmpty(merchantCertPath) || Strings.isNullOrEmpty(alipayCertPath) || Strings.isNullOrEmpty(alipayCertPath)) { - throw new RuntimeException("证书参数merchantCertPath、alipayCertPath或alipayRootCertPath设置不完整。"); - } - - this.rootCertContent = AntCertificationUtil.readCertContent(alipayRootCertPath); - this.rootCertSN = AntCertificationUtil.getRootCertSN(rootCertContent); - this.merchantCertSN = AntCertificationUtil.getCertSN(AntCertificationUtil.readCertContent((merchantCertPath))); - - String alipayPublicCertContent = AntCertificationUtil.readCertContent(alipayCertPath); - cachedAlipayPublicKey.put(AntCertificationUtil.getCertSN(alipayPublicCertContent), - AntCertificationUtil.getCertPublicKey(alipayPublicCertContent)); - } - - public String getRootCertSN() { - return rootCertSN; - } - - public String getMerchantCertSN() { - return merchantCertSN; - } - - public String getAlipayPublicKey(String sn) { - //如果没有指定sn,则默认取缓存中的第一个值 - if (Strings.isNullOrEmpty(sn)) { - return cachedAlipayPublicKey.values().iterator().next(); - } - - if (cachedAlipayPublicKey.containsKey(sn)) { - return cachedAlipayPublicKey.get(sn); - } else { - //网关在支付宝公钥证书变更前,一定会确认通知到商户并在商户做出反馈后,才会更新该商户的支付宝公钥证书 - //TODO: 后续可以考虑加入自动升级支付宝公钥证书逻辑,注意并发更新冲突问题 - throw new RuntimeException("支付宝公钥证书[" + sn + "]已过期,请重新下载最新支付宝公钥证书并替换原证书文件"); - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Client.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Client.java deleted file mode 100644 index 4bcf57c7..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Client.java +++ /dev/null @@ -1,493 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -package com.alipay.easysdk.kernel; - -import com.alipay.easysdk.kernel.util.AES; -import com.alipay.easysdk.kernel.util.JsonUtil; -import com.alipay.easysdk.kernel.util.MultipartUtil; -import com.alipay.easysdk.kernel.util.PageUtil; -import com.alipay.easysdk.kernel.util.SignContentExtractor; -import com.alipay.easysdk.kernel.util.Signer; -import com.aliyun.tea.TeaResponse; -import com.google.common.base.Strings; -import com.google.common.io.Files; -import com.google.gson.Gson; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.TimeZone; -import java.util.TreeMap; - -public class Client { - private static final Logger LOGGER = LoggerFactory.getLogger(Client.class); - - /** - * 构造成本较高的一些参数缓存在上下文中 - */ - private final Context context; - - /** - * 注入的可选额外文本参数集合 - */ - private final Map optionalTextParams = new HashMap<>(); - - /** - * 注入的可选业务参数集合 - */ - private final Map optionalBizParams = new HashMap<>(); - - /** - * 构造函数 - * - * @param context 上下文对象 - */ - public Client(Context context) { - this.context = context; - } - - /** - * 注入额外文本参数 - * - * @param key 参数名称 - * @param value 参数的值 - * @return 本客户端本身,便于链路调用 - */ - public Client injectTextParam(String key, String value) { - optionalTextParams.put(key, value); - return this; - } - - /** - * 注入额外业务参数 - * - * @param key 业务参数名称 - * @param value 业务参数的值 - * @return 本客户端本身,便于链式调用 - */ - public Client injectBizParam(String key, Object value) { - optionalBizParams.put(key, value); - return this; - } - - /** - * 获取时间戳,格式yyyy-MM-dd HH:mm:ss - * - * @return 当前时间戳 - */ - public String getTimestamp() throws Exception { - DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - df.setTimeZone(TimeZone.getTimeZone("GMT+8")); - return df.format(new Date()); - } - - /** - * 获取Config中的配置项 - * - * @param key 配置项的名称 - * @return 配置项的值 - */ - public String getConfig(String key) throws Exception { - return context.getConfig(key); - } - - /** - * 获取SDK版本信息 - * - * @return SDK版本信息 - */ - public String getSdkVersion() throws Exception { - return context.getSdkVersion(); - } - - /** - * 将业务参数和其他额外文本参数按www-form-urlencoded格式转换成HTTP Body中的字节数组,注意要做URL Encode - * - * @param bizParams 业务参数 - * @return HTTP Body中的字节数组 - */ - public byte[] toUrlEncodedRequestBody(java.util.Map bizParams) throws Exception { - Map sortedMap = getSortedMap(Collections.emptyMap(), bizParams, null); - return buildQueryString(sortedMap).getBytes(AlipayConstants.DEFAULT_CHARSET); - } - - /** - * 将网关响应发序列化成Map,同时将API的接口名称和响应原文插入到响应Map的method和body字段中 - * - * @param response HTTP响应 - * @param method 调用的OpenAPI的接口名称 - * @return 响应反序列化的Map - */ - @SuppressWarnings("unchecked") - public java.util.Map readAsJson(TeaResponse response, String method) throws Exception { - String responseBody = response.getResponseBody(); - Map map = new Gson().fromJson(responseBody, Map.class); - map.put(AlipayConstants.BODY_FIELD, responseBody); - map.put(AlipayConstants.METHOD_FIELD, method); - closeConnection(response); - return map; - } - - private void closeConnection(TeaResponse response) { - if (response.getResponse() != null) { - try { - response.getResponse().close(); - } catch (IOException e) { - LOGGER.warn("关闭链接遭遇异常:" + e.getMessage(), e); - } - } - } - - /** - * 从响应Map中提取返回值对象的Map,并将响应原文插入到body字段中 - * - * @param respMap 响应Map - * @return 返回值对象Map - */ - public java.util.Map toRespModel(java.util.Map respMap) throws Exception { - String methodName = (String) respMap.get(AlipayConstants.METHOD_FIELD); - String responseNodeName = methodName.replace('.', '_') + AlipayConstants.RESPONSE_SUFFIX; - String errorNodeName = AlipayConstants.ERROR_RESPONSE; - - //先找正常响应节点 - for (Entry pair : respMap.entrySet()) { - if (responseNodeName.equals(pair.getKey())) { - Map model = (Map) pair.getValue(); - model.put(AlipayConstants.BODY_FIELD, respMap.get(AlipayConstants.BODY_FIELD)); - return model; - } - } - - //再找异常响应节点 - for (Entry pair : respMap.entrySet()) { - if (errorNodeName.equals(pair.getKey())) { - Map model = (Map) pair.getValue(); - model.put(AlipayConstants.BODY_FIELD, respMap.get(AlipayConstants.BODY_FIELD)); - return model; - } - } - - throw new RuntimeException("响应格式不符合预期,找不到" + responseNodeName + "或" + errorNodeName + "节点"); - } - - /** - * 生成随机分界符,用于multipart格式的HTTP请求Body的多个字段间的分隔 - * - * @return 随机分界符 - */ - public String getRandomBoundary() throws Exception { - return System.currentTimeMillis() + ""; - } - - /** - * 将其他额外文本参数和文件参数按multipart/form-data格式转换成HTTP Body中的字节数组流 - * - * @param textParams 其他额外文本参数 - * @param fileParams 业务文件参数 - * @param boundary HTTP Body中multipart格式的分隔符 - * @return Multipart格式的字节流 - */ - public java.io.InputStream toMultipartRequestBody(java.util.Map textParams, - java.util.Map fileParams, String boundary) throws Exception { - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - - //补充其他额外参数 - addOtherParams(textParams, null); - - for (Entry pair : textParams.entrySet()) { - if (!Strings.isNullOrEmpty(pair.getKey()) && !Strings.isNullOrEmpty(pair.getValue())) { - stream.write(MultipartUtil.getEntryBoundary(boundary)); - stream.write(MultipartUtil.getTextEntry(pair.getKey(), pair.getValue())); - } - } - - //组装文件参数 - for (Entry pair : fileParams.entrySet()) { - if (!Strings.isNullOrEmpty(pair.getKey()) && pair.getValue() != null) { - stream.write(MultipartUtil.getEntryBoundary(boundary)); - stream.write(MultipartUtil.getFileEntry(pair.getKey(), pair.getValue())); - stream.write(Files.toByteArray(new File(pair.getValue()))); - } - } - - //添加结束标记 - stream.write(MultipartUtil.getEndBoundary(boundary)); - - return new ByteArrayInputStream(stream.toByteArray()); - } - - private void addOtherParams(Map textParams, Map bizParams) throws Exception { - //为null表示此处不是扩展此类参数的时机 - if (textParams != null) { - for (Entry pair : optionalTextParams.entrySet()) { - if (!textParams.containsKey(pair.getKey())) { - textParams.put(pair.getKey(), pair.getValue()); - } - } - setNotifyUrl(textParams); - } - - //为null表示此处不是扩展此类参数的时机 - if (bizParams != null) { - for (Entry pair : optionalBizParams.entrySet()) { - if (!bizParams.containsKey(pair.getKey())) { - ((Map) bizParams).put(pair.getKey(), pair.getValue()); - } - } - } - } - - /** - * 生成页面类请求所需URL或Form表单 - * - * @param method GET或POST,决定是生成URL还是Form表单 - * @param systemParams 系统参数集合 - * @param bizParams 业务参数集合 - * @param textParams 其他额外文本参数集合 - * @param sign 所有参数的签名值 - * @return 生成的URL字符串或表单 - */ - public String generatePage(String method, java.util.Map systemParams, java.util.Map bizParams, - java.util.Map textParams, String sign) throws Exception { - if (AlipayConstants.GET.equalsIgnoreCase(method)) { - //采集并排序所有参数 - Map sortedMap = getSortedMap(systemParams, bizParams, textParams); - sortedMap.put(AlipayConstants.SIGN_FIELD, sign); - - //将所有参数置于URL中 - return getGatewayServerUrl() + "?" + buildQueryString(sortedMap); - } else if (AlipayConstants.POST.equalsIgnoreCase(method)) { - //将系统参数、额外文本参数排序后置于URL中 - Map urlParams = getSortedMap(systemParams, null, textParams); - urlParams.put(AlipayConstants.SIGN_FIELD, sign); - String actionUrl = getGatewayServerUrl() + "?" + buildQueryString(urlParams); - - //将业务参数置于form表单中 - addOtherParams(null, bizParams); - Map formParams = new TreeMap<>(); - formParams.put(AlipayConstants.BIZ_CONTENT_FIELD, JsonUtil.toJsonString(bizParams)); - return PageUtil.buildForm(actionUrl, formParams); - } else { - throw new RuntimeException("_generatePage中method只支持传入GET或POST"); - } - } - - /** - * 获取商户应用公钥证书序列号,从证书模式运行时环境对象中直接读取 - * - * @return 商户应用公钥证书序列号 - */ - public String getMerchantCertSN() throws Exception { - if (context.getCertEnvironment() == null) { - return null; - } - return context.getCertEnvironment().getMerchantCertSN(); - } - - /** - * 从响应Map中提取支付宝公钥证书序列号 - * - * @param respMap 响应Map - * @return 支付宝公钥证书序列号 - */ - public String getAlipayCertSN(java.util.Map respMap) throws Exception { - return (String) respMap.get(AlipayConstants.ALIPAY_CERT_SN_FIELD); - } - - /** - * 获取支付宝根证书序列号,从证书模式运行时环境对象中直接读取 - * - * @return 支付宝根证书序列号 - */ - public String getAlipayRootCertSN() throws Exception { - if (context.getCertEnvironment() == null) { - return null; - } - return context.getCertEnvironment().getRootCertSN(); - } - - /** - * 是否是证书模式 - * - * @return true:是;false:不是 - */ - public Boolean isCertMode() throws Exception { - return context.getCertEnvironment() != null; - } - - /** - * 获取支付宝公钥,从证书运行时环境对象中直接读取 - * 如果缓存的用户指定的支付宝公钥证书的序列号与网关响应中携带的支付宝公钥证书序列号不一致,需要报错给出提示或自动更新支付宝公钥证书 - * - * @param alipayCertSN 网关响应中携带的支付宝公钥证书序列号 - * @return 支付宝公钥 - */ - public String extractAlipayPublicKey(String alipayCertSN) throws Exception { - if (context.getCertEnvironment() == null) { - return null; - } - return context.getCertEnvironment().getAlipayPublicKey(alipayCertSN); - } - - /** - * 验证签名 - * - * @param respMap 响应Map,可以从中提取出sign和body - * @param alipayPublicKey 支付宝公钥 - * @return true:验签通过;false:验签不通过 - */ - public Boolean verify(java.util.Map respMap, String alipayPublicKey) throws Exception { - String sign = (String) respMap.get(AlipayConstants.SIGN_FIELD); - String content = SignContentExtractor.getSignSourceData((String) respMap.get(AlipayConstants.BODY_FIELD), - (String) respMap.get(AlipayConstants.METHOD_FIELD)); - return Signer.verify(content, sign, alipayPublicKey); - } - - /** - * 计算签名,注意要去除key或value为null的键值对 - * - * @param systemParams 系统参数集合 - * @param bizParams 业务参数集合 - * @param textParams 其他额外文本参数集合 - * @param merchantPrivateKey 私钥 - * @return 签名值的Base64串 - */ - public String sign(java.util.Map systemParams, java.util.Map bizParams, - java.util.Map textParams, String merchantPrivateKey) throws Exception { - Map sortedMap = getSortedMap(systemParams, bizParams, textParams); - - StringBuilder content = new StringBuilder(); - int index = 0; - for (Entry pair : sortedMap.entrySet()) { - if (!Strings.isNullOrEmpty(pair.getKey()) && !Strings.isNullOrEmpty(pair.getValue())) { - content.append(index == 0 ? "" : "&").append(pair.getKey()).append("=").append(pair.getValue()); - index++; - } - } - return context.getSigner().sign(content.toString(), merchantPrivateKey); - } - - /** - * 将随机顺序的Map转换为有序的Map - * - * @param input 随机顺序的Map - * @return 有序的Map - */ - public java.util.Map sortMap(java.util.Map input) throws Exception { - //GO语言的Map是随机顺序的,每次访问顺序都不同,才需排序 - return input; - } - - /** - * AES加密 - * - * @param plainText 明文 - * @param key 密钥 - * @return 密文 - */ - public String aesEncrypt(String plainText, String key) throws Exception { - return AES.encrypt(plainText, key); - } - - /** - * AES解密 - * - * @param cipherText 密文 - * @param key 密钥 - * @return 明文 - */ - public String aesDecrypt(String cipherText, String key) throws Exception { - return AES.decrypt(cipherText, key); - } - - /** - * 生成订单串 - * - * @param systemParams 系统参数集合 - * @param bizParams 业务参数集合 - * @param textParams 额外文本参数集合 - * @param sign 所有参数的签名值 - * @return 订单串 - */ - public String generateOrderString(java.util.Map systemParams, java.util.Map bizParams, - java.util.Map textParams, String sign) throws Exception { - //采集并排序所有参数 - Map sortedMap = getSortedMap(systemParams, bizParams, textParams); - sortedMap.put(AlipayConstants.SIGN_FIELD, sign); - - //将所有参数置于URL中 - return buildQueryString(sortedMap); - } - - /** - * 对支付类请求的异步通知的参数集合进行验签 - * - * @param parameters 参数集合 - * @param publicKey 支付宝公钥 - * @return true:验证成功;false:验证失败 - */ - public Boolean verifyParams(java.util.Map parameters, String publicKey) throws Exception { - return Signer.verifyParams(parameters, publicKey); - } - - private Map getSortedMap(Map systemParams, Map bizParams, - Map textParams) throws Exception { - addOtherParams(textParams, bizParams); - - Map sortedMap = new TreeMap<>(systemParams); - if (bizParams != null && !bizParams.isEmpty()) { - sortedMap.put(AlipayConstants.BIZ_CONTENT_FIELD, JsonUtil.toJsonString(bizParams)); - } - if (textParams != null) { - sortedMap.putAll(textParams); - } - return sortedMap; - } - - private void setNotifyUrl(Map params) throws Exception { - if (getConfig(AlipayConstants.NOTIFY_URL_CONFIG_KEY) != null && !params.containsKey(AlipayConstants.NOTIFY_URL_FIELD)) { - params.put(AlipayConstants.NOTIFY_URL_FIELD, getConfig(AlipayConstants.NOTIFY_URL_CONFIG_KEY)); - } - } - - /** - * 字符串拼接 - * - * @param a 字符串a - * @param b 字符串b - * @return 字符串a和b拼接后的字符串 - */ - public String concatStr(String a, String b) { - return a + b; - } - - private String buildQueryString(Map sortedMap) throws UnsupportedEncodingException { - StringBuilder content = new StringBuilder(); - int index = 0; - for (Entry pair : sortedMap.entrySet()) { - if (!Strings.isNullOrEmpty(pair.getKey()) && !Strings.isNullOrEmpty(pair.getValue())) { - content.append(index == 0 ? "" : "&") - .append(pair.getKey()) - .append("=") - .append(URLEncoder.encode(pair.getValue(), AlipayConstants.DEFAULT_CHARSET.name())); - index++; - } - } - return content.toString(); - } - - private String getGatewayServerUrl() throws Exception { - return getConfig(AlipayConstants.PROTOCOL_CONFIG_KEY) + "://" + getConfig(AlipayConstants.HOST_CONFIG_KEY) + "/gateway.do"; - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Config.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Config.java deleted file mode 100644 index c50b3264..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Config.java +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel; - -import com.aliyun.tea.NameInMap; -import com.aliyun.tea.TeaModel; -import com.aliyun.tea.Validation; - -/** - * @author zhongyu - * @version : Config.java, v 0.1 2020年05月22日 4:25 下午 zhongyu Exp $ - */ -public class Config extends TeaModel { - - /** - * 通信协议,通常填写https - */ - @NameInMap("protocol") - @Validation(required = true) - public String protocol; - - /** - * 网关域名 - * 线上为:openapi.alipay.com - * 沙箱为:openapi.alipaydev.com - */ - @NameInMap("gatewayHost") - @Validation(required = true) - public String gatewayHost; - - /** - * AppId - */ - @NameInMap("appId") - @Validation(required = true) - public String appId; - - /** - * 签名类型,Alipay Easy SDK只推荐使用RSA2,估此处固定填写RSA2 - */ - @NameInMap("signType") - @Validation(required = true) - public String signType; - - /** - * 支付宝公钥 - */ - @NameInMap("alipayPublicKey") - public String alipayPublicKey; - - /** - * 应用私钥 - */ - @NameInMap("merchantPrivateKey") - @Validation(required = true) - public String merchantPrivateKey; - - /** - * 应用公钥证书文件路径 - */ - @NameInMap("merchantCertPath") - public String merchantCertPath; - - /** - * 支付宝公钥证书文件路径 - */ - @NameInMap("alipayCertPath") - public String alipayCertPath; - - /** - * 支付宝根证书文件路径 - */ - @NameInMap("alipayRootCertPath") - public String alipayRootCertPath; - - /** - * 异步通知回调地址(可选) - */ - @NameInMap("notifyUrl") - public String notifyUrl; - - /** - * AES密钥(可选) - */ - @NameInMap("encryptKey") - public String encryptKey; - - /** - * 签名提供方的名称(可选),例:Aliyun KMS签名,signProvider = "AliyunKMS" - */ - @NameInMap("signProvider") - public String signProvider; - - /** - * 代理地址(可选) - * 例如:http://127.0.0.1:8080 - */ - @NameInMap("httpProxy") - public String httpProxy; - - - /** - * 忽略证书校验(可选) - */ - @NameInMap("ignoreSSL") - public boolean ignoreSSL; - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Context.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Context.java deleted file mode 100644 index 7c949e62..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/Context.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel; - -import com.alipay.easysdk.kernel.util.Signer; -import com.aliyun.tea.TeaModel; -import com.google.common.base.Preconditions; -import com.google.common.base.Strings; - -import java.util.Map; - -/** - * @author zhongyu - * @version : Context.java, v 0.1 2020年05月24日 10:41 上午 zhongyu Exp $ - */ -public class Context { - /** - * 客户端配置参数 - */ - private final Map config; - - /** - * SDK版本号 - */ - private String sdkVersion; - - /** - * 证书模式运行时环境 - */ - private CertEnvironment certEnvironment; - - /** - * SHA256WithRSA签名器 - */ - private Signer signer; - - public Context(Config options, String sdkVersion) throws Exception { - config = TeaModel.buildMap(options); - this.sdkVersion = sdkVersion; - Preconditions.checkArgument(AlipayConstants.RSA2.equals(getConfig(AlipayConstants.SIGN_TYPE_CONFIG_KEY)), - "Alipay Easy SDK只允许使用RSA2签名方式,RSA签名方式由于安全性相比RSA2弱已不再推荐。"); - - if (!Strings.isNullOrEmpty(getConfig(AlipayConstants.ALIPAY_CERT_PATH_CONFIG_KEY))) { - certEnvironment = new CertEnvironment( - getConfig(AlipayConstants.MERCHANT_CERT_PATH_CONFIG_KEY), - getConfig(AlipayConstants.ALIPAY_CERT_PATH_CONFIG_KEY), - getConfig(AlipayConstants.ALIPAY_ROOT_CERT_PATH_CONFIG_KEY)); - } - signer = new Signer(); - } - - public String getConfig(String key) { - if (String.valueOf(config.get(key)) == "null") { - return null; - } else { - return String.valueOf(config.get(key)); - } - } - - public String getSdkVersion() { - return sdkVersion; - } - - public void setSdkVersion(String sdkVersion) { - this.sdkVersion = sdkVersion; - } - - public CertEnvironment getCertEnvironment() { - return certEnvironment; - } - - public Signer getSigner() { - return signer; - } - - public void setSigner(Signer signer) { - this.signer = signer; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AES.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AES.java deleted file mode 100644 index 1f6af4e0..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AES.java +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel.util; - -import com.alipay.easysdk.kernel.AlipayConstants; -import org.bouncycastle.util.encoders.Base64; - -import javax.crypto.Cipher; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -/** - * 加密工具 - */ -public class AES { - private static final String AES_ALG = "AES"; - private static final String AES_CBC_PCK_ALG = "AES/CBC/PKCS5Padding"; - private static final byte[] AES_IV = initIV(); - - /** - * AES加密 - * - * @param plainText 明文 - * @param key 对称密钥 - * @return 密文 - */ - public static String encrypt(String plainText, String key) { - try { - Cipher cipher = Cipher.getInstance(AES_CBC_PCK_ALG); - - IvParameterSpec iv = new IvParameterSpec(AES_IV); - cipher.init(Cipher.ENCRYPT_MODE, - new SecretKeySpec(Base64.decode(key.getBytes()), AES_ALG), iv); - - byte[] encryptBytes = cipher.doFinal(plainText.getBytes(AlipayConstants.DEFAULT_CHARSET)); - return new String(Base64.encode(encryptBytes)); - } catch (Exception e) { - throw new RuntimeException("AES加密失败,plainText=" + plainText + - ",keySize=" + key.length() + "。" + e.getMessage(), e); - } - } - - /** - * 密文 - * - * @param cipherText 密文 - * @param key 对称密钥 - * @return 明文 - */ - public static String decrypt(String cipherText, String key) { - try { - Cipher cipher = Cipher.getInstance(AES_CBC_PCK_ALG); - IvParameterSpec iv = new IvParameterSpec(AES_IV); - cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(Base64.decode(key.getBytes()), AES_ALG), iv); - - byte[] cleanBytes = cipher.doFinal(Base64.decode(cipherText.getBytes())); - return new String(cleanBytes, AlipayConstants.DEFAULT_CHARSET); - } catch (Exception e) { - throw new RuntimeException("AES解密失败,cipherText=" + cipherText + - ",keySize=" + key.length() + "。" + e.getMessage(), e); - } - } - - /** - * 初始向量的方法,全部为0 - * 这里的写法适合于其它算法,AES算法IV值一定是128位的(16字节) - */ - private static byte[] initIV() { - try { - Cipher cipher = Cipher.getInstance(AES_CBC_PCK_ALG); - int blockSize = cipher.getBlockSize(); - byte[] iv = new byte[blockSize]; - for (int i = 0; i < blockSize; ++i) { - iv[i] = 0; - } - return iv; - } catch (Exception e) { - int blockSize = 16; - byte[] iv = new byte[blockSize]; - for (int i = 0; i < blockSize; ++i) { - iv[i] = 0; - } - return iv; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AntCertificationUtil.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AntCertificationUtil.java deleted file mode 100644 index f7ebf505..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/AntCertificationUtil.java +++ /dev/null @@ -1,396 +0,0 @@ -package com.alipay.easysdk.kernel.util; - -import com.google.common.base.Strings; -import com.google.common.io.ByteStreams; -import com.google.common.io.Files; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigInteger; -import java.nio.charset.StandardCharsets; -import java.security.InvalidKeyException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.Principal; -import java.security.PublicKey; -import java.security.Security; -import java.security.SignatureException; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateExpiredException; -import java.security.cert.CertificateFactory; -import java.security.cert.CertificateNotYetValidException; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 证书文件可信校验 - * - * @author junying.wjy - * @version $Id: AntCertificationUtil.java, v 0.1 2019-07-29 下午04:46 junying.wjy Exp $ - */ -public class AntCertificationUtil { - private static final Logger LOGGER = LoggerFactory.getLogger(AntCertificationUtil.class); - - private static BouncyCastleProvider provider; - - static { - provider = new BouncyCastleProvider(); - Security.addProvider(provider); - } - - /** - * 验证证书是否可信 - * - * @param certContent 需要验证的目标证书或者证书链 - * @param rootCertContent 可信根证书列表 - */ - public static boolean isTrusted(String certContent, String rootCertContent) { - X509Certificate[] certificates; - try { - certificates = readPemCertChain(certContent); - } catch (Exception e) { - LOGGER.error("读取证书失败", e); - throw new RuntimeException(e); - } - - List rootCerts = new ArrayList(); - try { - X509Certificate[] certs = readPemCertChain(rootCertContent); - rootCerts.addAll(Arrays.asList(certs)); - } catch (Exception e) { - LOGGER.error("读取根证书失败", e); - throw new RuntimeException(e); - } - - return verifyCertChain(certificates, rootCerts.toArray(new X509Certificate[rootCerts.size()])); - } - - /** - * 验证证书是否是信任证书库中证书签发的 - * - * @param cert 目标验证证书 - * @param rootCerts 可信根证书列表 - * @return 验证结果 - */ - private static boolean verifyCert(X509Certificate cert, X509Certificate[] rootCerts) { - try { - cert.checkValidity(); - } catch (CertificateExpiredException e) { - LOGGER.error("证书已经过期", e); - return false; - } catch (CertificateNotYetValidException e) { - LOGGER.error("证书未激活", e); - return false; - } - - Map subjectMap = new HashMap(); - - for (X509Certificate root : rootCerts) { - subjectMap.put(root.getSubjectDN(), root); - } - - Principal issuerDN = cert.getIssuerDN(); - X509Certificate issuer = subjectMap.get(issuerDN); - if (issuer == null) { - LOGGER.error("证书链验证失败"); - return false; - } - try { - PublicKey publicKey = issuer.getPublicKey(); - verifySignature(publicKey, cert); - } catch (Exception e) { - LOGGER.error("证书链验证失败", e); - return false; - } - return true; - } - - /** - * 验证证书链是否是信任证书库中证书签发的 - * - * @param certs 目标验证证书列表 - * @param rootCerts 可信根证书列表 - * @return 验证结果 - */ - private static boolean verifyCertChain(X509Certificate[] certs, X509Certificate[] rootCerts) { - boolean sorted = sortByDn(certs); - if (!sorted) { - LOGGER.error("证书链验证失败:不是完整的证书链"); - return false; - } - - //先验证第一个证书是不是信任库中证书签发的 - X509Certificate prev = certs[0]; - boolean firstOK = verifyCert(prev, rootCerts); - if (!firstOK || certs.length == 1) { - return firstOK; - } - - //验证证书链 - for (int i = 1; i < certs.length; i++) { - try { - X509Certificate cert = certs[i]; - try { - cert.checkValidity(); - } catch (CertificateExpiredException e) { - LOGGER.error("证书已经过期"); - return false; - } catch (CertificateNotYetValidException e) { - LOGGER.error("证书未激活"); - return false; - } - verifySignature(prev.getPublicKey(), cert); - prev = cert; - } catch (Exception e) { - LOGGER.error("证书链验证失败"); - return false; - } - } - - return true; - } - - private static void verifySignature(PublicKey publicKey, X509Certificate cert) - throws NoSuchProviderException, CertificateException, NoSuchAlgorithmException, InvalidKeyException, - SignatureException { - cert.verify(publicKey, provider.getName()); - } - - /** - * 将证书链按照完整的签发顺序进行排序,排序后证书链为:[issuerA, subjectA]-[issuerA, subjectB]-[issuerB, subjectC]-[issuerC, subjectD]... - * - * @param certs 证书链 - * @return true:排序成功,false:证书链不完整 - */ - private static boolean sortByDn(X509Certificate[] certs) { - //主题和证书的映射 - Map subjectMap = new HashMap(); - //签发者和证书的映射 - Map issuerMap = new HashMap(); - //是否包含自签名证书 - boolean hasSelfSignedCert = false; - - for (X509Certificate cert : certs) { - if (isSelfSigned(cert)) { - if (hasSelfSignedCert) { - return false; - } - hasSelfSignedCert = true; - } - - Principal subjectDN = cert.getSubjectDN(); - Principal issuerDN = cert.getIssuerDN(); - - subjectMap.put(subjectDN, cert); - issuerMap.put(issuerDN, cert); - } - - List certChain = new ArrayList(); - - X509Certificate current = certs[0]; - addressingUp(subjectMap, certChain, current); - addressingDown(issuerMap, certChain, current); - - //说明证书链不完整 - if (certs.length != certChain.size()) { - return false; - } - - //将证书链复制到原先的数据 - for (int i = 0; i < certChain.size(); i++) { - certs[i] = certChain.get(i); - } - return true; - } - - /** - * 验证证书是否是自签发的 - * - * @param cert 目标证书 - * @return true;自签发,false;不是自签发 - */ - private static boolean isSelfSigned(X509Certificate cert) { - return cert.getSubjectDN().equals(cert.getIssuerDN()); - } - - /** - * 向上构造证书链 - * - * @param subjectMap 主题和证书的映射 - * @param certChain 证书链 - * @param current 当前需要插入证书链的证书,include - */ - private static void addressingUp(final Map subjectMap, List certChain, - final X509Certificate current) { - certChain.add(0, current); - if (isSelfSigned(current)) { - return; - } - Principal issuerDN = current.getIssuerDN(); - X509Certificate issuer = subjectMap.get(issuerDN); - if (issuer == null) { - return; - } - addressingUp(subjectMap, certChain, issuer); - } - - /** - * 向下构造证书链 - * - * @param issuerMap 签发者和证书的映射 - * @param certChain 证书链 - * @param current 当前需要插入证书链的证书,exclude - */ - private static void addressingDown(final Map issuerMap, List certChain, - final X509Certificate current) { - Principal subjectDN = current.getSubjectDN(); - X509Certificate subject = issuerMap.get(subjectDN); - if (subject == null) { - return; - } - if (isSelfSigned(subject)) { - return; - } - certChain.add(subject); - addressingDown(issuerMap, certChain, subject); - } - - private static X509Certificate[] readPemCertChain(String cert) throws CertificateException { - ByteArrayInputStream inputStream = new ByteArrayInputStream(cert.getBytes()); - CertificateFactory factory = CertificateFactory.getInstance("X.509", provider); - Collection certificates = factory.generateCertificates(inputStream); - return certificates.toArray(new X509Certificate[certificates.size()]); - } - - /** - * 获取支付宝根证书序列号 - * - * @param rootCertContent 支付宝根证书内容 - * @return 支付宝根证书序列号 - */ - public static String getRootCertSN(String rootCertContent) { - String rootCertSN = null; - try { - X509Certificate[] x509Certificates = readPemCertChain(rootCertContent); - MessageDigest md = MessageDigest.getInstance("MD5"); - for (X509Certificate c : x509Certificates) { - if (c.getSigAlgOID().startsWith("1.2.840.113549.1.1")) { - md.update((c.getIssuerX500Principal().getName() + c.getSerialNumber()).getBytes()); - String certSN = new BigInteger(1, md.digest()).toString(16); - //BigInteger会把0省略掉,需补全至32位 - certSN = fillMD5(certSN); - if (Strings.isNullOrEmpty(rootCertSN)) { - rootCertSN = certSN; - } else { - rootCertSN = rootCertSN + "_" + certSN; - } - } - - } - } catch (Exception e) { - LOGGER.error("提取根证书失败"); - } - return rootCertSN; - } - - /** - * 获取公钥证书序列号 - * - * @param certContent 公钥证书内容 - * @return 公钥证书序列号 - */ - public static String getCertSN(String certContent) { - try { - InputStream inputStream = new ByteArrayInputStream(certContent.getBytes()); - CertificateFactory factory = CertificateFactory.getInstance("X.509", "BC"); - X509Certificate cert = (X509Certificate) factory.generateCertificate(inputStream); - return md5((cert.getIssuerX500Principal().getName() + cert.getSerialNumber()).getBytes()); - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - private static String md5(byte[] bytes) throws NoSuchAlgorithmException { - MessageDigest md = MessageDigest.getInstance("MD5"); - md.update(bytes); - String certSN = new BigInteger(1, md.digest()).toString(16); - //BigInteger会把0省略掉,需补全至32位 - certSN = fillMD5(certSN); - return certSN; - } - - private static String fillMD5(String md5) { - return md5.length() == 32 ? md5 : fillMD5("0" + md5); - } - - /** - * 提取公钥证书中的公钥 - * - * @param certContent 公钥证书内容 - * @return 公钥证书中的公钥 - */ - public static String getCertPublicKey(String certContent) { - try { - InputStream inputStream = new ByteArrayInputStream(certContent.getBytes()); - CertificateFactory factory = CertificateFactory.getInstance("X.509", "BC"); - X509Certificate cert = (X509Certificate) factory.generateCertificate(inputStream); - return Base64.toBase64String(cert.getPublicKey().getEncoded()); - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 从文件中读取证书内容 - * - * @param certPath 证书路径 - * @return 证书内容 - */ - public static String readCertContent(String certPath) { - if (existsInFileSystem(certPath)) { - return readFromFileSystem(certPath); - } - return readFromClassPath(certPath); - } - - private static boolean existsInFileSystem(String certPath) { - try { - return new File(certPath).exists(); - } catch (Throwable e) { - return false; - } - } - - private static String readFromFileSystem(String certPath) { - try { - return new String(Files.toByteArray(new File(certPath)), StandardCharsets.UTF_8); - } catch (IOException e) { - throw new RuntimeException("从文件系统中读取[" + certPath + "]失败," + e.getMessage(), e); - } - } - - private static String readFromClassPath(String certPath) { - try (InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(certPath)) { - return new String(ByteStreams.toByteArray(inputStream), StandardCharsets.UTF_8); - } catch (Exception e) { - String errorMessage = e.getMessage() == null ? "" : e.getMessage() + "。"; - if (certPath.startsWith("/")) { - errorMessage += "ClassPath路径不可以/开头,请去除后重试。"; - } - throw new RuntimeException("读取[" + certPath + "]失败。" + errorMessage, e); - } - } -} diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/JsonUtil.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/JsonUtil.java deleted file mode 100644 index c9838fda..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/JsonUtil.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel.util; - -import com.aliyun.tea.TeaModel; -import com.google.gson.Gson; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -/** - * JSON工具类 - * - * @author zhongyu - * @version : JsonUtil.java, v 0.1 2020年02月18日 8:20 下午 zhongyu Exp $ - */ -public class JsonUtil { - /** - * 将Map转换为Json字符串,转换过程中对于TeaModel,使用标注的字段名称而不是字段的变量名 - * - * @param input 输入的Map - * @return Json字符串 - */ - public static String toJsonString(Map input) { - Map result = new HashMap<>(); - for (Entry pair : input.entrySet()) { - if (pair.getValue() instanceof TeaModel) { - result.put(pair.getKey(), getTeaModelMap((TeaModel) pair.getValue())); - } else { - result.put(pair.getKey(), pair.getValue()); - } - } - return new Gson().toJson(result); - } - - private static Map getTeaModelMap(TeaModel teaModel) { - Map result = new HashMap<>(); - Map teaModelMap = teaModel.toMap(); - for (Entry pair : teaModelMap.entrySet()) { - if (pair.getValue() instanceof TeaModel) { - result.put(pair.getKey(), getTeaModelMap((TeaModel) pair.getValue())); - } else { - result.put(pair.getKey(), pair.getValue()); - } - } - return result; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/MultipartUtil.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/MultipartUtil.java deleted file mode 100644 index baa73a25..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/MultipartUtil.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel.util; - -import com.alipay.easysdk.kernel.AlipayConstants; -import com.google.common.base.Preconditions; - -import java.io.File; - -/** - * HTTP multipart/form-data格式相关工具类 - * - * @author zhongyu - * @version : MulitpartUtil.java, v 0.1 2020年02月08日 11:26 上午 zhongyu Exp $ - */ -public class MultipartUtil { - /** - * 获取Multipart分界符 - * - * @param boundary 用作分界的随机字符串 - * @return Multipart分界符 - */ - public static byte[] getEntryBoundary(String boundary) { - return ("\r\n--" + boundary + "\r\n").getBytes(); - } - - /** - * 获取Multipart结束标记 - * - * @param boundary 用作分界的随机字符串 - * @return Multipart结束标记 - */ - public static byte[] getEndBoundary(String boundary) { - return ("\r\n--" + boundary + "--\r\n").getBytes(); - } - - /** - * 获取Multipart中的文本参数结构 - * - * @param fieldName 字段名称 - * @param fieldValue 字段值 - * @return 文本参数结构 - */ - public static byte[] getTextEntry(String fieldName, String fieldValue) { - String entry = "Content-Disposition:form-data;name=\"" - + fieldName - + "\"\r\nContent-Type:text/plain\r\n\r\n" - + fieldValue; - return entry.getBytes(AlipayConstants.DEFAULT_CHARSET); - } - - /** - * 获取Multipart中的文件参数结构(不含文件内容,只有文件元数据) - * - * @param fieldName 字段名称 - * @param filePath 文件路径 - * @return 文件参数结构(不含文件内容) - */ - public static byte[] getFileEntry(String fieldName, String filePath) { - String entry = "Content-Disposition:form-data;name=\"" - + fieldName - + "\";filename=\"" - + getFile(filePath).getName() - + "\"\r\nContent-Type:application/octet-stream" - + "\r\n\r\n"; - return entry.getBytes(AlipayConstants.DEFAULT_CHARSET); - } - - private static File getFile(String filePath) { - File file = new File(filePath); - Preconditions.checkArgument(file.exists(), file.getAbsolutePath() + "文件不存在"); - Preconditions.checkArgument(file.getName().contains("."), "文件名必须带上正确的扩展名"); - return file; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/PageUtil.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/PageUtil.java deleted file mode 100644 index 6cd98d88..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/PageUtil.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel.util; - -import java.util.Map; -import java.util.Map.Entry; - -/** - * 生成页面信息辅助类 - * - * @author zhongyu - * @version : PageUtil.java, v 0.1 2020年02月12日 3:11 下午 zhongyu Exp $ - */ -public class PageUtil { - /** - * 生成表单 - * - * @param actionUrl 表单提交链接 - * @param parameters 表单参数 - * @return 表单字符串 - */ - public static String buildForm(String actionUrl, Map parameters) { - return "
\n" - + buildHiddenFields(parameters) - + "\n" - + "
\n" - + ""; - } - - private static String buildHiddenFields(Map parameters) { - if (parameters == null || parameters.isEmpty()) { - return ""; - } - StringBuilder builder = new StringBuilder(); - for (Entry pair : parameters.entrySet()) { - // 除去参数中的空值 - if (pair.getKey() == null || pair.getValue() == null) { - continue; - } - builder.append(buildHiddenField(pair.getKey(), pair.getValue())); - } - return builder.toString(); - } - - private static String buildHiddenField(String key, String value) { - StringBuilder builder = new StringBuilder(64); - builder.append("\n"); - return builder.toString(); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/ResponseChecker.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/ResponseChecker.java deleted file mode 100644 index 97bed6f0..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/ResponseChecker.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Alipay.com Inc. - * Copyright (c) 2004-2020 All Rights Reserved. - */ -package com.alipay.easysdk.kernel.util; - -import com.aliyun.tea.TeaModel; -import com.google.common.base.Strings; - -import java.lang.reflect.Field; - -/** - * 响应检查工具类 - * - * @author zhongyu - * @version : ResponseChecker.java, v 0.1 2020年06月02日 10:42 上午 zhongyu Exp $ - */ -public class ResponseChecker { - - public static final String SUB_CODE_FIELD_NAME = "subCode"; - - /** - * 判断一个请求返回的响应是否成功 - * - * @param response 响应对象 - * @return true:成功;false:失败 - */ - public static boolean success(TeaModel response) { - try { - Field subCodeField = response.getClass().getField(SUB_CODE_FIELD_NAME); - subCodeField.setAccessible(true); - String subCode = (String) subCodeField.get(response); - return Strings.isNullOrEmpty(subCode); - } catch (NoSuchFieldException | IllegalAccessException e) { - //没有subCode字段的响应对象,通常是那些无需跟网关远程通信的API,只要本地执行完成都视为成功 - return true; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/SignContentExtractor.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/SignContentExtractor.java deleted file mode 100644 index 403c89c5..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/SignContentExtractor.java +++ /dev/null @@ -1,203 +0,0 @@ -/** - * Alipay.com Inc. Copyright (c) 2004-2019 All Rights Reserved. - */ -package com.alipay.easysdk.kernel.util; - -import com.alipay.easysdk.kernel.AlipayConstants; - -import java.util.LinkedList; - -/** - * 待验签原文提取器 - *

- * 注:此处不可使用JSON反序列化工具进行提取,会破坏原有格式,对于签名而言差个空格都会验签不通过 - * - * @author zhongyu - * @version $Id: SignContentExtractor.java, v 0.1 2019年12月19日 9:07 PM zhongyu Exp $ - */ -public class SignContentExtractor { - /** - * 左大括号 - */ - public static final char LEFT_BRACE = '{'; - - /** - * 右大括号 - */ - public static final char RIGHT_BRACE = '}'; - - /** - * 双引号 - */ - public static final char DOUBLE_QUOTES = '"'; - - /** - * 获取待验签的原文 - * - * @param body 网关的整体响应字符串 - * @param method 本次调用的OpenAPI接口名称 - * @return 待验签的原文 - */ - public static String getSignSourceData(String body, String method) { - // 加签源串起点 - String rootNode = method.replace('.', '_') + AlipayConstants.RESPONSE_SUFFIX; - String errorRootNode = AlipayConstants.ERROR_RESPONSE; - - int indexOfRootNode = body.indexOf(rootNode); - int indexOfErrorRoot = body.indexOf(errorRootNode); - - if (indexOfRootNode > 0) { - return parseSignSourceData(body, rootNode, indexOfRootNode); - } else if (indexOfErrorRoot > 0) { - return parseSignSourceData(body, errorRootNode, indexOfErrorRoot); - } else { - return null; - } - } - - private static String parseSignSourceData(String body, String rootNode, int indexOfRootNode) { - //第一个字母 + 长度 + 冒号 + 引号 - int signDataStartIndex = indexOfRootNode + rootNode.length() + 2; - - int indexOfSign = body.indexOf("\"" + AlipayConstants.SIGN_FIELD + "\""); - if (indexOfSign < 0) { - return null; - } - - SignSourceData signSourceData = extractSignContent(body, signDataStartIndex); - - //如果提取的待验签原始内容后还有rootNode - if (body.lastIndexOf(rootNode) > signSourceData.getEndIndex()) { - throw new RuntimeException("检测到响应报文中有重复的" + rootNode + ",验签失败。"); - } - - return signSourceData.getSourceData(); - } - - private static SignSourceData extractSignContent(String str, int begin) { - if (str == null) { - return null; - } - - int beginIndex = extractBeginPosition(str, begin); - if (beginIndex >= str.length()) { - return null; - } - - int endIndex = extractEndPosition(str, beginIndex); - return new SignSourceData(str.substring(beginIndex, endIndex), beginIndex, endIndex); - } - - private static int extractBeginPosition(String responseString, int begin) { - int beginPosition = begin; - //找到第一个左大括号(对应响应的是JSON对象的情况:普通调用OpenAPI响应明文) - //或者双引号(对应响应的是JSON字符串的情况:加密调用OpenAPI响应Base64串),作为待验签内容的起点 - while (beginPosition < responseString.length() - && responseString.charAt(beginPosition) != LEFT_BRACE - && responseString.charAt(beginPosition) != DOUBLE_QUOTES) { - ++beginPosition; - } - return beginPosition; - } - - private static int extractEndPosition(String responseString, int beginPosition) { - //提取明文验签内容终点 - if (responseString.charAt(beginPosition) == LEFT_BRACE) { - return extractJsonObjectEndPosition(responseString, beginPosition); - } - //提取密文验签内容终点 - else { - return extractJsonBase64ValueEndPosition(responseString, beginPosition); - } - } - - private static int extractJsonBase64ValueEndPosition(String responseString, int beginPosition) { - for (int index = beginPosition; index < responseString.length(); ++index) { - //找到第2个双引号作为终点,由于中间全部是Base64编码的密文,所以不会有干扰的特殊字符 - if (responseString.charAt(index) == DOUBLE_QUOTES && index != beginPosition) { - return index + 1; - } - } - //如果没有找到第2个双引号,说明验签内容片段提取失败,直接尝试选取剩余整个响应字符串进行验签 - return responseString.length(); - } - - private static int extractJsonObjectEndPosition(String responseString, int beginPosition) { - //记录当前尚未发现配对闭合的大括号 - LinkedList braces = new LinkedList(); - //记录当前字符是否在双引号中 - boolean inQuotes = false; - //记录当前字符前面连续的转义字符个数 - int consecutiveEscapeCount = 0; - //从待验签字符的起点开始遍历后续字符串,找出待验签字符串的终止点,终点即是与起点{配对的} - for (int index = beginPosition; index < responseString.length(); ++index) { - //提取当前字符 - char currentChar = responseString.charAt(index); - - //如果当前字符是"且前面有偶数个转义标记(0也是偶数) - if (currentChar == DOUBLE_QUOTES && consecutiveEscapeCount % 2 == 0) { - //是否在引号中的状态取反 - inQuotes = !inQuotes; - } - //如果当前字符是{且不在引号中 - else if (currentChar == LEFT_BRACE && !inQuotes) { - //将该{加入未闭合括号中 - braces.push(LEFT_BRACE); - } - //如果当前字符是}且不在引号中 - else if (currentChar == RIGHT_BRACE && !inQuotes) { - //弹出一个未闭合括号 - braces.pop(); - //如果弹出后,未闭合括号为空,说明已经找到终点 - if (braces.isEmpty()) { - return index + 1; - } - } - - //如果当前字符是转义字符 - if (currentChar == '\\') { - //连续转义字符个数+1 - ++consecutiveEscapeCount; - } else { - //连续转义字符个数置0 - consecutiveEscapeCount = 0; - } - } - - //如果没有找到配对的闭合括号,说明验签内容片段提取失败,直接尝试选取剩余整个响应字符串进行验签 - return responseString.length(); - } - - private static class SignSourceData { - /** - * 待验签原始内容 - */ - private final String sourceData; - /** - * 待验签原始内容在响应字符串中的起始位置 - */ - private final int beginIndex; - /** - * 待验签原始内容在响应字符串中的结束位置 - */ - private final int endIndex; - - SignSourceData(String sourceData, int beginIndex, int endIndex) { - this.sourceData = sourceData; - this.beginIndex = beginIndex; - this.endIndex = endIndex; - } - - String getSourceData() { - return sourceData; - } - - public int getBeginIndex() { - return beginIndex; - } - - int getEndIndex() { - return endIndex; - } - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/Signer.java b/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/Signer.java deleted file mode 100644 index ee817891..00000000 --- a/vendor/alipaysdk/easysdk/kernel/java/src/main/java/com/alipay/easysdk/kernel/util/Signer.java +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Alipay.com Inc. Copyright (c) 2004-2019 All Rights Reserved. - */ -package com.alipay.easysdk.kernel.util; - -import com.alipay.easysdk.kernel.AlipayConstants; -import org.bouncycastle.util.encoders.Base64; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.security.KeyFactory; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.Signature; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * SHA256WithRSA签名器 - * - * @author zhongyu - * @version $Id: Signer.java, v 0.1 2019年12月19日 9:10 PM zhongyu Exp $ - */ -public class Signer { - private static final Logger LOGGER = LoggerFactory.getLogger(Signer.class); - - public static String getSignCheckContent(Map params) { - if (params == null) { - return null; - } - - StringBuilder content = new StringBuilder(); - List keys = new ArrayList<>(params.keySet()); - Collections.sort(keys); - for (int i = 0; i < keys.size(); i++) { - String key = keys.get(i); - String value = params.get(key); - content.append(i == 0 ? "" : "&").append(key).append("=").append(value); - } - return content.toString(); - } - - /** - * 验证签名 - * - * @param content 待验签的内容 - * @param sign 签名值的Base64串 - * @param publicKeyPem 支付宝公钥 - * @return true:验证成功;false:验证失败 - */ - public static boolean verify(String content, String sign, String publicKeyPem) { - try { - KeyFactory keyFactory = KeyFactory.getInstance(AlipayConstants.RSA); - byte[] encodedKey = publicKeyPem.getBytes(); - encodedKey = Base64.decode(encodedKey); - PublicKey publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey)); - - Signature signature = Signature.getInstance(AlipayConstants.SHA_256_WITH_RSA); - signature.initVerify(publicKey); - signature.update(content.getBytes(AlipayConstants.DEFAULT_CHARSET)); - return signature.verify(Base64.decode(sign.getBytes())); - } catch (Exception e) { - String errorMessage = "验签遭遇异常,content=" + content + " sign=" + sign + - " publicKey=" + publicKeyPem + " reason=" + e.getMessage(); - LOGGER.error(errorMessage, e); - throw new RuntimeException(errorMessage, e); - } - } - - /** - * 计算签名 - * - * @param content 待签名的内容 - * @param privateKeyPem 私钥 - * @return 签名值的Base64串 - */ - public String sign(String content, String privateKeyPem) { - try { - byte[] encodedKey = privateKeyPem.getBytes(); - encodedKey = Base64.decode(encodedKey); - PrivateKey privateKey = KeyFactory.getInstance(AlipayConstants.RSA).generatePrivate(new PKCS8EncodedKeySpec(encodedKey)); - - Signature signature = Signature.getInstance(AlipayConstants.SHA_256_WITH_RSA); - signature.initSign(privateKey); - signature.update(content.getBytes(AlipayConstants.DEFAULT_CHARSET)); - byte[] signed = signature.sign(); - return new String(Base64.encode(signed)); - } catch (Exception e) { - String errorMessage = "签名遭遇异常,content=" + content + " privateKeySize=" + privateKeyPem.length() + " reason=" + e.getMessage(); - LOGGER.error(errorMessage, e); - throw new RuntimeException(errorMessage, e); - } - } - - /** - * 对参数集合进行验签 - * - * @param parameters 参数集合 - * @param publicKey 支付宝公钥 - * @return true:验证成功;false:验证失败 - */ - public static boolean verifyParams(Map parameters, String publicKey) { - String sign = parameters.get(AlipayConstants.SIGN_FIELD); - parameters.remove(AlipayConstants.SIGN_FIELD); - parameters.remove(AlipayConstants.SIGN_TYPE_FIELD); - - String content = getSignCheckContent(parameters); - - return verify(content, sign, publicKey); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/README.md b/vendor/alipaysdk/easysdk/php/README.md deleted file mode 100644 index 5c5f291e..00000000 --- a/vendor/alipaysdk/easysdk/php/README.md +++ /dev/null @@ -1,227 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/alipaysdk/easysdk/v/stable)](https://packagist.org/packages/alipaysdk/easysdk) -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Falipay%2Falipay-easysdk?ref=badge_shield) - -欢迎使用 Alipay **Easy** SDK for PHP 。 - -Alipay Esay SDK for PHP让您不用复杂编程即可访支付宝开放平台开放的各项常用能力,SDK可以自动帮您满足能力调用过程中所需的证书校验、加签、验签、发送HTTP请求等非功能性要求。 - -下面向您介绍Alipay Easy SDK for PHP 的基本设计理念和使用方法。 - -## 设计理念 -不同于原有的[Alipay SDK](https://openhome.alipay.com/doc/sdkDownload.resource?sdkType=PHP)通用而全面的设计理念,Alipay Easy SDK对开放能力的API进行了更加贴近高频场景的精心设计与裁剪,简化了服务端调用方式,让调用API像使用语言内置的函数一样简便。 - -Alipay Easy SDK提供了与[能力地图](https://opendocs.alipay.com/mini/00am3f)相对应的代码组织结构,让开发者可以快速找到不同能力对应的API。 - -Alipay Easy SDK主要目标是提升开发者在**服务端**集成支付宝开放平台开放的各类核心能力的效率。 - -## 环境要求 -1. Alipay Easy SDK for PHP 需要配合`PHP 7.0`或其以上版本。 - -2. 使用 Alipay Easy SDK for PHP 之前 ,您需要先前往[支付宝开发平台-开发者中心](https://openhome.alipay.com/platform/developerIndex.htm)完成开发者接入的一些准备工作,包括创建应用、为应用添加功能包、设置应用的接口加签方式等。 - -3. 准备工作完成后,注意保存如下信息,后续将作为使用SDK的输入。 - -* 加签模式为公钥证书模式时(推荐) - -`AppId`、`应用的私钥`、`应用公钥证书文件`、`支付宝公钥证书文件`、`支付宝根证书文件` - -* 加签模式为公钥模式时 - -`AppId`、`应用的私钥`、`支付宝公钥` - -## 安装依赖 -### 通过[Composer](https://packagist.org/packages/alipaysdk/easysdk/)在线安装依赖(推荐) - -`composer require alipaysdk/easysdk:^2.0` - -### 本地手动集成依赖(适用于自己修改源码后的本地重新打包安装) -1. 本机安装配置[Composer](https://getcomposer.org/)工具。 -2. 在本`README.md`所在目录下,执行`composer install`,下载SDK依赖。 -3. 依赖文件会下载到`vendor`目录下。 - -## 快速使用 -以下这段代码示例向您展示了使用Alipay Easy SDK for PHP调用一个API的3个主要步骤: - -1. 设置参数(全局只需设置一次)。 -2. 发起API调用。 -3. 处理响应或异常。 - -```php -common()->create("iPhone6 16G", "20200326235526001", "88.88", "2088002656718920"); - $responseChecker = new ResponseChecker(); - //3. 处理响应或异常 - if ($responseChecker->success($result)) { - echo "调用成功". PHP_EOL; - } else { - echo "调用失败,原因:". $result->msg.",".$result->subMsg.PHP_EOL; - } -} catch (Exception $e) { - echo "调用失败,". $e->getMessage(). PHP_EOL;; -} - -function getOptions() -{ - $options = new Config(); - $options->protocol = 'https'; - $options->gatewayHost = 'openapi.alipay.com'; - $options->signType = 'RSA2'; - - $options->appId = '<-- 请填写您的AppId,例如:2019022663440152 -->'; - - // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中 - $options->merchantPrivateKey = '<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->'; - - $options->alipayCertPath = '<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->'; - $options->alipayRootCertPath = '<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt" -->'; - $options->merchantCertPath = '<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->'; - - //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可 - // $options->alipayPublicKey = '<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->'; - - //可设置异步通知接收服务地址(可选) - $options->notifyUrl = "<-- 请填写您的支付类接口异步通知接收服务地址,例如:https://www.test.com/callback -->"; - - //可设置AES密钥,调用AES加解密相关接口时需要(可选) - $options->encryptKey = "<-- 请填写您的AES密钥,例如:aa4BtZ4tspm2wnXLb1ThQA== -->"; - - - - return $options; -} - -``` - -### 扩展调用 -#### ISV代调用 - -```php -Factory::payment()->faceToFace() - // 调用agent扩展方法,设置app_auth_token,完成ISV代调用 - ->agent("ca34ea491e7146cc87d25fca24c4cD11") - ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -#### 设置独立的异步通知地址 - -```php -Factory::payment()->faceToFace() - // 调用asyncNotify扩展方法,可以为每此API调用,设置独立的异步通知地址 - // 此处设置的异步通知地址的优先级高于全局Config中配置的异步通知地址 - ->asyncNotify("https://www.test.com/callback") - ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -#### 设置可选业务参数 - -```php -$goodDetail = array( - "goods_id" => "apple-01", - "goods_name" => "iPhone6 16G", - "quantity" => 1, - "price" => "5799" - ); - $goodsDetail[0] = $goodDetail; - -Factory::payment()->faceToFace() - // 调用optional扩展方法,完成可选业务参数(biz_content下的可选字段)的设置 - ->optional("seller_id", "2088102146225135") - ->optional("discountable_amount", "8.88") - ->optional("goods_detail", $goodsDetail) - ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); - - -$optionalArgs = array( - "timeout_express" => "10m", - "body" => "Iphone6 16G" - ); - -Factory::payment()->faceToFace() - // 也可以调用batchOptional扩展方法,批量设置可选业务参数(biz_content下的可选字段) - ->batchOptional($optionalArgs) - ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` -#### 多种扩展灵活组合 - -```php -// 多种扩展方式可灵活组装(对扩展方法的调用顺序没有要求) -Factory::payment()->faceToFace() - ->agent("ca34ea491e7146cc87d25fca24c4cD11") - ->asyncNotify("https://www.test.com/callback") - ->optional("seller_id", "2088102146225135") - ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00"); -``` - -## API组织规范 -在Alipay Easy SDK中,API的引用路径与能力地图的组织层次一致,遵循如下规范 - -> Factory::能力名称()->场景名称()->接口方法名称( ... ) - -比如,如果您想要使用[能力地图](https://opendocs.alipay.com/mini/00am3f)中`营销能力`下的`模板消息`场景中的`小程序发送模板消息`,只需按如下形式编写调用代码即可(不同编程语言的连接符号可能不同)。 - -`Factory::marketing()->templateMessage()->send( ... )` - -其中,接口方法名称通常是对其依赖的OpenAPI功能的一个最简概况,接口方法的出入参与OpenAPI中同名参数含义一致,可参照OpenAPI相关参数的使用说明。 - -Alipay Easy SDK将致力于保持良好的API命名,以符合开发者的编程直觉。 -## 已支持的API列表 - -| 能力类别 | 场景类别 | 接口方法名称 | 调用的OpenAPI名称 | -|-----------|-----------------|------------------------|-----------------------------------------------------------| -| Base | OAuth | getToken | alipay\.system\.oauth\.token | -| Base | OAuth | refreshToken | alipay\.system\.oauth\.token | -| Base | Qrcode | create | alipay\.open\.app\.qrcode\.create | -| Base | Image | upload | alipay\.offline\.material\.image\.upload | -| Base | Video | upload | alipay\.offline\.material\.image\.upload | -| Member | Identification | init | alipay\.user\.certify\.open\.initialize | -| Member | Identification | certify | alipay\.user\.certify\.open\.certify | -| Member | Identification | query | alipay\.user\.certify\.open\.query | -| Payment | Common | create | alipay\.trade\.create | -| Payment | Common | query | alipay\.trade\.query | -| Payment | Common | refund | alipay\.trade\.refund | -| Payment | Common | close | alipay\.trade\.close | -| Payment | Common | cancel | alipay\.trade\.cancel | -| Payment | Common | queryRefund | alipay\.trade\.fastpay\.refund\.query | -| Payment | Common | downloadBill | alipay\.data\.dataservice\.bill\.downloadurl\.query | -| Payment | Common | verifyNotify | - | -| Payment | Huabei | create | alipay\.trade\.create | -| Payment | FaceToFace | pay | alipay\.trade\.pay | -| Payment | FaceToFace | precreate | alipay\.trade\.precreate | -| Payment | App | pay | alipay\.trade\.app\.pay | -| Payment | Page | pay | alipay\.trade\.page\.pay | -| Payment | Wap | pay | alipay\.trade\.wap\.pay | -| Security | TextRisk | detect | alipay\.security\.risk\.content\.detect | -| Marketing | Pass | createTemplate | alipay\.pass\.template\.add | -| Marketing | Pass | updateTemplate | alipay\.pass\.template\.update | -| Marketing | Pass | addInstance | alipay\.pass\.instance\.add | -| Marketing | Pass | updateInstance | alipay\.pass\.instance\.update | -| Marketing | TemplateMessage | send | alipay\.open\.app\.mini\.templatemessage\.send | -| Marketing | OpenLife | createImageTextContent | alipay\.open\.public\.message\.content\.create | -| Marketing | OpenLife | modifyImageTextContent | alipay\.open\.public\.message\.content\.modify | -| Marketing | OpenLife | sendText | alipay\.open\.public\.message\.total\.send | -| Marketing | OpenLife | sendImageText | alipay\.open\.public\.message\.total\.send | -| Marketing | OpenLife | sendSingleMessage | alipay\.open\.public\.message\.single\.send | -| Marketing | OpenLife | recallMessage | alipay\.open\.public\.life\.msg\.recall | -| Marketing | OpenLife | setIndustry | alipay\.open\.public\.template\.message\.industry\.modify | -| Marketing | OpenLife | getIndustry | alipay\.open\.public\.setting\.category\.query | -| Util | AES | decrypt | - | -| Util | AES | encrypt | - | -| Util | Generic | execute | - | - -> 注:更多高频场景的API持续更新中,敬请期待。 - -## 文档 -[API Doc](./../APIDoc.md) - -[Alipay Easy SDK](./../README.md) diff --git a/vendor/alipaysdk/easysdk/php/src/Base/Image/Client.php b/vendor/alipaysdk/easysdk/php/src/Base/Image/Client.php deleted file mode 100644 index 64585720..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/Image/Client.php +++ /dev/null @@ -1,198 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $imageName - * @param string $imageFilePath - * @return AlipayOfflineMaterialImageUploadResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function upload($imageName, $imageFilePath){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 100000, - "readTimeout" => 100000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.offline.material.image.upload", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = []; - $textParams = [ - "image_type" => "jpg", - "image_name" => $imageName - ]; - $fileParams = [ - "image_content" => $imageFilePath - ]; - $boundary = $this->_kernel->getRandomBoundary(); - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => $this->_kernel->concatStr("multipart/form-data;charset=utf-8;boundary=", $boundary) - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams)); - $_request->body = $this->_kernel->toMultipartRequestBody($textParams, $fileParams, $boundary); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.offline.material.image.upload"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOfflineMaterialImageUploadResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOfflineMaterialImageUploadResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.php b/vendor/alipaysdk/easysdk/php/src/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.php deleted file mode 100644 index 2e55ea30..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/Image/Models/AlipayOfflineMaterialImageUploadResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'imageId' => 'image_id', - 'imageUrl' => 'image_url', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('imageId', $this->imageId, true); - Model::validateRequired('imageUrl', $this->imageUrl, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->imageId) { - $res['image_id'] = $this->imageId; - } - if (null !== $this->imageUrl) { - $res['image_url'] = $this->imageUrl; - } - return $res; - } - /** - * @param array $map - * @return AlipayOfflineMaterialImageUploadResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['image_id'])){ - $model->imageId = $map['image_id']; - } - if(isset($map['image_url'])){ - $model->imageUrl = $map['image_url']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $imageId; - - /** - * @var string - */ - public $imageUrl; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Base/OAuth/Client.php b/vendor/alipaysdk/easysdk/php/src/Base/OAuth/Client.php deleted file mode 100644 index 1f4e5311..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/OAuth/Client.php +++ /dev/null @@ -1,283 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $code - * @return AlipaySystemOauthTokenResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function getToken($code){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.system.oauth.token", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = []; - $textParams = [ - "grant_type" => "authorization_code", - "code" => $code - ]; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.system.oauth.token"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipaySystemOauthTokenResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipaySystemOauthTokenResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $refreshToken - * @return AlipaySystemOauthTokenResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function refreshToken($refreshToken){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.system.oauth.token", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = []; - $textParams = [ - "grant_type" => "refresh_token", - "refresh_token" => $refreshToken - ]; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.system.oauth.token"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipaySystemOauthTokenResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipaySystemOauthTokenResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Base/OAuth/Models/AlipaySystemOauthTokenResponse.php b/vendor/alipaysdk/easysdk/php/src/Base/OAuth/Models/AlipaySystemOauthTokenResponse.php deleted file mode 100644 index eee2163d..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/OAuth/Models/AlipaySystemOauthTokenResponse.php +++ /dev/null @@ -1,156 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'userId' => 'user_id', - 'accessToken' => 'access_token', - 'expiresIn' => 'expires_in', - 'refreshToken' => 'refresh_token', - 'reExpiresIn' => 're_expires_in', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('userId', $this->userId, true); - Model::validateRequired('accessToken', $this->accessToken, true); - Model::validateRequired('expiresIn', $this->expiresIn, true); - Model::validateRequired('refreshToken', $this->refreshToken, true); - Model::validateRequired('reExpiresIn', $this->reExpiresIn, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->userId) { - $res['user_id'] = $this->userId; - } - if (null !== $this->accessToken) { - $res['access_token'] = $this->accessToken; - } - if (null !== $this->expiresIn) { - $res['expires_in'] = $this->expiresIn; - } - if (null !== $this->refreshToken) { - $res['refresh_token'] = $this->refreshToken; - } - if (null !== $this->reExpiresIn) { - $res['re_expires_in'] = $this->reExpiresIn; - } - return $res; - } - /** - * @param array $map - * @return AlipaySystemOauthTokenResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['user_id'])){ - $model->userId = $map['user_id']; - } - if(isset($map['access_token'])){ - $model->accessToken = $map['access_token']; - } - if(isset($map['expires_in'])){ - $model->expiresIn = $map['expires_in']; - } - if(isset($map['refresh_token'])){ - $model->refreshToken = $map['refresh_token']; - } - if(isset($map['re_expires_in'])){ - $model->reExpiresIn = $map['re_expires_in']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $userId; - - /** - * @var string - */ - public $accessToken; - - /** - * @var int - */ - public $expiresIn; - - /** - * @var string - */ - public $refreshToken; - - /** - * @var int - */ - public $reExpiresIn; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Client.php b/vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Client.php deleted file mode 100644 index 1e8cd1ff..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Client.php +++ /dev/null @@ -1,196 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $urlParam - * @param string $queryParam - * @param string $describe - * @return AlipayOpenAppQrcodeCreateResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function create($urlParam, $queryParam, $describe){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.app.qrcode.create", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "url_param" => $urlParam, - "query_param" => $queryParam, - "describe" => $describe - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.app.qrcode.create"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenAppQrcodeCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenAppQrcodeCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.php b/vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.php deleted file mode 100644 index 88f254f4..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/Qrcode/Models/AlipayOpenAppQrcodeCreateResponse.php +++ /dev/null @@ -1,104 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'qrCodeUrl' => 'qr_code_url', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('qrCodeUrl', $this->qrCodeUrl, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->qrCodeUrl) { - $res['qr_code_url'] = $this->qrCodeUrl; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenAppQrcodeCreateResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['qr_code_url'])){ - $model->qrCodeUrl = $map['qr_code_url']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $qrCodeUrl; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Base/Video/Client.php b/vendor/alipaysdk/easysdk/php/src/Base/Video/Client.php deleted file mode 100644 index dac3d806..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/Video/Client.php +++ /dev/null @@ -1,198 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $videoName - * @param string $videoFilePath - * @return AlipayOfflineMaterialImageUploadResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function upload($videoName, $videoFilePath){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 100000, - "readTimeout" => 100000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.offline.material.image.upload", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = []; - $textParams = [ - "image_type" => "mp4", - "image_name" => $videoName - ]; - $fileParams = [ - "image_content" => $videoFilePath - ]; - $boundary = $this->_kernel->getRandomBoundary(); - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => $this->_kernel->concatStr("multipart/form-data;charset=utf-8;boundary=", $boundary) - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams)); - $_request->body = $this->_kernel->toMultipartRequestBody($textParams, $fileParams, $boundary); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.offline.material.image.upload"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOfflineMaterialImageUploadResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOfflineMaterialImageUploadResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.php b/vendor/alipaysdk/easysdk/php/src/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.php deleted file mode 100644 index 12afa5b2..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Base/Video/Models/AlipayOfflineMaterialImageUploadResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'imageId' => 'image_id', - 'imageUrl' => 'image_url', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('imageId', $this->imageId, true); - Model::validateRequired('imageUrl', $this->imageUrl, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->imageId) { - $res['image_id'] = $this->imageId; - } - if (null !== $this->imageUrl) { - $res['image_url'] = $this->imageUrl; - } - return $res; - } - /** - * @param array $map - * @return AlipayOfflineMaterialImageUploadResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['image_id'])){ - $model->imageId = $map['image_id']; - } - if(isset($map['image_url'])){ - $model->imageUrl = $map['image_url']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $imageId; - - /** - * @var string - */ - public $imageUrl; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/AlipayConstants.php b/vendor/alipaysdk/easysdk/php/src/Kernel/AlipayConstants.php deleted file mode 100644 index 234a8e22..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/AlipayConstants.php +++ /dev/null @@ -1,63 +0,0 @@ -rootCertSN = $antCertificationUtil->getRootCertSN($alipayRootCertPath); - $this->merchantCertSN = $antCertificationUtil->getCertSN($merchantCertPath); - $this->cachedAlipayPublicKey = $antCertificationUtil->getPublicKey($alipayCertPath); - } - - /** - * @return mixed - */ - public function getRootCertSN() - { - return $this->rootCertSN; - } - - /** - * @return mixed - */ - public function getMerchantCertSN() - { - return $this->merchantCertSN; - } - - /** - * @return mixed - */ - public function getCachedAlipayPublicKey() - { - return $this->cachedAlipayPublicKey; - } - - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Config.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Config.php deleted file mode 100755 index 43ce1a45..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Config.php +++ /dev/null @@ -1,26 +0,0 @@ -config = $config; - } - - public function injectTextParam($key, $value) - { - if ($key != null) { - $this->optionalTextParams[$key] = $value; - } - } - - public function injectBizParam($key, $value) - { - if ($key != null) { - $this->optionalBizParams[$key] = $value; - } - } - - /** - * 获取时间戳,格式yyyy-MM-dd HH:mm:ss - * @return false|string 当前时间戳 - */ - public function getTimestamp() - { - return date("Y-m-d H:i:s"); - } - - public function getConfig($key) - { - return $this->config->$key; - } - - public function getSdkVersion() - { - return AlipayConstants::SDK_VERSION; - } - - /** - * 将业务参数和其他额外文本参数按www-form-urlencoded格式转换成HTTP Body中的字节数组,注意要做URL Encode - * - * @param $bizParams array 业务参数 - * @return false|string|null - */ - public function toUrlEncodedRequestBody($bizParams) - { - $sortedMap = $this->getSortedMap(null, $bizParams, null); - if (empty($sortedMap)) { - return null; - } - return $this->buildQueryString($sortedMap); - } - - /** - * 解析网关响应内容,同时将API的接口名称和响应原文插入到响应数组的method和body字段中 - * - * @param $response ResponseInterface HTTP响应 - * @param $method string 调用的OpenAPI的接口名称 - * @return array 响应的结果 - */ - public function readAsJson($response, $method) - { - $responseBody = (string)$response->getBody(); - $map = []; - $map[AlipayConstants::BODY_FIELD] = $responseBody; - $map[AlipayConstants::METHOD_FIELD] = $method; - return $map; - } - - /** - * 生成随机分界符,用于multipart格式的HTTP请求Body的多个字段间的分隔 - * - * @return string 随机分界符 - */ - public function getRandomBoundary() - { - return date("Y-m-d H:i:s") . ''; - } - - /** - * 将其他额外文本参数和文件参数按multipart/form-data格式转换成HTTP Body中 - * @param $textParams - * @param $fileParams - * @param $boundary - * @return false|string - */ - public function toMultipartRequestBody($textParams, $fileParams, $boundary) - { - $this->textParams = $textParams; - if ($textParams != null && $this->optionalTextParams != null) { - $this->textParams = array_merge($textParams, $this->optionalTextParams); - } else if ($textParams == null) { - $this->textParams = $this->optionalTextParams; - } - if (count($fileParams) > 0) { - - foreach ($fileParams as $key => $value) { - $fileField = new FileField(); - $fileField->filename = $value; - $fileField->contentType = 'multipart/form-data;charset=utf-8;boundary=' . $boundary; - $fileField->content = new Stream(fopen($value, 'r')); - $this->textParams[$key] = $fileField; - } - } - $stream = FileForm::toFileForm($this->textParams, $boundary); - -// do { -// $readLength = $stream->read(1024); -// } while (0 != $readLength); - return $stream; - } - - /** - * 生成页面类请求所需URL或Form表单 - * @param $method - * @param $systemParams - * @param $bizParams - * @param $textParams - * @param $sign - * @return string - * @throws \Exception - */ - public function generatePage($method, $systemParams, $bizParams, $textParams, $sign) - { - if ($method == AlipayConstants::GET) { - //采集并排序所有参数 - $sortedMap = $this->getSortedMap($systemParams, $bizParams, $textParams); - $sortedMap[AlipayConstants::SIGN_FIELD] = $sign; - return $this->getGatewayServerUrl() . '?' . $this->buildQueryString($sortedMap); - } elseif ($method == AlipayConstants::POST) { - //采集并排序所有参数 - $sortedMap = $this->getSortedMap($systemParams, $this->bizParams, $this->textParams); - $sortedMap[AlipayConstants::SIGN_FIELD] = $sign; - $pageUtil = new PageUtil(); - return $pageUtil->buildForm($this->getGatewayServerUrl(), $sortedMap); - } else { - throw new \Exception("不支持" . $method); - } - } - - /** - * 获取商户应用公钥证书序列号,从证书模式运行时环境对象中直接读取 - * - * @return mixed 商户应用公钥证书序列号 - */ - public function getMerchantCertSN() - { - return $this->config->merchantCertSN; - } - - /** - * 从响应Map中提取支付宝公钥证书序列号 - * - * @param array $respMap string 响应Map - * @return mixed 支付宝公钥证书序列号 - */ - public function getAlipayCertSN(array $respMap) - { - if (!empty($this->config->merchantCertSN)) { - $body = json_decode($respMap[AlipayConstants::BODY_FIELD]); - $alipayCertSN = $body->alipay_cert_sn; - return $alipayCertSN; - } - } - - /** - * 获取支付宝根证书序列号,从证书模式运行时环境对象中直接读取 - * - * @return mixed 支付宝根证书序列号 - */ - public function getAlipayRootCertSN() - { - return $this->config->alipayRootCertSN; - } - - /** - * 是否是证书模式 - * @return mixed true:是;false:不是 - */ - public function isCertMode() - { - return $this->config->merchantCertSN; - } - - public function extractAlipayPublicKey($alipayCertSN) - { - // PHP 版本只存储一个版本支付宝公钥 - return $this->config->alipayPublicKey; - } - - /** - * 验证签名 - * - * @param $respMap string 响应内容,可以从中提取出sign和body - * @param $alipayPublicKey string 支付宝公钥 - * @return bool true:验签通过;false:验签不通过 - * @throws \Exception - */ - public function verify($respMap, $alipayPublicKey) - { - $resp = json_decode($respMap[AlipayConstants::BODY_FIELD], true); - $sign = $resp[AlipayConstants::SIGN_FIELD]; - $signContentExtractor = new SignContentExtractor(); - $content = $signContentExtractor->getSignSourceData($respMap[AlipayConstants::BODY_FIELD], - $respMap[AlipayConstants::METHOD_FIELD]); - $signer = new Signer(); - return $signer->verify($content, $sign, $alipayPublicKey); - } - - /** - * 计算签名,注意要去除key或value为null的键值对 - * - * @param $systemParams array 系统参数集合 - * @param $bizParams array 业务参数集合 - * @param $textParams array 其他额外文本参数集合 - * @param $privateKey string 私钥 - * @return string 签名值的Base64串 - */ - public function sign($systemParams, $bizParams, $textParams, $privateKey) - { - $sortedMap = $this->getSortedMap($systemParams, $bizParams, $textParams); - $data = $this->getSignContent($sortedMap); - $sign = new Signer(); - return $sign->sign($data, $privateKey); - } - - /** - * AES加密 - * @param $content - * @param $encryptKey - * @return string - * @throws \Exception - */ - public function aesEncrypt($content, $encryptKey) - { - $aes = new AES(); - return $aes->aesEncrypt($content, $encryptKey); - } - - /** - * AES解密 - * @param $content - * @param $encryptKey - * @return false|string - * @throws \Exception - */ - public function aesDecrypt($content, $encryptKey) - { - $aes = new AES(); - return $aes->aesDecrypt($content, $encryptKey); - } - - /** - * 生成sdkExecute类请求所需URL - * - * @param $systemParams - * @param $bizParams - * @param $textParams - * @param $sign - * @return string - */ - public function generateOrderString($systemParams, $bizParams, $textParams, $sign) - { - //采集并排序所有参数 - $sortedMap = $this->getSortedMap($systemParams, $bizParams, $textParams); - $sortedMap[AlipayConstants::SIGN_FIELD] = $sign; - return http_build_query($sortedMap); - } - - public function sortMap($randomMap) - { - return $randomMap; - } - - - /** - * 从响应Map中提取返回值对象的Map,并将响应原文插入到body字段中 - * - * @param $respMap string 响应内容 - * @return mixed - */ - public function toRespModel($respMap) - { - $body = $respMap[AlipayConstants::BODY_FIELD]; - $methodName = $respMap[AlipayConstants::METHOD_FIELD]; - $responseNodeName = str_replace(".", "_", $methodName) . AlipayConstants::RESPONSE_SUFFIX; - - $model = json_decode($body, true); - if (strpos($body, AlipayConstants::ERROR_RESPONSE)) { - $result = $model[AlipayConstants::ERROR_RESPONSE]; - $result[AlipayConstants::BODY_FIELD] = $body; - } else { - $result = $model[$responseNodeName]; - $result[AlipayConstants::BODY_FIELD] = $body; - } - return $result; - } - - public function verifyParams($parameters, $publicKey) - { - $sign = new Signer(); - return $sign->verifyParams($parameters, $publicKey); - } - - /** - * 字符串拼接 - * - * @param $a - * @param $b - * @return string 字符串a和b拼接后的字符串 - */ - public function concatStr($a, $b) - { - return $a . $b; - } - - - private function buildQueryString(array $sortedMap) - { - $requestUrl = null; - foreach ($sortedMap as $sysParamKey => $sysParamValue) { - $requestUrl .= "$sysParamKey=" . urlencode($this->characet($sysParamValue, AlipayConstants::DEFAULT_CHARSET)) . "&"; - } - $requestUrl = substr($requestUrl, 0, -1); - return $requestUrl; - - } - - private function getSortedMap($systemParams, $bizParams, $textParams) - { - $this->textParams = $textParams; - $this->bizParams = $bizParams; - if ($textParams != null && $this->optionalTextParams != null) { - $this->textParams = array_merge($textParams, $this->optionalTextParams); - } else if ($textParams == null) { - $this->textParams = $this->optionalTextParams; - } - if ($bizParams != null && $this->optionalBizParams != null) { - $this->bizParams = array_merge($bizParams, $this->optionalBizParams); - } else if ($bizParams == null) { - $this->bizParams = $this->optionalBizParams; - } - $json = new JsonUtil(); - if ($this->bizParams != null) { - $bizParams = $json->toJsonString($this->bizParams); - } - $sortedMap = $systemParams; - if (!empty($bizParams)) { - $sortedMap[AlipayConstants::BIZ_CONTENT_FIELD] = json_encode($bizParams, JSON_UNESCAPED_UNICODE); - } - if (!empty($this->textParams)) { - if (!empty($sortedMap)) { - $sortedMap = array_merge($sortedMap, $this->textParams); - } else { - $sortedMap = $this->textParams; - } - } - if ($this->getConfig(AlipayConstants::NOTIFY_URL_CONFIG_KEY) != null) { - $sortedMap[AlipayConstants::NOTIFY_URL_FIELD] = $this->getConfig(AlipayConstants::NOTIFY_URL_CONFIG_KEY); - } - return $sortedMap; - } - - /** - * 获取签名字符串 - * - * @param $params - * @return string - */ - private function getSignContent($params) - { - ksort($params); - $stringToBeSigned = ""; - $i = 0; - foreach ($params as $k => $v) { - if (false === $this->checkEmpty($v) && "@" != substr($v, 0, 1)) { - // 转换成目标字符集 - $v = $this->characet($v, AlipayConstants::DEFAULT_CHARSET); - if ($i == 0) { - $stringToBeSigned .= "$k" . "=" . "$v"; - } else { - $stringToBeSigned .= "&" . "$k" . "=" . "$v"; - } - $i++; - } - } - unset ($k, $v); - return $stringToBeSigned; - } - - private function setNotifyUrl($params) - { - if ($this->config(AlipayConstants::NOTIFY_URL_CONFIG_KEY) != null && $params(AlipayConstants::NOTIFY_URL_CONFIG_KEY) == null) { - $params[AlipayConstants::NOTIFY_URL_CONFIG_KEY] = $this->config(AlipayConstants::NOTIFY_URL_CONFIG_KEY); - } - } - - private function getGatewayServerUrl() - { - return $this->getConfig(AlipayConstants::PROTOCOL_CONFIG_KEY) . '://' . $this->getConfig(AlipayConstants::HOST_CONFIG_KEY) . '/gateway.do'; - } - - /** - * 校验$value是否非空 - * - * @param $value - * @return bool if not set ,return true;if is null , return true; - */ - function checkEmpty($value) - { - if (!isset($value)) - return true; - if ($value === null) - return true; - if (trim($value) === "") - return true; - return false; - } - - /** - * 转换字符集编码 - * @param $data - * @param $targetCharset - * @return string - */ - function characet($data, $targetCharset) - { - if (!empty($data)) { - $fileType = AlipayConstants::DEFAULT_CHARSET; - if (strcasecmp($fileType, $targetCharset) != 0) { - $data = mb_convert_encoding($data, $targetCharset, $fileType); - } - } - return $data; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Exceptions/RuntimeException.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Exceptions/RuntimeException.php deleted file mode 100644 index cd6ca678..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Exceptions/RuntimeException.php +++ /dev/null @@ -1,10 +0,0 @@ -alipayCertPath)) { - $certEnvironment = new CertEnvironment(); - $certEnvironment->certEnvironment( - $config->merchantCertPath, - $config->alipayCertPath, - $config->alipayRootCertPath - ); - $config->merchantCertSN = $certEnvironment->getMerchantCertSN(); - $config->alipayRootCertSN = $certEnvironment->getRootCertSN(); - $config->alipayPublicKey = $certEnvironment->getCachedAlipayPublicKey(); - } - - $kernel = new EasySDKKernel($config); - self::$base = new Base($kernel); - self::$marketing = new Marketing($kernel); - self::$member = new Member($kernel); - self::$payment = new Payment($kernel); - self::$security = new Security($kernel); - self::$util = new Util($kernel); - } - - public static function setOptions($config) - { - if (!(self::$instance instanceof self)) { - self::$instance = new self($config); - } - return self::$instance; - } - - private function __clone() - { - } - - public static function base() - { - return self::$base; - } - - public static function marketing() - { - return self::$marketing; - } - - public static function member() - { - return self::$member; - } - - public static function payment() - { - return self::$payment; - } - - public static function security() - { - return self::$security; - } - - public static function util() - { - return self::$util; - } -} - - -class Base -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function image() - { - return new imageClient($this->kernel); - } - - public function oauth() - { - return new oauthClient($this->kernel); - } - - public function qrcode() - { - return new qrcodeClient($this->kernel); - } - - public function video() - { - return new videoClient($this->kernel); - } -} - -class Marketing -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function openLife() - { - return new openLifeClient($this->kernel); - } - - public function pass() - { - return new passClient($this->kernel); - } - - public function templateMessage() - { - return new templateMessageClient($this->kernel); - } -} - -class Member -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function identification() - { - return new identificationClient($this->kernel); - } -} - -class Payment -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function app() - { - return new appClient($this->kernel); - } - - public function common() - { - return new commonClient($this->kernel); - } - - public function faceToFace() - { - return new faceToFaceClient($this->kernel); - } - - public function huabei() - { - return new huabeiClient($this->kernel); - } - - public function page() - { - return new pageClient($this->kernel); - } - - public function wap() - { - return new wapClient($this->kernel); - } -} - -class Security -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function textRisk() - { - return new textRiskClient($this->kernel); - } -} - -class Util -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function generic() - { - return new genericClient($this->kernel); - } - - public function aes(){ - return new aesClient($this->kernel); - } -} - diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/MultipleFactory.php b/vendor/alipaysdk/easysdk/php/src/Kernel/MultipleFactory.php deleted file mode 100755 index 02a039f4..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/MultipleFactory.php +++ /dev/null @@ -1,249 +0,0 @@ -alipayCertPath)) { - $certEnvironment = new CertEnvironment(); - $certEnvironment->certEnvironment( - $config->merchantCertPath, - $config->alipayCertPath, - $config->alipayRootCertPath - ); - $config->merchantCertSN = $certEnvironment->getMerchantCertSN(); - $config->alipayRootCertSN = $certEnvironment->getRootCertSN(); - $config->alipayPublicKey = $certEnvironment->getCachedAlipayPublicKey(); - } - - $kernel = new EasySDKKernel($config); - self::$base = new Base($kernel); - self::$marketing = new Marketing($kernel); - self::$member = new Member($kernel); - self::$payment = new Payment($kernel); - self::$security = new Security($kernel); - self::$util = new Util($kernel); - } - - public static function setOptions($config) - { - self::$instance = new self($config); - return self::$instance; - } - - private function __clone() - { - } - - public static function base() - { - return self::$base; - } - - public static function marketing() - { - return self::$marketing; - } - - public static function member() - { - return self::$member; - } - - public static function payment() - { - return self::$payment; - } - - public static function security() - { - return self::$security; - } - - public static function util() - { - return self::$util; - } -} - - -class Base -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function image() - { - return new imageClient($this->kernel); - } - - public function oauth() - { - return new oauthClient($this->kernel); - } - - public function qrcode() - { - return new qrcodeClient($this->kernel); - } - - public function video() - { - return new videoClient($this->kernel); - } -} - -class Marketing -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function openLife() - { - return new openLifeClient($this->kernel); - } - - public function pass() - { - return new passClient($this->kernel); - } - - public function templateMessage() - { - return new templateMessageClient($this->kernel); - } -} - -class Member -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function identification() - { - return new identificationClient($this->kernel); - } -} - -class Payment -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function app() - { - return new appClient($this->kernel); - } - - public function common() - { - return new commonClient($this->kernel); - } - - public function faceToFace() - { - return new faceToFaceClient($this->kernel); - } - - public function huabei() - { - return new huabeiClient($this->kernel); - } - - public function page() - { - return new pageClient($this->kernel); - } - - public function wap() - { - return new wapClient($this->kernel); - } -} - -class Security -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function textRisk() - { - return new textRiskClient($this->kernel); - } -} - -class Util -{ - private $kernel; - - public function __construct($kernel) - { - $this->kernel = $kernel; - } - - public function generic() - { - return new genericClient($this->kernel); - } - - public function aes() - { - return new aesClient($this->kernel); - } -} - diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/AES.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Util/AES.php deleted file mode 100644 index 284e7237..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/AES.php +++ /dev/null @@ -1,94 +0,0 @@ -addPKCS7Padding($str); - $iv = str_repeat("\0", 16); - $encrypt_str = openssl_encrypt($str, 'aes-128-cbc', $screct_key, OPENSSL_NO_PADDING, $iv); - return base64_encode($encrypt_str); - } catch (\Exception $e) { - throw new \Exception("AES加密失败,plainText=".$plainText.",keySize=".strlen($key)."。".$e->getMessage()); - } - } - - - /** - * AES解密 - * - * @param $cipherText String 密文 - * @param $key String 对称密钥 - * @return false|string - * @throws \Exception - */ - public function aesDecrypt($cipherText, $key) - { - try{ - if(strlen($key) == 0){ - throw new \Exception("AES加密失败,plainText=".$cipherText.",AES密钥为空。"); - } - //AES, 128 模式加密数据 CBC - $str = base64_decode($cipherText); - $screct_key = base64_decode($key); - $iv = str_repeat("\0", 16); - $decrypt_str = openssl_decrypt($str, 'aes-128-cbc', $screct_key, OPENSSL_NO_PADDING, $iv); - $decrypt_str = $this->stripPKSC7Padding($decrypt_str); - return $decrypt_str; - }catch (\Exception $e){ - throw new \Exception("AES解密失败,cipherText=".$cipherText.",keySize=".strlen($key)."。".$e->getMessage()); - } - } - - /** - * 填充算法 - * @param string $source - * @return string - */ - private function addPKCS7Padding($source) - { - $source = trim($source); - $block = 16; - - $pad = $block - (strlen($source) % $block); - if ($pad <= $block) { - $char = chr($pad); - $source .= str_repeat($char, $pad); - } - return $source; - } - - /** - * 移去填充算法 - * @param string $source - * @return string - */ - private function stripPKSC7Padding($source) - { - $char = substr($source, -1); - $num = ord($char); - if ($num == 62) return $source; - $source = substr($source, 0, -$num); - return $source; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/AlipayEncrypt.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Util/AlipayEncrypt.php deleted file mode 100644 index 71ecff50..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/AlipayEncrypt.php +++ /dev/null @@ -1,12 +0,0 @@ -array2string(array_reverse($ssl['issuer'])) . $ssl['serialNumber']); - return $SN; - } - - /** - * 从证书中提取公钥 - * @param $certPath - * @return mixed - */ - public function getPublicKey($certPath) - { - $cert = file_get_contents($certPath); - $pkey = openssl_pkey_get_public($cert); - $keyData = openssl_pkey_get_details($pkey); - $public_key = str_replace('-----BEGIN PUBLIC KEY-----', '', $keyData['key']); - $public_key = trim(str_replace('-----END PUBLIC KEY-----', '', $public_key)); - return $public_key; - } - - /** - * 提取根证书序列号 - * @param $certPath string 根证书 - * @return string|null - */ - public function getRootCertSN($certPath) - { - $cert = file_get_contents($certPath); - $this->rootCertContent = $cert; - $array = explode("-----END CERTIFICATE-----", $cert); - $SN = null; - for ($i = 0; $i < count($array) - 1; $i++) { - $ssl[$i] = openssl_x509_parse($array[$i] . "-----END CERTIFICATE-----"); - if (strpos($ssl[$i]['serialNumber'], '0x') === 0) { - $ssl[$i]['serialNumber'] = $this->hex2dec($ssl[$i]['serialNumberHex']); - } - if ($ssl[$i]['signatureTypeLN'] == "sha1WithRSAEncryption" || $ssl[$i]['signatureTypeLN'] == "sha256WithRSAEncryption") { - if ($SN == null) { - $SN = md5($this->array2string(array_reverse($ssl[$i]['issuer'])) . $ssl[$i]['serialNumber']); - } else { - - $SN = $SN . "_" . md5($this->array2string(array_reverse($ssl[$i]['issuer'])) . $ssl[$i]['serialNumber']); - } - } - } - return $SN; - } - - - /** - * 0x转高精度数字 - * @param $hex - * @return int|string - */ - function hex2dec($hex) - { - $dec = 0; - $len = strlen($hex); - for ($i = 1; $i <= $len; $i++) { - $dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i)))); - } - return $dec; - } - - - /** - * 验证支付宝公钥证书是否可信 - * @param $alipayCert 支付宝公钥证书 - * @param $rootCert 支付宝根证书 - * @return bool 验证证书是否可信 - */ - function isTrusted($alipayCert, $rootCert) - { - $alipayCerts = $this->readPemCertChain($alipayCert); - $rootCerts = $this->readPemCertChain($rootCert); - if ($this->verifyCertChain($alipayCerts, $rootCerts)) { - return $this->verifySignature($alipayCert, $rootCert); - } else { - return false; - } - - } - - function verifySignature($alipayCert, $rootCert) - { - $alipayCertArray = explode("-----END CERTIFICATE-----", $alipayCert); - $rootCertArray = explode("-----END CERTIFICATE-----", $rootCert); - $length = count($rootCertArray) - 1; - $checkSign = $this->isCertSigner($alipayCertArray[0] . "-----END CERTIFICATE-----", $alipayCertArray[1] . "-----END CERTIFICATE-----"); - if (!$checkSign) { - $checkSign = $this->isCertSigner($alipayCertArray[1] . "-----END CERTIFICATE-----", $alipayCertArray[0] . "-----END CERTIFICATE-----"); - if ($checkSign) { - $issuer = openssl_x509_parse($alipayCertArray[0] . "-----END CERTIFICATE-----")['issuer']; - for ($i = 0; $i < $length; $i++) { - $subject = openssl_x509_parse($rootCertArray[$i] . "-----END CERTIFICATE-----")['subject']; - if ($issuer == $subject) { - $this->isCertSigner($alipayCertArray[0] . "-----END CERTIFICATE-----", $rootCertArray[$i] . $rootCertArray); - return $checkSign; - } - } - } else { - return $checkSign; - } - } else { - $issuer = openssl_x509_parse($alipayCertArray[1] . "-----END CERTIFICATE-----")['issuer']; - for ($i = 0; $i < $length; $i++) { - $subject = openssl_x509_parse($rootCertArray[$i] . "-----END CERTIFICATE-----")['subject']; - if ($issuer == $subject) { - $checkSign = $this->isCertSigner($alipayCertArray[1] . "-----END CERTIFICATE-----", $rootCertArray[$i] . "-----END CERTIFICATE-----"); - return $checkSign; - } - } - return $checkSign; - } - } - - function readPemCertChain($cert) - { - $array = explode("-----END CERTIFICATE-----", $cert); - $certs[] = null; - for ($i = 0; $i < count($array) - 1; $i++) { - $certs[$i] = openssl_x509_parse($array[$i] . "-----END CERTIFICATE-----"); - } - return $certs; - } - - function verifyCert($prev, $rootCerts) - { - $nowTime = time(); - if ($nowTime < $prev['validFrom_time_t']) { - echo "证书未激活"; - return false; - } - if ($nowTime > $prev['validTo_time_t']) { - echo "证书已经过期"; - return false; - } - $subjectMap = null; - for ($i = 0; $i < count($rootCerts); $i++) { - $subjectDN = $this->array2string($rootCerts[$i]['subject']); - $subjectMap[$subjectDN] = $rootCerts[$i]; - } - $issuerDN = $this->array2string(($prev['issuer'])); - if (!array_key_exists($issuerDN, $subjectMap)) { - echo "证书链验证失败"; - return false; - } - return true; - } - - /** - * 验证证书链是否是信任证书库中证书签发的 - * @param $alipayCerts array 目标验证证书列表 - * @param $rootCerts array 可信根证书列表 - * @return bool - */ - function verifyCertChain($alipayCerts, $rootCerts) - { - $sorted = $this->sortByDn($alipayCerts); - if (!$sorted) { - echo "证书链验证失败:不是完整的证书链"; - return false; - } - //先验证第一个证书是不是信任库中证书签发的 - $prev = $alipayCerts[0]; - $firstOK = $this->verifyCert($prev, $rootCerts); - $length = count($alipayCerts); - if (!$firstOK || $length == 1) { - return $firstOK; - } - - $nowTime = time(); - //验证证书链 - for ($i = 1; $i < $length; $i++) { - $cert = $alipayCerts[$i]; - if ($nowTime < $cert['validFrom_time_t']) { - echo "证书未激活"; - return false; - } - if ($nowTime > $cert['validTo_time_t']) { - echo "证书已经过期"; - return false; - } - } - return true; - } - - /** - * 将证书链按照完整的签发顺序进行排序,排序后证书链为:[issuerA, subjectA]-[issuerA, subjectB]-[issuerB, subjectC]-[issuerC, subjectD]... - * @param $certs array 证书链 - * @return bool - */ - function sortByDn(&$certs) - { - //是否包含自签名证书 - $hasSelfSignedCert = false; - $subjectMap = null; - $issuerMap = null; - for ($i = 0; $i < count($certs); $i++) { - if ($this->isSelfSigned($certs[$i])) { - if ($hasSelfSignedCert) { - return false; - } - $hasSelfSignedCert = true; - } - $subjectDN = $this->array2string($certs[$i]['subject']); - $issuerDN = $this->array2string(($certs[$i]['issuer'])); - $subjectMap[$subjectDN] = $certs[$i]; - $issuerMap[$issuerDN] = $certs[$i]; - } - $certChain = null; - $this->addressingUp($subjectMap, $certChain, $certs[0]); - $this->addressingDown($issuerMap, $certChain, $certs[0]); - - //说明证书链不完整 - if (count($certs) != count($certChain)) { - return false; - } - //将证书链复制到原先的数据 - for ($i = 0; $i < count($certs); $i++) { - $certs[$i] = $certChain[count($certs) - $i - 1]; - } - return true; - } - - /** - * 验证证书是否是自签发的 - * @param $cert array 目标证书 - * @return bool - */ - function isSelfSigned($cert) - { - $subjectDN = $this->array2string($cert['subject']); - $issuerDN = $this->array2string($cert['issuer']); - return ($subjectDN == $issuerDN); - } - - - function array2string($array) - { - $string = []; - if ($array && is_array($array)) { - foreach ($array as $key => $value) { - $string[] = $key . '=' . $value; - } - } - return implode(',', $string); - } - - /** - * 向上构造证书链 - * @param $subjectMap array 主题和证书的映射 - * @param $certChain array 证书链 - * @param $current 当前需要插入证书链的证书,include - */ - function addressingUp($subjectMap, &$certChain, $current) - { - $certChain[] = $current; - if ($this->isSelfSigned($current)) { - return; - } - $issuerDN = $this->array2string($current['issuer']); - - if (!array_key_exists($issuerDN, $subjectMap)) { - return; - } - $this->addressingUp($subjectMap, $certChain, $subjectMap[$issuerDN]); - } - - /** - * 向下构造证书链 - * @param $issuerMap 签发者和证书的映射 - * @param $certChain 证书链 - * @param $current 当前需要插入证书链的证书,exclude - * @return mixed - */ - function addressingDown($issuerMap, &$certChain, $current) - { - $subjectDN = $this->array2string($current['subject']); - if (!array_key_exists($subjectDN, $issuerMap)) { - return $certChain; - } - $certChain[] = $issuerMap[$subjectDN]; - $this->addressingDown($issuerMap, $certChain, $issuerMap[$subjectDN]); - } - - - /** - * Extract signature from der encoded cert. - * Expects x509 der encoded certificate consisting of a section container - * containing 2 sections and a bitstream. The bitstream contains the - * original encrypted signature, encrypted by the public key of the issuing - * signer. - * @param string $der - * @return string on success - * @return bool false on failures - */ - function extractSignature($der = false) - { - if (strlen($der) < 5) { - return false; - } - // skip container sequence - $der = substr($der, 4); - // now burn through two sequences and the return the final bitstream - while (strlen($der) > 1) { - $class = ord($der[0]); - $classHex = dechex($class); - switch ($class) { - // BITSTREAM - case 0x03: - $len = ord($der[1]); - $bytes = 0; - if ($len & 0x80) { - $bytes = $len & 0x0f; - $len = 0; - for ($i = 0; $i < $bytes; $i++) { - $len = ($len << 8) | ord($der[$i + 2]); - } - } - return substr($der, 3 + $bytes, $len); - break; - // SEQUENCE - case 0x30: - $len = ord($der[1]); - $bytes = 0; - if ($len & 0x80) { - $bytes = $len & 0x0f; - $len = 0; - for ($i = 0; $i < $bytes; $i++) { - $len = ($len << 8) | ord($der[$i + 2]); - } - } - $contents = substr($der, 2 + $bytes, $len); - $der = substr($der, 2 + $bytes + $len); - break; - default: - return false; - break; - } - } - return false; - } - - /** - * Get signature algorithm oid from der encoded signature data. - * Expects decrypted signature data from a certificate in der format. - * This ASN1 data should contain the following structure: - * SEQUENCE - * SEQUENCE - * OID (signature algorithm) - * NULL - * OCTET STRING (signature hash) - * @return bool false on failures - * @return string oid - */ - function getSignatureAlgorithmOid($der = null) - { - // Validate this is the der we need... - if (!is_string($der) or strlen($der) < 5) { - return false; - } - $bit_seq1 = 0; - $bit_seq2 = 2; - $bit_oid = 4; - if (ord($der[$bit_seq1]) !== 0x30) { - die('Invalid DER passed to getSignatureAlgorithmOid()'); - } - if (ord($der[$bit_seq2]) !== 0x30) { - die('Invalid DER passed to getSignatureAlgorithmOid()'); - } - if (ord($der[$bit_oid]) !== 0x06) { - die('Invalid DER passed to getSignatureAlgorithmOid'); - } - // strip out what we don't need and get the oid - $der = substr($der, $bit_oid); - // Get the oid - $len = ord($der[1]); - $bytes = 0; - if ($len & 0x80) { - $bytes = $len & 0x0f; - $len = 0; - for ($i = 0; $i < $bytes; $i++) { - $len = ($len << 8) | ord($der[$i + 2]); - } - } - $oid_data = substr($der, 2 + $bytes, $len); - // Unpack the OID - $oid = floor(ord($oid_data[0]) / 40); - $oid .= '.' . ord($oid_data[0]) % 40; - $value = 0; - $i = 1; - while ($i < strlen($oid_data)) { - $value = $value << 7; - $value = $value | (ord($oid_data[$i]) & 0x7f); - if (!(ord($oid_data[$i]) & 0x80)) { - $oid .= '.' . $value; - $value = 0; - } - $i++; - } - return $oid; - } - - /** - * Get signature hash from der encoded signature data. - * Expects decrypted signature data from a certificate in der format. - * This ASN1 data should contain the following structure: - * SEQUENCE - * SEQUENCE - * OID (signature algorithm) - * NULL - * OCTET STRING (signature hash) - * @return bool false on failures - * @return string hash - */ - function getSignatureHash($der = null) - { - // Validate this is the der we need... - if (!is_string($der) or strlen($der) < 5) { - return false; - } - if (ord($der[0]) !== 0x30) { - die('Invalid DER passed to getSignatureHash()'); - } - // strip out the container sequence - $der = substr($der, 2); - if (ord($der[0]) !== 0x30) { - die('Invalid DER passed to getSignatureHash()'); - } - // Get the length of the first sequence so we can strip it out. - $len = ord($der[1]); - $bytes = 0; - if ($len & 0x80) { - $bytes = $len & 0x0f; - $len = 0; - for ($i = 0; $i < $bytes; $i++) { - $len = ($len << 8) | ord($der[$i + 2]); - } - } - $der = substr($der, 2 + $bytes + $len); - // Now we should have an octet string - if (ord($der[0]) !== 0x04) { - die('Invalid DER passed to getSignatureHash()'); - } - $len = ord($der[1]); - $bytes = 0; - if ($len & 0x80) { - $bytes = $len & 0x0f; - $len = 0; - for ($i = 0; $i < $bytes; $i++) { - $len = ($len << 8) | ord($der[$i + 2]); - } - } - return bin2hex(substr($der, 2 + $bytes, $len)); - } - - /** - * Determine if one cert was used to sign another - * Note that more than one CA cert can give a positive result, some certs - * re-issue signing certs after having only changed the expiration dates. - * @param string $cert - PEM encoded cert - * @param string $caCert - PEM encoded cert that possibly signed $cert - * @return bool - */ - function isCertSigner($certPem = null, $caCertPem = null) - { - if (!function_exists('openssl_pkey_get_public')) { - die('Need the openssl_pkey_get_public() function.'); - } - if (!function_exists('openssl_public_decrypt')) { - die('Need the openssl_public_decrypt() function.'); - } - if (!function_exists('hash')) { - die('Need the php hash() function.'); - } - if (empty($certPem) or empty($caCertPem)) { - return false; - } - // Convert the cert to der for feeding to extractSignature. - $certDer = pemToDer($certPem); - if (!is_string($certDer)) { - die('invalid certPem'); - } - // Grab the encrypted signature from the der encoded cert. - $encryptedSig = extractSignature($certDer); - if (!is_string($encryptedSig)) { - die('Failed to extract encrypted signature from certPem.'); - } - // Extract the public key from the ca cert, which is what has - // been used to encrypt the signature in the cert. - $pubKey = openssl_pkey_get_public($caCertPem); - if ($pubKey === false) { - die('Failed to extract the public key from the ca cert.'); - } - // Attempt to decrypt the encrypted signature using the CA's public - // key, returning the decrypted signature in $decryptedSig. If - // it can't be decrypted, this ca was not used to sign it for sure... - $rc = openssl_public_decrypt($encryptedSig, $decryptedSig, $pubKey); - if ($rc === false) { - return false; - } - // We now have the decrypted signature, which is der encoded - // asn1 data containing the signature algorithm and signature hash. - // Now we need what was originally hashed by the issuer, which is - // the original DER encoded certificate without the issuer and - // signature information. - $origCert = stripSignerAsn($certDer); - if ($origCert === false) { - die('Failed to extract unsigned cert.'); - } - // Get the oid of the signature hash algorithm, which is required - // to generate our own hash of the original cert. This hash is - // what will be compared to the issuers hash. - $oid = getSignatureAlgorithmOid($decryptedSig); - if ($oid === false) { - die('Failed to determine the signature algorithm.'); - } - switch ($oid) { - case '1.2.840.113549.2.2': - $algo = 'md2'; - break; - case '1.2.840.113549.2.4': - $algo = 'md4'; - break; - case '1.2.840.113549.2.5': - $algo = 'md5'; - break; - case '1.3.14.3.2.18': - $algo = 'sha'; - break; - case '1.3.14.3.2.26': - $algo = 'sha1'; - break; - case '2.16.840.1.101.3.4.2.1': - $algo = 'sha256'; - break; - case '2.16.840.1.101.3.4.2.2': - $algo = 'sha384'; - break; - case '2.16.840.1.101.3.4.2.3': - $algo = 'sha512'; - break; - default: - die('Unknown signature hash algorithm oid: ' . $oid); - break; - } - // Get the issuer generated hash from the decrypted signature. - $decryptedHash = getSignatureHash($decryptedSig); - // Ok, hash the original unsigned cert with the same algorithm - // and if it matches $decryptedHash we have a winner. - $certHash = hash($algo, $origCert); - return ($decryptedHash === $certHash); - } - - /** - * Convert pem encoded certificate to DER encoding - * @return string $derEncoded on success - * @return bool false on failures - */ - function pemToDer($pem = null) - { - if (!is_string($pem)) { - return false; - } - $cert_split = preg_split('/(-----((BEGIN)|(END)) CERTIFICATE-----)/', $pem); - if (!isset($cert_split[1])) { - return false; - } - return base64_decode($cert_split[1]); - } - - /** - * Obtain der cert with issuer and signature sections stripped. - * @param string $der - der encoded certificate - * @return string $der on success - * @return bool false on failures. - */ - function stripSignerAsn($der = null) - { - if (!is_string($der) or strlen($der) < 8) { - return false; - } - $bit = 4; - $len = ord($der[($bit + 1)]); - $bytes = 0; - if ($len & 0x80) { - $bytes = $len & 0x0f; - $len = 0; - for ($i = 0; $i < $bytes; $i++) { - $len = ($len << 8) | ord($der[$bit + $i + 2]); - } - } - return substr($der, 4, $len + 4); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/JsonUtil.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Util/JsonUtil.php deleted file mode 100644 index 65f0ab30..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/JsonUtil.php +++ /dev/null @@ -1,56 +0,0 @@ - $v) { - if ($v instanceof Model) { - $result[$k] = $this->getTeaModelMap($v); - } else { - $result[$k] = $v; - } - } - return $result; - } - - private function getTeaModelMap(Model $teaModel) - { - $result = []; - foreach ($teaModel as $k => $v) { - if ($v instanceof Model) { - $k = $this->toUnderScore($k); - $result[$k] = $this->getTeaModelMap($v); - } else { - if (empty($result)) { - $k = $this->toUnderScore($k); - $result[$k] = $v; - } else { - $k = $this->toUnderScore($k); - $result[$k] = $v; - } - } - } - return $result; - } - - /** - * 驼峰命名转下划线命名 - * @param $str - * @return string - */ - private function toUnderScore($str) - { - $dstr = preg_replace_callback('/([A-Z]+)/', function ($matchs) { - return '_' . strtolower($matchs[0]); - }, $str); - return trim(preg_replace('/_{2,}/', '_', $dstr), '_'); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/PageUtil.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Util/PageUtil.php deleted file mode 100644 index 1b3f7351..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/PageUtil.php +++ /dev/null @@ -1,60 +0,0 @@ -"; - while (list ($key, $val) = $this->fun_adm_each($parameters)) { - if (false === $this->checkEmpty($val)) { - $val = str_replace("'", "'", $val); - //$val = str_replace("\"",""",$val); - $sHtml .= ""; - } - } - - //submit按钮控件请不要含有name属性 - $sHtml = $sHtml . ""; - - $sHtml = $sHtml . ""; - - return $sHtml; - } - - protected function fun_adm_each(&$array) - { - $res = array(); - $key = key($array); - if ($key !== null) { - next($array); - $res[1] = $res['value'] = $array[$key]; - $res[0] = $res['key'] = $key; - } else { - $res = false; - } - return $res; - } - - /** - * 校验$value是否非空 - * if not set ,return true; - * if is null , return true; - **/ - protected function checkEmpty($value) - { - if (!isset($value)) - return true; - if ($value === null) - return true; - if (trim($value) === "") - return true; - - return false; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/ResponseChecker.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Util/ResponseChecker.php deleted file mode 100644 index dc374cda..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/ResponseChecker.php +++ /dev/null @@ -1,19 +0,0 @@ -code) && $response->code == 10000) { - return true; - } - if (empty($response->code) && empty($response->subCode)) { - return true; - } - return false; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/SignContentExtractor.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Util/SignContentExtractor.php deleted file mode 100644 index 83eff2c5..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/SignContentExtractor.php +++ /dev/null @@ -1,58 +0,0 @@ -RESPONSE_SUFFIX; - $rootIndex = strpos($body, $rootNodeName); - if ($rootIndex !== strrpos($body, $rootNodeName)) { - throw new \Exception('检测到响应报文中有重复的' . $rootNodeName . ',验签失败。'); - } - $errorIndex = strpos($body, $this->ERROR_RESPONSE); - if ($rootIndex > 0) { - return $this->parserJSONSource($body, $rootNodeName, $rootIndex); - } else if ($errorIndex > 0) { - return $this->parserJSONSource($body, $this->ERROR_RESPONSE, $errorIndex); - } else { - return null; - } - } - - /** - * - * @param $responseContent - * @param $nodeName - * @param $nodeIndex - * @return false|string|null - */ - function parserJSONSource($responseContent, $nodeName, $nodeIndex) - { - $signDataStartIndex = $nodeIndex + strlen($nodeName) + 2; - if (strrpos($responseContent, AlipayConstants::ALIPAY_CERT_SN_FIELD)) { - $signIndex = strrpos($responseContent, "\"" . AlipayConstants::ALIPAY_CERT_SN_FIELD . "\""); - } else { - $signIndex = strrpos($responseContent, "\"" . AlipayConstants::SIGN_FIELD . "\""); - } - // 签名前-逗号 - $signDataEndIndex = $signIndex - 1; - $indexLen = $signDataEndIndex - $signDataStartIndex; - if ($indexLen < 0) { - return null; - } - return substr($responseContent, $signDataStartIndex, $indexLen); - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/Signer.php b/vendor/alipaysdk/easysdk/php/src/Kernel/Util/Signer.php deleted file mode 100644 index fb5e3141..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Kernel/Util/Signer.php +++ /dev/null @@ -1,72 +0,0 @@ -getSignContent($parameters); - return $this->verify($content, $sign, $publicKey); - } - - public function getSignContent($params) - { - ksort($params); - unset($params['sign']); - unset($params['sign_type']); - $stringToBeSigned = ""; - $i = 0; - foreach ($params as $k => $v) { - if ("@" != substr($v, 0, 1)) { - if ($i == 0) { - $stringToBeSigned .= "$k" . "=" . "$v"; - } else { - $stringToBeSigned .= "&" . "$k" . "=" . "$v"; - } - $i++; - } - } - unset ($k, $v); - return $stringToBeSigned; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Client.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Client.php deleted file mode 100644 index c23bdb9d..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Client.php +++ /dev/null @@ -1,866 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $title - * @param string $cover - * @param string $content - * @param string $contentComment - * @param string $ctype - * @param string $benefit - * @param string $extTags - * @param string $loginIds - * @return AlipayOpenPublicMessageContentCreateResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function createImageTextContent($title, $cover, $content, $contentComment, $ctype, $benefit, $extTags, $loginIds){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.message.content.create", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "title" => $title, - "cover" => $cover, - "content" => $content, - "could_comment" => $contentComment, - "ctype" => $ctype, - "benefit" => $benefit, - "ext_tags" => $extTags, - "login_ids" => $loginIds - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.message.content.create"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicMessageContentCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicMessageContentCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $contentId - * @param string $title - * @param string $cover - * @param string $content - * @param string $couldComment - * @param string $ctype - * @param string $benefit - * @param string $extTags - * @param string $loginIds - * @return AlipayOpenPublicMessageContentModifyResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function modifyImageTextContent($contentId, $title, $cover, $content, $couldComment, $ctype, $benefit, $extTags, $loginIds){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.message.content.modify", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "content_id" => $contentId, - "title" => $title, - "cover" => $cover, - "content" => $content, - "could_comment" => $couldComment, - "ctype" => $ctype, - "benefit" => $benefit, - "ext_tags" => $extTags, - "login_ids" => $loginIds - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.message.content.modify"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicMessageContentModifyResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicMessageContentModifyResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $text - * @return AlipayOpenPublicMessageTotalSendResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function sendText($text){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.message.total.send", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $textObj = new Text([ - "title" => "", - "content" => $text - ]); - $bizParams = [ - "msg_type" => "text", - "text" => $textObj - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.message.total.send"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicMessageTotalSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicMessageTotalSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param Article[] $articles - * @return AlipayOpenPublicMessageTotalSendResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function sendImageText($articles){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.message.total.send", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "msg_type" => "image-text", - "articles" => $articles - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.message.total.send"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicMessageTotalSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicMessageTotalSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $toUserId - * @param Template $template - * @return AlipayOpenPublicMessageSingleSendResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function sendSingleMessage($toUserId, $template){ - $template->validate(); - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.message.single.send", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "to_user_id" => $toUserId, - "template" => $template - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.message.single.send"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicMessageSingleSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicMessageSingleSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $messageId - * @return AlipayOpenPublicLifeMsgRecallResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function recallMessage($messageId){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.life.msg.recall", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "message_id" => $messageId - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.life.msg.recall"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicLifeMsgRecallResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicLifeMsgRecallResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $primaryIndustryCode - * @param string $primaryIndustryName - * @param string $secondaryIndustryCode - * @param string $secondaryIndustryName - * @return AlipayOpenPublicTemplateMessageIndustryModifyResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function setIndustry($primaryIndustryCode, $primaryIndustryName, $secondaryIndustryCode, $secondaryIndustryName){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.template.message.industry.modify", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "primary_industry_code" => $primaryIndustryCode, - "primary_industry_name" => $primaryIndustryName, - "secondary_industry_code" => $secondaryIndustryCode, - "secondary_industry_name" => $secondaryIndustryName - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.template.message.industry.modify"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicTemplateMessageIndustryModifyResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicTemplateMessageIndustryModifyResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @return AlipayOpenPublicSettingCategoryQueryResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function getIndustry(){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.public.setting.category.query", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = []; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.public.setting.category.query"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenPublicSettingCategoryQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenPublicSettingCategoryQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.php deleted file mode 100644 index 986ca038..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicLifeMsgRecallResponse.php +++ /dev/null @@ -1,91 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenPublicLifeMsgRecallResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.php deleted file mode 100644 index b14b2191..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentCreateResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'contentId' => 'content_id', - 'contentUrl' => 'content_url', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('contentId', $this->contentId, true); - Model::validateRequired('contentUrl', $this->contentUrl, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->contentId) { - $res['content_id'] = $this->contentId; - } - if (null !== $this->contentUrl) { - $res['content_url'] = $this->contentUrl; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenPublicMessageContentCreateResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['content_id'])){ - $model->contentId = $map['content_id']; - } - if(isset($map['content_url'])){ - $model->contentUrl = $map['content_url']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $contentId; - - /** - * @var string - */ - public $contentUrl; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.php deleted file mode 100644 index 7d365ed3..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageContentModifyResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'contentId' => 'content_id', - 'contentUrl' => 'content_url', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('contentId', $this->contentId, true); - Model::validateRequired('contentUrl', $this->contentUrl, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->contentId) { - $res['content_id'] = $this->contentId; - } - if (null !== $this->contentUrl) { - $res['content_url'] = $this->contentUrl; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenPublicMessageContentModifyResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['content_id'])){ - $model->contentId = $map['content_id']; - } - if(isset($map['content_url'])){ - $model->contentUrl = $map['content_url']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $contentId; - - /** - * @var string - */ - public $contentUrl; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.php deleted file mode 100644 index e4f91696..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageSingleSendResponse.php +++ /dev/null @@ -1,91 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenPublicMessageSingleSendResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.php deleted file mode 100644 index b9c29017..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicMessageTotalSendResponse.php +++ /dev/null @@ -1,104 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'messageId' => 'message_id', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('messageId', $this->messageId, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->messageId) { - $res['message_id'] = $this->messageId; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenPublicMessageTotalSendResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['message_id'])){ - $model->messageId = $map['message_id']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $messageId; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.php deleted file mode 100644 index b78fdbef..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicSettingCategoryQueryResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'primaryCategory' => 'primary_category', - 'secondaryCategory' => 'secondary_category', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('primaryCategory', $this->primaryCategory, true); - Model::validateRequired('secondaryCategory', $this->secondaryCategory, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->primaryCategory) { - $res['primary_category'] = $this->primaryCategory; - } - if (null !== $this->secondaryCategory) { - $res['secondary_category'] = $this->secondaryCategory; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenPublicSettingCategoryQueryResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['primary_category'])){ - $model->primaryCategory = $map['primary_category']; - } - if(isset($map['secondary_category'])){ - $model->secondaryCategory = $map['secondary_category']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $primaryCategory; - - /** - * @var string - */ - public $secondaryCategory; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.php deleted file mode 100644 index 8f40765e..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/AlipayOpenPublicTemplateMessageIndustryModifyResponse.php +++ /dev/null @@ -1,91 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenPublicTemplateMessageIndustryModifyResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Article.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Article.php deleted file mode 100644 index cdabefa1..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Article.php +++ /dev/null @@ -1,87 +0,0 @@ - 'title', - 'desc' => 'desc', - 'imageUrl' => 'image_url', - 'url' => 'url', - 'actionName' => 'action_name', - ]; - public function validate() { - Model::validateRequired('desc', $this->desc, true); - Model::validateRequired('url', $this->url, true); - } - public function toMap() { - $res = []; - if (null !== $this->title) { - $res['title'] = $this->title; - } - if (null !== $this->desc) { - $res['desc'] = $this->desc; - } - if (null !== $this->imageUrl) { - $res['image_url'] = $this->imageUrl; - } - if (null !== $this->url) { - $res['url'] = $this->url; - } - if (null !== $this->actionName) { - $res['action_name'] = $this->actionName; - } - return $res; - } - /** - * @param array $map - * @return Article - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['title'])){ - $model->title = $map['title']; - } - if(isset($map['desc'])){ - $model->desc = $map['desc']; - } - if(isset($map['image_url'])){ - $model->imageUrl = $map['image_url']; - } - if(isset($map['url'])){ - $model->url = $map['url']; - } - if(isset($map['action_name'])){ - $model->actionName = $map['action_name']; - } - return $model; - } - /** - * @var string - */ - public $title; - - /** - * @var string - */ - public $desc; - - /** - * @var string - */ - public $imageUrl; - - /** - * @var string - */ - public $url; - - /** - * @var string - */ - public $actionName; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Context.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Context.php deleted file mode 100644 index 30dcfaea..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Context.php +++ /dev/null @@ -1,114 +0,0 @@ - 'head_color', - 'url' => 'url', - 'actionName' => 'action_name', - 'keyword1' => 'keyword1', - 'keyword2' => 'keyword2', - 'first' => 'first', - 'remark' => 'remark', - ]; - public function validate() { - Model::validateRequired('headColor', $this->headColor, true); - Model::validateRequired('url', $this->url, true); - Model::validateRequired('actionName', $this->actionName, true); - } - public function toMap() { - $res = []; - if (null !== $this->headColor) { - $res['head_color'] = $this->headColor; - } - if (null !== $this->url) { - $res['url'] = $this->url; - } - if (null !== $this->actionName) { - $res['action_name'] = $this->actionName; - } - if (null !== $this->keyword1) { - $res['keyword1'] = null !== $this->keyword1 ? $this->keyword1->toMap() : null; - } - if (null !== $this->keyword2) { - $res['keyword2'] = null !== $this->keyword2 ? $this->keyword2->toMap() : null; - } - if (null !== $this->first) { - $res['first'] = null !== $this->first ? $this->first->toMap() : null; - } - if (null !== $this->remark) { - $res['remark'] = null !== $this->remark ? $this->remark->toMap() : null; - } - return $res; - } - /** - * @param array $map - * @return Context - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['head_color'])){ - $model->headColor = $map['head_color']; - } - if(isset($map['url'])){ - $model->url = $map['url']; - } - if(isset($map['action_name'])){ - $model->actionName = $map['action_name']; - } - if(isset($map['keyword1'])){ - $model->keyword1 = Keyword::fromMap($map['keyword1']); - } - if(isset($map['keyword2'])){ - $model->keyword2 = Keyword::fromMap($map['keyword2']); - } - if(isset($map['first'])){ - $model->first = Keyword::fromMap($map['first']); - } - if(isset($map['remark'])){ - $model->remark = Keyword::fromMap($map['remark']); - } - return $model; - } - /** - * @var string - */ - public $headColor; - - /** - * @var string - */ - public $url; - - /** - * @var string - */ - public $actionName; - - /** - * @var Keyword - */ - public $keyword1; - - /** - * @var Keyword - */ - public $keyword2; - - /** - * @var Keyword - */ - public $first; - - /** - * @var Keyword - */ - public $remark; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Keyword.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Keyword.php deleted file mode 100644 index 438b28e9..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Keyword.php +++ /dev/null @@ -1,51 +0,0 @@ - 'color', - 'value' => 'value', - ]; - public function validate() { - Model::validateRequired('color', $this->color, true); - Model::validateRequired('value', $this->value, true); - } - public function toMap() { - $res = []; - if (null !== $this->color) { - $res['color'] = $this->color; - } - if (null !== $this->value) { - $res['value'] = $this->value; - } - return $res; - } - /** - * @param array $map - * @return Keyword - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['color'])){ - $model->color = $map['color']; - } - if(isset($map['value'])){ - $model->value = $map['value']; - } - return $model; - } - /** - * @var string - */ - public $color; - - /** - * @var string - */ - public $value; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Template.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Template.php deleted file mode 100644 index bec9c7bb..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Template.php +++ /dev/null @@ -1,53 +0,0 @@ - 'template_id', - 'context' => 'context', - ]; - public function validate() { - Model::validateRequired('templateId', $this->templateId, true); - Model::validateRequired('context', $this->context, true); - } - public function toMap() { - $res = []; - if (null !== $this->templateId) { - $res['template_id'] = $this->templateId; - } - if (null !== $this->context) { - $res['context'] = null !== $this->context ? $this->context->toMap() : null; - } - return $res; - } - /** - * @param array $map - * @return Template - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['template_id'])){ - $model->templateId = $map['template_id']; - } - if(isset($map['context'])){ - $model->context = Context::fromMap($map['context']); - } - return $model; - } - /** - * @var string - */ - public $templateId; - - /** - * @var Context - */ - public $context; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Text.php b/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Text.php deleted file mode 100644 index bbd9582f..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/OpenLife/Models/Text.php +++ /dev/null @@ -1,51 +0,0 @@ - 'title', - 'content' => 'content', - ]; - public function validate() { - Model::validateRequired('title', $this->title, true); - Model::validateRequired('content', $this->content, true); - } - public function toMap() { - $res = []; - if (null !== $this->title) { - $res['title'] = $this->title; - } - if (null !== $this->content) { - $res['content'] = $this->content; - } - return $res; - } - /** - * @param array $map - * @return Text - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['title'])){ - $model->title = $map['title']; - } - if(isset($map['content'])){ - $model->content = $map['content']; - } - return $model; - } - /** - * @var string - */ - public $title; - - /** - * @var string - */ - public $content; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Client.php b/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Client.php deleted file mode 100644 index 94afce6c..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Client.php +++ /dev/null @@ -1,482 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $uniqueId - * @param string $tplContent - * @return AlipayPassTemplateAddResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function createTemplate($uniqueId, $tplContent){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.pass.template.add", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "unique_id" => $uniqueId, - "tpl_content" => $tplContent - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.pass.template.add"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayPassTemplateAddResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayPassTemplateAddResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $tplId - * @param string $tplContent - * @return AlipayPassTemplateUpdateResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function updateTemplate($tplId, $tplContent){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.pass.template.update", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "tpl_id" => $tplId, - "tpl_content" => $tplContent - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.pass.template.update"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayPassTemplateUpdateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayPassTemplateUpdateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $tplId - * @param string $tplParams - * @param string $recognitionType - * @param string $recognitionInfo - * @return AlipayPassInstanceAddResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function addInstance($tplId, $tplParams, $recognitionType, $recognitionInfo){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.pass.instance.add", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "tpl_id" => $tplId, - "tpl_params" => $tplParams, - "recognition_type" => $recognitionType, - "recognition_info" => $recognitionInfo - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.pass.instance.add"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayPassInstanceAddResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayPassInstanceAddResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $serialNumber - * @param string $channelId - * @param string $tplParams - * @param string $status - * @param string $verifyCode - * @param string $verifyType - * @return AlipayPassInstanceUpdateResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function updateInstance($serialNumber, $channelId, $tplParams, $status, $verifyCode, $verifyType){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.pass.instance.update", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "serial_number" => $serialNumber, - "channel_id" => $channelId, - "tpl_params" => $tplParams, - "status" => $status, - "verify_code" => $verifyCode, - "verify_type" => $verifyType - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.pass.instance.update"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayPassInstanceUpdateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayPassInstanceUpdateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceAddResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceAddResponse.php deleted file mode 100644 index 02dc9a3d..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceAddResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'success' => 'success', - 'result' => 'result', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('success', $this->success, true); - Model::validateRequired('result', $this->result, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->success) { - $res['success'] = $this->success; - } - if (null !== $this->result) { - $res['result'] = $this->result; - } - return $res; - } - /** - * @param array $map - * @return AlipayPassInstanceAddResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['success'])){ - $model->success = $map['success']; - } - if(isset($map['result'])){ - $model->result = $map['result']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var bool - */ - public $success; - - /** - * @var string - */ - public $result; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.php deleted file mode 100644 index d2f71891..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassInstanceUpdateResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'success' => 'success', - 'result' => 'result', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('success', $this->success, true); - Model::validateRequired('result', $this->result, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->success) { - $res['success'] = $this->success; - } - if (null !== $this->result) { - $res['result'] = $this->result; - } - return $res; - } - /** - * @param array $map - * @return AlipayPassInstanceUpdateResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['success'])){ - $model->success = $map['success']; - } - if(isset($map['result'])){ - $model->result = $map['result']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var bool - */ - public $success; - - /** - * @var string - */ - public $result; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateAddResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateAddResponse.php deleted file mode 100644 index 825a0f6d..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateAddResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'success' => 'success', - 'result' => 'result', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('success', $this->success, true); - Model::validateRequired('result', $this->result, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->success) { - $res['success'] = $this->success; - } - if (null !== $this->result) { - $res['result'] = $this->result; - } - return $res; - } - /** - * @param array $map - * @return AlipayPassTemplateAddResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['success'])){ - $model->success = $map['success']; - } - if(isset($map['result'])){ - $model->result = $map['result']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var bool - */ - public $success; - - /** - * @var string - */ - public $result; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.php deleted file mode 100644 index 6d70475c..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/Pass/Models/AlipayPassTemplateUpdateResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'success' => 'success', - 'result' => 'result', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('success', $this->success, true); - Model::validateRequired('result', $this->result, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->success) { - $res['success'] = $this->success; - } - if (null !== $this->result) { - $res['result'] = $this->result; - } - return $res; - } - /** - * @param array $map - * @return AlipayPassTemplateUpdateResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['success'])){ - $model->success = $map['success']; - } - if(isset($map['result'])){ - $model->result = $map['result']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var bool - */ - public $success; - - /** - * @var string - */ - public $result; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Client.php b/vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Client.php deleted file mode 100644 index 0863bb17..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Client.php +++ /dev/null @@ -1,200 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $toUserId - * @param string $formId - * @param string $userTemplateId - * @param string $page - * @param string $data - * @return AlipayOpenAppMiniTemplatemessageSendResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function send($toUserId, $formId, $userTemplateId, $page, $data){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.open.app.mini.templatemessage.send", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "to_user_id" => $toUserId, - "form_id" => $formId, - "user_template_id" => $userTemplateId, - "page" => $page, - "data" => $data - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.open.app.mini.templatemessage.send"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenAppMiniTemplatemessageSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenAppMiniTemplatemessageSendResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.php b/vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.php deleted file mode 100644 index 6af50e7a..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Marketing/TemplateMessage/Models/AlipayOpenAppMiniTemplatemessageSendResponse.php +++ /dev/null @@ -1,91 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenAppMiniTemplatemessageSendResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Client.php b/vendor/alipaysdk/easysdk/php/src/Member/Identification/Client.php deleted file mode 100644 index e0af64cb..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Client.php +++ /dev/null @@ -1,321 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $outerOrderNo - * @param string $bizCode - * @param IdentityParam $identityParam - * @param MerchantConfig $merchantConfig - * @return AlipayUserCertifyOpenInitializeResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function init($outerOrderNo, $bizCode, $identityParam, $merchantConfig){ - $identityParam->validate(); - $merchantConfig->validate(); - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.user.certify.open.initialize", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "outer_order_no" => $outerOrderNo, - "biz_code" => $bizCode, - "identity_param" => $identityParam, - "merchant_config" => $merchantConfig - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.user.certify.open.initialize"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayUserCertifyOpenInitializeResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayUserCertifyOpenInitializeResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $certifyId - * @return AlipayUserCertifyOpenQueryResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function query($certifyId){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.user.certify.open.query", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "certify_id" => $certifyId - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.user.certify.open.query"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayUserCertifyOpenQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayUserCertifyOpenQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $certifyId - * @return AlipayUserCertifyOpenCertifyResponse - */ - public function certify($certifyId){ - $systemParams = [ - "method" => "alipay.user.certify.open.certify", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "certify_id" => $certifyId - ]; - $textParams = []; - $sign = $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")); - $response = [ - "body" => $this->_kernel->generatePage("GET", $systemParams, $bizParams, $textParams, $sign) - ]; - return AlipayUserCertifyOpenCertifyResponse::fromMap($response); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.php b/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.php deleted file mode 100644 index 19d786da..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenCertifyResponse.php +++ /dev/null @@ -1,39 +0,0 @@ - 'body', - ]; - public function validate() { - Model::validateRequired('body', $this->body, true); - } - public function toMap() { - $res = []; - if (null !== $this->body) { - $res['body'] = $this->body; - } - return $res; - } - /** - * @param array $map - * @return AlipayUserCertifyOpenCertifyResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['body'])){ - $model->body = $map['body']; - } - return $model; - } - /** - * @description 认证服务请求地址 - * @var string - */ - public $body; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.php b/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.php deleted file mode 100644 index fd3e3d5f..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenInitializeResponse.php +++ /dev/null @@ -1,104 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'certifyId' => 'certify_id', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('certifyId', $this->certifyId, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->certifyId) { - $res['certify_id'] = $this->certifyId; - } - return $res; - } - /** - * @param array $map - * @return AlipayUserCertifyOpenInitializeResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['certify_id'])){ - $model->certifyId = $map['certify_id']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $certifyId; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.php b/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.php deleted file mode 100644 index 612ae040..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/AlipayUserCertifyOpenQueryResponse.php +++ /dev/null @@ -1,130 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'passed' => 'passed', - 'identityInfo' => 'identity_info', - 'materialInfo' => 'material_info', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('passed', $this->passed, true); - Model::validateRequired('identityInfo', $this->identityInfo, true); - Model::validateRequired('materialInfo', $this->materialInfo, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->passed) { - $res['passed'] = $this->passed; - } - if (null !== $this->identityInfo) { - $res['identity_info'] = $this->identityInfo; - } - if (null !== $this->materialInfo) { - $res['material_info'] = $this->materialInfo; - } - return $res; - } - /** - * @param array $map - * @return AlipayUserCertifyOpenQueryResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['passed'])){ - $model->passed = $map['passed']; - } - if(isset($map['identity_info'])){ - $model->identityInfo = $map['identity_info']; - } - if(isset($map['material_info'])){ - $model->materialInfo = $map['material_info']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $passed; - - /** - * @var string - */ - public $identityInfo; - - /** - * @var string - */ - public $materialInfo; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/IdentityParam.php b/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/IdentityParam.php deleted file mode 100644 index f4183b65..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/IdentityParam.php +++ /dev/null @@ -1,77 +0,0 @@ - 'identity_type', - 'certType' => 'cert_type', - 'certName' => 'cert_name', - 'certNo' => 'cert_no', - ]; - public function validate() { - Model::validateRequired('identityType', $this->identityType, true); - Model::validateRequired('certType', $this->certType, true); - Model::validateRequired('certName', $this->certName, true); - Model::validateRequired('certNo', $this->certNo, true); - } - public function toMap() { - $res = []; - if (null !== $this->identityType) { - $res['identity_type'] = $this->identityType; - } - if (null !== $this->certType) { - $res['cert_type'] = $this->certType; - } - if (null !== $this->certName) { - $res['cert_name'] = $this->certName; - } - if (null !== $this->certNo) { - $res['cert_no'] = $this->certNo; - } - return $res; - } - /** - * @param array $map - * @return IdentityParam - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['identity_type'])){ - $model->identityType = $map['identity_type']; - } - if(isset($map['cert_type'])){ - $model->certType = $map['cert_type']; - } - if(isset($map['cert_name'])){ - $model->certName = $map['cert_name']; - } - if(isset($map['cert_no'])){ - $model->certNo = $map['cert_no']; - } - return $model; - } - /** - * @var string - */ - public $identityType; - - /** - * @var string - */ - public $certType; - - /** - * @var string - */ - public $certName; - - /** - * @var string - */ - public $certNo; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/MerchantConfig.php b/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/MerchantConfig.php deleted file mode 100644 index c2aab279..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Member/Identification/Models/MerchantConfig.php +++ /dev/null @@ -1,38 +0,0 @@ - 'return_url', - ]; - public function validate() { - Model::validateRequired('returnUrl', $this->returnUrl, true); - } - public function toMap() { - $res = []; - if (null !== $this->returnUrl) { - $res['return_url'] = $this->returnUrl; - } - return $res; - } - /** - * @param array $map - * @return MerchantConfig - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['return_url'])){ - $model->returnUrl = $map['return_url']; - } - return $model; - } - /** - * @var string - */ - public $returnUrl; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/App/Client.php b/vendor/alipaysdk/easysdk/php/src/Payment/App/Client.php deleted file mode 100644 index bbd1ff65..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/App/Client.php +++ /dev/null @@ -1,129 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $subject - * @param string $outTradeNo - * @param string $totalAmount - * @return AlipayTradeAppPayResponse - */ - public function pay($subject, $outTradeNo, $totalAmount){ - $systemParams = [ - "method" => "alipay.trade.app.pay", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "subject" => $subject, - "out_trade_no" => $outTradeNo, - "total_amount" => $totalAmount - ]; - $textParams = []; - $sign = $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")); - $response = [ - "body" => $this->_kernel->generateOrderString($systemParams, $bizParams, $textParams, $sign) - ]; - return AlipayTradeAppPayResponse::fromMap($response); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/App/Models/AlipayTradeAppPayResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/App/Models/AlipayTradeAppPayResponse.php deleted file mode 100644 index 496f2ece..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/App/Models/AlipayTradeAppPayResponse.php +++ /dev/null @@ -1,39 +0,0 @@ - 'body', - ]; - public function validate() { - Model::validateRequired('body', $this->body, true); - } - public function toMap() { - $res = []; - if (null !== $this->body) { - $res['body'] = $this->body; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeAppPayResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['body'])){ - $model->body = $map['body']; - } - return $model; - } - /** - * @description 订单信息,字符串形式 - * @var string - */ - public $body; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Client.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Client.php deleted file mode 100644 index 82afe069..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Client.php +++ /dev/null @@ -1,757 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $subject - * @param string $outTradeNo - * @param string $totalAmount - * @param string $buyerId - * @return AlipayTradeCreateResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function create($subject, $outTradeNo, $totalAmount, $buyerId){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.create", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "subject" => $subject, - "out_trade_no" => $outTradeNo, - "total_amount" => $totalAmount, - "buyer_id" => $buyerId - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.create"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradeCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradeCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $outTradeNo - * @return AlipayTradeQueryResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function query($outTradeNo){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.query", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "out_trade_no" => $outTradeNo - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.query"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradeQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradeQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $outTradeNo - * @param string $refundAmount - * @return AlipayTradeRefundResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function refund($outTradeNo, $refundAmount){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.refund", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "out_trade_no" => $outTradeNo, - "refund_amount" => $refundAmount - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.refund"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradeRefundResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradeRefundResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $outTradeNo - * @return AlipayTradeCloseResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function close($outTradeNo){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.close", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "out_trade_no" => $outTradeNo - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.close"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradeCloseResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradeCloseResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $outTradeNo - * @return AlipayTradeCancelResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function cancel($outTradeNo){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.cancel", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "out_trade_no" => $outTradeNo - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.cancel"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradeCancelResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradeCancelResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $outTradeNo - * @param string $outRequestNo - * @return AlipayTradeFastpayRefundQueryResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function queryRefund($outTradeNo, $outRequestNo){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.fastpay.refund.query", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "out_trade_no" => $outTradeNo, - "out_request_no" => $outRequestNo - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.fastpay.refund.query"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradeFastpayRefundQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradeFastpayRefundQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $billType - * @param string $billDate - * @return AlipayDataDataserviceBillDownloadurlQueryResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function downloadBill($billType, $billDate){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.data.dataservice.bill.downloadurl.query", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "bill_type" => $billType, - "bill_date" => $billDate - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.data.dataservice.bill.downloadurl.query"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayDataDataserviceBillDownloadurlQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayDataDataserviceBillDownloadurlQueryResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string[] $parameters - * @return bool - */ - public function verifyNotify($parameters){ - if ($this->_kernel->isCertMode()) { - return $this->_kernel->verifyParams($parameters, $this->_kernel->extractAlipayPublicKey("")); - } - else { - return $this->_kernel->verifyParams($parameters, $this->_kernel->getConfig("alipayPublicKey")); - } - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.php deleted file mode 100644 index cff56a2d..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayDataDataserviceBillDownloadurlQueryResponse.php +++ /dev/null @@ -1,104 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'billDownloadUrl' => 'bill_download_url', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('billDownloadUrl', $this->billDownloadUrl, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->billDownloadUrl) { - $res['bill_download_url'] = $this->billDownloadUrl; - } - return $res; - } - /** - * @param array $map - * @return AlipayDataDataserviceBillDownloadurlQueryResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['bill_download_url'])){ - $model->billDownloadUrl = $map['bill_download_url']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $billDownloadUrl; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCancelResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCancelResponse.php deleted file mode 100644 index 9ff93d4d..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCancelResponse.php +++ /dev/null @@ -1,169 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'tradeNo' => 'trade_no', - 'outTradeNo' => 'out_trade_no', - 'retryFlag' => 'retry_flag', - 'action' => 'action', - 'gmtRefundPay' => 'gmt_refund_pay', - 'refundSettlementId' => 'refund_settlement_id', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('retryFlag', $this->retryFlag, true); - Model::validateRequired('action', $this->action, true); - Model::validateRequired('gmtRefundPay', $this->gmtRefundPay, true); - Model::validateRequired('refundSettlementId', $this->refundSettlementId, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->retryFlag) { - $res['retry_flag'] = $this->retryFlag; - } - if (null !== $this->action) { - $res['action'] = $this->action; - } - if (null !== $this->gmtRefundPay) { - $res['gmt_refund_pay'] = $this->gmtRefundPay; - } - if (null !== $this->refundSettlementId) { - $res['refund_settlement_id'] = $this->refundSettlementId; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeCancelResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['retry_flag'])){ - $model->retryFlag = $map['retry_flag']; - } - if(isset($map['action'])){ - $model->action = $map['action']; - } - if(isset($map['gmt_refund_pay'])){ - $model->gmtRefundPay = $map['gmt_refund_pay']; - } - if(isset($map['refund_settlement_id'])){ - $model->refundSettlementId = $map['refund_settlement_id']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $tradeNo; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $retryFlag; - - /** - * @var string - */ - public $action; - - /** - * @var string - */ - public $gmtRefundPay; - - /** - * @var string - */ - public $refundSettlementId; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCloseResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCloseResponse.php deleted file mode 100644 index 3946bb4f..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCloseResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'tradeNo' => 'trade_no', - 'outTradeNo' => 'out_trade_no', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeCloseResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $tradeNo; - - /** - * @var string - */ - public $outTradeNo; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCreateResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCreateResponse.php deleted file mode 100644 index 2a302160..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeCreateResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'outTradeNo' => 'out_trade_no', - 'tradeNo' => 'trade_no', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeCreateResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $tradeNo; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.php deleted file mode 100644 index 66b2b1b5..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeFastpayRefundQueryResponse.php +++ /dev/null @@ -1,352 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'errorCode' => 'error_code', - 'gmtRefundPay' => 'gmt_refund_pay', - 'industrySepcDetail' => 'industry_sepc_detail', - 'outRequestNo' => 'out_request_no', - 'outTradeNo' => 'out_trade_no', - 'presentRefundBuyerAmount' => 'present_refund_buyer_amount', - 'presentRefundDiscountAmount' => 'present_refund_discount_amount', - 'presentRefundMdiscountAmount' => 'present_refund_mdiscount_amount', - 'refundAmount' => 'refund_amount', - 'refundChargeAmount' => 'refund_charge_amount', - 'refundDetailItemList' => 'refund_detail_item_list', - 'refundReason' => 'refund_reason', - 'refundRoyaltys' => 'refund_royaltys', - 'refundSettlementId' => 'refund_settlement_id', - 'refundStatus' => 'refund_status', - 'sendBackFee' => 'send_back_fee', - 'totalAmount' => 'total_amount', - 'tradeNo' => 'trade_no', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('errorCode', $this->errorCode, true); - Model::validateRequired('gmtRefundPay', $this->gmtRefundPay, true); - Model::validateRequired('industrySepcDetail', $this->industrySepcDetail, true); - Model::validateRequired('outRequestNo', $this->outRequestNo, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('presentRefundBuyerAmount', $this->presentRefundBuyerAmount, true); - Model::validateRequired('presentRefundDiscountAmount', $this->presentRefundDiscountAmount, true); - Model::validateRequired('presentRefundMdiscountAmount', $this->presentRefundMdiscountAmount, true); - Model::validateRequired('refundAmount', $this->refundAmount, true); - Model::validateRequired('refundChargeAmount', $this->refundChargeAmount, true); - Model::validateRequired('refundDetailItemList', $this->refundDetailItemList, true); - Model::validateRequired('refundReason', $this->refundReason, true); - Model::validateRequired('refundRoyaltys', $this->refundRoyaltys, true); - Model::validateRequired('refundSettlementId', $this->refundSettlementId, true); - Model::validateRequired('refundStatus', $this->refundStatus, true); - Model::validateRequired('sendBackFee', $this->sendBackFee, true); - Model::validateRequired('totalAmount', $this->totalAmount, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->errorCode) { - $res['error_code'] = $this->errorCode; - } - if (null !== $this->gmtRefundPay) { - $res['gmt_refund_pay'] = $this->gmtRefundPay; - } - if (null !== $this->industrySepcDetail) { - $res['industry_sepc_detail'] = $this->industrySepcDetail; - } - if (null !== $this->outRequestNo) { - $res['out_request_no'] = $this->outRequestNo; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->presentRefundBuyerAmount) { - $res['present_refund_buyer_amount'] = $this->presentRefundBuyerAmount; - } - if (null !== $this->presentRefundDiscountAmount) { - $res['present_refund_discount_amount'] = $this->presentRefundDiscountAmount; - } - if (null !== $this->presentRefundMdiscountAmount) { - $res['present_refund_mdiscount_amount'] = $this->presentRefundMdiscountAmount; - } - if (null !== $this->refundAmount) { - $res['refund_amount'] = $this->refundAmount; - } - if (null !== $this->refundChargeAmount) { - $res['refund_charge_amount'] = $this->refundChargeAmount; - } - if (null !== $this->refundDetailItemList) { - $res['refund_detail_item_list'] = []; - if(null !== $this->refundDetailItemList && is_array($this->refundDetailItemList)){ - $n = 0; - foreach($this->refundDetailItemList as $item){ - $res['refund_detail_item_list'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->refundReason) { - $res['refund_reason'] = $this->refundReason; - } - if (null !== $this->refundRoyaltys) { - $res['refund_royaltys'] = []; - if(null !== $this->refundRoyaltys && is_array($this->refundRoyaltys)){ - $n = 0; - foreach($this->refundRoyaltys as $item){ - $res['refund_royaltys'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->refundSettlementId) { - $res['refund_settlement_id'] = $this->refundSettlementId; - } - if (null !== $this->refundStatus) { - $res['refund_status'] = $this->refundStatus; - } - if (null !== $this->sendBackFee) { - $res['send_back_fee'] = $this->sendBackFee; - } - if (null !== $this->totalAmount) { - $res['total_amount'] = $this->totalAmount; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeFastpayRefundQueryResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['error_code'])){ - $model->errorCode = $map['error_code']; - } - if(isset($map['gmt_refund_pay'])){ - $model->gmtRefundPay = $map['gmt_refund_pay']; - } - if(isset($map['industry_sepc_detail'])){ - $model->industrySepcDetail = $map['industry_sepc_detail']; - } - if(isset($map['out_request_no'])){ - $model->outRequestNo = $map['out_request_no']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['present_refund_buyer_amount'])){ - $model->presentRefundBuyerAmount = $map['present_refund_buyer_amount']; - } - if(isset($map['present_refund_discount_amount'])){ - $model->presentRefundDiscountAmount = $map['present_refund_discount_amount']; - } - if(isset($map['present_refund_mdiscount_amount'])){ - $model->presentRefundMdiscountAmount = $map['present_refund_mdiscount_amount']; - } - if(isset($map['refund_amount'])){ - $model->refundAmount = $map['refund_amount']; - } - if(isset($map['refund_charge_amount'])){ - $model->refundChargeAmount = $map['refund_charge_amount']; - } - if(isset($map['refund_detail_item_list'])){ - if(!empty($map['refund_detail_item_list'])){ - $model->refundDetailItemList = []; - $n = 0; - foreach($map['refund_detail_item_list'] as $item) { - $model->refundDetailItemList[$n++] = null !== $item ? TradeFundBill::fromMap($item) : $item; - } - } - } - if(isset($map['refund_reason'])){ - $model->refundReason = $map['refund_reason']; - } - if(isset($map['refund_royaltys'])){ - if(!empty($map['refund_royaltys'])){ - $model->refundRoyaltys = []; - $n = 0; - foreach($map['refund_royaltys'] as $item) { - $model->refundRoyaltys[$n++] = null !== $item ? RefundRoyaltyResult::fromMap($item) : $item; - } - } - } - if(isset($map['refund_settlement_id'])){ - $model->refundSettlementId = $map['refund_settlement_id']; - } - if(isset($map['refund_status'])){ - $model->refundStatus = $map['refund_status']; - } - if(isset($map['send_back_fee'])){ - $model->sendBackFee = $map['send_back_fee']; - } - if(isset($map['total_amount'])){ - $model->totalAmount = $map['total_amount']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $errorCode; - - /** - * @var string - */ - public $gmtRefundPay; - - /** - * @var string - */ - public $industrySepcDetail; - - /** - * @var string - */ - public $outRequestNo; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $presentRefundBuyerAmount; - - /** - * @var string - */ - public $presentRefundDiscountAmount; - - /** - * @var string - */ - public $presentRefundMdiscountAmount; - - /** - * @var string - */ - public $refundAmount; - - /** - * @var string - */ - public $refundChargeAmount; - - /** - * @var TradeFundBill[] - */ - public $refundDetailItemList; - - /** - * @var string - */ - public $refundReason; - - /** - * @var RefundRoyaltyResult[] - */ - public $refundRoyaltys; - - /** - * @var string - */ - public $refundSettlementId; - - /** - * @var string - */ - public $refundStatus; - - /** - * @var string - */ - public $sendBackFee; - - /** - * @var string - */ - public $totalAmount; - - /** - * @var string - */ - public $tradeNo; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeQueryResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeQueryResponse.php deleted file mode 100644 index 03017d82..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeQueryResponse.php +++ /dev/null @@ -1,573 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'tradeNo' => 'trade_no', - 'outTradeNo' => 'out_trade_no', - 'buyerLogonId' => 'buyer_logon_id', - 'tradeStatus' => 'trade_status', - 'totalAmount' => 'total_amount', - 'transCurrency' => 'trans_currency', - 'settleCurrency' => 'settle_currency', - 'settleAmount' => 'settle_amount', - 'payCurrency' => 'pay_currency', - 'payAmount' => 'pay_amount', - 'settleTransRate' => 'settle_trans_rate', - 'transPayRate' => 'trans_pay_rate', - 'buyerPayAmount' => 'buyer_pay_amount', - 'pointAmount' => 'point_amount', - 'invoiceAmount' => 'invoice_amount', - 'sendPayDate' => 'send_pay_date', - 'receiptAmount' => 'receipt_amount', - 'storeId' => 'store_id', - 'terminalId' => 'terminal_id', - 'fundBillList' => 'fund_bill_list', - 'storeName' => 'store_name', - 'buyerUserId' => 'buyer_user_id', - 'chargeAmount' => 'charge_amount', - 'chargeFlags' => 'charge_flags', - 'settlementId' => 'settlement_id', - 'tradeSettleInfo' => 'trade_settle_info', - 'authTradePayMode' => 'auth_trade_pay_mode', - 'buyerUserType' => 'buyer_user_type', - 'mdiscountAmount' => 'mdiscount_amount', - 'discountAmount' => 'discount_amount', - 'buyerUserName' => 'buyer_user_name', - 'subject' => 'subject', - 'body' => 'body', - 'alipaySubMerchantId' => 'alipay_sub_merchant_id', - 'extInfos' => 'ext_infos', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('buyerLogonId', $this->buyerLogonId, true); - Model::validateRequired('tradeStatus', $this->tradeStatus, true); - Model::validateRequired('totalAmount', $this->totalAmount, true); - Model::validateRequired('transCurrency', $this->transCurrency, true); - Model::validateRequired('settleCurrency', $this->settleCurrency, true); - Model::validateRequired('settleAmount', $this->settleAmount, true); - Model::validateRequired('payCurrency', $this->payCurrency, true); - Model::validateRequired('payAmount', $this->payAmount, true); - Model::validateRequired('settleTransRate', $this->settleTransRate, true); - Model::validateRequired('transPayRate', $this->transPayRate, true); - Model::validateRequired('buyerPayAmount', $this->buyerPayAmount, true); - Model::validateRequired('pointAmount', $this->pointAmount, true); - Model::validateRequired('invoiceAmount', $this->invoiceAmount, true); - Model::validateRequired('sendPayDate', $this->sendPayDate, true); - Model::validateRequired('receiptAmount', $this->receiptAmount, true); - Model::validateRequired('storeId', $this->storeId, true); - Model::validateRequired('terminalId', $this->terminalId, true); - Model::validateRequired('fundBillList', $this->fundBillList, true); - Model::validateRequired('storeName', $this->storeName, true); - Model::validateRequired('buyerUserId', $this->buyerUserId, true); - Model::validateRequired('chargeAmount', $this->chargeAmount, true); - Model::validateRequired('chargeFlags', $this->chargeFlags, true); - Model::validateRequired('settlementId', $this->settlementId, true); - Model::validateRequired('tradeSettleInfo', $this->tradeSettleInfo, true); - Model::validateRequired('authTradePayMode', $this->authTradePayMode, true); - Model::validateRequired('buyerUserType', $this->buyerUserType, true); - Model::validateRequired('mdiscountAmount', $this->mdiscountAmount, true); - Model::validateRequired('discountAmount', $this->discountAmount, true); - Model::validateRequired('buyerUserName', $this->buyerUserName, true); - Model::validateRequired('subject', $this->subject, true); - Model::validateRequired('body', $this->body, true); - Model::validateRequired('alipaySubMerchantId', $this->alipaySubMerchantId, true); - Model::validateRequired('extInfos', $this->extInfos, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->buyerLogonId) { - $res['buyer_logon_id'] = $this->buyerLogonId; - } - if (null !== $this->tradeStatus) { - $res['trade_status'] = $this->tradeStatus; - } - if (null !== $this->totalAmount) { - $res['total_amount'] = $this->totalAmount; - } - if (null !== $this->transCurrency) { - $res['trans_currency'] = $this->transCurrency; - } - if (null !== $this->settleCurrency) { - $res['settle_currency'] = $this->settleCurrency; - } - if (null !== $this->settleAmount) { - $res['settle_amount'] = $this->settleAmount; - } - if (null !== $this->payCurrency) { - $res['pay_currency'] = $this->payCurrency; - } - if (null !== $this->payAmount) { - $res['pay_amount'] = $this->payAmount; - } - if (null !== $this->settleTransRate) { - $res['settle_trans_rate'] = $this->settleTransRate; - } - if (null !== $this->transPayRate) { - $res['trans_pay_rate'] = $this->transPayRate; - } - if (null !== $this->buyerPayAmount) { - $res['buyer_pay_amount'] = $this->buyerPayAmount; - } - if (null !== $this->pointAmount) { - $res['point_amount'] = $this->pointAmount; - } - if (null !== $this->invoiceAmount) { - $res['invoice_amount'] = $this->invoiceAmount; - } - if (null !== $this->sendPayDate) { - $res['send_pay_date'] = $this->sendPayDate; - } - if (null !== $this->receiptAmount) { - $res['receipt_amount'] = $this->receiptAmount; - } - if (null !== $this->storeId) { - $res['store_id'] = $this->storeId; - } - if (null !== $this->terminalId) { - $res['terminal_id'] = $this->terminalId; - } - if (null !== $this->fundBillList) { - $res['fund_bill_list'] = []; - if(null !== $this->fundBillList && is_array($this->fundBillList)){ - $n = 0; - foreach($this->fundBillList as $item){ - $res['fund_bill_list'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->storeName) { - $res['store_name'] = $this->storeName; - } - if (null !== $this->buyerUserId) { - $res['buyer_user_id'] = $this->buyerUserId; - } - if (null !== $this->chargeAmount) { - $res['charge_amount'] = $this->chargeAmount; - } - if (null !== $this->chargeFlags) { - $res['charge_flags'] = $this->chargeFlags; - } - if (null !== $this->settlementId) { - $res['settlement_id'] = $this->settlementId; - } - if (null !== $this->tradeSettleInfo) { - $res['trade_settle_info'] = []; - if(null !== $this->tradeSettleInfo && is_array($this->tradeSettleInfo)){ - $n = 0; - foreach($this->tradeSettleInfo as $item){ - $res['trade_settle_info'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->authTradePayMode) { - $res['auth_trade_pay_mode'] = $this->authTradePayMode; - } - if (null !== $this->buyerUserType) { - $res['buyer_user_type'] = $this->buyerUserType; - } - if (null !== $this->mdiscountAmount) { - $res['mdiscount_amount'] = $this->mdiscountAmount; - } - if (null !== $this->discountAmount) { - $res['discount_amount'] = $this->discountAmount; - } - if (null !== $this->buyerUserName) { - $res['buyer_user_name'] = $this->buyerUserName; - } - if (null !== $this->subject) { - $res['subject'] = $this->subject; - } - if (null !== $this->body) { - $res['body'] = $this->body; - } - if (null !== $this->alipaySubMerchantId) { - $res['alipay_sub_merchant_id'] = $this->alipaySubMerchantId; - } - if (null !== $this->extInfos) { - $res['ext_infos'] = $this->extInfos; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeQueryResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['buyer_logon_id'])){ - $model->buyerLogonId = $map['buyer_logon_id']; - } - if(isset($map['trade_status'])){ - $model->tradeStatus = $map['trade_status']; - } - if(isset($map['total_amount'])){ - $model->totalAmount = $map['total_amount']; - } - if(isset($map['trans_currency'])){ - $model->transCurrency = $map['trans_currency']; - } - if(isset($map['settle_currency'])){ - $model->settleCurrency = $map['settle_currency']; - } - if(isset($map['settle_amount'])){ - $model->settleAmount = $map['settle_amount']; - } - if(isset($map['pay_currency'])){ - $model->payCurrency = $map['pay_currency']; - } - if(isset($map['pay_amount'])){ - $model->payAmount = $map['pay_amount']; - } - if(isset($map['settle_trans_rate'])){ - $model->settleTransRate = $map['settle_trans_rate']; - } - if(isset($map['trans_pay_rate'])){ - $model->transPayRate = $map['trans_pay_rate']; - } - if(isset($map['buyer_pay_amount'])){ - $model->buyerPayAmount = $map['buyer_pay_amount']; - } - if(isset($map['point_amount'])){ - $model->pointAmount = $map['point_amount']; - } - if(isset($map['invoice_amount'])){ - $model->invoiceAmount = $map['invoice_amount']; - } - if(isset($map['send_pay_date'])){ - $model->sendPayDate = $map['send_pay_date']; - } - if(isset($map['receipt_amount'])){ - $model->receiptAmount = $map['receipt_amount']; - } - if(isset($map['store_id'])){ - $model->storeId = $map['store_id']; - } - if(isset($map['terminal_id'])){ - $model->terminalId = $map['terminal_id']; - } - if(isset($map['fund_bill_list'])){ - if(!empty($map['fund_bill_list'])){ - $model->fundBillList = []; - $n = 0; - foreach($map['fund_bill_list'] as $item) { - $model->fundBillList[$n++] = null !== $item ? TradeFundBill::fromMap($item) : $item; - } - } - } - if(isset($map['store_name'])){ - $model->storeName = $map['store_name']; - } - if(isset($map['buyer_user_id'])){ - $model->buyerUserId = $map['buyer_user_id']; - } - if(isset($map['charge_amount'])){ - $model->chargeAmount = $map['charge_amount']; - } - if(isset($map['charge_flags'])){ - $model->chargeFlags = $map['charge_flags']; - } - if(isset($map['settlement_id'])){ - $model->settlementId = $map['settlement_id']; - } - if(isset($map['trade_settle_info'])){ - if(!empty($map['trade_settle_info'])){ - $model->tradeSettleInfo = []; - $n = 0; - foreach($map['trade_settle_info'] as $item) { - $model->tradeSettleInfo[$n++] = null !== $item ? TradeSettleInfo::fromMap($item) : $item; - } - } - } - if(isset($map['auth_trade_pay_mode'])){ - $model->authTradePayMode = $map['auth_trade_pay_mode']; - } - if(isset($map['buyer_user_type'])){ - $model->buyerUserType = $map['buyer_user_type']; - } - if(isset($map['mdiscount_amount'])){ - $model->mdiscountAmount = $map['mdiscount_amount']; - } - if(isset($map['discount_amount'])){ - $model->discountAmount = $map['discount_amount']; - } - if(isset($map['buyer_user_name'])){ - $model->buyerUserName = $map['buyer_user_name']; - } - if(isset($map['subject'])){ - $model->subject = $map['subject']; - } - if(isset($map['body'])){ - $model->body = $map['body']; - } - if(isset($map['alipay_sub_merchant_id'])){ - $model->alipaySubMerchantId = $map['alipay_sub_merchant_id']; - } - if(isset($map['ext_infos'])){ - $model->extInfos = $map['ext_infos']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $tradeNo; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $buyerLogonId; - - /** - * @var string - */ - public $tradeStatus; - - /** - * @var string - */ - public $totalAmount; - - /** - * @var string - */ - public $transCurrency; - - /** - * @var string - */ - public $settleCurrency; - - /** - * @var string - */ - public $settleAmount; - - /** - * @var string - */ - public $payCurrency; - - /** - * @var string - */ - public $payAmount; - - /** - * @var string - */ - public $settleTransRate; - - /** - * @var string - */ - public $transPayRate; - - /** - * @var string - */ - public $buyerPayAmount; - - /** - * @var string - */ - public $pointAmount; - - /** - * @var string - */ - public $invoiceAmount; - - /** - * @var string - */ - public $sendPayDate; - - /** - * @var string - */ - public $receiptAmount; - - /** - * @var string - */ - public $storeId; - - /** - * @var string - */ - public $terminalId; - - /** - * @var TradeFundBill[] - */ - public $fundBillList; - - /** - * @var string - */ - public $storeName; - - /** - * @var string - */ - public $buyerUserId; - - /** - * @var string - */ - public $chargeAmount; - - /** - * @var string - */ - public $chargeFlags; - - /** - * @var string - */ - public $settlementId; - - /** - * @var TradeSettleInfo[] - */ - public $tradeSettleInfo; - - /** - * @var string - */ - public $authTradePayMode; - - /** - * @var string - */ - public $buyerUserType; - - /** - * @var string - */ - public $mdiscountAmount; - - /** - * @var string - */ - public $discountAmount; - - /** - * @var string - */ - public $buyerUserName; - - /** - * @var string - */ - public $subject; - - /** - * @var string - */ - public $body; - - /** - * @var string - */ - public $alipaySubMerchantId; - - /** - * @var string - */ - public $extInfos; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeRefundResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeRefundResponse.php deleted file mode 100644 index 84db87d9..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/AlipayTradeRefundResponse.php +++ /dev/null @@ -1,313 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'tradeNo' => 'trade_no', - 'outTradeNo' => 'out_trade_no', - 'buyerLogonId' => 'buyer_logon_id', - 'fundChange' => 'fund_change', - 'refundFee' => 'refund_fee', - 'refundCurrency' => 'refund_currency', - 'gmtRefundPay' => 'gmt_refund_pay', - 'refundDetailItemList' => 'refund_detail_item_list', - 'storeName' => 'store_name', - 'buyerUserId' => 'buyer_user_id', - 'refundPresetPaytoolList' => 'refund_preset_paytool_list', - 'refundSettlementId' => 'refund_settlement_id', - 'presentRefundBuyerAmount' => 'present_refund_buyer_amount', - 'presentRefundDiscountAmount' => 'present_refund_discount_amount', - 'presentRefundMdiscountAmount' => 'present_refund_mdiscount_amount', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('buyerLogonId', $this->buyerLogonId, true); - Model::validateRequired('fundChange', $this->fundChange, true); - Model::validateRequired('refundFee', $this->refundFee, true); - Model::validateRequired('refundCurrency', $this->refundCurrency, true); - Model::validateRequired('gmtRefundPay', $this->gmtRefundPay, true); - Model::validateRequired('refundDetailItemList', $this->refundDetailItemList, true); - Model::validateRequired('storeName', $this->storeName, true); - Model::validateRequired('buyerUserId', $this->buyerUserId, true); - Model::validateRequired('refundPresetPaytoolList', $this->refundPresetPaytoolList, true); - Model::validateRequired('refundSettlementId', $this->refundSettlementId, true); - Model::validateRequired('presentRefundBuyerAmount', $this->presentRefundBuyerAmount, true); - Model::validateRequired('presentRefundDiscountAmount', $this->presentRefundDiscountAmount, true); - Model::validateRequired('presentRefundMdiscountAmount', $this->presentRefundMdiscountAmount, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->buyerLogonId) { - $res['buyer_logon_id'] = $this->buyerLogonId; - } - if (null !== $this->fundChange) { - $res['fund_change'] = $this->fundChange; - } - if (null !== $this->refundFee) { - $res['refund_fee'] = $this->refundFee; - } - if (null !== $this->refundCurrency) { - $res['refund_currency'] = $this->refundCurrency; - } - if (null !== $this->gmtRefundPay) { - $res['gmt_refund_pay'] = $this->gmtRefundPay; - } - if (null !== $this->refundDetailItemList) { - $res['refund_detail_item_list'] = []; - if(null !== $this->refundDetailItemList && is_array($this->refundDetailItemList)){ - $n = 0; - foreach($this->refundDetailItemList as $item){ - $res['refund_detail_item_list'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->storeName) { - $res['store_name'] = $this->storeName; - } - if (null !== $this->buyerUserId) { - $res['buyer_user_id'] = $this->buyerUserId; - } - if (null !== $this->refundPresetPaytoolList) { - $res['refund_preset_paytool_list'] = []; - if(null !== $this->refundPresetPaytoolList && is_array($this->refundPresetPaytoolList)){ - $n = 0; - foreach($this->refundPresetPaytoolList as $item){ - $res['refund_preset_paytool_list'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->refundSettlementId) { - $res['refund_settlement_id'] = $this->refundSettlementId; - } - if (null !== $this->presentRefundBuyerAmount) { - $res['present_refund_buyer_amount'] = $this->presentRefundBuyerAmount; - } - if (null !== $this->presentRefundDiscountAmount) { - $res['present_refund_discount_amount'] = $this->presentRefundDiscountAmount; - } - if (null !== $this->presentRefundMdiscountAmount) { - $res['present_refund_mdiscount_amount'] = $this->presentRefundMdiscountAmount; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeRefundResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['buyer_logon_id'])){ - $model->buyerLogonId = $map['buyer_logon_id']; - } - if(isset($map['fund_change'])){ - $model->fundChange = $map['fund_change']; - } - if(isset($map['refund_fee'])){ - $model->refundFee = $map['refund_fee']; - } - if(isset($map['refund_currency'])){ - $model->refundCurrency = $map['refund_currency']; - } - if(isset($map['gmt_refund_pay'])){ - $model->gmtRefundPay = $map['gmt_refund_pay']; - } - if(isset($map['refund_detail_item_list'])){ - if(!empty($map['refund_detail_item_list'])){ - $model->refundDetailItemList = []; - $n = 0; - foreach($map['refund_detail_item_list'] as $item) { - $model->refundDetailItemList[$n++] = null !== $item ? TradeFundBill::fromMap($item) : $item; - } - } - } - if(isset($map['store_name'])){ - $model->storeName = $map['store_name']; - } - if(isset($map['buyer_user_id'])){ - $model->buyerUserId = $map['buyer_user_id']; - } - if(isset($map['refund_preset_paytool_list'])){ - if(!empty($map['refund_preset_paytool_list'])){ - $model->refundPresetPaytoolList = []; - $n = 0; - foreach($map['refund_preset_paytool_list'] as $item) { - $model->refundPresetPaytoolList[$n++] = null !== $item ? PresetPayToolInfo::fromMap($item) : $item; - } - } - } - if(isset($map['refund_settlement_id'])){ - $model->refundSettlementId = $map['refund_settlement_id']; - } - if(isset($map['present_refund_buyer_amount'])){ - $model->presentRefundBuyerAmount = $map['present_refund_buyer_amount']; - } - if(isset($map['present_refund_discount_amount'])){ - $model->presentRefundDiscountAmount = $map['present_refund_discount_amount']; - } - if(isset($map['present_refund_mdiscount_amount'])){ - $model->presentRefundMdiscountAmount = $map['present_refund_mdiscount_amount']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $tradeNo; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $buyerLogonId; - - /** - * @var string - */ - public $fundChange; - - /** - * @var string - */ - public $refundFee; - - /** - * @var string - */ - public $refundCurrency; - - /** - * @var string - */ - public $gmtRefundPay; - - /** - * @var TradeFundBill[] - */ - public $refundDetailItemList; - - /** - * @var string - */ - public $storeName; - - /** - * @var string - */ - public $buyerUserId; - - /** - * @var PresetPayToolInfo[] - */ - public $refundPresetPaytoolList; - - /** - * @var string - */ - public $refundSettlementId; - - /** - * @var string - */ - public $presentRefundBuyerAmount; - - /** - * @var string - */ - public $presentRefundDiscountAmount; - - /** - * @var string - */ - public $presentRefundMdiscountAmount; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/PresetPayToolInfo.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/PresetPayToolInfo.php deleted file mode 100644 index eb1f0ea3..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/PresetPayToolInfo.php +++ /dev/null @@ -1,53 +0,0 @@ - 'amount', - 'assertTypeCode' => 'assert_type_code', - ]; - public function validate() { - Model::validateRequired('amount', $this->amount, true); - Model::validateRequired('assertTypeCode', $this->assertTypeCode, true); - } - public function toMap() { - $res = []; - if (null !== $this->amount) { - $res['amount'] = $this->amount; - } - if (null !== $this->assertTypeCode) { - $res['assert_type_code'] = $this->assertTypeCode; - } - return $res; - } - /** - * @param array $map - * @return PresetPayToolInfo - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['amount'])){ - if(!empty($map['amount'])){ - $model->amount = $map['amount']; - } - } - if(isset($map['assert_type_code'])){ - $model->assertTypeCode = $map['assert_type_code']; - } - return $model; - } - /** - * @var string[] - */ - public $amount; - - /** - * @var string - */ - public $assertTypeCode; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/RefundRoyaltyResult.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/RefundRoyaltyResult.php deleted file mode 100644 index f85e7547..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/RefundRoyaltyResult.php +++ /dev/null @@ -1,116 +0,0 @@ - 'refund_amount', - 'royaltyType' => 'royalty_type', - 'resultCode' => 'result_code', - 'transOut' => 'trans_out', - 'transOutEmail' => 'trans_out_email', - 'transIn' => 'trans_in', - 'transInEmail' => 'trans_in_email', - ]; - public function validate() { - Model::validateRequired('refundAmount', $this->refundAmount, true); - Model::validateRequired('royaltyType', $this->royaltyType, true); - Model::validateRequired('resultCode', $this->resultCode, true); - Model::validateRequired('transOut', $this->transOut, true); - Model::validateRequired('transOutEmail', $this->transOutEmail, true); - Model::validateRequired('transIn', $this->transIn, true); - Model::validateRequired('transInEmail', $this->transInEmail, true); - } - public function toMap() { - $res = []; - if (null !== $this->refundAmount) { - $res['refund_amount'] = $this->refundAmount; - } - if (null !== $this->royaltyType) { - $res['royalty_type'] = $this->royaltyType; - } - if (null !== $this->resultCode) { - $res['result_code'] = $this->resultCode; - } - if (null !== $this->transOut) { - $res['trans_out'] = $this->transOut; - } - if (null !== $this->transOutEmail) { - $res['trans_out_email'] = $this->transOutEmail; - } - if (null !== $this->transIn) { - $res['trans_in'] = $this->transIn; - } - if (null !== $this->transInEmail) { - $res['trans_in_email'] = $this->transInEmail; - } - return $res; - } - /** - * @param array $map - * @return RefundRoyaltyResult - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['refund_amount'])){ - $model->refundAmount = $map['refund_amount']; - } - if(isset($map['royalty_type'])){ - $model->royaltyType = $map['royalty_type']; - } - if(isset($map['result_code'])){ - $model->resultCode = $map['result_code']; - } - if(isset($map['trans_out'])){ - $model->transOut = $map['trans_out']; - } - if(isset($map['trans_out_email'])){ - $model->transOutEmail = $map['trans_out_email']; - } - if(isset($map['trans_in'])){ - $model->transIn = $map['trans_in']; - } - if(isset($map['trans_in_email'])){ - $model->transInEmail = $map['trans_in_email']; - } - return $model; - } - /** - * @var string - */ - public $refundAmount; - - /** - * @var string - */ - public $royaltyType; - - /** - * @var string - */ - public $resultCode; - - /** - * @var string - */ - public $transOut; - - /** - * @var string - */ - public $transOutEmail; - - /** - * @var string - */ - public $transIn; - - /** - * @var string - */ - public $transInEmail; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeFundBill.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeFundBill.php deleted file mode 100644 index 3d201728..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeFundBill.php +++ /dev/null @@ -1,90 +0,0 @@ - 'fund_channel', - 'bankCode' => 'bank_code', - 'amount' => 'amount', - 'realAmount' => 'real_amount', - 'fundType' => 'fund_type', - ]; - public function validate() { - Model::validateRequired('fundChannel', $this->fundChannel, true); - Model::validateRequired('bankCode', $this->bankCode, true); - Model::validateRequired('amount', $this->amount, true); - Model::validateRequired('realAmount', $this->realAmount, true); - Model::validateRequired('fundType', $this->fundType, true); - } - public function toMap() { - $res = []; - if (null !== $this->fundChannel) { - $res['fund_channel'] = $this->fundChannel; - } - if (null !== $this->bankCode) { - $res['bank_code'] = $this->bankCode; - } - if (null !== $this->amount) { - $res['amount'] = $this->amount; - } - if (null !== $this->realAmount) { - $res['real_amount'] = $this->realAmount; - } - if (null !== $this->fundType) { - $res['fund_type'] = $this->fundType; - } - return $res; - } - /** - * @param array $map - * @return TradeFundBill - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['fund_channel'])){ - $model->fundChannel = $map['fund_channel']; - } - if(isset($map['bank_code'])){ - $model->bankCode = $map['bank_code']; - } - if(isset($map['amount'])){ - $model->amount = $map['amount']; - } - if(isset($map['real_amount'])){ - $model->realAmount = $map['real_amount']; - } - if(isset($map['fund_type'])){ - $model->fundType = $map['fund_type']; - } - return $model; - } - /** - * @var string - */ - public $fundChannel; - - /** - * @var string - */ - public $bankCode; - - /** - * @var string - */ - public $amount; - - /** - * @var string - */ - public $realAmount; - - /** - * @var string - */ - public $fundType; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleDetail.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleDetail.php deleted file mode 100644 index 1bed575f..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleDetail.php +++ /dev/null @@ -1,103 +0,0 @@ - 'operation_type', - 'operationSerial_no' => 'operation_serial_no', - 'operationDt' => 'operation_dt', - 'transOut' => 'trans_out', - 'transIn' => 'trans_in', - 'amount' => 'amount', - ]; - public function validate() { - Model::validateRequired('operationType', $this->operationType, true); - Model::validateRequired('operationSerial_no', $this->operationSerial_no, true); - Model::validateRequired('operationDt', $this->operationDt, true); - Model::validateRequired('transOut', $this->transOut, true); - Model::validateRequired('transIn', $this->transIn, true); - Model::validateRequired('amount', $this->amount, true); - } - public function toMap() { - $res = []; - if (null !== $this->operationType) { - $res['operation_type'] = $this->operationType; - } - if (null !== $this->operationSerial_no) { - $res['operation_serial_no'] = $this->operationSerial_no; - } - if (null !== $this->operationDt) { - $res['operation_dt'] = $this->operationDt; - } - if (null !== $this->transOut) { - $res['trans_out'] = $this->transOut; - } - if (null !== $this->transIn) { - $res['trans_in'] = $this->transIn; - } - if (null !== $this->amount) { - $res['amount'] = $this->amount; - } - return $res; - } - /** - * @param array $map - * @return TradeSettleDetail - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['operation_type'])){ - $model->operationType = $map['operation_type']; - } - if(isset($map['operation_serial_no'])){ - $model->operationSerial_no = $map['operation_serial_no']; - } - if(isset($map['operation_dt'])){ - $model->operationDt = $map['operation_dt']; - } - if(isset($map['trans_out'])){ - $model->transOut = $map['trans_out']; - } - if(isset($map['trans_in'])){ - $model->transIn = $map['trans_in']; - } - if(isset($map['amount'])){ - $model->amount = $map['amount']; - } - return $model; - } - /** - * @var string - */ - public $operationType; - - /** - * @var string - */ - public $operationSerial_no; - - /** - * @var string - */ - public $operationDt; - - /** - * @var string - */ - public $transOut; - - /** - * @var string - */ - public $transIn; - - /** - * @var string - */ - public $amount; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleInfo.php b/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleInfo.php deleted file mode 100644 index aa7720fe..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Common/Models/TradeSettleInfo.php +++ /dev/null @@ -1,52 +0,0 @@ - 'trade_settle_detail_list', - ]; - public function validate() { - Model::validateRequired('tradeSettleDetailList', $this->tradeSettleDetailList, true); - } - public function toMap() { - $res = []; - if (null !== $this->tradeSettleDetailList) { - $res['trade_settle_detail_list'] = []; - if(null !== $this->tradeSettleDetailList && is_array($this->tradeSettleDetailList)){ - $n = 0; - foreach($this->tradeSettleDetailList as $item){ - $res['trade_settle_detail_list'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - return $res; - } - /** - * @param array $map - * @return TradeSettleInfo - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['trade_settle_detail_list'])){ - if(!empty($map['trade_settle_detail_list'])){ - $model->tradeSettleDetailList = []; - $n = 0; - foreach($map['trade_settle_detail_list'] as $item) { - $model->tradeSettleDetailList[$n++] = null !== $item ? TradeSettleDetail::fromMap($item) : $item; - } - } - } - return $model; - } - /** - * @var TradeSettleDetail[] - */ - public $tradeSettleDetailList; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Client.php b/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Client.php deleted file mode 100644 index b07f473c..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Client.php +++ /dev/null @@ -1,293 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $subject - * @param string $outTradeNo - * @param string $totalAmount - * @param string $authCode - * @return AlipayTradePayResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function pay($subject, $outTradeNo, $totalAmount, $authCode){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.pay", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "subject" => $subject, - "out_trade_no" => $outTradeNo, - "total_amount" => $totalAmount, - "auth_code" => $authCode, - "scene" => "bar_code" - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.pay"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradePayResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradePayResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $subject - * @param string $outTradeNo - * @param string $totalAmount - * @return AlipayTradePrecreateResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function preCreate($subject, $outTradeNo, $totalAmount){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.precreate", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "subject" => $subject, - "out_trade_no" => $outTradeNo, - "total_amount" => $totalAmount - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.precreate"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradePrecreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradePrecreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePayResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePayResponse.php deleted file mode 100644 index faa193bd..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePayResponse.php +++ /dev/null @@ -1,534 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'tradeNo' => 'trade_no', - 'outTradeNo' => 'out_trade_no', - 'buyerLogonId' => 'buyer_logon_id', - 'settleAmount' => 'settle_amount', - 'payCurrency' => 'pay_currency', - 'payAmount' => 'pay_amount', - 'settleTransRate' => 'settle_trans_rate', - 'transPayRate' => 'trans_pay_rate', - 'totalAmount' => 'total_amount', - 'transCurrency' => 'trans_currency', - 'settleCurrency' => 'settle_currency', - 'receiptAmount' => 'receipt_amount', - 'buyerPayAmount' => 'buyer_pay_amount', - 'pointAmount' => 'point_amount', - 'invoiceAmount' => 'invoice_amount', - 'gmtPayment' => 'gmt_payment', - 'fundBillList' => 'fund_bill_list', - 'cardBalance' => 'card_balance', - 'storeName' => 'store_name', - 'buyerUserId' => 'buyer_user_id', - 'discountGoodsDetail' => 'discount_goods_detail', - 'voucherDetailList' => 'voucher_detail_list', - 'advanceAmount' => 'advance_amount', - 'authTradePayMode' => 'auth_trade_pay_mode', - 'chargeAmount' => 'charge_amount', - 'chargeFlags' => 'charge_flags', - 'settlementId' => 'settlement_id', - 'businessParams' => 'business_params', - 'buyerUserType' => 'buyer_user_type', - 'mdiscountAmount' => 'mdiscount_amount', - 'discountAmount' => 'discount_amount', - 'buyerUserName' => 'buyer_user_name', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('buyerLogonId', $this->buyerLogonId, true); - Model::validateRequired('settleAmount', $this->settleAmount, true); - Model::validateRequired('payCurrency', $this->payCurrency, true); - Model::validateRequired('payAmount', $this->payAmount, true); - Model::validateRequired('settleTransRate', $this->settleTransRate, true); - Model::validateRequired('transPayRate', $this->transPayRate, true); - Model::validateRequired('totalAmount', $this->totalAmount, true); - Model::validateRequired('transCurrency', $this->transCurrency, true); - Model::validateRequired('settleCurrency', $this->settleCurrency, true); - Model::validateRequired('receiptAmount', $this->receiptAmount, true); - Model::validateRequired('buyerPayAmount', $this->buyerPayAmount, true); - Model::validateRequired('pointAmount', $this->pointAmount, true); - Model::validateRequired('invoiceAmount', $this->invoiceAmount, true); - Model::validateRequired('gmtPayment', $this->gmtPayment, true); - Model::validateRequired('fundBillList', $this->fundBillList, true); - Model::validateRequired('cardBalance', $this->cardBalance, true); - Model::validateRequired('storeName', $this->storeName, true); - Model::validateRequired('buyerUserId', $this->buyerUserId, true); - Model::validateRequired('discountGoodsDetail', $this->discountGoodsDetail, true); - Model::validateRequired('voucherDetailList', $this->voucherDetailList, true); - Model::validateRequired('advanceAmount', $this->advanceAmount, true); - Model::validateRequired('authTradePayMode', $this->authTradePayMode, true); - Model::validateRequired('chargeAmount', $this->chargeAmount, true); - Model::validateRequired('chargeFlags', $this->chargeFlags, true); - Model::validateRequired('settlementId', $this->settlementId, true); - Model::validateRequired('businessParams', $this->businessParams, true); - Model::validateRequired('buyerUserType', $this->buyerUserType, true); - Model::validateRequired('mdiscountAmount', $this->mdiscountAmount, true); - Model::validateRequired('discountAmount', $this->discountAmount, true); - Model::validateRequired('buyerUserName', $this->buyerUserName, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->buyerLogonId) { - $res['buyer_logon_id'] = $this->buyerLogonId; - } - if (null !== $this->settleAmount) { - $res['settle_amount'] = $this->settleAmount; - } - if (null !== $this->payCurrency) { - $res['pay_currency'] = $this->payCurrency; - } - if (null !== $this->payAmount) { - $res['pay_amount'] = $this->payAmount; - } - if (null !== $this->settleTransRate) { - $res['settle_trans_rate'] = $this->settleTransRate; - } - if (null !== $this->transPayRate) { - $res['trans_pay_rate'] = $this->transPayRate; - } - if (null !== $this->totalAmount) { - $res['total_amount'] = $this->totalAmount; - } - if (null !== $this->transCurrency) { - $res['trans_currency'] = $this->transCurrency; - } - if (null !== $this->settleCurrency) { - $res['settle_currency'] = $this->settleCurrency; - } - if (null !== $this->receiptAmount) { - $res['receipt_amount'] = $this->receiptAmount; - } - if (null !== $this->buyerPayAmount) { - $res['buyer_pay_amount'] = $this->buyerPayAmount; - } - if (null !== $this->pointAmount) { - $res['point_amount'] = $this->pointAmount; - } - if (null !== $this->invoiceAmount) { - $res['invoice_amount'] = $this->invoiceAmount; - } - if (null !== $this->gmtPayment) { - $res['gmt_payment'] = $this->gmtPayment; - } - if (null !== $this->fundBillList) { - $res['fund_bill_list'] = []; - if(null !== $this->fundBillList && is_array($this->fundBillList)){ - $n = 0; - foreach($this->fundBillList as $item){ - $res['fund_bill_list'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->cardBalance) { - $res['card_balance'] = $this->cardBalance; - } - if (null !== $this->storeName) { - $res['store_name'] = $this->storeName; - } - if (null !== $this->buyerUserId) { - $res['buyer_user_id'] = $this->buyerUserId; - } - if (null !== $this->discountGoodsDetail) { - $res['discount_goods_detail'] = $this->discountGoodsDetail; - } - if (null !== $this->voucherDetailList) { - $res['voucher_detail_list'] = []; - if(null !== $this->voucherDetailList && is_array($this->voucherDetailList)){ - $n = 0; - foreach($this->voucherDetailList as $item){ - $res['voucher_detail_list'][$n++] = null !== $item ? $item->toMap() : $item; - } - } - } - if (null !== $this->advanceAmount) { - $res['advance_amount'] = $this->advanceAmount; - } - if (null !== $this->authTradePayMode) { - $res['auth_trade_pay_mode'] = $this->authTradePayMode; - } - if (null !== $this->chargeAmount) { - $res['charge_amount'] = $this->chargeAmount; - } - if (null !== $this->chargeFlags) { - $res['charge_flags'] = $this->chargeFlags; - } - if (null !== $this->settlementId) { - $res['settlement_id'] = $this->settlementId; - } - if (null !== $this->businessParams) { - $res['business_params'] = $this->businessParams; - } - if (null !== $this->buyerUserType) { - $res['buyer_user_type'] = $this->buyerUserType; - } - if (null !== $this->mdiscountAmount) { - $res['mdiscount_amount'] = $this->mdiscountAmount; - } - if (null !== $this->discountAmount) { - $res['discount_amount'] = $this->discountAmount; - } - if (null !== $this->buyerUserName) { - $res['buyer_user_name'] = $this->buyerUserName; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradePayResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['buyer_logon_id'])){ - $model->buyerLogonId = $map['buyer_logon_id']; - } - if(isset($map['settle_amount'])){ - $model->settleAmount = $map['settle_amount']; - } - if(isset($map['pay_currency'])){ - $model->payCurrency = $map['pay_currency']; - } - if(isset($map['pay_amount'])){ - $model->payAmount = $map['pay_amount']; - } - if(isset($map['settle_trans_rate'])){ - $model->settleTransRate = $map['settle_trans_rate']; - } - if(isset($map['trans_pay_rate'])){ - $model->transPayRate = $map['trans_pay_rate']; - } - if(isset($map['total_amount'])){ - $model->totalAmount = $map['total_amount']; - } - if(isset($map['trans_currency'])){ - $model->transCurrency = $map['trans_currency']; - } - if(isset($map['settle_currency'])){ - $model->settleCurrency = $map['settle_currency']; - } - if(isset($map['receipt_amount'])){ - $model->receiptAmount = $map['receipt_amount']; - } - if(isset($map['buyer_pay_amount'])){ - $model->buyerPayAmount = $map['buyer_pay_amount']; - } - if(isset($map['point_amount'])){ - $model->pointAmount = $map['point_amount']; - } - if(isset($map['invoice_amount'])){ - $model->invoiceAmount = $map['invoice_amount']; - } - if(isset($map['gmt_payment'])){ - $model->gmtPayment = $map['gmt_payment']; - } - if(isset($map['fund_bill_list'])){ - if(!empty($map['fund_bill_list'])){ - $model->fundBillList = []; - $n = 0; - foreach($map['fund_bill_list'] as $item) { - $model->fundBillList[$n++] = null !== $item ? TradeFundBill::fromMap($item) : $item; - } - } - } - if(isset($map['card_balance'])){ - $model->cardBalance = $map['card_balance']; - } - if(isset($map['store_name'])){ - $model->storeName = $map['store_name']; - } - if(isset($map['buyer_user_id'])){ - $model->buyerUserId = $map['buyer_user_id']; - } - if(isset($map['discount_goods_detail'])){ - $model->discountGoodsDetail = $map['discount_goods_detail']; - } - if(isset($map['voucher_detail_list'])){ - if(!empty($map['voucher_detail_list'])){ - $model->voucherDetailList = []; - $n = 0; - foreach($map['voucher_detail_list'] as $item) { - $model->voucherDetailList[$n++] = null !== $item ? VoucherDetail::fromMap($item) : $item; - } - } - } - if(isset($map['advance_amount'])){ - $model->advanceAmount = $map['advance_amount']; - } - if(isset($map['auth_trade_pay_mode'])){ - $model->authTradePayMode = $map['auth_trade_pay_mode']; - } - if(isset($map['charge_amount'])){ - $model->chargeAmount = $map['charge_amount']; - } - if(isset($map['charge_flags'])){ - $model->chargeFlags = $map['charge_flags']; - } - if(isset($map['settlement_id'])){ - $model->settlementId = $map['settlement_id']; - } - if(isset($map['business_params'])){ - $model->businessParams = $map['business_params']; - } - if(isset($map['buyer_user_type'])){ - $model->buyerUserType = $map['buyer_user_type']; - } - if(isset($map['mdiscount_amount'])){ - $model->mdiscountAmount = $map['mdiscount_amount']; - } - if(isset($map['discount_amount'])){ - $model->discountAmount = $map['discount_amount']; - } - if(isset($map['buyer_user_name'])){ - $model->buyerUserName = $map['buyer_user_name']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $tradeNo; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $buyerLogonId; - - /** - * @var string - */ - public $settleAmount; - - /** - * @var string - */ - public $payCurrency; - - /** - * @var string - */ - public $payAmount; - - /** - * @var string - */ - public $settleTransRate; - - /** - * @var string - */ - public $transPayRate; - - /** - * @var string - */ - public $totalAmount; - - /** - * @var string - */ - public $transCurrency; - - /** - * @var string - */ - public $settleCurrency; - - /** - * @var string - */ - public $receiptAmount; - - /** - * @var string - */ - public $buyerPayAmount; - - /** - * @var string - */ - public $pointAmount; - - /** - * @var string - */ - public $invoiceAmount; - - /** - * @var string - */ - public $gmtPayment; - - /** - * @var TradeFundBill[] - */ - public $fundBillList; - - /** - * @var string - */ - public $cardBalance; - - /** - * @var string - */ - public $storeName; - - /** - * @var string - */ - public $buyerUserId; - - /** - * @var string - */ - public $discountGoodsDetail; - - /** - * @var VoucherDetail[] - */ - public $voucherDetailList; - - /** - * @var string - */ - public $advanceAmount; - - /** - * @var string - */ - public $authTradePayMode; - - /** - * @var string - */ - public $chargeAmount; - - /** - * @var string - */ - public $chargeFlags; - - /** - * @var string - */ - public $settlementId; - - /** - * @var string - */ - public $businessParams; - - /** - * @var string - */ - public $buyerUserType; - - /** - * @var string - */ - public $mdiscountAmount; - - /** - * @var string - */ - public $discountAmount; - - /** - * @var string - */ - public $buyerUserName; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.php deleted file mode 100644 index 51db6bed..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/AlipayTradePrecreateResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'outTradeNo' => 'out_trade_no', - 'qrCode' => 'qr_code', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('qrCode', $this->qrCode, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->qrCode) { - $res['qr_code'] = $this->qrCode; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradePrecreateResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['qr_code'])){ - $model->qrCode = $map['qr_code']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $qrCode; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/TradeFundBill.php b/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/TradeFundBill.php deleted file mode 100644 index 2da4b814..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/TradeFundBill.php +++ /dev/null @@ -1,77 +0,0 @@ - 'fund_channel', - 'bankCode' => 'bank_code', - 'amount' => 'amount', - 'realAmount' => 'real_amount', - ]; - public function validate() { - Model::validateRequired('fundChannel', $this->fundChannel, true); - Model::validateRequired('bankCode', $this->bankCode, true); - Model::validateRequired('amount', $this->amount, true); - Model::validateRequired('realAmount', $this->realAmount, true); - } - public function toMap() { - $res = []; - if (null !== $this->fundChannel) { - $res['fund_channel'] = $this->fundChannel; - } - if (null !== $this->bankCode) { - $res['bank_code'] = $this->bankCode; - } - if (null !== $this->amount) { - $res['amount'] = $this->amount; - } - if (null !== $this->realAmount) { - $res['real_amount'] = $this->realAmount; - } - return $res; - } - /** - * @param array $map - * @return TradeFundBill - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['fund_channel'])){ - $model->fundChannel = $map['fund_channel']; - } - if(isset($map['bank_code'])){ - $model->bankCode = $map['bank_code']; - } - if(isset($map['amount'])){ - $model->amount = $map['amount']; - } - if(isset($map['real_amount'])){ - $model->realAmount = $map['real_amount']; - } - return $model; - } - /** - * @var string - */ - public $fundChannel; - - /** - * @var string - */ - public $bankCode; - - /** - * @var string - */ - public $amount; - - /** - * @var string - */ - public $realAmount; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/VoucherDetail.php b/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/VoucherDetail.php deleted file mode 100644 index 37893989..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/FaceToFace/Models/VoucherDetail.php +++ /dev/null @@ -1,168 +0,0 @@ - 'id', - 'name' => 'name', - 'type' => 'type', - 'amount' => 'amount', - 'merchantContribute' => 'merchant_contribute', - 'otherContribute' => 'other_contribute', - 'memo' => 'memo', - 'templateId' => 'template_id', - 'purchaseBuyerContribute' => 'purchase_buyer_contribute', - 'purchaseMerchantContribute' => 'purchase_merchant_contribute', - 'purchaseAntContribute' => 'purchase_ant_contribute', - ]; - public function validate() { - Model::validateRequired('id', $this->id, true); - Model::validateRequired('name', $this->name, true); - Model::validateRequired('type', $this->type, true); - Model::validateRequired('amount', $this->amount, true); - Model::validateRequired('merchantContribute', $this->merchantContribute, true); - Model::validateRequired('otherContribute', $this->otherContribute, true); - Model::validateRequired('memo', $this->memo, true); - Model::validateRequired('templateId', $this->templateId, true); - Model::validateRequired('purchaseBuyerContribute', $this->purchaseBuyerContribute, true); - Model::validateRequired('purchaseMerchantContribute', $this->purchaseMerchantContribute, true); - Model::validateRequired('purchaseAntContribute', $this->purchaseAntContribute, true); - } - public function toMap() { - $res = []; - if (null !== $this->id) { - $res['id'] = $this->id; - } - if (null !== $this->name) { - $res['name'] = $this->name; - } - if (null !== $this->type) { - $res['type'] = $this->type; - } - if (null !== $this->amount) { - $res['amount'] = $this->amount; - } - if (null !== $this->merchantContribute) { - $res['merchant_contribute'] = $this->merchantContribute; - } - if (null !== $this->otherContribute) { - $res['other_contribute'] = $this->otherContribute; - } - if (null !== $this->memo) { - $res['memo'] = $this->memo; - } - if (null !== $this->templateId) { - $res['template_id'] = $this->templateId; - } - if (null !== $this->purchaseBuyerContribute) { - $res['purchase_buyer_contribute'] = $this->purchaseBuyerContribute; - } - if (null !== $this->purchaseMerchantContribute) { - $res['purchase_merchant_contribute'] = $this->purchaseMerchantContribute; - } - if (null !== $this->purchaseAntContribute) { - $res['purchase_ant_contribute'] = $this->purchaseAntContribute; - } - return $res; - } - /** - * @param array $map - * @return VoucherDetail - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['id'])){ - $model->id = $map['id']; - } - if(isset($map['name'])){ - $model->name = $map['name']; - } - if(isset($map['type'])){ - $model->type = $map['type']; - } - if(isset($map['amount'])){ - $model->amount = $map['amount']; - } - if(isset($map['merchant_contribute'])){ - $model->merchantContribute = $map['merchant_contribute']; - } - if(isset($map['other_contribute'])){ - $model->otherContribute = $map['other_contribute']; - } - if(isset($map['memo'])){ - $model->memo = $map['memo']; - } - if(isset($map['template_id'])){ - $model->templateId = $map['template_id']; - } - if(isset($map['purchase_buyer_contribute'])){ - $model->purchaseBuyerContribute = $map['purchase_buyer_contribute']; - } - if(isset($map['purchase_merchant_contribute'])){ - $model->purchaseMerchantContribute = $map['purchase_merchant_contribute']; - } - if(isset($map['purchase_ant_contribute'])){ - $model->purchaseAntContribute = $map['purchase_ant_contribute']; - } - return $model; - } - /** - * @var string - */ - public $id; - - /** - * @var string - */ - public $name; - - /** - * @var string - */ - public $type; - - /** - * @var string - */ - public $amount; - - /** - * @var string - */ - public $merchantContribute; - - /** - * @var string - */ - public $otherContribute; - - /** - * @var string - */ - public $memo; - - /** - * @var string - */ - public $templateId; - - /** - * @var string - */ - public $purchaseBuyerContribute; - - /** - * @var string - */ - public $purchaseMerchantContribute; - - /** - * @var string - */ - public $purchaseAntContribute; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Client.php b/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Client.php deleted file mode 100644 index 756e5c02..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Client.php +++ /dev/null @@ -1,202 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $subject - * @param string $outTradeNo - * @param string $totalAmount - * @param string $buyerId - * @param HuabeiConfig $extendParams - * @return AlipayTradeCreateResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function create($subject, $outTradeNo, $totalAmount, $buyerId, $extendParams){ - $extendParams->validate(); - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.trade.create", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "subject" => $subject, - "out_trade_no" => $outTradeNo, - "total_amount" => $totalAmount, - "buyer_id" => $buyerId, - "extend_params" => $extendParams - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.trade.create"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayTradeCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayTradeCreateResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/AlipayTradeCreateResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/AlipayTradeCreateResponse.php deleted file mode 100644 index fae338fb..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/AlipayTradeCreateResponse.php +++ /dev/null @@ -1,117 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'outTradeNo' => 'out_trade_no', - 'tradeNo' => 'trade_no', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('outTradeNo', $this->outTradeNo, true); - Model::validateRequired('tradeNo', $this->tradeNo, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->outTradeNo) { - $res['out_trade_no'] = $this->outTradeNo; - } - if (null !== $this->tradeNo) { - $res['trade_no'] = $this->tradeNo; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeCreateResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['out_trade_no'])){ - $model->outTradeNo = $map['out_trade_no']; - } - if(isset($map['trade_no'])){ - $model->tradeNo = $map['trade_no']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $outTradeNo; - - /** - * @var string - */ - public $tradeNo; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/HuabeiConfig.php b/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/HuabeiConfig.php deleted file mode 100644 index 67f28183..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Huabei/Models/HuabeiConfig.php +++ /dev/null @@ -1,51 +0,0 @@ - 'hb_fq_num', - 'hbFqSellerPercent' => 'hb_fq_seller_percent', - ]; - public function validate() { - Model::validateRequired('hbFqNum', $this->hbFqNum, true); - Model::validateRequired('hbFqSellerPercent', $this->hbFqSellerPercent, true); - } - public function toMap() { - $res = []; - if (null !== $this->hbFqNum) { - $res['hb_fq_num'] = $this->hbFqNum; - } - if (null !== $this->hbFqSellerPercent) { - $res['hb_fq_seller_percent'] = $this->hbFqSellerPercent; - } - return $res; - } - /** - * @param array $map - * @return HuabeiConfig - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['hb_fq_num'])){ - $model->hbFqNum = $map['hb_fq_num']; - } - if(isset($map['hb_fq_seller_percent'])){ - $model->hbFqSellerPercent = $map['hb_fq_seller_percent']; - } - return $model; - } - /** - * @var string - */ - public $hbFqNum; - - /** - * @var string - */ - public $hbFqSellerPercent; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Page/Client.php b/vendor/alipaysdk/easysdk/php/src/Payment/Page/Client.php deleted file mode 100644 index 335a7817..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Page/Client.php +++ /dev/null @@ -1,133 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $subject - * @param string $outTradeNo - * @param string $totalAmount - * @param string $returnUrl - * @return AlipayTradePagePayResponse - */ - public function pay($subject, $outTradeNo, $totalAmount, $returnUrl){ - $systemParams = [ - "method" => "alipay.trade.page.pay", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "subject" => $subject, - "out_trade_no" => $outTradeNo, - "total_amount" => $totalAmount, - "product_code" => "FAST_INSTANT_TRADE_PAY" - ]; - $textParams = [ - "return_url" => $returnUrl - ]; - $sign = $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")); - $response = [ - "body" => $this->_kernel->generatePage("POST", $systemParams, $bizParams, $textParams, $sign) - ]; - return AlipayTradePagePayResponse::fromMap($response); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Page/Models/AlipayTradePagePayResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Page/Models/AlipayTradePagePayResponse.php deleted file mode 100644 index 5fb93ae3..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Page/Models/AlipayTradePagePayResponse.php +++ /dev/null @@ -1,39 +0,0 @@ - 'body', - ]; - public function validate() { - Model::validateRequired('body', $this->body, true); - } - public function toMap() { - $res = []; - if (null !== $this->body) { - $res['body'] = $this->body; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradePagePayResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['body'])){ - $model->body = $map['body']; - } - return $model; - } - /** - * @description 订单信息,Form表单形式 - * @var string - */ - public $body; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Wap/Client.php b/vendor/alipaysdk/easysdk/php/src/Payment/Wap/Client.php deleted file mode 100644 index f2ee7329..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Wap/Client.php +++ /dev/null @@ -1,135 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $subject - * @param string $outTradeNo - * @param string $totalAmount - * @param string $quitUrl - * @param string $returnUrl - * @return AlipayTradeWapPayResponse - */ - public function pay($subject, $outTradeNo, $totalAmount, $quitUrl, $returnUrl){ - $systemParams = [ - "method" => "alipay.trade.wap.pay", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "subject" => $subject, - "out_trade_no" => $outTradeNo, - "total_amount" => $totalAmount, - "quit_url" => $quitUrl, - "product_code" => "QUICK_WAP_WAY" - ]; - $textParams = [ - "return_url" => $returnUrl - ]; - $sign = $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")); - $response = [ - "body" => $this->_kernel->generatePage("POST", $systemParams, $bizParams, $textParams, $sign) - ]; - return AlipayTradeWapPayResponse::fromMap($response); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Payment/Wap/Models/AlipayTradeWapPayResponse.php b/vendor/alipaysdk/easysdk/php/src/Payment/Wap/Models/AlipayTradeWapPayResponse.php deleted file mode 100644 index 1b577d93..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Payment/Wap/Models/AlipayTradeWapPayResponse.php +++ /dev/null @@ -1,39 +0,0 @@ - 'body', - ]; - public function validate() { - Model::validateRequired('body', $this->body, true); - } - public function toMap() { - $res = []; - if (null !== $this->body) { - $res['body'] = $this->body; - } - return $res; - } - /** - * @param array $map - * @return AlipayTradeWapPayResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['body'])){ - $model->body = $map['body']; - } - return $model; - } - /** - * @description 订单信息,Form表单形式 - * @var string - */ - public $body; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Client.php b/vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Client.php deleted file mode 100644 index 85ea51be..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Client.php +++ /dev/null @@ -1,192 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $content - * @return AlipaySecurityRiskContentDetectResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function detect($content){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => "alipay.security.risk.content.detect", - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $bizParams = [ - "content" => $content - ]; - $textParams = []; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, "alipay.security.risk.content.detect"); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipaySecurityRiskContentDetectResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipaySecurityRiskContentDetectResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.php b/vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.php deleted file mode 100644 index 6ffdff67..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Security/TextRisk/Models/AlipaySecurityRiskContentDetectResponse.php +++ /dev/null @@ -1,132 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - 'action' => 'action', - 'keywords' => 'keywords', - 'uniqueId' => 'unique_id', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - Model::validateRequired('action', $this->action, true); - Model::validateRequired('keywords', $this->keywords, true); - Model::validateRequired('uniqueId', $this->uniqueId, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - if (null !== $this->action) { - $res['action'] = $this->action; - } - if (null !== $this->keywords) { - $res['keywords'] = $this->keywords; - } - if (null !== $this->uniqueId) { - $res['unique_id'] = $this->uniqueId; - } - return $res; - } - /** - * @param array $map - * @return AlipaySecurityRiskContentDetectResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - if(isset($map['action'])){ - $model->action = $map['action']; - } - if(isset($map['keywords'])){ - if(!empty($map['keywords'])){ - $model->keywords = $map['keywords']; - } - } - if(isset($map['unique_id'])){ - $model->uniqueId = $map['unique_id']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - - /** - * @var string - */ - public $action; - - /** - * @var string[] - */ - public $keywords; - - /** - * @var string - */ - public $uniqueId; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Util/AES/Client.php b/vendor/alipaysdk/easysdk/php/src/Util/AES/Client.php deleted file mode 100644 index c0881219..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Util/AES/Client.php +++ /dev/null @@ -1,111 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $cipherText - * @return string - */ - public function decrypt($cipherText){ - return $this->_kernel->aesDecrypt($cipherText, $this->_kernel->getConfig("encryptKey")); - } - - /** - * @param string $plainText - * @return string - */ - public function encrypt($plainText){ - return $this->_kernel->aesEncrypt($plainText, $this->_kernel->getConfig("encryptKey")); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Util/Generic/Client.php b/vendor/alipaysdk/easysdk/php/src/Util/Generic/Client.php deleted file mode 100644 index e2b152b3..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Util/Generic/Client.php +++ /dev/null @@ -1,309 +0,0 @@ -_kernel = $kernel; - } - - /** - * @param string $method - * @param string[] $textParams - * @param mixed[] $bizParams - * @return AlipayOpenApiGenericResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function execute($method, $textParams, $bizParams){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 15000, - "readTimeout" => 15000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => $method, - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => "application/x-www-form-urlencoded;charset=utf-8" - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toUrlEncodedRequestBody($bizParams); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, $method); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenApiGenericResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenApiGenericResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $method - * @param string[] $textParams - * @param mixed[] $bizParams - * @param string[] $fileParams - * @return AlipayOpenApiGenericResponse - * @throws TeaError - * @throws Exception - * @throws TeaUnableRetryError - */ - public function fileExecute($method, $textParams, $bizParams, $fileParams){ - $_runtime = [ - "ignoreSSL" => $this->_kernel->getConfig("ignoreSSL"), - "httpProxy" => $this->_kernel->getConfig("httpProxy"), - "connectTimeout" => 100000, - "readTimeout" => 100000, - "retry" => [ - "maxAttempts" => 0 - ] - ]; - $_lastRequest = null; - $_lastException = null; - $_now = time(); - $_retryTimes = 0; - while (Tea::allowRetry(@$_runtime["retry"], $_retryTimes, $_now)) { - if ($_retryTimes > 0) { - $_backoffTime = Tea::getBackoffTime(@$_runtime["backoff"], $_retryTimes); - if ($_backoffTime > 0) { - Tea::sleep($_backoffTime); - } - } - $_retryTimes = $_retryTimes + 1; - try { - $_request = new Request(); - $systemParams = [ - "method" => $method, - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $boundary = $this->_kernel->getRandomBoundary(); - $_request->protocol = $this->_kernel->getConfig("protocol"); - $_request->method = "POST"; - $_request->pathname = "/gateway.do"; - $_request->headers = [ - "host" => $this->_kernel->getConfig("gatewayHost"), - "content-type" => $this->_kernel->concatStr("multipart/form-data;charset=utf-8;boundary=", $boundary) - ]; - $_request->query = $this->_kernel->sortMap(Tea::merge([ - "sign" => $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")) - ], $systemParams, $textParams)); - $_request->body = $this->_kernel->toMultipartRequestBody($textParams, $fileParams, $boundary); - $_lastRequest = $_request; - $_response= Tea::send($_request, $_runtime); - $respMap = $this->_kernel->readAsJson($_response, $method); - if ($this->_kernel->isCertMode()) { - if ($this->_kernel->verify($respMap, $this->_kernel->extractAlipayPublicKey($this->_kernel->getAlipayCertSN($respMap)))) { - return AlipayOpenApiGenericResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - else { - if ($this->_kernel->verify($respMap, $this->_kernel->getConfig("alipayPublicKey"))) { - return AlipayOpenApiGenericResponse::fromMap($this->_kernel->toRespModel($respMap)); - } - } - throw new TeaError([ - "message" => "验签失败,请检查支付宝公钥设置是否正确。" - ]); - } - catch (Exception $e) { - if (!($e instanceof TeaError)) { - $e = new TeaError([], $e->getMessage(), $e->getCode(), $e); - } - if (Tea::isRetryable($e)) { - $_lastException = $e; - continue; - } - throw $e; - } - } - throw new TeaUnableRetryError($_lastRequest, $_lastException); - } - - /** - * @param string $method - * @param string[] $textParams - * @param mixed[] $bizParams - * @return AlipayOpenApiGenericSDKResponse - */ - public function sdkExecute($method, $textParams, $bizParams){ - $_request = new Request(); - $systemParams = [ - "method" => $method, - "app_id" => $this->_kernel->getConfig("appId"), - "timestamp" => $this->_kernel->getTimestamp(), - "format" => "json", - "version" => "1.0", - "alipay_sdk" => $this->_kernel->getSdkVersion(), - "charset" => "UTF-8", - "sign_type" => $this->_kernel->getConfig("signType"), - "app_cert_sn" => $this->_kernel->getMerchantCertSN(), - "alipay_root_cert_sn" => $this->_kernel->getAlipayRootCertSN() - ]; - $sign = $this->_kernel->sign($systemParams, $bizParams, $textParams, $this->_kernel->getConfig("merchantPrivateKey")); - $response = [ - "body" => $this->_kernel->generateOrderString($systemParams, $bizParams, $textParams, $sign) - ]; - return AlipayOpenApiGenericSDKResponse::fromMap($response); - $_lastRequest = $_request; - $_response= Tea::send($_request); - } - - /** - * ISV代商户代用,指定appAuthToken - * - * @param $appAuthToken String 代调用token - * @return $this 本客户端,便于链式调用 - */ - public function agent($appAuthToken) - { - $this->_kernel->injectTextParam("app_auth_token", $appAuthToken); - return $this; - } - - /** - * 用户授权调用,指定authToken - * - * @param $authToken String 用户授权token - * @return $this - */ - public function auth($authToken) - { - $this->_kernel->injectTextParam("auth_token", $authToken); - return $this; - } - - /** - * 设置异步通知回调地址,此处设置将在本调用中覆盖Config中的全局配置 - * - * @param $url String 异步通知回调地址,例如:https://www.test.com/callback - * @return $this - */ - public function asyncNotify($url) - { - $this->_kernel->injectTextParam("notify_url", $url); - return $this; - } - - /** - * 将本次调用强制路由到后端系统的测试地址上,常用于线下环境内外联调,沙箱与线上环境设置无效 - * - * @param $testUrl String 后端系统测试地址 - * @return $this - */ - public function route($testUrl) - { - $this->_kernel->injectTextParam("ws_service_url", $testUrl); - return $this; - } - - /** - * 设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * - * @param $key String 业务请求参数名称(biz_content下的字段名,比如timeout_express) - * @param $value object 业务请求参数的值,一个可以序列化成JSON的对象 - * 如果该字段是一个字符串类型(String、Price、Date在SDK中都是字符串),请使用String储存 - * 如果该字段是一个数值型类型(比如:Number),请使用Long储存 - * 如果该字段是一个复杂类型,请使用嵌套的array指定各下级字段的值 - * 如果该字段是一个数组,请使用array储存各个值 - * @return $this - */ - public function optional($key, $value) - { - $this->_kernel->injectBizParam($key, $value); - return $this; - } - - /** - * 批量设置API入参中没有的其他可选业务请求参数(biz_content下的字段) - * optional方法的批量版本 - * - * @param $optionalArgs array 可选参数集合,每个参数由key和value组成,key和value的格式请参见optional方法的注释 - * @return $this - */ - public function batchOptional($optionalArgs) - { - foreach ($optionalArgs as $key => $value) { - $this->_kernel->injectBizParam($key, $value); - } - return $this; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericResponse.php b/vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericResponse.php deleted file mode 100644 index 825fd054..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericResponse.php +++ /dev/null @@ -1,91 +0,0 @@ - 'http_body', - 'code' => 'code', - 'msg' => 'msg', - 'subCode' => 'sub_code', - 'subMsg' => 'sub_msg', - ]; - public function validate() { - Model::validateRequired('httpBody', $this->httpBody, true); - Model::validateRequired('code', $this->code, true); - Model::validateRequired('msg', $this->msg, true); - Model::validateRequired('subCode', $this->subCode, true); - Model::validateRequired('subMsg', $this->subMsg, true); - } - public function toMap() { - $res = []; - if (null !== $this->httpBody) { - $res['http_body'] = $this->httpBody; - } - if (null !== $this->code) { - $res['code'] = $this->code; - } - if (null !== $this->msg) { - $res['msg'] = $this->msg; - } - if (null !== $this->subCode) { - $res['sub_code'] = $this->subCode; - } - if (null !== $this->subMsg) { - $res['sub_msg'] = $this->subMsg; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenApiGenericResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['http_body'])){ - $model->httpBody = $map['http_body']; - } - if(isset($map['code'])){ - $model->code = $map['code']; - } - if(isset($map['msg'])){ - $model->msg = $map['msg']; - } - if(isset($map['sub_code'])){ - $model->subCode = $map['sub_code']; - } - if(isset($map['sub_msg'])){ - $model->subMsg = $map['sub_msg']; - } - return $model; - } - /** - * @description 响应原始字符串 - * @var string - */ - public $httpBody; - - /** - * @var string - */ - public $code; - - /** - * @var string - */ - public $msg; - - /** - * @var string - */ - public $subCode; - - /** - * @var string - */ - public $subMsg; - -} diff --git a/vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericSDKResponse.php b/vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericSDKResponse.php deleted file mode 100644 index d4f94848..00000000 --- a/vendor/alipaysdk/easysdk/php/src/Util/Generic/Models/AlipayOpenApiGenericSDKResponse.php +++ /dev/null @@ -1,39 +0,0 @@ - 'body', - ]; - public function validate() { - Model::validateRequired('body', $this->body, true); - } - public function toMap() { - $res = []; - if (null !== $this->body) { - $res['body'] = $this->body; - } - return $res; - } - /** - * @param array $map - * @return AlipayOpenApiGenericSDKResponse - */ - public static function fromMap($map = []) { - $model = new self(); - if(isset($map['body'])){ - $model->body = $map['body']; - } - return $model; - } - /** - * @description 订单信息,字符串形式 - * @var string - */ - public $body; - -} diff --git a/vendor/alipaysdk/easysdk/php/test/TestAccount.php b/vendor/alipaysdk/easysdk/php/test/TestAccount.php deleted file mode 100644 index abd2fecc..00000000 --- a/vendor/alipaysdk/easysdk/php/test/TestAccount.php +++ /dev/null @@ -1,45 +0,0 @@ -protocol = 'https'; - $options->gatewayHost = 'openapi.alipay.com'; - $options->appId = '<-- 请填写您的AppId,例如:2019022663440152 -->'; - $options->signType = 'RSA2'; - $options->alipayPublicKey = '<-- 请填写您的支付宝公钥,例如:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAumX1EaLM4ddn1Pia4SxTRb62aVYxU8I2mHMqrcpQU6F01mIO/DjY7R4xUWcLi0I2oH/BK/WhckEDCFsGrT7mO+JX8K4sfaWZx1aDGs0m25wOCNjp+DCVBXotXSCurqgGI/9UrY+QydYDnsl4jB65M3p8VilF93MfS01omEDjUW+1MM4o3FP0khmcKsoHnYGs21btEeh0LK1gnnTDlou6Jwv3Ew36CbCNY2cYkuyPAW0j47XqzhWJ7awAx60fwgNBq6ZOEPJnODqH20TAdTLNxPSl4qGxamjBO+RuInBy+Bc2hFHq3pNv6hTAfktggRKkKzDlDEUwgSLE7d2eL7P6rwIDAQAB -->'; - $options->merchantPrivateKey = $this->getPrivateKey($options->appId); - return $options; - } - - public function getTestCertAccount() - { - $options = new Config(); - $options->protocol = 'https'; - $options->gatewayHost = 'openapi.alipay.com'; - $options->appId = '<-- 请填写您的AppId,例如:2019051064521003 -->'; - $options->signType = 'RSA2'; - $options->alipayCertPath = '<-- 请填写您的支付宝公钥证书文件路径,例如:dirname(__FILE__) . "/resources/fixture/alipayCertPublicKey_RSA2.crt" -->'; - $options->alipayRootCertPath = '<-- 请填写您的支付宝根证书文件路径,例如:dirname(__FILE__) . "/resources/fixture/alipayRootCert.crt" -->'; - $options->merchantCertPath = '<-- 请填写您的应用公钥证书文件路径,例如:dirname(__FILE__) . "/resources/fixture/appCertPublicKey_2019051064521003.crt" -->'; - $options->merchantPrivateKey = $this->getPrivateKey($options->appId); - return $options; - } - - private function getPrivateKey($appId) - { - $filePath = dirname(__FILE__) . '/resources/fixture/privateKey.json'; - $stream = fopen($filePath, 'r'); - fwrite($stream, '$filePath'); - $result = json_decode(stream_get_contents($stream)); - return $result->$appId; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/base/image/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/base/image/ClientTest.php deleted file mode 100644 index 149a4e24..00000000 --- a/vendor/alipaysdk/easysdk/php/test/base/image/ClientTest.php +++ /dev/null @@ -1,23 +0,0 @@ -getTestAccount()); - $filePath = $account->getResourcesPath(). '/resources/fixture/sample.png'; - $result = Factory::base()->image()->upload("测试图片", $filePath); - $this->assertEquals(true, $responseChecker->success($result)); - $this->assertEquals('Success', $result->msg); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/base/oauth/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/base/oauth/ClientTest.php deleted file mode 100644 index 565334b4..00000000 --- a/vendor/alipaysdk/easysdk/php/test/base/oauth/ClientTest.php +++ /dev/null @@ -1,37 +0,0 @@ -getTestAccount()); - } - - public function testGetTokenWhenGrantTypeIsAuthorizationCode() - { - $result = Factory::base()->oauth()->getToken('ee4b3c871f7c4f30a82251908458VB64'); - $this->assertEquals('40002', $result->code); - $this->assertEquals('Invalid Arguments', $result->msg); - $this->assertEquals('isv.code-invalid', $result->subCode); - $this->assertEquals('授权码code无效', $result->subMsg); - } - - public function testGetTokenWhenGrantTypeIsRefreshToken() - { - $result = Factory::base()->oauth()->refreshToken('1234567890'); - $this->assertEquals('40002', $result->code); - $this->assertEquals('Invalid Arguments', $result->msg); - $this->assertEquals('isv.refresh-token-invalid', $result->subCode); - $this->assertEquals('刷新令牌refresh_token无效', $result->subMsg); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/base/qrcode/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/base/qrcode/ClientTest.php deleted file mode 100644 index f8c75bb3..00000000 --- a/vendor/alipaysdk/easysdk/php/test/base/qrcode/ClientTest.php +++ /dev/null @@ -1,20 +0,0 @@ -getTestAccount()); - $result = Factory::base()->qrcode()->create('https://opendocs.alipay.com','ageIndex=1','文档站点'); - $this->assertEquals(true, $responseChecker->success($result)); - $this->assertEquals('Success', $result->msg); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/base/video/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/base/video/ClientTest.php deleted file mode 100644 index be9b1894..00000000 --- a/vendor/alipaysdk/easysdk/php/test/base/video/ClientTest.php +++ /dev/null @@ -1,24 +0,0 @@ -getTestAccount()); - $filePath = $account->getResourcesPath() . '/resources/fixture/sample.mp4'; - $result = Factory::base()->video()->upload("测试视频", $filePath); - $this->assertEquals(true, $responseChecker->success($result)); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/marketing/openlife/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/marketing/openlife/ClientTest.php deleted file mode 100644 index 3b96d46e..00000000 --- a/vendor/alipaysdk/easysdk/php/test/marketing/openlife/ClientTest.php +++ /dev/null @@ -1,145 +0,0 @@ -getTestCertAccount()); - } - - public function testCreateImageTextContent() - { - $result = Factory::marketing()->openLife()->createImageTextContent("标题", - "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED", - "示例", "T", "activity", "满100减10", - "关键,热度", "13434343432,xxx@163.com"); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testModifyImageTextContent() - { - $result = Factory::marketing()->openLife()->modifyImageTextContent( - "20190510645210035577f788-d6cd-4020-9dba-1a195edb7342", "新标题", - "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED", - "新示例", "T", "activity", "满100减20", - "关键,热度", "13434343432,xxx@163.com"); - if ($result->code == '10000') { - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } else { - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('PUB.MSG_BATCH_SD_OVER', $result->subCode); - $this->assertEquals('批量发送消息频率超限', $result->subMsg); - } - - } - - public function testSendText() - { - $result = Factory::marketing()->openLife()->sendText("测试"); - if ($result->code == '10000') { - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } else { - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('PUB.MSG_BATCH_SD_OVER', $result->subCode); - $this->assertEquals('批量发送消息频率超限', $result->subMsg); - } - } - - public function testSendImageText() - { - $article = new Article(); - $article->actionName = '测试'; - $article->desc = '测试'; - $article->title = '测试'; - $article->imageUrl = 'http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED'; - $article->url = 'https://docs.open.alipay.com/api_6/alipay.open.public.message.total.send'; - $result = Factory::marketing()->openLife()->sendImageText((array)$article); - if ($result->code == '10000') { - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } else { - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('PUB.MSG_BATCH_SD_OVER', $result->subCode); - $this->assertEquals('批量发送消息频率超限', $result->subMsg); - } - } - - public function testSendSingleMessage() - { - $keyword = new Keyword(); - $keyword->color = "#85be53"; - $keyword->value = "HU7142"; - - $context = new Context(); - $context->headColor = "#85be53"; - $context->url = "https://docs.open.alipay.com/api_6/alipay.open.public.message.single.send"; - $context->actionName = "查看详情"; - $context->keyword1 = $keyword; - $context->keyword2 = $keyword; - $context->first = $keyword; - $context->remark = $keyword; - - $template = new Template(); - $template->templateId = "e44cd3e52ffa46b1a50afc145f55d1ea"; - $template->context = $context; - - $result = Factory::marketing()->openLife()->sendSingleMessage("2088002656718920", $template); - - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testRecallMessage() - { - $result = Factory::marketing()->openLife()->recallMessage("201905106452100327f456f6-8dd2-4a06-8b0e-ec8a3a85c46a"); - - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testSetIndustry() - { - $result = Factory::marketing()->openLife()->setIndustry( - "10001/20102", "IT科技/IT软件与服务", - "10001/20102", "IT科技/IT软件与服务"); - - if ($result->code == '10000') { - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } else { - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('3002', $result->subCode); - $this->assertEquals('模板消息行业一月只能修改一次', $result->subMsg); - } - } - - public function testGetIndustry() - { - $result = Factory::marketing()->openLife()->getIndustry(); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - $this->assertEquals('IT科技/IT软件与服务', $result->primaryCategory); - $this->assertEquals('IT科技/IT软件与服务', $result->secondaryCategory); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/marketing/pass/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/marketing/pass/ClientTest.php deleted file mode 100644 index 729991fa..00000000 --- a/vendor/alipaysdk/easysdk/php/test/marketing/pass/ClientTest.php +++ /dev/null @@ -1,102 +0,0 @@ -getTestAccount()); - } - - public function testCreateTemplate() - { - $result = Factory::marketing()->pass()->createTemplate("1234567890", $this->getTplContent()); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testUpdateTemplate() - { - $result = Factory::marketing()->pass()->updateTemplate("2020012014534017917956080", $this->getTplContent()); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testAddInstance() - { - $result = Factory::marketing()->pass()->addInstance("2020012014534017917956080", "{}", - "1", "{\"partner_id\":\"2088102114633762\",\"out_trade_no\":\"1234567\"}"); - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('KP.AE_ALIPASS_APPID_NOSUPPORT', $result->subCode); - $this->assertEquals('该AppId不支持', $result->subMsg); - } - - public function testUpdateInstance() - { - $result = Factory::marketing()->pass()->updateInstance("209919213", - "2088918273", "{}", "USED", "8612231273", "wave"); - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('KP.AE_ALIPASS_NOTEXIST', $result->subCode); - $this->assertEquals('卡券不存在', $result->subMsg); - } - - private function getTplContent() - { - return '{"logo": "http://img01.taobaocdn.com/top/i1/LB1NDJuQpXXXXbYXFXXXXXXXXXX","strip": null,"icon": null,"content": { - "evoucherInfo": { - "goodsId": "", - "title": "test", - "type": "boardingPass", - "product": "air", - "startDate": "2020-01-20 13:45:56", - "endDate": "2020-01-25 13:45:56", - "operation": [{ - "message": { - "img": "http://img01.taobaocdn.com/top/i1/LB1NDJuQpXXXXbYXFXXXXXXXXXX", - "target": "" - }, - "format": "img", - "messageEncoding": "utf-8", - "altText": "" - }], - "einfo": { - "logoText": "test", - "headFields": [{"key": "test","label": "测试","value": "","type": "text"}], - "primaryFields": [{"key": "from","label": "测试","value": "","type": "text"},{"key": "to","label": "测试","value": "","type": "text"}], - "secondaryFields": [{"key": "fltNo","label": "航班号","value": "CA123","type": "text"}], - "auxiliaryFields": [{"key": "test","label": "测试","value": "","type": "text"}], - "backFields": [] - }, - "locations": [] - }, - "merchant": {"mname": "君泓","mtel": "","minfo": ""}, - "platform": { - "channelID": "2088201564809153", - "webServiceUrl": "https://alipass.alipay.com/builder/syncRecord.htm?tempId=2020012013442621326446216" - }, - "style": {"backgroundColor": "RGB(26,150,219)"}, - "fileInfo": { - "formatVersion": "2", - "canShare": true, - "canBuy": false, - "canPresent": true, - "serialNumber": "2020012013520759738677158", - "supportTaxi": "true", - "taxiSchemaUrl": "" - }, - "appInfo": {"app": {"android_appid": "","ios_appid": "","android_launch": "","ios_launch": "","android_download": "","ios_download": ""},"label": "测试","message": ""}, - "source": "alipassprod", - "alipayVerify": ["qrcode"]}}'; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/marketing/templatemessage/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/marketing/templatemessage/ClientTest.php deleted file mode 100644 index 77abaa72..00000000 --- a/vendor/alipaysdk/easysdk/php/test/marketing/templatemessage/ClientTest.php +++ /dev/null @@ -1,27 +0,0 @@ -getTestAccount()); - $result = Factory::marketing()->templateMessage()->send("2088102122458832", - "2017010100000000580012345678", - "MDI4YzIxMDE2M2I5YTQzYjUxNWE4MjA4NmU1MTIyYmM=", - "page/component/index", - "{\"keyword1\": {\"value\" : \"12:00\"},\"keyword2\": {\"value\" : \"20180808\"},\"keyword3\": {\"value\" : \"支付宝\"}}"); - $this->assertEquals('40004',$result->code); - $this->assertEquals('Business Failed',$result->msg); - $this->assertEquals('USER_TEMPLATE_ILLEGAL',$result->subCode); - $this->assertEquals('模板非法',$result->subMsg); - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/member/identification/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/member/identification/ClientTest.php deleted file mode 100644 index 6c0bd033..00000000 --- a/vendor/alipaysdk/easysdk/php/test/member/identification/ClientTest.php +++ /dev/null @@ -1,55 +0,0 @@ -getTestAccount()); - } - - public function testInit() - { - $identityParam = new IdentityParam(); - $identityParam->identityType = "CERT_INFO"; - $identityParam->certType = "IDENTITY_CARD"; - $identityParam->certName = "张三"; - $identityParam->certNo = "5139011988090987631"; - - $merchantConfig = new MerchantConfig(); - $merchantConfig->returnUrl = "www.taobao.com"; - - $result = Factory::member()->identification()->init(microtime(),'FACE',$identityParam,$merchantConfig); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testCertify() - { - $result = Factory::member()->identification()->certify("16cbbf40de9829e337d51818a76eacc2"); - $this->assertEquals(true, strpos($result->body,'sign')>0); - $this->assertEquals(true, strpos($result->body,'gateway.do')>0); - } - - public function testQuery() - { - $result = Factory::member()->identification()->query("16cbbf40de9829e337d51818a76eacc2"); - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('CERTIFY_ID_EXPIRED',$result->subCode); - $this->assertEquals('认证已失效',$result->subMsg); - - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/multipleFactory/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/multipleFactory/ClientTest.php deleted file mode 100644 index 7b39655b..00000000 --- a/vendor/alipaysdk/easysdk/php/test/multipleFactory/ClientTest.php +++ /dev/null @@ -1,35 +0,0 @@ - "Iphone6 16G", - "out_trade_no" => "f4833085-0c46-4bb0-8e5f-622a02a4cffc", - "total_amount" => "0.10" - ); - $textParams = array(); - - $account = new TestAccount(); - MultipleFactory::setOptions($account->getTestAccount()); - $result = MultipleFactory::util()->generic()->sdkExecute("alipay.trade.app.pay", $textParams, $bizParams); - $this->assertEquals(true, strpos($result->body, 'alipay_sdk=alipay-easysdk-php') > 0); - $this->assertEquals(true, strpos($result->body, 'app_id=2019022663440152') > 0); - - MultipleFactory::setOptions($account->getTestCertAccount()); - $result2 = MultipleFactory::util()->generic()->sdkExecute("alipay.trade.app.pay", $textParams, $bizParams); - $this->assertEquals(true, strpos($result2->body, 'alipay_sdk=alipay-easysdk-php') > 0); - $this->assertEquals(true, strpos($result2->body, 'app_id=2019051064521003') > 0); - - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/payment/app/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/payment/app/ClientTest.php deleted file mode 100644 index 93f70835..00000000 --- a/vendor/alipaysdk/easysdk/php/test/payment/app/ClientTest.php +++ /dev/null @@ -1,39 +0,0 @@ -getTestAccount()); - } - - public function testPay() - { - $result = Factory::payment()->app()->pay("Iphone6 16G", "f4833085-0c46-4bb0-8e5f-622a02a4cffc", "0.10"); - $this->assertEquals(true, strpos($result->body, 'alipay_sdk=alipay-easysdk-php') > 0); - $this->assertEquals(true, strpos($result->body, 'sign') > 0); - } - - public function testPayWithOptional() - { - $result = Factory::payment()->app() - ->agent("ca34ea491e7146cc87d25fca24c4cD11") - ->optional("extend_params",$this->getHuabeiParams()) - ->pay("Iphone6 16G", "f4833085-0c46-4bb0-8e5f-622a02a4cffc", "0.10"); - $this->assertEquals(true, strpos($result->body, 'alipay_sdk=alipay-easysdk-php') > 0); - $this->assertEquals(true, strpos($result->body, 'sign') > 0); - } - - private function getHuabeiParams() - { - $extendParams = array("hb_fq_num" => "3", "hb_fq_seller_percent" => "3"); - return $extendParams; - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/payment/common/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/payment/common/ClientTest.php deleted file mode 100644 index 81702757..00000000 --- a/vendor/alipaysdk/easysdk/php/test/payment/common/ClientTest.php +++ /dev/null @@ -1,93 +0,0 @@ -getTestAccount()); - } - - public function testCrate() - { - $result = Factory::payment()->common()->create("Iphone6 16G", - microtime(), "88.88", "2088002656718920"); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - return $result->outTradeNo; - } - - public function testCreateWithOptional(){ - $result = Factory::payment()->common() - ->optional("goods_detail", $this->getGoodsDetail()) - ->create("Iphone6 16G",microtime(), "0.01", "2088002656718920"); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - private function getGoodsDetail(){ - $goodDetail = array( - "goods_id" => "apple-01", - "goods_name" => "iPhone6 16G", - "quantity" => 1, - "price" => "0.01" - ); - $goodsDetail[0] = $goodDetail; - return $goodsDetail; - } - - public function testQuery() - { - $result = Factory::payment()->common()->query('6f149ddb-ab8c-4546-81fb-5880b4aaa318'); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testCancel() - { - $result = Factory::payment()->common()->cancel($this->testCrate()); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testClose() - { - $result = Factory::payment()->common()->close($this->testCrate()); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testRefund() - { - $result = Factory::payment()->common()->refund($this->testCrate(), '0.01'); - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('ACQ.TRADE_STATUS_ERROR', $result->subCode); - $this->assertEquals('交易状态不合法', $result->subMsg); - } - - public function testRefundQuery() - { - $result = Factory::payment()->common()->queryRefund($this->testCrate(), "20200401010101001"); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testDownloadBill() - { - $result = Factory::payment()->common()->downloadBill("trade", "2020-01"); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/payment/facetoface/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/payment/facetoface/ClientTest.php deleted file mode 100644 index 01942042..00000000 --- a/vendor/alipaysdk/easysdk/php/test/payment/facetoface/ClientTest.php +++ /dev/null @@ -1,42 +0,0 @@ -getTestAccount()); - } - - public function testPay() - { - $create =Factory::payment()->common()->create("Iphone6 16G", - microtime(), "88.88", "2088002656718920"); - - $result = Factory::payment()->faceToFace()->pay("Iphone6 16G", $create->outTradeNo, "0.10", - "1234567890"); - $this->assertEquals('40004', $result->code); - $this->assertEquals('Business Failed', $result->msg); - $this->assertEquals('ACQ.PAYMENT_AUTH_CODE_INVALID', $result->subCode); - $this->assertEquals('支付失败,获取顾客账户信息失败,请顾客刷新付款码后重新收款,如再次收款失败,请联系管理员处理。[SOUNDWAVE_PARSER_FAIL]', $result->subMsg); - } - - public function testPrecreate(){ - $create =Factory::payment()->common()->create("Iphone6 16G", - microtime(), "88.88", "2088002656718920"); - $result = Factory::payment()->faceToFace()->precreate("Iphone6 16G", $create->outTradeNo, "0.10"); - - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/payment/huabei/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/payment/huabei/ClientTest.php deleted file mode 100644 index eff72537..00000000 --- a/vendor/alipaysdk/easysdk/php/test/payment/huabei/ClientTest.php +++ /dev/null @@ -1,25 +0,0 @@ -getTestAccount()); - $config = new HuabeiConfig(); - $config->hbFqNum = '3'; - $config->hbFqSellerPercent = '0'; - $result = Factory::payment()->huabei()->create("Iphone6 16G", microtime(), "0.10", "2088002656718920", $config); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/payment/page/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/payment/page/ClientTest.php deleted file mode 100644 index c8711444..00000000 --- a/vendor/alipaysdk/easysdk/php/test/payment/page/ClientTest.php +++ /dev/null @@ -1,36 +0,0 @@ -getTestAccount()); - } - - public function testPay() - { - $create = Factory::payment()->common()->create("Iphone6 16G", - microtime(), "88.88", "2088002656718920"); - $result = Factory::payment()->page()->pay("Iphone6 16G", $create->outTradeNo, "0.10", "https://www.taobao.com"); - $this->assertEquals(true, strpos($result->body, 'alipay-easysdk-php-') > 0); - $this->assertEquals(true, strpos($result->body, 'sign') > 0); - } - - public function testPayWithOptionalNotify() - { - $create = Factory::payment()->common()->create("Iphone6 16G", - microtime(), "88.88", "2088002656718920"); - $result = Factory::payment()->page() - ->asyncNotify("https://www.test2.com/newCallback") - ->pay("Iphone6 16G", $create->outTradeNo, "0.10", "https://www.taobao.com"); - $this->assertEquals(true, strpos($result->body, 'alipay-easysdk-php-') > 0); - $this->assertEquals(true, strpos($result->body, 'sign') > 0); - } - -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/payment/wap/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/payment/wap/ClientTest.php deleted file mode 100644 index e66053b9..00000000 --- a/vendor/alipaysdk/easysdk/php/test/payment/wap/ClientTest.php +++ /dev/null @@ -1,41 +0,0 @@ -getTestAccount()); - } - public function testPay(){ - $create =Factory::payment()->common()->create("Iphone6 16G", - microtime(), "88.88", "2088002656718920"); - $result = Factory::payment()->wap()->pay("Iphone6 16G",$create->outTradeNo,"0.10","https://www.taobao.com","https://www.taobao.com"); - $this->assertEquals(true, strpos($result->body,'return_url')>0); - $this->assertEquals(true, strpos($result->body,'sign')>0); - } - - public function testPayWithOptional(){ - $create =Factory::payment()->common()->create("Iphone6 16G", - microtime(), "88.88", "2088002656718920"); - $result = Factory::payment()->wap() - ->agent("ca34ea491e7146cc87d25fca24c4cD11") - ->batchOptional($this->getOptionalArgs()) - ->pay("Iphone6 16G",$create->outTradeNo,"0.10","https://www.taobao.com","https://www.taobao.com"); - $this->assertEquals(true, strpos($result->body,'return_url')>0); - $this->assertEquals(true, strpos($result->body,'sign')>0); - } - - private function getOptionalArgs(){ - $optionalArgs = array( - "timeout_express" => "10m", - "body" => "Iphone6 16G" - ); - return $optionalArgs; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayCertPublicKey_RSA2.crt b/vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayCertPublicKey_RSA2.crt deleted file mode 100644 index fd7c0a07..00000000 --- a/vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayCertPublicKey_RSA2.crt +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDkzCCAnugAwIBAgIQIBkJAnXy/rwX3BTZaKNEzjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs -YXNzIDIgUjEwHhcNMTkwOTAyMTI0NDIyWhcNMjEwOTAxMTI0NDIyWjB0MQswCQYDVQQGEwJDTjEP -MA0GA1UECgwG6ZKf6ZuoMQ8wDQYDVQQLDAZBbGlwYXkxQzBBBgNVBAMMOuaUr+S7mOWunSjkuK3l -m70p572R57uc5oqA5pyv5pyJ6ZmQ5YWs5Y+4LTIwODgwMDI2NTY3MTg5MjAwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDQxh7MsF7bsPyQlToJWOPlmGfqUerZI2o2725LUqrabGYOaAgx -a8OAm6sFXoq6TykRltIBEmAjYjMYudQelwxSv8NhQ1eLEFrY7o2Z3TQ+y8lvlLmvqWnEMzOqq4Fc -UN6gzd1nissGVtzUkmx9ErB+89g6WAKV1bFCZBQHIjzfMIqcZkddUZ4SiksMKB/ncKFOJPJf2CUI -i31URny3WlIoC44jG1SiX2sPKdbkbsSGQcDfGIpNRQBNJxlXX/8Y8D7RrFCWHtjh4ONSMT29+xjS -8HNM0gSR2y4QKXyRupXrNY9yTTtkPhQIEjfSjsQPnuM+3b7VFd3GSDcDbvskNRNLAgMBAAGjEjAQ -MA4GA1UdDwEB/wQEAwID+DANBgkqhkiG9w0BAQsFAAOCAQEAf8Qx2UsLFqPDTxKk9eT0np75NqJ8 -MexTuPJ/gC+Lp20YzEUyYW2rPlDFhDmFztlqk9RdynLRqyjB5dOAdWlxhgDlEqB9E6DvkVKtpIaL -7h7zqJei9gb/STAyf5vTVWR/WTmOhp3vQhaj7+lt14JwK/ELYMdBLD2IdmFis7YdzhCsGo7Y4FPb -BuHCV8Ngfaf2PvDlKaFOVzDg8tGnMBbAOgpe+mhxKUdhNG3eXcO0Z813rNIC15YAvWm68tNAwuZJ -rIVgK+049WUojwUJxOwVyzewob/8Gx7o8ipIV5E/bMrduSvigsj7OmNzwQ5/iSm31dfcXi3fOXXz -BLMb888PlA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE4jCCAsqgAwIBAgIIYsSr5bKAMl8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMjE0MzQxNVoXDTM3MTEyNjE0MzQxNVowgYIxCzAJBgNVBAYTAkNOMRYwFAYDVQQKDA1BbnQgRmluYW5jaWFsMSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTE5MDcGA1UEAwwwQW50IEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBDbGFzcyAyIFIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLMfYaoRoPRbmDcAfXPCmKf43pWRN5yTXa/KJWO0l+mrgQvs89bANEvbDUxlkGwycwtwi5DgBuBgVhLliXu+R9CYgr2dXs8D8Hx/gsggDcyGPLmVrDOnL+dyeauheARZfA3du60fwEwwbGcVIpIxPa/4n3IS/ElxQa6DNgqxh8J9Xwh7qMGl0JK9+bALuxf7B541Gr4p0WENG8fhgjBV4w4ut9eQLOoa1eddOUSZcy46Z7allwowwgt7b5VFfx/P1iKJ3LzBMgkCK7GZ2kiLrL7RiqV+h482J7hkJD+ardoc6LnrHO/hIZymDxok+VH9fVeUdQa29IZKrIDVj65THQIDAQABo2MwYTAfBgNVHSMEGDAWgBRfdLQEwE8HWurlsdsio4dBspzhATAdBgNVHQ4EFgQUSqHkYINtUSAtDPnS8XoyoP9p7qEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAIQ8TzFy4bVIVb8+WhHKCkKNPcJe2EZuIcqvRoi727lZTJOfYy/JzLtckyZYfEI8J0lasZ29wkTta1IjSo+a6XdhudU4ONVBrL70U8Kzntplw/6TBNbLFpp7taRALjUgbCOk4EoBMbeCL0GiYYsTS0mw7xdySzmGQku4GTyqutIGPQwKxSj9iSFw1FCZqr4VP4tyXzMUgc52SzagA6i7AyLedd3tbS6lnR5BL+W9Kx9hwT8L7WANAxQzv/jGldeuSLN8bsTxlOYlsdjmIGu/C9OWblPYGpjQQIRyvs4Cc/mNhrh+14EQgwuemIIFDLOgcD+iISoN8CqegelNcJndFw1PDN6LkVoiHz9p7jzsge8RKay/QW6C03KNDpWZEUCgCUdfHfo8xKeR+LL1cfn24HKJmZt8L/aeRZwZ1jwePXFRVtiXELvgJuM/tJDIFj2KD337iV64fWcKQ/ydDVGqfDZAdcU4hQdsrPWENwPTQPfVPq2NNLMyIH9+WKx9Ed6/WzeZmIy5ZWpX1TtTolo6OJXQFeItMAjHxW/ZSZTok5IS3FuRhExturaInnzjYpx50a6kS34c5+c8hYq7sAtZ/CNLZmBnBCFDaMQqT8xFZJ5uolUaSeXxg7JFY1QsYp5RKvj4SjFwCGKJ2+hPPe9UyyltxOidNtxjaknOCeBHytOr ------END CERTIFICATE----- diff --git a/vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayRootCert.crt b/vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayRootCert.crt deleted file mode 100644 index 76417c53..00000000 --- a/vendor/alipaysdk/easysdk/php/test/resources/fixture/alipayRootCert.crt +++ /dev/null @@ -1,88 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG -EwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw -MzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO -UkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE -MPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT -V7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti -W/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ -MxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b -53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI -pDoiVhsLwg== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0 -MFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV -BAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j -aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk -rUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2 -xAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp -dRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6 -vSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl -YUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1 -Pbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H -DtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98 -SZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG -PsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe -9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC -AwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90 -tATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy -nOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf -tJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq -JSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3 -IODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW -05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41 -T0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI -kkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop -PKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N -1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y -jXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02 -77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi -kT9qhqn+lw== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG -EwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0 -WjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE -CwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp -YWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU -WP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt -rpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ -4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2 -zVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg -wHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH -Rglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA== ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF -BQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM -E0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg -MiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq -MQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp -bmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv -b3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV -nJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5 -4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg -wykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw -WktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN -z+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g -KgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA -uTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp -emMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3 -U8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I -UugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn -DJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU -1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX -Yf4Zr0fJsGuv ------END CERTIFICATE----- \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/resources/fixture/appCertPublicKey_2019051064521003.crt b/vendor/alipaysdk/easysdk/php/test/resources/fixture/appCertPublicKey_2019051064521003.crt deleted file mode 100644 index ad22ab9b..00000000 --- a/vendor/alipaysdk/easysdk/php/test/resources/fixture/appCertPublicKey_2019051064521003.crt +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEkzCCA3ugAwIBAgIQICABI1M0G1IN1Hv7M5NTmjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE -BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs -YXNzIDEgUjEwHhcNMjAwMTIzMDc0NTQ3WhcNMjIwMTIyMDc0NTQ3WjBbMQswCQYDVQQGEwJDTjEP -MA0GA1UECgwG6ZKf6ZuoMQ8wDQYDVQQLDAZBbGlwYXkxKjAoBgNVBAMMITIwODgwMDI2NTY3MTg5 -MjAtMjAxOTA1MTA2NDUyMTAwMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIRaW3zN -ZGJY3oOUL41KMZqcoyI9JyDWG/fyb8qShWgH9NGinO6JeGWWX2pU2b5GKCd1CB6imnbD5U3zvErR -Z6h9Kc9pD4M22MNqnpuFontWuFXhq01MIbuolV5zTw94nrMR4aMPgTt7wX6svcQ8cKyg+v7Xz4DH -QCQOPhtFM3aL1UHsEZhLp+F2xNENTGpphmlV7D50ahnAo3A8Jdkt9ZBIzkWk4CoMdeoYk6BlOETG -XZ93Mc1TKR6cLNPj7LIUKb7xUh4ekaRoky2RP7k9NgBLsZLDjMkqZmzvHHhnstddmq5Er49Ger9b -VHnKsWNMWtN0Oi+ZyWTDcwvACdCgLbcCAwEAAaOCASkwggElMB8GA1UdIwQYMBaAFHEH4gRhFuTl -8mXrMQ/J4PQ8mtWRMB0GA1UdDgQWBBSNSXcCsxvjAa3v5QcTyVZ183CMjzBABgNVHSAEOTA3MDUG -B2CBHAFuAQEwKjAoBggrBgEFBQcCARYcaHR0cDovL2NhLmFsaXBheS5jb20vY3BzLnBkZjAOBgNV -HQ8BAf8EBAMCBsAwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL2NhLmFsaXBheS5jb20vY3JsMzcu -Y3JsMGAGCCsGAQUFBwEBBFQwUjAoBggrBgEFBQcwAoYcaHR0cDovL2NhLmFsaXBheS5jb20vY2E2 -LmNlcjAmBggrBgEFBQcwAYYaaHR0cDovL2NhLmFsaXBheS5jb206ODM0MC8wDQYJKoZIhvcNAQEL -BQADggEBAA0l9rTtjEl4uqE4RP4Nd+A0KgM8NmWQHLxsubDRMSeYVFMzrpSm8V9zhlxLmKdFxWP/ -OuY4SHRe8eOSA++5yJc3ihg9B7/ddK2kNTsnaB7Xtvex685kvDDR8DMZmQYeirDThGVPhUeBgPdk -wY0R5KU6mEh2FzT3QIxDzP6t4ssSyYHhFPssZ4PXHFQ5eHzmdpJ81/85crfques67JxAm4CCfldb -bX0DH1BUrPxcnvz4Kj5lKv1qIvBR71yUnrGFOKAVCx04VYK4dTNDI70W9lLgX1aTfLGUBTYiJe/J -Zq/XlYhQP/T7t8HOAaCQFf2hM9tRq62EaL1UbExV2hcAP/E= ------END CERTIFICATE----- \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/resources/fixture/privateKey.json b/vendor/alipaysdk/easysdk/php/test/resources/fixture/privateKey.json deleted file mode 100644 index 39daf4d6..00000000 --- a/vendor/alipaysdk/easysdk/php/test/resources/fixture/privateKey.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "2019022663440152": "<- 已脱敏,如想要执行单元测试,请开发者自行替换TestAccount中的相关账号并在此重新配置新的APPID与私钥的关联 ->", - "2019051064521003": "<- 已脱敏,如想要执行单元测试,请开发者自行替换TestAccount中的相关账号并在此重新配置新的APPID与私钥的关联 ->" -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/resources/fixture/sample.mp4 b/vendor/alipaysdk/easysdk/php/test/resources/fixture/sample.mp4 deleted file mode 100644 index 26fb8b24ff1928299353599748b703c421e3d5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057149 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%0DXThCjUf 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%0Dr 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�bVi(g#i{6 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%0AO;5+#8$+kYXw&Eok0wF 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≤TcQ{vHBBmen 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 Pxqofnrw`mG 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

>il5P`S= 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

Yok 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

>(m21 zggzN#+iKoF(O>*O=X&>(&-8cJYn|PDLs#X6X@o`gopIH$Ry^C4G{Yr|m42hnIDU0- z-T9;hjmP6|(KY;zbjL5V-M6|Xummpr(0RvF3kO>2U<7?A=?X>rGY9GqmGU)V(PxG`t*MEB>Z z{^8wTi@evTb)!p?qMBOGMFl8T*|rj$f3QNji8M=ly=FL>2j~?CC35Bajm?0Y&|6g4xX=){??5w-f^~sV9BHxsmc0K^% z7xuR1xn`58j?eBpIGVmpRql2gO(vR_ph|XHZMQC@1qyx+9)2iPwND_n)~szg4uTIBdSI zrE6HGH-GT!dho69XgWJlT|@r}=R;ly{FdM=Zlz$#9l^@3^?+BPl-;!^zX zxDY|s5EKM5NiefjfF;5MkvK3KmjEDqX$#zZcY6}+n8!$Z9>sOzQ*WMqRe&G7C z=c&y#folm)4`rbp5XN<7 zlvV^xStF|0@&biJF~t>~?6h$i0|#Esz-8CxfuTBv;!}zXC6I+!Tl_cP!3_&l>qaGw zX#lW5zwpo!U7tM!4;tmKN8`Cx^;f!FZ&a5nC3@&}qe-_FnnT$RCz1l{3dIasrP~?s&Fgf}AS*=fr`^NmeS-Z5{2KV=M>Ys0YcXiS)0Y&rfq zOhyO{fdQTwcmkR|qlZTR|6Z6+?n{dKjQL^IK=`DL`e1v>e%;Zm_fq?Y5~*lfXmP#n z9OwG&`42Q zBXtG7FR;|OcLqP+FbTX!!M>$>AHun{yA59*MBt1#YUbc8 zCWOS{#e8K3NowtVPJ@cmyIL-n8c)WWpgH8Z-DT@?tMz&vf)&j*O#zmAF83O!| zC(;213><85f%0d!VyNPc<#(#=Ila5sn;VV7JVJY(jjJptU-J z;P`Hhv4);-vve-myQi*6PmQD|Iy}+#j=i?87>{VU#$eiCGamV!pgxueC>r84`$km_ zUxQ8}ozdRdw$hz99_!I}zN3>j9xELchLJ)8Fm~V9rI4dc_M!42t`ExcS~E5~;P06+ z?BIFyohRsq<>Y9=sBj6Q7?`yT%-(+o`fkijx{w(Q`t3B(RApLqFmekRF<2Uh~c#TvDB={>pO^229-)i>@3{2HcU z1rRy}$ddt+L|I5Ro#ra0u*Qf1VqqK_qi_@*!75nCiSSW#2JN15rAgKtcMaZ&fPwZQV4>~H%pWe|lEwws7S6xii5|~SK-I>nxz3)8Jaz1mMfTSS& z&uXZZLcR2z@!V+EG<}#*jgTa$CecONYn0K4H?-d11yN#no*!GFoz^?8u3u^Q;<;9n zxkhE9c~xq8`MI*|uaw`%a2m0v0{I7NY zTOT@enl4FBJi`-(R%&LCR|j9XS#Zz`7AhyF2GIfy17RIYxEXSA?~Dy+a%kcfYLxcH zM{iAj@5C(54Vt7qhd#wYOQBeyl142X&W_`ho_jw83IpzJfy7FXK|DYctyfS9kq6*^ zcY&nbfme@M(wH&yKIC$VXxuK7d86rkI`kn3n*Q1rSg8OBlRBf^kW?fQ zT0HR)gnQFzOfP~(uE{o6UnDMBz`5d%d_@R0lpjfR6)pa!fsL{2~^*~ST!_PrRSqY*`JI};TZ7J*fv?=VD7$kW(iP9DU z5;1|w$SKOA0A-A(pVMukGH=zG=||7$%k6Xh`1^0_dv86}aDH)>AXJ&0xqR#2z$T+kX|RO8o@OeS5YUDv8_D$%+tq%}_pNyZHr7N(I&%>z!96& zY;^TS8YagWu-Z{7oYu$Bguu}2X|jqMmT371fac85Hpq1#bei$H4)RI+Z} z6P7#Vlewyk=VpEn-u#w+_@Dn%J^kRG03ZNKL_t(n2FnUVjPu38&ahTYYbYlax8qV9{(c|V zi?v1j&I2w;&=KU$fQ$2WSVVYS4li3B^b2s&I`mNVI9xrEdMG5Qa6{0cK5eSTFk>L7lS!t6 z>~u16SxXF5+`<+FG+iOF5CDOVe&fnb&u}AKN>M*QtWAQ+p%f4!f^UsD7!4SBg4-j_ z(mU?;S^#lIH^)UGF!+7Y1mkx5PToHVu)UI&lqjqXYUqT8zUZUA6ng;n-omL(g(Enu z(N5d`Tt9mIH}&}GGZiRtbf22dtb|!na5Yzovvn$WmD=6fz!Z1P8x%L52~kkEZ$Y3A zdPJ)nGH@B`jV8}8yl^8F?*8sDwHXHOuWoj1m>&0LQ<*GHYeA1N!4k|S6om(>q4Hm? zj%YQ$;ji7tqztkLHGcHA z76f1GM$@aciq%fd@kSR-t_JNWFQVP4l$K zwcoFG^zs+VE;7Bm|Gv5r*}#qR&Dt#+(ZVs2N!ueZHzxgmV5|rsYPh2r?RPtMS?>BX zXOG|3d%ym>`s+XZXG%fPBxW^{i3*KXjp33SgVrg+*KN)-_&6Qs~N@Ljbk#;XW)ye$_diMQ~^xkj$ecgZeJ5HP- zpv{`oP#Fso>(Z`-Jlp^gslp-wj!7FkAVa7c#F={K6D%^~D`=dd!E=&u(D1@dL_DLI z=FYe!5a|*cL*SiK8+JFq%s7O0p8#q=mA_GGbYv|S*JZ4MZ|Ad%W#uHW@P0?h0J7DI zA9!52jR;Vp41?z4v!M>cNGKVO1`h-lTzA(uuCmz?+_FGz9C*LFluk~MMEuBhzZt!6 zHVg)eNBDJasy!Pg+SXCtprPp4KGlMf+Mu$iDhZ0l=oY4w*!2qv4P_J{JDve|1`F*_ zX*#y&0mx*Lp~W+o$eK3v@!)6o2jv7$1X_`fwdkhieLN0+geqo&GOL0Hqd5|}HjYD@ zs+c~RXQ>ic1n0O%XkeX#@S`>mx(S^SpaCRRYFPQCmmWNLpp(1zl#UBG^%(wt*CXB79(Zzg)(=*O6^s#+<><6W><7qBbhAb&3Me@`N4a^8(E^0tcY3+ z``h+k@%PZ8xEM|0;ETt~Gm|!03xSKKfghWKPr#8PI*e3{b{k%cn=c0j$2|;jLKpzy zBKS%snk7>#EW}DgylqpRm((GjTBAShGd)UnnoMUpK3yuGP1Q{ciNu5vb*P~Rs*Q0d z_Uh)w-RX|I17*6d60MZ0q|Qp&D0kiULRB|bx}}k~Y4&E!-~55UTekTRW+?*+n56AT zhJmo)ATS8pz~VX3A?NuW@z$#!CF+WRu+hkTu{_c9_ERkj>A^{%dv}k0O`JTs`2PdfRHXPwf*0K}4Qlh1&}@1QMYxbyV;4Xk6)A zXLnuxHk*+c2CkC&^m9#{t+J++#`G7Z8`MaBnW}c84n&PxZI}=A;gdrabf*#f*VGnF zeIC^fj~+kO$&+`r{`}`sSsBM~MZvBu2xDYblrh-vJh*F6K4OI_a)u9{hxz{-0Sc4k z#d!1^L%phcdA zJAiT@cDe!m^~S=m2Bn4U#w?T|m=Dz_fd>;{B`9cJDMsg57%mIy+PF468jdeu-k!#d zqTwJQ&%>g2(3FEYoF**g;c~2HYnXO)Smp3v9H(+HG8W9T(I}k|h&&Mdi>(oC?Sz0~ zAm%WweWxLa$X=0Sv1uxmyV@>~!)Slyceg-9Xhc8~m^9@ZY(V5Fb`UVGFAzwXw7Ye` z*+4>Bg%KmqydlKm;(XElEa#+=Waa=k+H+Vdcw9mgh*js)w!D%|qh#cUNTHTV-3UKi zXvgqBgdr{^lvtkaEL}(d)G5m}oOtGoK&R#s%Y|^{+`|?5pEX43U1*|{#nOq42xjb3 zTcoxa_-sIZiH{O%K!`h8j&j`&2;xDAL^J?@5%U|8qO9%2%HJ^g!$x4{99xqL!t{WB zkmAfhIII)IS*v!+@6_g3Bzw^ME)EqBqsY@v4e+JGR)mrNsuyqLvqv*xPz0(#A0UO% z?pYWX8YbxaFBJKy647KETO#Swink?0JF;|(-^zgHA`o5F(P$b9364CbwK^eMb94xd$w0;B}8V2Z#`SMKpXf*3HnOaS!T-9_p1wmoK%v_*BpG zt?nJa=|EhRw_p!)rPC7?>smRn0GcS!ZHzyY!8SpnP##u($<#%jm|S-|0-L~>cH zE^6id)XZ#g?~&ek_s9Bl^-9(Cs~EFC6IBweS@}>i21*|U3$umD6a%$rtu=LzR&!c& z0cdAW_KSdpP#rJl9PV? zEc7y5fcRVqyy8yb#B+)*0c?44z!@oM5w0b$h|k=CG_)`KqR~=^R(llW;tY(Y*5+Yt zFmof{hO_5@=Wxg!DkE5mre(Je=hI+Z^D+dMgVv0Vn|XYpvf0eHp9BGd4aoaQt6++Z zo84s1Outr2sB6!%MtKNBgkiI+Z?|_K8i@0JJ~a)zeg;ezK^@jQcTIGd;<314=)Q)V z692l(puiLJ)HQ3i1m;-h*mfTwGK#4e(~{7JB8Z0VWJzGbG_4s$Z5zAJnED~Xia>q< z54>8gXie40i93&l?i**EGmD@DL1bKoW!@kt;qE9OtQuR78_mZY8-RS6piAaLe_$U) z?gv9pYMmBy9W9m`O;IAVn?ib~CH9Fi_B0b2yQ^4U%p<8Qb!S-5C)T|Mw{EbC^QC$2 z0TpTCi-~lM%coHGa;KKq3(~$J^L4MuvopPQ)N7ny>wI&qK6|8gbmg9tQ-`U^ zhK&P+mg7LSC3XxQdLtSh3_i}bne0G7L65w1C|1Vjh685JGPD9~qdjIXhnb3tfl($A zh~Uq7y3pfi&-C5*AL{!*c~{fP$mk}um809#B_XLv4%FS6X+}%=z;n8z`%&LdG#huC z7bBfkm6j`?(3Y^S-OK~uGbOd|zWbqet5;fm@z>gY{#PpI z_pDX>09n()&C=QgM_l^<;UGaSydZk?35wYnQ$0Ar{5P~wQt@lj%PE-F`ezgn@)+!n zz!jrj@BiI@q#yjJzpMEhkDM??Yr4LPgPY(qx1d3H!{Vf3A}cE2 zZZ@KAV=x##jRpwg+l z*2KDn83zeXL4}OT$yLY)E@2#lzdu%!affU;{O)s(g-!-=St~!ng^6XfH{=w7xmvGu zeDB2W5*RBQX?$m>5rbo`F1EE>b&_7>1j@YEv0>9u6bu25QZ(|>U=a~O1c#%y13_Eh z-c3V4;7EgC}VAcfHVoyKIIXGIGhPR%aM zM|d3PH~=VzB6oqA;r`SH8hYw_eJTCIXT0;?K4MdJ&}*oR)K@xr@`e`6r31%aUr=fe zg-{MXp5rcA8SYqIzKkD!777fCAa)#9nk`WjjS&tZ;sX{A^5U8{@`o zzIl^l22o&Zo@6c%2Eo9_AQE1c{hk(Qs%f{j+G(H9Z(xglimwf=$HCX(aH7R?@R$gJ z7tk8ka0phpApp4XPTO{;+3rF`UF)*kyEgN7B>hFz>fi2X`svv-y~<8>G@9sov{w(~ z*;UG~cgB;p*+@t0bA4yo>b)asK+kP;kV$s3ZS|sx9;R8=sGHBVdGn5r{xX%eX5oV% zVxb4ufVDM_DQgkmy%>(h^V6_6ev@C>_`$sA9{zI(3!h`M*hXm9wUI6PY^mS)J3rJ9 z-@UK5p53<}5jd!00rsnt%^El__G&-4xeyZO0bTBFSPmPo*8K!l4g6}SQNGi-qX}iin_i+M&{SiZeoWQpBL}dW=|ovYS>4*uO<<=vP)Pzr zgC-j+BQ#e0hoQ}vZg1ChmEoXIe)4y<`sz)6{C})eU%gOq_RtAp}2k_&Ec*2fcOp)mz`U*e&?SkS)8iE z@^cQz&E~14n2M1ep#cN^Jpc#HPpMW2c))&AxOAk#VAy`YR2*C2Bzo0x>0A`vB`#TOVL z7Mb0JSO_5?7$@~&mD4bX^0C=uWQt7 zH`=VPykIt&(fWM~LVLftKkr!sYg`f+W0OEcNHZpgbn%KuaHtvUmp}hZqoUWciw;xE zEZ6r=CwgN()^DC3>CsW4>v`eKH`RNkRj2;ERJw`-I-W?sm2dPo?{s&8AODVy^N|y& z#^=}S*E`o7rxD7EO|&(L=FKX_%Px~avxiuWR0wV|ToDJ3Uzh?qQTRBmzFBi%_eq)n zIO*#U9cbj#Na;I$b^c0^mc2fF`%I4>p1QhSR}D3|i@7wLyVw{#bNAI+DzBAouas@B zq>_IdC3P8r!lACe#n2dN+EfY5dNMOeId6MCc<_eK-hM}ux8G4SFDy{n0=b01O^ija z+D6-asum`8@E?vdXK#{y>n06gzHzZ(5xVwC?sBS-Ea~7dI?U{{+^NF150l$>8qd#k z{P=x6{jL8@vp3#TyLstaI4*I4*=j{(*aM$V>u6>=6rF=mJXW4#lNDknwghqn=qRN) zMy{GT8IA1{^SYy)(}L}dCwlXHKT&aX=EfK)B_;+h3}ZBd!uvy>gRP_BTFjN<#J|{g z6d$1doEt2ebWDN{YID#L=YViZYGeumR zFb7+ZoZb*V+#8wYh51vH%8&NIGL7-;BUDECeTUD6&oDC9DZA_h9O_yPZmmIH z62sx1xNt~dLzs{`O^Z%SaNM4Nn5*XtP?|UaCxU``ZpPEQv&0Xh zDqNHd=fU_}hWG3~i;u?V+2aa6n>*I#42K%`HSU(&%-t!2MoM)~>H!I< zh^iaC@qDdno@<*;^uyy!zcp!eou*o6sg78jyj2N8B;>Q zO{O##Z$ePxW%A&YK@12Op6jR-Q_FYXD$69~xKTZUq`U zhguc!6~~AM`m}cLGa2)btWf;KQ40pG61PR1IOyTPDF|qj?M;U*Ai}X$kW6TO_KwB8 zC~(Fhc4APVx;$lk`Ui{KK5}>)HHBcxSQQ-R@EP}1jOE4_93dPiZQwvJY}soT!U4n! z0tn$lu|mh*tppMm!G8|IgXiFCrNUybI^Ao%+Un$_jlic}Hms&MCYE(@zcu|{C&fs! zoIb!g?GJ3tRQq0^KEKe*&tK~DvlqJi_@OFXUOWrFL-`aSw%1#`gt;ksFrZk_a0`Nz z6ex3CFY0PBUJB|B9S<#lSQqgA#>9F3*l&b2PLJ3hMvbrpY*KT;Sre<)!+byj0a=7u zq6lL(K#W5Gl2YbPPxOG`HHapd_FA*~Tse?oXoAZPP6%P*C)*Pj^n%65Gprs%-u`PpVQS%%Pdb`qgn!Gf4XaN~JK_O+Xmj0Y*X^~S-0-f~ez!NeWqzOL z1$$ACh=C*|pdjsbt(q;B1Uuc`XL|3r*ZsWHOV9vysupcXohDhY(QfO$pd>?0o2fE< z#|hn5d0|yh|MXV+ft2y+ILu6O&~nV|hbdcY_{Q`j-ao7z1nipDtP)xwjmV`pmQy{v zJJVW<9Udh2K>dV$l0+f!IkH1eBTHJfn{a>jUvwQiOx^^42QMl+pbN&IUrJjAPrN25M zCHBQM9Oq(S5QElYVvnF9!PxQQ*a6lY_@9I19;R=?o`CA&P~AL*2Mz;aPGqNsMsM(4 z(5r!XQE$Z4b$MX+_v>mU%8j*d7{CBH;K7XDK{P8}v2Gkl_6z2~o409aqh4-1C> zh?#keFf!;Tg2OidgRS|qzK`!0LTH$EOw)oBC9M`vYN}zP^>PmjD};^X2Cdy%b`Vja zvaSVWmXZ^Ubr{CYt<5M|g-%*da!riVO56k+p-owdi&s~=IKOluE+4R)PscjoMr-H} zM%7agYZjtmDcM(Ti;=@}*s@^T!z%i2VfP$v9B8l*&WEeQSp&$)>pWZv>G1L$t-uAX zAqA-*YgP~AcAgHx8fM&@nWq@-Nu%+Ew&7gMKVE$I2{;Tmn29a3$dTZx*yZ>Hh(7o_ zp)c$Z3zwUF#5FE8e2`eYMF7Laj36F5&Ugah^Wn2hoyakk-UO4}25Q_4?T~Cu769ah zwmUVOl>?ariftG?6Z!fp&P$9K0z$LI-^hleCGcOQ9FPv(tG%q$RE^3k(Z#CP<(DfR zAI+4$d8)b_*+qm}&|mM=SG}f}J7w3MCbM48rltPj{Z2>Moxc3)g+5tSO3o53n?#RB zy{fcUwYpaR)hlPt%{DZEhA{-z-$6Y#1plPQ(B>cGJ_4WN7P8+9WOt3hetKA~k>pojcH z7*Sbkx7%o0(CUs%Ae(Z^=S$uB_K!W@um186wfgy=`STXCUP`M?K4{Qw2#)~?0znO- zBsdH_(#MP-YaQqsYSp+FIxzO@S98!V3*es~=hD3+at0DgEvW+W zk?i$qz1GkF`fv2=%NKgs2XKS^z#W8(g6CkQQ;88o8jFJPp{y`X;>p1P%|xOmj1RXB z{{LWt2t9g7hhha|Wz_h^aU+Ey^>rSFAY_e5hH7lbM@+<~)?rfK7p$f5W|)tqNmK@K zO_>PB(gT))IOF-;xOZE)1F=S*X!euWEoVkchtNVlB0fd-J`W^cz-Cz}IanEOSXq7p zi0^CTyZsURgt^mvI=EF3npr%WeWG!n>kQFBF(se1SSW4`@#4E{>Yb|H&=T!6QSPx> zIt_Sv8&RGB5XdCUH73Gd@70ym)ZI&0 zopiC$?;N-K=$|h1&T*%Q<63v9GKlJ2SGvBwP?dE0?PR7qX{DciaHh*{q?eOge_U0{ zx3%W11OHy5Rm`W@n=rtchLx!s`T#meLyQm*2WDrAqi-omRQS3r<4cX<;EIORSTv5`s>QadslT`y&xR^OB?a0g9h;$r zTKi3-iu556TM~ch7>^dC?Q$_Q8$8()%F8*wLy8T*9pQ9rxX? zQC)7eqa7iI!dOY?r@Yjox8Bvgr{B_aaiVgEpBK%RqlR$eF5$YM*w{g1;w(6go&s=9 zybsgic`zMolvbiSq_D}%ozGyRXnEe#gq{m~yIV$J=SP9)qU!YsojIUs^s_rz+QiFF!0&kNHP0f=LwY9pTbjQxkal9NPM31M+let|VD2fDdQROi7z*p072Zbvm6-w0xYaJ(=nhE5B+rQLq1K zve!pQYYH9R8S5Y2UFzYqQPEWDtGy%kMc!+X^mddkTT<^>Qpdm}L6!Ncv8< z(x2u#SLI~Hhq$ZPe$Wtyk(mjQ{foPa_xNXoi`fxtj0PW;j;U?;b9t_uxNO}X* zrPB3<_8)($)t4`H_2pkEFDAPC&NCG!_ocQFi@G?bRz??+P8k zl&oEL%2B~+;E;`mK$5)f6a1?P7*sBVfVGjqB?Ix1cm*NgMquvSt!BqlL)$!F1OsTR z(OApJZ)tjbx8rl`001BWNkl$%q~Y)@a=a7RDRcbGt2&;uv*k z_z3B?b?ZR<*Y<%M2^^ikxF5s8w`(+weYeqtiy*5N1cbf=v1oBLoMt{0(IPJ*>c!xe z07V1S=tvwQa0+4t);yeW+)BiF66&lYIDosFUWW{1XOzMOL0N^Rfv(E`UO$QyqC7QW zS<lr1d1E^=WSQ}P`^;k-glNp@nDn>I~ zyGH4m8HRhDgfx8H_+FuvfIJRGzEV&-tQowHjEaLs7p|%BXbgd00{P4#BNj2Zsabp2 zAB7^(xasXc^Ae0PwN5sijHVi!=3tLw)e)d*&L_G?_+Y!c=!~g~p?smE9ql%%%CUvA!8hIUffE)gxoo z$S6gH#dlA^GR*c&i)Wc}#JkIt_GP2$iRD^5(;OHr_rROUO5=tZFVj-{HiZh zwv}f4T1B$3o8nLjbPO}0#Rcm@8$eS28;~TS^}!9%QoUAOGz6Lm-t}p;Dl|k7)emzU zEIT<8LmiUr=tysT_#395%b)%$wcE8*^%HRRSUF&&Ek}d6VWf8T0hOfPVAU8??S2Pb zkJZ_>D&`YswjMut;=*Bkh9IP=G)UHN7~DJ_A1*Hrq}@uP9fAz9K%zu9?nLHEkk_?? z93>0*BweoT-wA{fG=B)(cn!2A3p+&OgM zoKS=e+8+>2+$e5#cxW(5o?*O1Fd%zQ@Sd>egL^PI3MVWS9zUJ^{3eq>Xg+50x7MF8 zwExZqEGSU25JMY3NH{JsE*TBM``0R^N?#cS0DtCRaO+_XLt+G<<=Gw>Usx~>C^X0W z{$P9_;xPoTTxq{8wOO}rx{E@4G!2u9JG6!`b;k1d<6JMRkgovWch- zvmEU;cT){I(*zQMxzL|>E-ZsewasS<5O^|K2SKo?tQR;X zP##>>am=x{RR=4gcui0hazdzsoC!xqyr5GW5uTl)9Kq<^V9n}dhl4I zVrD-z?ndVnvaj?hGp?I^4BeduG=vRg(=fyxJ&uEjLmBe+L&u(PxK+&Lf;zk$ruhTZ z&_4HAN6tD>$AftE#a^_ycW@s_?BKtR^J7cVRX`z3ga&II+UVf!j)OGpgI#Nb+c9<} z6flZ_p{)}iBKBm6CFrYt8Lk>5-4Jk?Yw#ul$It>hjjEVh5P+RW@eAb0VP_6w#XArg z&5UhT*Sc7j`m>+?T<7P{?Y;qNWQ0!_Km_xs0f9q)1J+9i^Bc<^l3${7S3 z0%UKIW0&TkC86(v+t2G~o!;B+LjqsL0`f58{PPIEVDO9_Ld3n|7vDpu4R3_IhPMZn z;0ag2w1zwR{0=?}52o*lsrkNB#{wvh8!s;7X9yGNzu%SWH_;H8di3Abj^SzaL4-(~*l{TMUIAH>)`0|Wq7Sbw{E}OkBpW|xiG@E5w+{^WE zuIUIrSCuF3$MmNOJ!04T-t1T>ePvgI+pP^*WN1CWLF=@3(~iS}1r>y@j)%n_FS_Wk zCInN5>Ak*gH%j$u>tw$?>rPs9T04WaE^=+VOWnDDtcQ>88Oc!ZcN%3gk=N`)Nx#l_v@=YORBG2s;7>45mDpOf{PxYcU2%GgVTpRe$w2 z+PwT+<@!@)(-UPUOV!y}>+w?O<1<|>Cdyx2t8FOyMwp$#RumKiLr=2|VkHneMt7x7 zrS=I}YJ_K4I!uIRverrgDg2pTqZA+TW@A*ycsx-Kqpzw!X&|6r@}oq@Pv7&sE`IhW zy8QUh)f0a~%A*xSM_5K&-%yUWQAv#&c-=Xp*dDjZg<*VuhccA>z2|i8W)%;(P*yj6^g9x@pA-AmRagwJeYM zADVI~m2f=%gHr-s#Pblu7JL@&&R*vY1rOOLins-zfJ3uqbPfbQY@xSLRRC1LIC-YZO2+I`4tuw0`ez1zz!E!r%|?8fNM{ z_`9Duhy%=PG&hcM3{&=D(6#^-b0O4Be;s{3K){ZV&RB}A{Jk4oi#0Tc>J?R76Od29g3!<~HbAT1a z+6|xc=CfIQ3oL|IKiaEYSGvC> zZLS=@Hg3M{TGw^0;^;)vX%Uti0w2FCwbB#m=*c@8O&2QeJ=T~1@}HX#Q-hnA>m(td z`Pc46-FHwiXs0 zqND7w>&Wk`s2YfX!9p-&3C0d>Ac#3f!~mc##?Mw;L%5l)iA$8D!VoK(Br2^JHS4qEm7ZH^(DC{Ix9`s&K( zYc$GKEasX_=PLWXuCHIItT!&zjvL6OAvovm=oauwlnNM8z1ykGGwrrJ736gIHH>^< zV3cq0+U)mQZ@2pLtLOUa%X8g(V{Q!{x?e1gYze?0ET+)li2<@pl;sBBOhr$llBDUB zguIE9@+hMK7lMDVCNw6os?8Z`q6-`Q$$9O@Yzi*9h`G=!1673`p)i>josXNXMP*r+ zw~p-`xIOc`ecAFzB4-5pfqk&vBQ2E8CXpmJ&g0YAe*G1=+pR?OevuhEw=HqQ5ClstC@4~aMrueC z0tXGaYqY9MjllaF=@83297S&r&@5iwP#?j}#g@>v2nMm@!xi!2;VXySMCbZHt*V+7 zj6jKui^4(7CZC2jLJk3bdx~k1K#>MduT3w#Ic>$#-vgypk zgfay^P+*E)1WiE=a57C{c$k&!WGDq*0yJC#Z8_P^XrE*}kDd8Sz;FBNxte^Uem2o` zHdTS!b3D`1D1`uvZ7&srTW3P=^kNi*|ZQ`rqoMQo43@a2K)xcm$P~tS8A)|?BV;828R*n1$G5Pp0fHcmz=k-vnXEJ1sYEiO>p6IROjeaL@ci$Z_p6On~$0nXgn3y1+4 zaDd3PL9$)f&rBa|SE0G`q;SrP1Lro);4pk1A<2f~0`iR_(W@*}*$k!?XO8|H(R zV;1U%2dy1;BZ%s2U*T}nM)1mcj+XYrH9VeeoMf51K=FH2;IsSAeq@?J+aKEXT4U1r zu!MKU$J~=(!I?z7_z4E<%(Wr25%?c|TCy=&JHY=;su_G&F?W>rmZ^WYYPDzGBxpkXtmFY~= z#a)e#jw7QLu0vKEc?U*t^lqKkq1i)eJ}?v!t5mP9)YmY|z^cPQoE3O+saG$aJ5V#8 zFO?Tl6A?|2$4+7jzkAn}+OEkR4xhD(shI-nO|k`n>|A5bPfk=vS_~K7e2#)gSyn{dc?6r4Z~#Zz_$dV7>;Nc0kvrg`&_&8&%WZB$51~cH4bbdiK^}n*Kd}l^oE0G4 zNm$Pjr$E^_KpA7qPIdRK4%$0&8#KN_vG9K3zbC`kP)saDV73Ffd4+>2A;TzS2c6Rv zcR1NFG~yO@tLta6mp;1^^cB!5mAE|u*ss7}rrTXnicYsP2L7Fe1ax6Rko5c|VJZFv1uA6EA3-;J*E zjd(w#fR|;IiCz#W8b)04++v}8HZq*nJj8<-WW#V z)XY}{J!Jm!t8ns`$o9D-jRFb7GsCq4gJYpWrzJRLVZ{Z^hK2XHPGwc8Zb$^jT^B`? z_$$c%G>y#+{L-)T{Qwg(<`_vWq28t)&rk0&Z8* zt;Y3F4$C}@*D$uI)x&Tj$PzT;Ks)M&*NU$QldlsBM2T#mdLF$Ou69?t|MZELch58< zTh&BK#~mygn@WMT#>BPngWYPC)Q#gG)zzh{)yA+l)@^eR_tbsYqNWFHP0Pu$GF|p#vTIQ_5>1Zp z==9q^RJ*;_>hoV}^XdzuX=p`=>&8r!E4c@Uu&OjZyQkyFZ|d~fuNnGDRZ9EgNhTrn z9HLAk0}`f60F!b6Foo`5nGPDh8-FnO1Ml^=v)j?BiThaxIJj{K)R=+UWQHO**lS-m z#KT}ZJ`)jWMcd;%0(d~nGn^KRB3s$&8)p&!c!X;0qh`Kbe|x~J-D7d_cNC{s5$I@$ zU+gy8ZdTS~K-3h)OnE-icC*p${L&3PMn$1?G>)Vs8peYxBFIg=j=3YSX?$WBYpZg# zbqQj-Y#4jmg;MBKpBWK_tS3qC&T^{N*@?zu>Q0e1GScwUMyr@>{eD*BY8E@2|r>8O`!pqy}pZHLK76t|W79j+` z8v^8GXg`dYxPfIyqP%gz64m4#F#vr2#WeZ~*iZ=m^P21)K5q_zJ|DjiiZT1?5e;x` zzl}G*!ZmgjrFAesZk;AKql)Pmio=b9WQG~T#D@i7Ku!>$F~l$ixG&^_>DrcCo1$EI zz`EP)^(x0o$Jg5@GcY4a@M|NX%rWSPm2^IaCNL%(zHdj(hXo&FirGgS5AXkw_QGmEM2)BOM(bYcifiCZACo_|_q> z=u_)p-f(u&JgJJxY6<%N3c`rBF|8EESy5{iOVWvN|R*-~0g z#=7(1j+SSq9(PY_e-qUwV}GN&4xDU+IXs!Eaf~1!fVNnM3Hrce2@Zk?-wLY$OEJ=f z05ur?&?G1lZt1-)n4RGb$?bScVqBz=#fZR%Su2C>^F06c9p8C(quZdphB?<7$swiSR4z8 zf;F3r?Ghw0Z#>C0pUu$%F)my}36}9iD`g`V}wp6Dw%&n?WP6RSZYEeL@@vq}a2eeTWS^1MTep_LFpr}p!DReGKXF9aEz4b$iFz5ar!MYCW0 z+$?R#U=9*j@|$%hib)Mf5DTtB1Nf3U9;e3|FA9+f9x@HLS+ABrF5?>-KciWbtU|s1 zZcA}85DtlY>hR!ygqEpiF&V3&k|GI9Xm$$-eXOJX!op#@-fD{LwKxXmLOii=(fgllv!$ap9ESkWO2b2!KKByi876&9n2vU$pVRDid z@4zf>4ErYOP({}3*mbu#oUA52I;SJ**3&VEB%N9+ao^xqE_C|Vw_QClU!H062mhm* z%}XWY#ldn`mV{-Jw6&hT|06wk|NEM9?XHZqb%yF;Prcdd!GzxWtp&o`n2R~fF1@hC9#Brf^$0Ea5A*VkHIUAhJ1bTrePSWBK; z5jg+yb7e`bV)nps6cnKCcB_87bwC2z$2xGy3ak#2!SE4NWwPHnkUKv*HsfUtM)V-a z=}HD71X&PtyV`8^8GV)ePDiu3?kpENK3Zs=6;PVgyA!u2zJI&QVoea{FlPE;IJqnzsZQ3;q-WhngrUg?I%u{&`N97XE|7q8KJW-2 z_=z}qUv77eCy{go4O41(Osr_xXnagPsZgA7-$C0x@Fu@o-U8hm=pc|m$dqvRagJg% z2q3spJlAt^jU;Xs`8b|2zaGfjEXj1s2gBcHO^pN0!Gyv4;04=)m?F}T0OKwZp~t66 zpamuj!zA*b;(B1@!vU}10n++mol-l(M0EE=M?(SF0S<7 z{mswxgZTs9t)A%Bd8^%qzNgZ=-#*dNaiOHhw5PDy`C9px*E)Tl1uzibYhaf_nyBb| zt<}4N<+iT0tyfy;I2H&jtQQKgG*H|i^tixmeXvAu-?#*9c)qMn*jV@naNa>ZbX`$Kik@Cff#?(B?M|KgoR<<*0$Lc6oOp|uC zhD(kUg3~c4BcmX2P%%LN28JG*EP_93|DZu*epA>iakKOocao4O5-tGfY47YoOllf1 zqg}H0ELJd*q(`fiile0-eCJ0F6#w*p`fpu5GeKff@&F!rxzW*^-`3e%?`ZMhAq{m* zijFb+o-lImN};LN2|)ybI}&e9woC{O5?YSE;5;zD15dXF(^1!-L*y|}+sg2>z8goVP$LFR14sk89FMsYR5L2JeJV>U%UaMYTX>z(yQqXs{6A;U8y|%A=j5aaN zoh$@DB-lG@diB&$8mx=;^DF5=qn;k6X{y;?x-*^Vi|uAGqR5Bn^?Y6H)5|Lhp~>+? z^W&)#q8=TcsQzN3>vL+yhtdFFL}@}$;&DK;hu~-#NCtK+7=kmr%m@#zYpOL=-; zN%<5jsc>@Qfw$4oEO^S-`AU+7EecKY!d-pHc7>OsV441`AcYXHGBI2awfJR14P)6v zIaFaiOz%d6=VBhkamIYyXM6i=30FisG0K3J&BpbyxgL{=TG<5K8ZY3j4$O0jdWYz6 zBWM=57rmbtIs-}myJGoaiNbtexd4(TtBKGs+eZVsgFHL zbamP4)shNHcX;8sZFo201QjffSD zubdrg^CqouF}cPKm|ad}{BJ=Sl+W&6R|s?jN1FyL>=^ZoVW9OlJh@MzPXfp&0f$_1w!0LDz#)a?MCyaGK`whSIVZC5lxMUo2 zAgD}QIc_@BOdL*XocGqG$WFzgnkpf?5gKrO2pqHhBX&GsfsLngJ^H~9B>h+V7?e9Q z001BWNklHqrQs{wJuU;A8TeXe&t_+8`TC-WnhPNtrE2#tUMAGm;-#v!)=|1OJ# zP@;(iU4V=Zfo_KQL+}ot5QMBXt^-rCD-V1-0Zx3gQQsz%Cm@-j<%bpIEsteFTZ2zy z3t2mZz&KL?5ulBz;}ZD)gW3_9zN`_4H3UJRYT*AUB4!sv3Mrr4RN7vjtJ+>UD|&po z)coYkF`@OVOI@EocOY{*JyN~itJ|@clQA6+is&+|cU70vz76 zYXoK=^lJWs)rU}mPkrNc!{iU|vq&ap-zfZpK6C@DXiz7@y<%JC>o>)v;Xnr!AVH@f z&7d+6Hg0Si4C3&-(8g|mLmfJZ0Q<`DG8kiT51$Q^jHC#zD{Hl7qPk4At>-$PKhkgB zd#XFrxpu&%fMwC41!luNn%rHJw8-@RzSmLGdSMVCaa1|GARJP7Obm04wYjDa|4!AW(*9`ahfx3v*qAj@6BX;( zy0&>!mD=sDwYfNVJOkGXNfkC5;Z_hY^M@4;S`~~6OMn_3ydV;^-3*ry-Bb>#_>6Wu zRpQe)1W1YOyMYSxgwe28@j{REJW&bYFZgb(Jh=j!qpT& zV@h|!ydzj_a_{!4R%`8#7N#?=_OOIZ$DROA4#G>c0AE0$zmv>0pG>rvjkTBnq0P0N zjg%Ya#Z=rU&+CUG&^ECnxWI^$xZqkB^<%g@X8?8u@FVsFcNZ=mtSJ+#KQk57ZTOJy47l8OuvNN4^(U7I0@KXsH^mRIheKN7BhS00n+@?Deq2gTgVe2xyNp z;d3;M&gUi)`@G2{uO0?I2%b1`@#f!R@-Srrs+s);agi-Meq_x4dziG$=U{4ZVC|OT z5{mibmj?sPXNKZqXl%~-i#7GYZ^yQNTy?LhM!K#VU0>lJEtR^+ z)ksM;GUE$kgx>+WuGDW!)!U7>>nl;*E1xV>jwpD=Ud0J=HAJ?+`v%X45e$|lK`S#3 z$ZOD;89P2*mwE2hQyT~54A-&2lnLN`vxf*Ch!8?xOoP+VbPl2Thq$*lj}3%o%}Zl^ zn46fM&<|ybdv|~0{?uAQc*YvF5IPKv9=#9+%xdt5TVplxWXf?{5bSF^b<-0qpMG2G z7e80hQOjkb<2T>d*+Xj7Oouy%riFrL`el5K+nb3Hi+SK;uyiwx;*%gq3qc-|p2GEF zjccG6;t+PKa0?i&-w(|Zp=C|njG0msp^Uu#`M3>e6j*m;t@55v3ULW&$Z|Te!~>?& zxwcS>wc{s3j|BMQe1UJW-(j$}fP#|QN{t#A1wr-Ma%p$Tx?CAu2HVZYg|@3Jm1HCv zB8%&T+k0+Fq@U93z+uxzsHJ?~n-}tim9TKGkwQ)AD$s z#e5OgVV-C*BTE-bL@5D{lc~bhe0WpBDl}LRA{g9<3T~IkO zDbIEJ)rHQlq>FW}(>E5XCdWFicdi>xLe5)n(QqTx7v~#YH3aE;El*~8PpM|OFFNVE z&$QB5>pase*+v>QadxZ^qgo&o80%r3Ui%J_yFSIRZe|L%e@8Pt%n+|b6zarB&QTet z1zFgTAW^98Q(bLJtyWv@t6JI7*lFpuykp_)A68wfDL2}0u9cLHCX1!^ld)^h5DSSV z#)9db_(H6NH6?96O{VI};Bky3%-P&EzsaCwOnWO~dk7!RenkEA)WX|=M@-@|xaF~{ zOgi>r%{=%ApMzNugyS?iM*z|#F$--5K|L^S+&P$;&eXFPBpR7Je}NvB(1_hl&`Y>F zm=gj8mxmD(PU_+BTrCHYpTE4;=P#Zs?F*f~^N}+br^^#Pdgoou??1Ev!o6gMVGAqv z&&*&*Yp;APf!%S)gH2dvAj{JE@Wfm~;8~x?B4M7m$`D$%3I}?J(UbKGizLg{W2cEc zV$6TMAsR264=g{$xLD5!O2@h30Ky=Bh8&PjT={WF2e0i`^V2i8=(NVmLALPbeqn7f z4s_Zb$d`*(^wM+k(0I8}aeS(-45SSbIV%b$)U7YCU4FueRGdhZ4?|e?^aC|xh5UKp zPO0CUFzO)q2*+vs!jBAv)7(H z4H!L{>uXR|p}$gfwQ*e?m{KRIIZU!tjp-+fCK^q{GQfWk&2V{Foiqguf<4B5m_vx@ zL@mIBhJ7Sf0!JTq#agy^!0$QEG4M}cVJkZBN!L0$X0h+1ym9qO*JA}hfe`lrXJjFo z2hL#2*7Om#@mHt}al;NmkERIrmrwKM8?SF@@}X*?LGubTnp>go1x}gY4#$BiCDfI0 zR_9@5Sb(+(O@7dVDKNC_qRFpaH{TcpPa~*+kCzNQ;8hM*fxj)85a^mr^`Y>-mtwBj zeyi^D&!v|W75hTPX|KP!*y)3`*VD%f``wF4sy(%}_qncCrJk=!XX)i_sWKVs-}Mvy zRWj4_WFqR+|0JtSFa)xirVd=TpLaWG_R+BBJ!Wbw?u|qqm??6Njo?_(WWbWm%L*aJ z-w5e=JrNR=kxi-7Kh}D^)AjXAd+LT{N22f@OoZ|c4pd`ek_tZ=D?dJp;$v4=>dVqZ z%(la1_|%AkV#EV#G>AmBA_E!3dWLHxvj0pWFp?oQVY8FKA$?@6lZ6||!kx^&WTYNJ zn^mgI9o-&6WAZ_Y+8V4FA`WI0bQ5qj&`em}m;*UMJN)o4dg`|z$Z*G*h*>=p8nmql zVpAk+zo!95)MY_%5zr?&ign#?uJwz*`KA8PfAL59*MIm2dh6}S`pqBzSWh0mrMEu# zK=XTd!$&*Rl1CFWpF(bgc(ayNdi|(^8GGb`U~wR{SX!HAVV*NK&Q^z?o_p9`!;YaG zu=k;5qSMkMk0_zFV}gX#j)%u{&|%j6V=Bh%QR_s~w`d#tptFvxdYBttes686t2Dny+uPuj$a0 z>%rMvXD2hwL5KB;zPegFxSGuqv8fA%3E4ht`##L!%=?*8J;aZo&Q{vvtMv64OZQ=)oE zr0bGK#h5abBPZ7}ro+qbJ9FE(XGdHN#&0)YC<(ohUP!Ab@CIYIMeexM;ZC>T&E!pt zelN^vD9E7wA;}>QsK@TBJPrJ9;MgH#-tY@e4U?(WuH2~vS3aI91%UzP+}ng{dAL3f zGbVfF1O}Aoa67cSs;iuiolemtIYeEQH86r;rw7NaN-`^(iSC?Dv`nS>IM?ZM?qWsT zT@3(5FTPmod==WstlemGmg`UYWBt#gWBp8{=%VgA({nw@#_mwl?{=;*H80y14xyHU$SfI2o zsq?bce!X&80xD&KAGdup#39Ta2(&uNA6cfH%9{Is8Bx#+dI)WfX8}vRytvd~|Mg$!PyW?Ew{`UUfABLcmvjnBjJKu( z)%`c04G0x$7fxyCVFdsDeGp3gVhSC`WWsf9>UNJABfp_3qBZk7Lex5sa~$G;MD5n0 z2LE6ZQqsYel_8II&`03e7C;obVt+WmxW*V?jAsxUu3nj_={l{iuho=0H^`XZJyo%w zu?m!PI8E_cf9OxB)0st(9wk+ZLy%>fbRGly_M znPqP&DCf1h-B%{ed~Upu6db!f{Qe2#CIASYXSe0B)*%Aug&=igNKqq)s<_a;V`-Fb z9!DMtBOa{0czS$2JPX$s$H>~dy^fy=Gaf>A2T)oN6|q=|DuX(eCWi?4s)8lbu zhyARd=+l0z7k#FxOSP_B?Oedi+u=skHAT2?Ua^9aKEj}5RQB6Cy`A5`@j~VD|9pAv zpGoFcKX7ew?$JoKp?heod?XAr=E~;-GKE!2U}uPXun)8cBuGre4Whvf0Mj8J0tC?a zigEOXL?R)jl(W#*g5A8U&+Ym*Hg#*b9RCS!@ft%c!zuz8ycrvua)c@O>t8$j-r16 zt`Fe5&0f25qnccZzSV^C)DwCPpvl9aB1V844^!yiQZsF!Xpo7Ex?#Z-!A;H$8RRYp z(Y299Z037_$`by`bh4Q0Xgb!2J^^%|BNRj;7|Dy1MEMNz%88^ z&+)nRK1YmmElIAr-?ejR?s=c7#;&d&-EFt$*_YwN!U&rW+hE}1 z&dh!F z`>%+7@|-$VZnrUX+nJ?Pd+*GM$cPmY|FvSpinXYs=B2O64hti(EDL-*Gan;6V267O z$dd=KS^CLQfaVB43{*u|s{yTJ*gpBuUn8N+^SL^VB|cH~(CsmiS=M5!-zr9ymVHYa zYc^~(t?}<&&Zqyb)VI#NMB6lZY z=<4YR1}%9tkRf6z9U%i5bx4-B365sP4ucUF15CV@fV)v}@X8N03HOI^VbI=14Rl!Q? zAf^Jmi2rT;=N@{Uk722%{3tza9LC`nWuaeYJY#dsvHL(Q1{4-Z>OCq>zHl0q zIm0lJ?L1}h=NHt|YFDm}c@f};#7m$1K1qrX8Tt*NhpB}j#><%Wyi@NJV{y|t-hd!B zo6oednsM%--?vuQjk8vn*`P%S1rRbN=d-!Z4n{T~u@hz1Tidku5KoV7xx^qK2(B=u z<30Iq!sIbyEO7c26WJJvit?Z%GJ%X0sANzT&fP@`%~;uREE8F)$(RAD+V`*JcrH(u z)=61ywYBo5ZPuR8UfA2G2b(7Z*M0u|*-32v+`AGkUJSxM-FN<#eh?=L>G-FpI_ebW09E?hcyQZ${A86xP>%n3P7ME>Bx>@d7|_JE^5dh6So0fL>MH{e1-_;9_}Oo zp#$eI2OyHQthM*N*>1yQGzHRh-cDmEiiMPEQb43JNKhv?zuGxdh%Scm@hckB*ZHh{0M3R^-Y=LzOgR8&~ z3jv|K@=I3>k8`%I9!EVRFg-2M?7*fRD5jfuGNio{zxj5u{m?V-+R( zhcUIjamF5b^V@B>wrMwRT(Q@@@lBSG=XU+kFWHSx|4)}hkfaqe6$=&L>(EAI1k_M{ zHc;i0hsJ6?IOs@%m(*Sg;JAzFqk51fvl!RW!J^rrw)(h0MXptGgJ38qp4?3@Y6J0l zWoNd98Ajpif56Hs2zKK_IiJnt8@|=+SgXe=RrJ$A$_&-exM3a^tZesfcCc@a`NZ18 zz75Wvvqp>fyi3cc#Acn^Z2zVXgEdo5$EMcCweq0j^p=&J`+;#4m7kSiu50X2J?-l` zA*c(#Wwph5h@4d_ea_Tt+OTZcdNZ+g9C;18Hff|rELmB=5WGYN5LgZ6S}AJL*-qro z9(7l9frX8uD!9O=Zv0B?{hjIPcLwi#VzUWoSXHgc7V; zbxbGk`B4qP>rxK5sK#W5?P284H0BT#)+Q{|Tt!2P!gN$KIB;4_WO7G*PA2j^&pq-x z+<{ugK?^7_p-Z>IKr$nO5!jC&IVbXuUN41|^lF-*i1TG)-M-nG*~Iev!1i|MHs9a3 zzk6!OvhTUePMz*pnWa{=I(Fe=V)rEnc5#1X?b*max9r%myRhWB9oxKl-I~*-Eq4yA zHR#wH68t!~gYm+)Co}6=W<;=~%5Ej-2VtDp4m<)M-Eaa&a<3@Om(|#FKuDLF%Mo= zPI^NIEgSPqg+W8=({Bbhsv2sqvYzCXTj$Q&52`?T;tKM&Gxo!IiFf*(6iHb-(&6Jx=p7un@#67 zouY%ksWTWU8-rSAI%Y;-ow25Dv+Fb7-Oz*;uJl7>L?%x}UrLReHGWnt6B+$M{ujTu`V4n(%J(j?f8 zuCla#i$i~$Vs(L)mE=k)mm1II8~PV6!ibk3%uvld{xD_HZ<6BWg9<8Ak4Q-`TdGLz z>wsht4k|+Bcr|Q^KRpRQg;s&6MiF3e)hx9V1DJPHiB(U<34r4?7woX?(YRF6&gdyi zXRx&5LAX*up`62d9JQ{|$VLyvz^3u+_y+}1sDK6y^}@nIevwJ*(j7a%Z2Zyq@qDDE zJG#bwHb001$r3IQiV5uXcKdg)k|^(O#ztO25Ih*J#;v48_ceq06ngu#T-a7`VMVsE zr?Q4!+{o;I{m!LzPcJOb%=X($yXWlE?ro3k)NJ1x%eh@Qvq#a@7iM>j=ZbXH*q+!< zH?b`D12wpS9Z#pWH=o!>aC;2teT(U^6Ib7$q!t~R{5eppP?w+3F^mz&OnV(NLJ1;3 zY25*vgeiM9a;uQz5R8Bqp$u%Z z#4*W`<+;LYWChF(9VO37%-!6fm2AHON=3CoQfA;XfMEi@F|SDpEd@0GE~$ce3HLb( zh_FEzKOMqz6(r-7lh=}JLuZ6yLMQlq(+`9$73aELZDO)=pf0pV!VP`ufw9S>dEnLZ z^5}CtK)M5{+}R#(1K8w7T1`1wjHHVSUC85E^naKmeCI%xqDaXPkn4Y;Sxyuv9h!8D zDOYg>V5k&DUmy%jZthqE$-kA^`nkKTGuV>1*hK*NIUD)qRCe)rnnYd2*k#Nhc@j{C z-ee3GEX(E-%ZP8#%%tKhr>F+O5P9PFRR@QV%7wM8tvNm38<{n?t?Uiu-+v~b$BE7I z#I~n%8E>FQ!srF2Fe!7JP3AVA6gC=1{ zkZ@W&UK$?!2wj8PZ;pyA+@Q}{Irw<>RUV0bEQC@d@KDmNm*&~(HlxK&FXJtptw;(Z zKn$)*#LV?JDikWEvFYDw3j7e^0en>w#)-TZhgwSYNDbXJhO02+8;|Maxy>onCBYlC zqsyRn<9gx02CX*^-D`EJ1Nd`_58wtAS~J4_74mn|DodNNnX}AYZ@DVRNlv9!e`s!5 z)|RCXw6F=pGmh9J~;4ic51+|p4)CGu~ss( zZZWqEuZ(nJBeQ)=Y_T`7=Jh>G_r^NTy?L{+$*gZT)3)vBOWR#w8aT1EK~M|_5T-Z~ z8MQM2mjl}&QR#^Y&6C7XajGH3O~#FaT)Vnv%k9Ybq$ zdhR6!%YXpPbOK|-6rqVvKd9DZ+M&}AG6B;H^HK%*=GZ#qLu!{3uwX|XfR>dTF=j#N zLplQ$2uUtw`*79>)g(q}fi>wqbNVoWgan4Xc#*Hx)z%pT#>9;Zyd>VJnyFXB`k)aE zLYXP0vg^xA<;beSd5W*1!^uhJfpo-Pu1{6u#lmu|EKm=%GfOjk^B{Hm>PH2u7M{bu zLSL5%PVo9GJ_ilHb@&uW(ihM3V@CnqRFe3i|WgKDsmfb-?U=3Z@u-NwYmdE z#lkFkI>ATJRKEC&g4n@+4uwNY0t}dqfZbI|9IRq4N^OTF3sx@BR`GPhl9#y}{O)pc zT-Hz03MA6^Bi;8pJsU604)!P7v}SHiF%6dB>@LZ{Q!Ms48$lGV?a984MsrKbzT6)) zG3Uh62RnI8kTU|iq#om$@eLt4JUqJ1ih#Gr&OOfU`WKpC)ElYkm!Q2+oS07*na zRLFO70Ed@L7i3pJFP*%X1b^08R74nF;y?koyH6)CAGIiIXvGpJ!7x7`0d~lEMUo4@ z!u;}D>3?A(qg|83g%3?Zk0>GhQT9rn>Q@)(;+-(VShD-r4kJ1~KjD*R1^Q`%;$Mbk zJn9*Cf@v(=m`+l2gA`jWN@c`CVreX;$is1VO=utR%w^)4YH1!OHiAG8NvOHB8~Cy4 zHm%>o&opN=@Mfq`KicrX7MX}v>(;O?_Ocv^!4!=oNn&eQ2rdf+Fg}=01#+>4bZZzA zN*~z0nnKVLo*!b(szI?u)h7FQ_OQqVAcs^sS;=M)G9&H>i0%`fp|5u<0%yLcxst4- zP;8ulP1t?MEDvy(t6>~i-acpYk0TMs& z*HSwOK&(LJ>xIu?yRKCMbPoNzDvH$t_XL=(_osMf5-#C%W&j`V`1qIm1(&*&A*j@( zsxAwiXvKvvs=2J!SJ01T*7Rsm`9ekp?spwEAjS=xk_{_9MmD5izX4imlbKZ(eTd2y z@gBj$Pn-fcEHC5*vO<^wM!>0284eWIPLR?Qo6K| z9>U{dW^H^$raei-+M`4Gg9bWx;ObuJ7!F~(js^zK6^Dy{1Zr2tn6zfByl^H)(}O9c z28?qcM_M#6p+Jq{z>`^x!oy zWJ61Oed}V1#iS_aT86cfrk!dv?KP~HI&GV*_iQ=HtZbWIJHKYH?U+4O9GD&4v?~Yu z)^4|0n0g&zo#{5mEI*v&ni}sT(XWzForIbqcGb~mqIbCElMMRf0=8*$cF6>S%pW8< zR3%{`H`~_4Q{Z63nuDRN3ed-N+VykvW`aU=3bnCd=mCB&W?-|wheT_ct@Rz**j{v<-;m( zcv)zf>&R&|I%WiX^yAu3fT}_=aX|H@Q7iyt8ddKDEKt zh7nG$HC)pnAU5|2QjR$;j7;>;uxvr4mEsLPU)xTP?gn5VvK%e@G z%!L*#y9D+!gAIq0Dhy0nbz0ng3ZWKcB_3A_8dGdA6u#PRcIaQn5sjpP4@$@U2*XH2 zGSq8jrph=80y*jEi)#IS;2(~|Ba%EX&`VezHE|M@DMApEwB{(%K_C<<*|bWRgu3+u za&OD(Qly)s3+w2Zb$Pi{EgZBsDB=a|C*6g>;2Wn>Q01byB<3F3mQ3cJ2NRoA+DR zp5)eRHf`7$+i;F|NcgEXQMJ^H4fZM@{+|bGZtap#{atf zdxX6YtYg?9g8?W?yi4`)ST?BhB(-^hx+pOMva4;JK&9`2FeZ7UwD~e;KiEoz2E;7P z_eY4=>9PqDpED=v%U7)iSQ$>CPenhM@Hr_es~Xaxf{}U-q0mesulGKs|JLJ zAk7@o-dCZdX`rZW^+cQTbS#N5(-6Z!>FMy0vWa(C50JFxg*E+P@*ZUa?K zmL}F}WjX=el&90gSAZg5Vv~b?o8Y!!v~Oz{@3P*;Y2Wn5dJCKN#lq&r%o(h_BI+cY zuL$L{$oGJ9q;^yyj4>SmVIww+L>VOw<2MDc*b3#C#wzxZzR+B&@neYJs0PhgE z7&pUCTdEkfk)Y(5{Sw$4u*KEEVriq<+?b1}H#TjW%?vNw<$h_MB(VuJ?PT&YiVGA@ z+ymq6AxNdmS%M&-IvC=bnF(B~zA~dkuLW(r^TYoVX+zJV#&*aijUZ9B#0X`s(pHcg zlmj7NEJ05x5gMQj%G#+lCq6sUwp;WGADA(+w(@zw3!%m8T7gWsEA=O<1-CHsH32p9 zMpA1>O22hDCwyM%E*+nC`?j@t)=sUTk`#$tuakTM)^NZd51#=26{!g8QqFG{bKxFosKSY#zeZ0kODo0+BU!SWeOs?5~|ITc=Uj#mUIZq-W!K z!)9~$`Utni2Ti`1E6UBdk=W%$)4p7$c4JWD)Y`_qwjJaRJ2Rcwtep4+!UD8x*ui{e z>qflH!w%OnT>1}ReK0=g6`$5L#V0Q}ZYROh4RB%PEkGVKN-R^bOp=Kilb8WZZ)Gq+ z4M`mUlf@IXDBa~VGn7rI0yS2V*|d$3R!cEh3mkKmO<5{6lTuP7hn<*QUTFu`e3@F_ zNNv&TThVL@{FWR9!;upD_9i;U*ifXP%!(9KP1G!I{)Z!|EDsW#%J*(%>ylRIA+F0fBQc}@Jq03j`xx+MsO(FY^gxpCPRlYMKJrLEm_(Rv$O+UuDr4zO=9 z!tC2@wBvLeTYAiI*(hg@;VxO=ow&P+c49NrrF<+d12?dD`=JENKH zkES-=ncGHAtl7*mHm`*p4NI8=tU%;p)6H`=WI)6qI7r}8_B_v zz6RJMa0*nzvXS}iYDVunga%wNv&V&)m?sOZ7z$Pp&0UY(xqM4;DANfp4wU1J)NfE=Yma`McTH;#+s!7If4XJ!&P^! zidcPNP9SY~=lE^F3wvb%9uI+dK5SUq;T36G(s707=!B&^i$Wj2Y!#L+GU-calE7yQ zkd2j;RHww)W#Te{9eOo*0eu~W!nH7qS!gT{<2r5RIbX9eR|vb;ux8FAreFPl7L!Tl zuc6Hjv>fzes+x&g|?5GhZSP%O(Qy^vKMDL{)w zvGS3H8cSOpHz%qWx`U&aqHF1VLy-0{~YipPSmZqA6~t57U-HL*sy;8BI=}GcE-L zj3vw~n{uMZl1t+fc?3Pa_LNZdgp=v*mQ+eOF~cV;20xEN-z}%b@`UEOZ zn${{B){^xIKBb!4yw7nB{CcVc}X-> zuq>_HY*{bObetJJ4_ESzM5+p#{?rKW*Z|;tY0uo{lqTFwAi~6!R2(EP&2LaLr~*Xd zqfG<+N+h~`p+UuB$8}VwCD6C}@?H8&2@i?2TMfIg*056xv+Yq~W7IEf!X!(Zu_=T5 zR89uYM%J25ZPVIzxt&=zF}sm(7+~ z&NUW7Ha{!Dm})c?%awYwzaRq%g21CDVdGZ5d76frN}(Z{ylrG$PO_!46e6#KlaCLq z=Q^#14LI7$xsCQtx0qu|aayn(fT8cGucDr@aX`$tu^6!Ll#n z`h;7ks~fJ{reBcO{oIL$7e+#K6Y6J;TL*0U^g0}3w-y=J*GGkv6C*aL#pEd2o3U9tgJw& zIiSKJA#BN$#0Kre9$t97PH|IQ6{HN5#Cn6StkJS!-?Dsc8`uP`kJ34>Cg;Q>#4g!+B0_prhfYhvjRfUMH_N`^{MI;1`#8|#(i@OSfm7!jkm)gbEv9c#RM{SQR-?uCj;nX^ZTm1mdEQBzsTCY7f0J>K9Q& zw-0O2PtOBA>rqya&xmdVoRjEqc zY?3(%J*mG71*;x%S_{zP`~4a2z{#V19>M~$P~}GGnDC*#lVufiL(;e>(Q~$QSm7k4 zH3?qgtW8k~S*gfIp1wa?os)mXM2ADif+z;zqeObNJ`M_iI)f4y z!8tAs{BVriv@$d>D+CO}Qbv+&+O&-b(`n7#L!f)8i|7KQV-rpo zkM0@F3p0&33n#s8lDT1Y)SEDHj1A5Th#C5^c{%ygBy}O8YD)@usNJE#QI+Qai9m>Q ztrgCe0GOq1^oQ=VU6wBFYjGdf1Jo@JPXErF!fi7yA|#)nl0oGv;0lci`gKff0eZx- z67|iZv<_Y=vH6zJ#TY>q=q8wyi+-L}AFPr+4aPCfywKWc9FpD#hmT>%BQsx@qB$a` za{!9Q47eBC6JWn?G~2b=eBYXlp*EkFc}woDyGheV&>THHJq=IzSvI~_G6BT(1y zTB#v04|So8+`1?Fd7fhF`&8LHs+}1WiER33>0B#D=*WHqLPp9S)-ts=j@6niYqyze zp}$wypckAxwn@WdF7Zh}W5Z3xsszNi3W(`Ka=NB6X;9U8XfhpbqY@gGKIs8?dItE! zS(t!a0t6s}9-gI`TS|nLyN2Mv!i{6IYlEJ0;IIvLq z9cCsk77ASIuySc50)yna0*k9>^)e=m(9@-Oe0;Q1Yvextkm?ZQrN72_bj}GxfYW`A zXh3&3Psjx@wJdM8Z9H$u-77wOkdz|5aVC|PEh}Zd8T-#SQc0&K&^HMi-9Z9(ji_Pm z;da&1-33_nLF(^!8t90Bu!LX|1FJ|;S`lc2TOR2oEixXZ4hZujVkXj^$6=g>JPoOiK zEo1`9c?yp2ONvI~Mfa)=NGxqq-@F&1G2VRMx`*+^!Hn2i0XbOi4Oaj-v??(O!_5G$(U$Ju8g!V&W|t;rdnrcI2~# z6$>^-*z^mANZO2JaySSuIgnU6Zk_2g?9#gVT!9T1&4x|!FTd`-o3D=-c4<1ZJ*1uc z?zOdIVHbOaogGiDyGZTYq_FGTW1HH{+DT$t>+5#!nX~r9)vE$d9DO<29ccOPl087+ z?oFkh2*i-3K(*tT1OjqaMo`a}SR8rBk4+ni3~LoS5%m{V1&f&#FsU5fE+-HjSY>ab zGQ3}q<{4Bj6*8%twqP@u<-F`HGaamwr3^aDMryM*=8~C>mrWa6!}_#NE3Dv0h^`O5 zN>WrvtQu&v+T@B1e!5P$sUzwX;lSm61ZXP?lvE-Bg5MV-7XdvifzI9FSc{3H@*V8? zLEpPN03hVg_iV5hVzxn21P(ELE*t)HjNQV8bW{K;l40YSlPZaWGzJ zS${B;q^xcXjS`f=h@o3N zf57Via_*5h^?62l%p|M}zs8tYD7{|-W z)TWb(t3I-h&Ub{)4y5-N&Ss@uolb2&Eo@wtauUc1_)fEF51tv=K|8g{)gAlP?!Iki zFW9;EDQh(PhA{=Mii>%nLti@U$Pj_HsElFIv>Vh@>_-T<1Hl>V^dab` zXk;LsV9Zr;;EoFeq5A4VG#Ly?w|;|SZO-ywwt%^7(h>8=AVfSd4g{)5cRD`~EHC!_ ztwSS_HxAWcQFEBS`t2yl2YovUa4*Vag}XBb7#zM#XBmGegd%ZipEnFB@@jy^xA0@h z$+kFxz4O%y<&j(}JM1_K0RBZjw|Oy_y{yiKgz_}Wn_Qe`(gSvemYUH4K>E z&6~DYEbS&z_@HOwR$@=?jP0@6*tW~U9_n}O(fz3n*9J!DyK>U7PSUgcU$te)?v5-> z*4GAh@9DGl_|+@&vz{oli%-hfJRMp&KIvyqMtm40U_?eeOtK{Q4MP;McCdcv#Yl3@gMmj5t70E!_& z8fh^Ev_6QDUUeRTx*xdVPU2fy~o8J zv=ZxQed`j&Gfi!OF|pCXWy=TmS(8J6c&Eh_xFCoKD_h(Y_$GeBstLNo}RBrB166e8EkmJUJ7K zW4dM>BGJ4MNAuT<`vl;xGJsX(&@U^BI&}039#+8#PFgV%tw@$KAC!YK74ECs{vFx4iTrRWLURu9$$rdO)DtS}g5 zzCjW#V_2!+!wBF|HTaYw%IOraawWZp76Ck@G6|E5a^1B7I%Sv+`fyIL^27m_Yy#CV zv{4K$^0Dn5+_bZ67sMc=`e#1JIafDG=RVDj_Ne!vgEn-?)K+>?0PmX*lGuSk=n&f? zZA<85mjEG{h^e8YMI7Uqdafq3DCaM&{I9Y_d<01cDpZ(pDg$9U(w-MK+TFF;!Hy)| z#b99R8n6=ft>WlIzHl`5aZJDRKJ7Wg7!3fO2Lti-Bnfy^FkKAl9PTOx08zzI8({$j zIH*7e?cyH?B&Ea`S^IvOinA5ymyj!e9*A`{cM47SiQnmbnNuwvVq zHr8Q19+tM4ZrgM*vQDYA%<~l={m=kg*!RUAAb_h85g<`Ld3M0&*y60CU4{A8q z#846Hh8hdba46vETnl-)R90eWmRW!LCbdiZ9rXlIpJ=P4m2g71VJ%rk_*gi6aVXCl z9DYI=<$9AF5+?$=4z3gj86=+p5)St}Cjg8%>^07*naRHT`8yKNmuW>&KS zhi(l#K^KqoFl7TooGO5gEu}jiOJ|zusI!J7ek#O~AzSQ9uMBNb6dh4G47h~D7Hm4s ztUxz6FRVn@CcUT+wv|q{TT(>)Ge_+V-)%!oDykZe?Mw8+L3sTeJW7 z(W`dj(hYmlT|@hx3+L=};~jfAN$qsIZJlCa$#`z#y_t>Yr4`e{`i;_h?bPl*cSdvr zYgiZ;`C{lrVz-#RfMt;QZy*54pZfx6883gZlt<1`7XpN-fE&yy|t+Z=do5_%A z@&fCN<;V!nrgq~lL2``q772D(s)1fuX0W7dV)ja#SRMyGs5o(~vqTQpT8TRTAApUV z%V8D(u$(t-nfie{#e-#lijTOwD}LaF6@3|540*=JdVkGc|N1xC|Ni4YZrfKMx3~Q- z|C^n^>s~vxv1!kI`HS|@Ti+o^R^Bs*6C)I-3awUKVjzrDch#VDY1|Y{I zl>qi26TlMGm~2Q=E=&nBkV^o(vaFypc@oEor{S(*Cu7&n0AXCo-Ld-?(u%fh*km@f z%nF+mYLCal6x*UB7h2lJ%jjce=I~_TONr zl2t-g7;7=m3{!^cU{X!grO~vs-O}E$wEpZCjITmZoc#bxvEqm)ZI$1ecDD zr-cp#b~LRV>eO8InU7(oJ7db1jF5RQizv)7z3uWN&l(KV%?1ao+z>^v7&K6vL2=-7 z)}C83W5vxX5n6LB5kb(+Udsh8PI}hN*cbDBhvUwBfbRBhv2T2YcnJtJqDUA`hiRxS zQPD)d!$RG`oj&|YxeDJ2_U9GCa#z&&5#DqwXZjqlf%QfWY zMx=P3#Xlil;^iz1X?%pm$-nGmc;=yWikN9);LsOl+{$|Y#iI~QCzl$1*e6&zS+m^u zmiLbKG4yrYoSeGE_V@HJqtgdA9s{h*0RA=5*N%6jM{YkFb?*KcpUZMk3&NO$D}fGi zcezg#FK2s9)=1y#`wv3oj6I2`1}H+VHsRV48~<|lS{bY`>&7q>xf5>29BU?+exgPQ zXPu`xsl9Y-gcOihTJkG%3e4zUa^)e61)i}nk$kmemN+B+&KMLA6`A?H?W5&`fB^0m zx={nbB;$D5l+bbxsK}h@an*j-_<=^)^1HGdcEO$ZS4;BZUjwrwCfzyy<&@42?&CJ^ zKjVs_T!~2Otjakjh*K<12plsg)x{vEkQFqi1WFvLqmZ&>D%k`s$lr$r@@kE62Vn288W zX{&Ah4T&oiVj7A?8;nQzx{_RmJW|H#$z+|pl4okE{%fjEx;l+%rRHKUl407sWYJ3N z@=6fRhCD$cYS*=7ix!aBLb>JCT;t7N`TT6VyxeLC;^8ReVZw4Yaz6gWR$aybY9w-2 zBG^G`URkQSZ!vrnwTe?Tgt)sJfw(4(q|&nWk83geE3QY_(r!>oIOl6iY!({j#u<{&Xjl%I#c4MXkATTPJCdM#>sMn_mHQ)?Y2lCf;K~Q`+U8a zH4Vvm#0CMee2Rl(;_$D6KwD;i(RXvBo0WKK@9ehvS}ABToD*#IM<(s>@>4RyARyh! zTyFj`F-p(?Zr`ETj1$ARE?L=6%Xwyn2d5=$jG-;k z43^#4mqCV;LfU!1LkHe10f=;ePP&Hj!g!KcURWq?G)`sXS(YGd7=!R@W5592=DopB z$0-HOet&a}Pd7J^hrWWpsd|;f%AubP4kO*CboVL^GJDWsy;8rXn=mZpgbt+%h zuiu(kxj6Tib-T5x^ypi%9ESE6X~f=i?TskorB&!}yfL&pYp6NPs4*AF>A!G=hy22J zS`uZvB^7a*;(BMZkH=`V<1GZ&5BT%Rtt&2_C~Y*auD;rS-hQp-#K9mfO=4O23(nEz z<6O=0WLLK?V};9I^ainAE@1(z`OXhFPZw{y!msyg^7i-IPsxCtJ-&(`egYe1d zLbYN@7M`a^Zcr0%a{D1w<9-(`bw1BU&u1V3i#R#MaC^;;PrQ4fqaN#7HIuG}^NjMx zm--8J)?vB1Ui#?5${~bS5i5tIiE~!0N460&Cu!@(kAode9+bnJ@7enX{YTx*k1+9# znD^d?ZnW8Q@dInRR^zQw&$qP&PqqRZ0j0H`<`#qDi)>UgK_27YuztILuosg>$+M%e zviqu7M90Tofjjp|wlNLdmi>%ZT6MuQ;cnloI{OIGv)r;(I6Qvgn^`iH)$SqfnDS}oSM?R^=@&7iLxo3n)8crHzt(tp}zE&*VuA*VLTwxBucEX!NFK3KDl zNJE{2J@+3{E{T8HFjsUM7(Agd@Js5qrHB&S3jT%3kw&PeNts8 z4Atg2XsYKQ;XvlbQb&F|Ric~vP5#8GMGLuD5~m8Lu-3C%DEX_k|HP$jW4B-sy|g!{ zfM$aEhdTKKjNYW8YQVG;I&w^N^weUSXo!v$i&Lny`C?q&=#tHi!vk|=)?%$G^5sNb zWb$;m6C4$S$giAa$@UG{X#aWD_d0#R=WTvjT((bf%n)2aP5SoA!dlW?UlfXv6sN2F zGj8;I)}Yw{Twi==ipoGCY0*q%{xAjDZ22e{rvAy@VTmHUqv}f5@4Xry-9=23@otuN zB)0E9cgEmYT9O?CRAOj^QdfuMAZ>FB?9cT*pR|c@ieVsIz+FS=7=3_SHON z%-U%Pq%SX4qYyZI&7J0RUv_JlJXuiG8F+6AGFD?dQQ9xV+Vh&4_m?YEE2uCSX@v+I zUZX^}gPSjQH3@2#648hK%VZo`~K_^f?&+gcaH30X8ULh9ksxHj7ZBiM z&D_pTAet4bhEEoX`q5TgP5H!10R}aeKIzVZp>2+ZAZaPI0Vgcuk#V0_6+^wR?NhCl z%w1J-HaJ%E2QC1;ATf)XT7x80Q0pSQ4Dpa4uf9fJ$TrIdz7*?u$Kka0$w9yq-V;@DlVeN*N3ZfgF zADXiAI(&j=s+8`Ggo8!M3s1devuSnSW4Kjmsic0CV0X(&dFkSvfzhb%I0AvNbv-kI zn8o+tnXWw!o09D=ptx6!)554tHe@kHZ+y&kgc1a0_q70=OdCI$!*#3bkNloT zrs}wWqs8=nuqAO;?@gF=57j(PgyAJ$Vr zAQ!yTfM==M@1LU-BRF$ZJq2<4Vxy2rq?t!u`{8+UTOVAb$o^~^eXFwR<_$eFDMk+6 zy$gcFCuizIQ6rN1UdoOXN!Pb)HXxC$j5-Zpp;DfJA5iz_H10!mCvk#HhE@@=z6K+?c6TD z6kL8u+woHsVDEZDVnr;Zxv=L0bqQzSQEQvQsSNgha8hGEhf%Q17B*}_cI6f>SV6R; z-e!K?bYkir=JveZ(dW-l099q3ORbcxSRsZS-!zLadnbQg6KHX|O3TYy_xw_hH5!%R zKo2QDimAxvE1E{rs`|kzS0{z?0TLSHv1)womUTyKEJIjK%>XO2=wI!q?Ihv;WBVJ- z5~&8Wc`eK(R$#JpP@s2Erz9KUkXg7<&!3dSO4orq+{+>kFT<}aeH=hHiGZG?QhhuL z1>fJ)1zdr;BbQPXMr3k#Irrj!J-*@FRcdJK{;^<%`LzY#{XWSdn7xO>8vcP7%fjuk zsh9PN>p99AStZxN5;i)@2}9xF_MzDK?FDB6Yor;>0vZM7jRaw!AU{lN&-DPW0j3D6 z&?(Y5=MD=i<4aRQ+KMBUW5hNqqLDiN!QFQEdVg+yH&y*JF+1@nyApfJ;dcdmBKaej&bmYu54{-JnPSlFSltWwB+WA5AhOu zyUDqcPx~!I#T_~ytyMy(RFCB(-+bJhD!rK7AIxXJN*?KQrwq|Eax8d%8;3+RrY~(L zo)-|*ukg|T9jM1iD@#4d-6`B_zr2n6`+c8~>A3Jro7UQXJm$79gsJo|x4NuIrHCt>a_5Y1=e=;!_QK-I=ZL-o!h%vdE?!HUo%Fwo!@`+warpH z!0kjOfAw)H4Q-qKt5Ki--UN!kl=7qIreMJQeEHv@3bv64#T1I_Bl;xGBmJ|>GN3O0teKO5jdIJqZp@7sg9MM&)Gkta&_6WbgDcZZXhw9DtKr}O2JlYysc z9QKE&e?o}0fNTZ?LUG>AAyg3WsWndb>~F@vJ7!SEcVNx_Si17dyO|ZT)v>Y2DH}Vx zC1-9`q5&KrVaJ}X+p0^_VP7=?huzQ0Xi6B~@XYno;xbhPLC>MRD957l$cd5{#s4HC z2@f9bVtpc1JqX{0h+FV^GRk-6r2W;m*-tdjaS`&Y+3bFv1;*VFZEAPi z{pGVurysNPayZ}Cm*KI8_t?7r$Oq)612G=Uhe8SK%V9v<6Yy-K+akeL0M{O*Tun&w-_)^6Kw7gJb>7n%_sk`^V(ik1H@Z7Al) zf%f=_`FD;sj#;pvk(e#T0KkR*^PxIL(507`mo_@P;0Fts0`H6Z=4Lto6_e8Iw7dYr z+1^Vxs(?+o&#E*Kn86yHs<+Q+B1$CKvkvV4fgk^-_v%akzIL?~vd{oH>d zXe#1Qc9?3h=AQomKN=3e?~oC;ky2rRJj~?74S-o_335*NA%1$akp&r=+S(X*ZJQ|e z6W08`++2v+S=OU?8Y%W0?!BI3;IvJ z`Vz6?vlj!_B$cJ33<+UHAwEDxKiMT3x32=<9rcBO;1XW`5JB!8Sh8v-|#QI-L*vP01Ma_M@M zhR>?)2eS6)5@eO#AGd-Yc4txBm*gPa3<*erVSy+WVuL(+yLv4K__u3b5EcG%zh`K! zT;proqk6{&L2(5tR4}T0ToiX@5n#ZOyajdkgA8IJzuiQv+%9G=DCz@KR5;^Y?n}x4 zv?l>Zocz9gz6k-agPMTo>6T**h(*@r+Cbfaz0d(XT_!O>d5ZABI7D2ruJI42t+#rT z4`@5U!@K_GEqIN$nzh9?Znx>|xbJ&D4oK^=v$LzZ#`i7Kn@%S-IVcj-5|(_Qo1f36 z{Fa(eT;RT7V0sOR16~=z%sy3qxHkW9N%T%I-3JNE0ThB^Y{;~DDy)AifGUiDgncl1 z5yli5UVW8K?Y$KD3G9o+oKDHRg)_K`n3h~x#D~Wsa+1p~m4fbC>v@$A?dvyn^->)2 z_=n)bzeK0*A-EqqM)`1I1xYBp4@ddPAK&Ci-sR64Gs@L1z;9*XEuTD8^eq(n`fuwm zpgH@R1O9lQYttguv3t3C>RW%cs8L~nhQS1mYu9VHAFjg0gSw_cl~*FJ@iY35Hf5x(*D!^C9Qbf3!He#!h(8{ieKsf9?&ls@fkKI z(`~jQL4Xq&Rd6p(fc%J;$;RAE`?k_toC3xnE~*A{*F$9z5l{pl`l5U4ne=wks2{sA zqubsVy2|5bMp+&)a1si;qtS05C#eO%Pnd)}FG3ax*6+mp*-u4^^6fO9D-a3QNpe6d z5T6@OuT!seI!nkbyh~pj2@RwvI_Uyh{GZV(heIL+-jiXqp+u_MBfBT%QlM~zmhA20 zS;eS@34ojh(IwL!b-?VT!<{r8B!h&yoH!k0m&u9V@rZvvr)MX=DTo)`MuF~~tRA^5 zfPjb_B5}IVczM(bBEby!BQx|ZA&?sZq4xy{h>VxlQbUg?kl*Se9O%|ZxjM{xX#Z!* z^njS0Fc*_i;#DA zIPsnLU@YyJR9C04t1I!5M)pKxJZ zwHlx^;~fStX2?6=e8=*K!VVeL3cb)eDT)4n@|h17e0h^kn10npY_Le}_v@hI8~N8O zdG4IRF@k7O+C47xF9yHL2yhSt?g9j;TRGnY4R)jU8(8ngPM_rb={D96TzAI60ZQ=! zi)0}=(GzcDUsc`%(_hwKj@OZD*6+vMmQG(^PQx?-Bar(Mb2VDB!+`kl=85_2HUCDy zU+=7>5TFA|x&SS?8qyJ(LDcvkdH}?8CiC?x$*RlsKRv4GTU%TE`oo({Hb)7#18AX6 zfr#Y4yFfdNb_d#%TaxQL?}H6$>4(D5`HKjiW-_5>0f|>&nzY|GzFYV}Nn#&<7ei%i zI>H=3o5h%}*IoUWUjEnnacPdIMKW5P68(xmU{1_YAVFN7`#=H3}mnG{{{-5l=reF#}J4w2Z(4yt1@@jc(L1x-Z zVY8F4KQIx%+5DjdrL3{$PolwS0*yEvEcbGH9mLVOjsQnhr9Cdn7-keel3V89Cb8u` z8Or!)V_<=%Zcm>h37C@Udgt5exTxOL_ulb4-;DG02PJ;npT`Qp|Hjx6tyCr^ex&^QI#W))UX@Q8dfwQlmmW&GkpfW%MYqt? z|H*8l(guZnOU4W-Ac3xkOHRsZtFXyX*vwukZ`P}(B?JZpM zb=;IH^dp@@DK!10*L+rf4GpT=s_$3+|3hiM@O3j6P{GQ$SYNVRInQUw-E@%=oV1gi z7N(muzaAbv8{I?a|E{|M1O7$V`NGXp==py*oDKfvlG@=h^V6$`OVPT{e}F3$=2h+u zq&VTy693dnAV^p)Cb&-e5AM!jy5}lx{3L%>;&^L@5K#uz{%?pq&c6*Tspyg2gPvr?^sRDbO88-=Zk<-qn$zDNLdTr{LBz|iDFJO&<5&t0E zIuoG|X8&R9jHQrhmw|zrD+UffAVs*n(_Tf+96n8ckrTln`Nh{Q69=LZ69-)Bb3fo58= zE8!AxZ+UOOr_ud$)>-q})5B^9vczmRbjFKhw{a`2s-CM^H_->Rb;bYls5YYiq3L(- ztpmpCGA*13cWuq}<`H5>-9mowGl2PPD2J_&k8GJ|+>XWOPPyJwpXix0ceSYALSgYe z`0@X80ZJndw`XtPxyM8HbG=*oLyFP)91?PA&P{y^zwv}s)vT`iXcOG1QYE9ioVqk8 znij%DZ}V#&OXDXZ;Pm%H@z>p&<<~^a(Rm1gJ z^B<-y{bxJs`P(kjISYXj-eud_&x`xzn&s(Ql#tVqwk7=rSKUbikPnQV8=Tmk8%Tp{ zx{*N|U}kw-V@jY6Rg0HiCW$yUc6^t_wnY4$=$>=HCuS=4y! z<*jEiXScO|7iWod*H@jQ+vq(zw2KG5JrmVmO28>wym!iHNMW-zf9;?I8C%yXr7=1# zYY;3Ql%m{2qK+eX*AJ>w6WMzJn|C!-cZd+3FGN7Ocg`>Yo#OmLV?bX%D#Ldz-=gDu z%gfJxf=R}oD?w(Rv((|S)LJ^T`%Rs#XB1zhhyIWl6Wz;^)5Bz`Uv^9U%n5q+I~0Rs z{!zPf!gub|4^b9hB7hw^V|;q2~XD`J~;e8wm$C73w;$cYEhy$=-7d^ zDAxz=@E|RMB-rA5DF5Z{eTCVQM*)Ft0o@J;+vg)?YYmpw_gz!Liw6-X1SQwDU$hr2 z{A`w&n`3M2R~G84Vzk?rYde=Z*yrX|^kVj1jorq}bUZqPTO&;^hq1pgHP*nb+U!5b zTAPGkH^DtyELG7T8~B+dmFY~LdfSo?zBCT2W3p0I2Cp>>;4RNBHLWhJ)xvZTeozw< zlcU@}K85)$Qvcb&jdS^#_hu2>?T$rr-qB=!kwHfb~uOKs_LTvv%xBpKU4 zx`sZ>TQt+}%PARCOhbm(370>wpsWbf=O3LakpZ0BVWcM$`(Ew0UZQFEEBfzqp{(mC z|9q&Ki1`Afw;sB!4x^0i4!vVGHcPBbM=AMC+5{7$sq9N6DQxJ?zD~=ob#A4zmdkwz zvDY04&tG*|jei&ckeTC(HG);LhhWC{~B4G9*IhM*wIV1A#$`_?t5K)voznPwsF%q z?lb0l7viU}i5&Acl;*Ly{joWAEmR{&0RV$1N?9KEX44iZcp6;PXSBc$N6r5e)4(RCaFjD z`74ZcJb;9-39Q(Un~3gNe-041gY|k`UN3uR6jR5xK$7qH+??0(>0jJtt8Z&_yZjvG zV_Z>Yg&Iq(p`V5M*zZK{y#sTmMFg<7r?dfqKV0qm*Vw#b(%^3YbnaHuR$qBqf*EGW z^Om}f5u-FTr!X046+*5lW&4%X7NB6Ypt8`Fh(ZojlMNif_F%*U93&cQqB^WNz5Lc~ zt~1^rgTw@WsOC(TIXXe!x4ktm$(~g4^Z=OEQIDXbK8kaJrDi@7DtesJM~6T3vS&x$ zorMUz6+AqEyjb>D!i)GFB>4^!`&=mkuY!KAK^=Z_3n=ZZny{3_km!Kt(YK6wAz{-)ff6&XGU>=H|p*wBfIx&aZ>h;w_k? zYNPVaa`Sz2eypQ-FMiIjtcWXt$boz_v~Wb??g7pO@R8(^S|c zhU|SW({k(XO4lD4T3PB6#>ahcs$+{{*4D4f+$4|Dp{lYtP%OwfBl$(S_b%N~$giIX z@Z;;}k!}|7RrU4x51sC9w~uZ1s^T-81sVoj5?6nRLxZH(4u?YA98nR#MSFkL`Apt? z{c;O*sME;`SAu^TB&?=HhyS`zKGaU&l0|^*pq*aow$^zexANzI*vbo*)wS+;vOl9DJVK@vTc=1&Agb+U zD=18@H_#+hoxR$%-rV}RY|Z6)Pga{=T3B%g&$YCfzryR3+k8%j9>Q3oD48}fd3toT zG`E)r4}8GY%&s|gs&eGB5KyoYlTVZ$t^KImWX7cjQZl}Y?}?)7Q>b*1g}u}$8J_yRal-<;Wr`ZP}xt(VUJCDGN*4Mp;q z!QLaR1LE}-K$$2e_8d5AzSWDsnGqM)ygOb~TK@-Y0Z4=~JNmSedzUGn;K$8bhQqq{ zMC~rKDt4>lwYINrni;j)-irt4A(5O4y)0@RU>X7UWiJVgq@vM=g<5Jk~uU-6D!kI1#8m>l{l znY-#bd}AIo6~`c*_O&{kmVmFJ+YgMdM7sgffSD>Vs2~Tj-kW4&9N-~BoOQfoaljy% zZ9YKs`WK?uFWh$Egjt{xS0-@^;GQ~QU3HJJUHQXqOw_F^5MQjD#F7RhEK}b1A}+S! zUXGt#AxyW>G z{a?bOf$uF8%H*=0AUU!F8Q){alegtfe^baxQ@vy?X<-cn=BC!j^rfYm17}8Q0+r7? zJGuln$E4hcMRdT~qG^DAT{vXUVwc2N0mAl2dxiz(m{=8FQMpXHdjFG|PwzhOU zqcP@WSRU17&YPiSH%#^mk`*&B6Z?=gCMi|@W-BqBdi$o#!d56RgCfL0b#E=eyOjl* z1id%QoLpa?7Rd}6l%}Ag^)DbIfEM7K1#%z$yh-x%hh0T6!U5=@>aa^}%WJd0>6QWf zG4WF#@KXMASbo&+d(>ZpFL(@l23rs>Eg)K)K`Q|>1mL8_QA4ZbUBfG1=x+g;1?Hl1 zdy>21B3%J;+Fu{r^-U+l)`IlXs~V{T+`d;9HNM57X4MX1x?wjKqXgNm>*`x&i}C0K zqnENx_t}YCNM@{?l z7plo{WOF(o6W<3I0JFxj5M%vuML5)=CtjAzHg>lI1Jp?B^%kBvwxsYSGqW+_~% zl8wx$GQ5>lhW0;Z1#33TfdV%gZ(hO%HGCxa--`3aQpU6C@4&qEnD%RKjyoH!_=_Eo)nEqW<;{uIhE)mv?dpEGipllOGz zR^t)Uj)a)ch=Swsi4=+&T-WTEDQoz_s1!Ar9l}K3XzzG;;Qwgj>r zxVE#JG`yE1EU|rlJL0|~E>!k4V~Xk7SPBc~nI{?-XX3hk$Me3j$5C{6hh2C-^q*(- zRedy{6+pO%;i1pSxQaSNDhEpcxsTNUwEmh|1+MVi*+z5|l(69Lvl#?sr+ex#U6aUx z*{q#PpfdA_S>B~nH?<1o+OaTScXhq7vFEMYT$;e{PO&{DS*Td9RZjCYihKGyR7+n_ zNE!c+47Sg)o>ZfQy)~9y4dih&EAi&X4Q#*||c=8Z)d*E`6;Ay6iP) zlLw;)1`Yq=OM4dxOrcXRU%nY@Yu&6x9b5&@7Q%Qwjq)+hP_*GU_27I5lGTEit7u5_ChFE{ux%!8XiUv?+vmVaj+cbdVpwB1?D5JS>b^ z$UnTf^3DJM1SaiTD7jU3=CBlhG*O5*ph2=-J&w-Hhn9A(4rB|pi2b%`mRHj?43VKV z+S~@tH&-;x-n*%*4UM+TUSz{lJ$jcD&oE{Hlnzd>y_y+P{imsH*OMoju;Sr?SahAB{HtS-81H>|r zpV4UY==FGWCVXox`h{42CNkiBWGrKG<`bhD-hA151r@||P0rqK$p>|XVed!!6QOi8 zgABEg->0c;sd9JJkHWb^JV5Ubq>deo4w%0aX-(7yQw%hJcb=%q5x-EE_)xScCYtmVG4#Ocju=9MfX>z z{;Owh=@wQ}vp z2H(a<)8V}t)#w7ZLr|qG02jd{o59%#@DO~@6b1Ne!CPmZ;j_lh5j-c8Iya_O*LMrB z;%R=Yb8;|9rdo4KO2g{2%ar*b8zE-AymU1x-r?-#CNBd=*e!*~-SElR7~d`Vkw zyQJUBP6Bs^I! zE4e$__9$-Gm%*P>U+*^)@DiH6?c1OAn!TNQ13KP3${Tg0ej>3^{PU-Rg`9>_@(o2Z zlCG3SYzz%OLws@*$q;$+rnl4Hy0b+l;Y}0E_n%sMd?C6u!ux{S9tEo#5009rOT@Tb zJBV{5%9oTOvHS={e{&cv)7;dVPI{fcyq@nrmF-28kkVQg9Tcw{d#N%WvUz~`kSZz} z&R6^W)Q5Qvyh>gr$G2LyZTEaf`n|TBE$8R0lW%3%(y&_RO5d13347_!`r{f}?8VO_#a`&cX6X4ikG{JP%t9dY8d z9l12(r^zllY0xE}I#;*tmo&hcUM(cdh+)(VS>H;J6DU5-CZ1jY67o>^?KEzxr-sVM zxAXxLAL2!|>s5K&q?>a6{6?iXd<%w%r+fE$Kby{;&}#Tp)2Vg#+TRo(Ui`;#Ig`!r zI4-qr>*KzAH9s9SX5cA$TzA>KAFJQ*v>WeZH>-#Ut?UHL!Yq93V)~dD-Qg8OdM|lT z7ULfIc^CC6E+alr1d00oTv-rN3isO;=|^7wh*5+0>~-f8w)MxvcI)?REaUsUK6Cug z74GKo<2IjWlw&jX+eWX`CDmfJ(xQj5TJ_nrT`dLQk2m_-40B=ikA%;bPxE$K<97WI zF2+#;w{84f7Q3j~JoF#*J1X2@Bbjzbdf)GEkHoAqQ`~8k6BG={Q{JH@VUoWm|0uDM z8`}Y{o_F!F$?Fip<;&=*cyC-J^M$^wybC3jCG{7CY5#`!UgH85To*d&Q$^o>f*K}F{Nnz4UBL?NwN+{B9>Ps@ z%RUI+U6ojomh~g!g|mb~ghS`#Ag?$Gop;K95MucE{T;c3owPxRE{no!b*DOWhk^r| z1ZlM3zX|eb{gZkRQH*U$PIyBCb~N6q@LPtNqjTCU>}1k~Gv2%m~s zzE)iNH}PClj`QE0K9xkE{1*v+gjYxu&?)uA4*YhI4l7JoA_i#rMK#D zpcW}$mn<{0rFS}er`IxBY5STP&}qE;J{$Uhm*6LEgxK)K5*mKu*eFkU9nQX=8mFSv zDNCaoyLdglpNA{SFK?xL6YR3IHGa&!zI(20-eQge`j7qdV3t=@AQf%mjViUD^1D#YlhULNFuJD|HwRQYQ=su zZ_!MAaVf84C1IFvcD+BoJn(iO-wMwlDs6KmB7{Y>5rcsx6*x;?fM!yWSp|eU|1RG{ zo;q+gwPAHr>d1VD@Gi|gI>bj!_)o?%vKxInA2d6?7ma${Q5YW7_v8Ah{Y`XKm?b^bxIEHppE2Dj^jatJEPoNUYDyPhA9 zvvPM7(et~jQ;tXd%`vU+!}bPNmJxYO(y!?Ji}!CGH5P5@v2W@G0_EA|4EGsbD~+~s zIBv3`Tz#1Q=B$?VoW2ott^m0;xPvWdB! zeAiQ#qaC4P5zfTbPS47wxc{XrJ(?W-%VMRel$f}twtGYo0b#*X8Xs z)#ACGiOuY)h6Z}C@nwck4VgPFGukx8rT47t7%AF133mB~2KZt9CgWv9+{qhZ0DBv& zw}WZ-Avj4Etg|3RcA^w6ZYo9B+@-I7YEX&Yh47E_e4{afx~ZCqu7i(OTb1+j7lN6V zK=DF~AKI&cf$dt}Gi{c{X&DO}BAG#36G;I!Wb!C)Em*7=R|UWVIk$m$J!THj65XH3#{ zO}V(8E%#M51z2=epMxx_dpEJvbv`BOc^00yo9;T*IAe!6{waCO%FDTRe9l;fL}Tz+ zqA|AJ8L0}!3u}vY8Lplq^a9+!#jTe2_4Qq?w5f?hwLNxBLkLZ}-0But(>-Uc*h-l$ z9HBx!Obr__tD4Y%>15}6`kme~&41C!8oTw!wcDLFuhZF5v_&WEw#7kY{sn<#lo=BD z4IqQt>&vs2{L(`ofxSv^2g1QjdOj|@XufydTkM~qPOIjIO%uLf5GF05#gsJt_{D6esiQhmBO@KLDm+acotVWS_{BD#;+$!o+-1}LeAPjwatWDR zOO)ZQN>#i;Q>>lE6>VW^`eGYQJ=z1(D3KPbAkXYi$JhjJ@)Egf3EpkgaTpj?ZsV?& zb)MS0Gz!i;i#Q*oE45-mZ!}1D{)~3;Dhl#rFU*}zij%0G!M(580<5IjHA!{?JK&z$ zZ)(eFUTtEZBi&krtD9jnzK*s6Iagh7buZ4kQK7-B|JVp@e5TJEAc5$AE`mQE7qVAe+8(rleTXL6T}lc|9qTEYRk!#Y5kc^ zObukm-A`R_ySyE|O0=|X-`95+iUNHgRG=8V37-Jkr^IsY-;4uk6PWQ0SWeP^_2<Dd_}ihpY0Ff?T`G2ncFdu+IVH}+;))L^X1h>Kk|w%Z6u z7h#1uQeEiA15hInGwy$ zRGl-BL`D zX$Iz(Tvi(hqy-XWq;fS9Qtmw(ce;E$b!n4K4eb=S1{<6`G5i7eX&(90l87NIw|!@H z#)F>g+Vh?TPY+JE+>U?zkS7r#Yfne1=iWIZ0CggZJdDQ7#3$5yE-C}XE#$r_-^0RuOp8iK zMWlG46hcI^PFPPcX(lHlY2K?)DpW`JH>M`d zsrNn)+wlSgfkcfbH9&&0V~{P{Q#U>zbmSO^Qm zi;3hVdA#d)z6h|s+msMQFy1zfm7ruLIoGbYiAm>irJk5B<3$mKM!nue!PiI3;&dQ% zRNjR)UkuTyB0gW`3(Qh6Wo%i%c96_t$iwaYNsn$Gl*U7R(Nf#kF%YS8g}CD59D#>2{W?OL}!XM*teHo$;HjhRKJ8rMMyOY5^={4=kEMc z*C_$aSVG&tML&^xvu2>OyR!&nq^711%dmdO+G`iso$yso`*N))8b(B2Bx-!OFaKyw ztJHU%D1n^(7XxHf*7J<2000Q!`j$VCrpJ%tXxT)OIvt21^9;_bP=1Jl=3(gJ1a<>_?=GpOLkLaCl^{a))IBK~n-p==xG*OWh+VC6=|gdwB= zwT_#pm%mY%9SjTyM}z`wEih*@h{THQ|MEhh_;)9{|5&zGn=B!3tT1_MCNR0_H`KPa z^9XzD^`1}iC3ahi5)Hx%zZ!hq5B*Vx@=z*XlCYChK2W1ok4YLoeWuGGEtr0bW#(Vf zQWN{uz$S8+eKnEQ77oaNufqXgf6DxL*LrMgANMb*sv;`pL0vHJbK-RIFGM;-S5=|P zMSHX%PwGGY4V zhN?*a6-$@gRa?n|U6c|s7AK`*Ra0*h5!cg&PYIr~Ig2q?)t~6-?yjVfE+#cZ_M#XE zh8*=iR~E2ZVd(~4KK&t!9nG2fCeLEAMC3B)Zmmj0GwnThmoT4dX#$K zv%g1rw?D3)4*jE#?!u>@i8PLMXYQ1uzQ@(3{JDWEVGxI|5KYq5Pq%#oclm4Ot2KXu zj6{CA^01>bIbDh6dc9W?dE9rJB|7Py zV;Ab}$MH$=x&g3^fp+=oy=66N3|!t8YDp@Izpx6~&*r`8^a1V!?&t0@uC}Y6mnkX9 z@xK!XdPd!KF98Kj&M*L<04K=$cR#dlWsHmvVLl^dfPXv#Xy}dTJuEireUB>pcj}hy zloiAf1@##O(OjSg=T$}ls#GO%z@B8@-q;?BKmrhi!$5wKR~MjC?zIYy7k|13FT2dQ z%I!=3eb>;s5hLia;^v>>?k*MsP-`I8sC8O@z8xI3Z_?Bi?g83R<6cBYMhxv>kEdq` zda*t^H@a@GI1Psw38DdR08nv(2gTja69PXmTJ;d(SvpSQB`#ak{?Oacz-J zW~d_>pB>3q434cRUo?TZ6V@kXdXMqvh1gTS*T*7GOM#_u_Y7_e(9(yLxD2pO@a$-* zumiEgh6=?-CT8Yw<^}@wqF}$kD7SM*plOUobBUT|ElX1$E?A-m1F6Z`WQAu~y12@G z{6moZNx$)TNz+)X1lWsEjhyzrmRUK48W=J z|M2vdVQqC?*LFgX;#w$B+?@i&tw6C*+}+*XwG=3Bp%nMx?(PJNTX8S$?r(bC-}C(s zIra{FuQlhG=NRjIARB}-F_Bq=8o>Sp_&l}2gjjY)1~P22(_HBD+uQ638Z52s(7wcc z6zBV^A?cOv`9qf`Yc}>K4CyYfOyalB7qL|M?Y{9~Jt|z4;1fSElHO)K!6kN+81HRS zs1%&@C&KgX;2!agAq+ABXR%4ASm9`AgyrJ#i>aFJ8a_SpKsZ?Rd|^l6M=rUX%cNjp zbiz%d+MU{oPuSvV-W!?X$Y*_Fa2pXQ9iXnpIrNw!svuz88gq_hEzORs-uL91VBgZo zxX@6w`m$VP()L#CRJt@4qggP8LEQbl8G=_KE8$d5xHJd$w3NHPaJO>|%@$5uM^Y{DIb4$2z{2KkQR2B8j?+Lsy~*4*E!+ zr93U&KvK$Qh~Z6OZ@;%Qk>b0zF)v*1Z6bAO!aK?ZI^b$SUAPku!l7 zcjnGm>>e$N_N z4T1Dd#KY=lLh_PrtRkr1{mNUHwh^SF%ar^j;#J%^32I9%GUVV+9Q}2a-H(e?L1${U zlYkUgbn-XW!XANU^a)Ltw4h&w#QyyhrA`v2?C^oDFVg=yG{8_ASS+GEOj}&mn0)3y zO|K*TE$raL?Wgvox{&z;biMkEBbV`!?U^P<*jaLv(7N4@I7jJ{>y}`r4%N97Z%sdy z3Jp_c4$AnijWsmyvGq2l?CJ_gVRbukvLiL+NTe6Z)ug2aQ8MEp_s4XPRaQM$V^|+=5u_3ejgV2J4kW;h1qeYtytt;# z6bP63@$ewHA)q;>bkTK<)yQt9`T(u~`WJccHP>R9P-rBzeK+Xemf7to;U-KlyXwR$80gl;z5n7mnbS?$o^Zyve5C zLWb^0&V{sX2+J#5s~MvJ`;GxR_{3L;S;Evd3mWp z)Y}W<`^B{Mgcq10){=MlGS&J??!Oq$E#*qeCD(Gt%+ts5*x!&41X_56aft|4mDSYx zl~(L&K?(8~?7{ZbMQld28DD?R6JNkFDL_yz7BviVO1-mlvTbAWgd0KR=L7-g z1lH}qHo;62H4tx;lB3?A5@Jz;z+7F?G}nLbo+~pl2%x4duBJ?o77j>l`6C(Kb8GRw zDBywaest~Wi`)LX4Wgm&MSQF!Pj|v#$)L8B7N8{%8_@TiWEokI0&AU66m*9C4ph;@ zrO$VPgH1k!i^_@_c)GOq(h$rE=3>CrrpJFk>^|su4uJ7)69qX#L0u(@{~)sikuZg> zxO)UkF(jM2wb$phkLXW%ZT>HpS%+XXk7XyRwZ+0H?RMH^Z#8seUF~RZaZjHVQ9maw z3WujdUC_}GNMDhZXU(^kkzf(YtP2-oC#OykeOQo9CjyE*=#HuD9ziz%pPs z1OpIjEUty^aKdE9dWS2$&PAO~-kBPqA)5GUbn!;HgEFrfd!gQ>m3aru5nwBsxe%ae zz;BFzhVMa*mn^SIJ=5=|l5!vVd7<7VtU|^j+J`?rj-<7r*z9X;fU~n$X=uTmC0U%E zN@9)Kq3gKXR`Tf2dobstD)YFsj`}f#L=88ZPkMHZW$yUOb!Wogy%%k{d1k2ZzwdV|dICubt zJ+Ld}Q}m7n@XRQ>X%?ht_=Ptc@N zXL^LO zB*LoS9zy}q=ke*LHC8e-f+9@kXz&mdj(6uvppF$R++=-Wh%-0Qs!m08wcG+?EUpFSwO!uAM>}C(I(VQ3Kz|eysuMiNc;;>@#yx&`){{ zxOFk_;XtX!ZV-?F9$4VY0ieXJcyJg>lSi6V+=BZvr zjwHx<8GNtvWD0oa&{xh}F59e~Y+OuvE+JR$3i0kC^U|`x3{;4z9nNixfdR=^fFBCf zzsK0Dv0L43Rc@!fcghI@ID}cUI#>HJM{M?&A1ma-8*TEANudUeDW*->NpK*7L~;m!BiJw2cKexN~H4LVBeFgX;Y7xto1yo(eJt#5WyVE(*zhb`X-UGlK2bCq~a8cBocVpuQaH! z+{(A+G1>ia5si^VT`<1hq7;K>XRmO~ZLx%7Qae&2Pw?D-z(5ieejmNZw7dw+sNXom zCY~b<>n~4PBXjWLYw1SpAQoXByZ9pnqgh{NKCgVRIZ1l)D_S<cX7L#A^P4vUr?)KQy%*vZJy-|imM9NaJ0pWreeG6K_G761h6?v&szkyn|aK$l| zcTaZQ+uwiG!wfI)k8)sIvWy=b_Sj<1fOaFe=Y7@}XuM*@v`^RhHo0i2pT~J*`Rw92 zV4^up&KlPhL9-s*_8=wiu{p~xWJ73|eZ3`bsHLrKGLM){!m?^fLV(GvSV-d<0~w4s z2q7js>Htp*HTptg4qyBR*X;M@U8%E#zGu;ABu}yxX%zY#kB6y3TikN%2%$4VVz_~~~F|H@|ll5EP z_spvo5BrV=pFF}p8P@St4APzVT2fk!Y+V4#H-r|H|C6*61B2U|ZEWvz5;!icNm^K| zw2K<^7mXAE@Q{iC*NAJXd3jfM^i($9$?UVsI?3ai@iFRh6}IOq=Xa+!c)6n1qRUiY zeqJX{uxAU%%qx~m)YX(D`jK)^@H}}%e|v43bbaxCvDv%2KU~QVPznfWOPe3vEu>l< zCtjCNXTZ-hLFvv~J^5F=!HVUei1|^Rnz1kby@y6ly?YLICO#nh=ofZve5r+jL2oBw zRu531sag7{RHxv#bACDd5^0_UuQ#7WglMKg(~0qQFSYTmbYRY}^*KttdlL##1U!lT z@nKndm|*er!b7I{`f<~}c9(n@8Gt!9PKu27o4#u0JMD*dR@{hrIo{(haaTLLsJo-GBbBEp%A$QT>E?wYDBRP-! zMuEbE1bNThw73ty}_?Fjb{Z_LGPB1JKr2>WD{e)_Og>bc=rY*PY9I5zhwM z^N+02?V+hhhBQ2q5VlHIG;|R0PoSqchD|u_FWgJUR6NO53}D_jkJDjAv8B*D^&adM zZlt@~YnR6|BsnU$Ty+qNw_L;BNAVnbsCVpaEso{X#@pl>?W^4g36}|qD7UIfCo@;MeARv5{I9zd!JRe6#eOIY z@M-d%UTU|>Gjo0S-Zw0B9P6FZ~d}J=k#X{eOMbBb%mY-{B`xG8q(;| zfy-ho63>`mE-W`IWvQu)eMR9%n;_5NNp|*kh;JYkR8o7&bL*;GKZ(RHn_`?kvOvmn7ci3>?MFZz^=#;*Dj@mk#}~18`Cr_37-}udRsIQeS=s$z5?kZ#h=^f@FKoar^p#+RNZm%GY%AaEB);E`8sK2T&EUBhW zl($Mv@?)HfjhIBFqfVAou(w4YI+0u6^?|))eUfi&EkCi}D-Tjh#q2@6Z6!Ym9h5`n z>Q}R0+zL?bxEI!?h&pWScRpb{Zlvu@fWqInlQrjw#-SVbVJQ28GtgPqLp-N0o?YC( z8+WRCHarC;6mWLb2kHwQrMphl06Y`)f%DT^-gaw^MWjhaL2b52My=LPYaL z$oo(pPR=~%P+{U9Rc4fKpCxUT#TM{+cP*acvmB0U^(dDJ7crFVNvA}|qp2`kb*f9> z5_fk|4aaBX{}F_5#&Phf~G<9kMxd3x?5&wn5$AQs|IjX`8z#XI~roh)a` zXZYk>?D*DS*qVrrOh4q{J~hja-O3J(+A)^N^tA4b%I9>3(hywnU>j{6g2u_F&|8b> z=uD|o5;0m~=QKGV{Yhuujhr%{&tWIei1*t)jW@4l0Y@@%wAN9BOA(6kz*EUFj1h9Q zERQ!QCzxfa_n);ib>oEu8jC-6ymnnq**DzTv%G%f(ji%Bu#+vM8w?#4k9jXdTk8_3 z?7;mMorE&JNw>+N@iz;r3`JIoBNuIir34R%4FYyvpdo-l_GKItGzNy(J^76s*!h|x zY(?RI0Nz*u;{FNX7m&ub&mI!S08rr5ABSt0Wopvy^bbo!mw&Ns5K?EkimDe_eHK8>#s1=R+3r)MtY)N@b(ZzkulzS8f@bm#r3gSr{q zkRkMBt<&J;ufvPv%NgdYV&edn2swOqj_REe3&^+bgBvLPt{bES%zgihfH)S^LjRU~ z6_5`V_isQkrLrBS5yb@TK3rD@wA(xV7|S>FwbczuKgL*y`^t4gElnEumN2Ib;B^zY zlRhedwha`6TSrq+rxpEfyYPBFCUBah5b!WyryU@wS+%NW-{}}RKn4hlJ1+|6n_RpUtUEgj}LJ}x+%36kK7UJ4VvQTRiRt953 z?Cac$vY0`ZhxzZzRI5Ija-}2|L(gASdJ+|m36h2^xnbuk(uGDh6g9}n{F{I5GQ&SOAe`dz5_%xIj1nj{`Xu~yO*sz>BtxR1dI$p92QkEQA^@83__-+xe{qpL3+F?69cdPWtIQfFw`LrG?WUC}sp%&{) z73hxH1XMbJufnE}B|`}dJW}G-ot8gZ_|B{t4l#GNRbBO364;5CBHbSZLWZ(jhf;ly zeEVtt))8}}xo9si?~1PCqAg0m^cNnh=knNt&u6>oiCuxM z18HLdq5N>}g68gmBEEw0Nf8krA|y;|nySbbRK>boz0;-S$7|FNHsYvpGeg7Fgg;~^ zI#ZUg5{tergs{m{_jTF8#$%K1y0uzQ6BN+Dj-Ne!%!O~CjEZN8IfS_xakuh%{;mkp z*k%xk*mFd*eD29?{U#sXisUa|9bP45RIi+9%1CkS4pzTFuyRXNt}Mzg4k=>ZQrYtB zX6I$`bUY=zDZF~P^^P5aO-=^^h}#Qwgf^IQgK8jYlOT|!=J_%xiMeV=pD`ICLCL_@ zcGh-+{qS@-ez^Xb!7u|@h30r;*U#S%*UxXdZs32vgTes=4a&^BKrM(Ino&uyAJH|H zg#ke{o|kE>`Mx+|ZV~+fhYsyu^xbA>Wr@MK`s>7od1z&3qG1=sw`v-C1^6O@vPGpk zYXPs%2N%GywTHPz#sEw^KWQMw&wuDj5&<6S93M)wcehBFEXlI_9(&Lq7mY3+t6#BD z{Livl_-K2@yO{oGpn`tHy+Brg68UE(onBnK7S<3R5FiuN1r z9T39z;DGto)maV62}*Q(I!}rT_n}zszyLV6!l+^>gPlQ{GaL%8c;H1gst_KYC`R;> zL#N&n`eNNmqJl63rqET~T&#asRPfm$1*`xeJA-D)KJQmm|H#Mr5OLNt^li9F00(*H ztVOk08U*I0w(hSrU}D8ZL?t01>-c-|R#rw2a3u5I-V&}s zV28PpvW9H*FNtCRb8vvgIHvmhWW9NCK^C_~$oIa8dIcdP7N6mv~9i} z7Vty8N8Fef|3~gA?xTYC4DX1C0ThIiqasL*8p=Sd)oZFp)kH(0hf339(fgIq28 zP0y2mQ;UTnUX?PZf-ngM;$y_XmhAjl%r0KJjTJW|25v@{lG(9EB3YFvg4 zJag6@-3r+PZM9INIcgBGp$ljp(K_EGj-!iL*#Qv5H3US>>i*suQirCG$dLU2n``fh z?vRF%DFUjhmN&>Wa6n{4O87X=DfkS-o;1;V6Xe(aNfS)T8@A z*zJ)rS?N*P2Z^>d86l=d{+}+pF^2)9)&9jqCU(82V$tTi#B!RyFj89ZAak%VDq<}M|i+(nLrI+#D*I2k-md4dw zawI!TxT&O(SUNNSa*G_AKg^-6p@FzAq2ok$h`l4$g+ha&f&Suj5c&}neG4?PMP?@! zs9?Fl*&wPNh)u>7XypqC{{5i~^CE|>9ft5EHg-NAd)tYk3-JKb=k+`?bX`V2{v^nZ zi`S|=lXzd#pEb@G9W7*MC~>_p8VeXm@b69)ekd zmP-Fk3hqKObNh2MaD6E2C5R*UG`lQH>Y|CG@O_2aYWrKh{EeSJg;?w3n|153@{8?% z<(Kv#qee*rn|i)x@sMQ)d9-!;{Dy?yhX^_C6~?@pPgOeo>NAz|AFwlrj24;kB1@UV+rli&ch2cDj-Z^{!!P4S*K(u#tfto12Z;%0`;^z3TQyk&dhe?9CFq+BX9B%3)K%Sk$G zaZ1c8uhjd*9xXSEcbBb+`_3iJRR*Zw8CHc8ZU^EqeXLrn@~>6~;=so4B8c4NawOIG zPDbp_1M9xe=#}%`F>0uaaK8fIb7`ve=93!2Ibz3Ndo0;C7B7L~o+iRX@^ziaz?c6F zOn679OPbqSiZ0N$3(-FE_Kzx|tcPkg9TWpAbx15CdMe=6Sa@Br=P>K5ZFyoXomIt$cQ z!ny)wnlfjbMp*a*m@*r--&78f3GX9a5um{@bJJVlMG&uNtcz&3c89FETq5l5R>03m z!et+J0PEy4SkOuO`7shR%hgqCLX+g8VxW*>r_?mP8Mni7d2o+V3b=6zVqZi7Uw7dG@C6l^ z0K_k*!(pt3H^&YEIxDz=j9n4Nef476Q;N6#sTk^10&sPn-#3fcny&$Ik5B8p2WS9o z(&4*x*z;7EGmbm1(Q)zi9v1pgA~*$^kf6YoW1T_gAHuyQn7^SSK?yGUYFwOu8jgkJ zSLUIxXhfalBj0<6PJHGK>uS9Jo97e?%2O@<8cuq8LuJ1X zFLD)CtlCo!DVm602^RB&Rc-F?>MCK7e{kV$R69v#2_oV9{f&Ng9RZY$DLPB!rq`iW zHbR!~f3jq{EtApi~O((44w{G|8iSPRYsc?)u1nHDdhdqoJ%fv&o%~ zmfmD{vD-cas7wHnGX($an*wQV>M{te`Uc>50_-{iu*4v$zE^?+AOrQu?iZ*~j<&au z92GGjA9gqyP(3%l2T56qg&~UtX7COJ@T!H2QGU) z1_0uVP)8JmyU_bX!C!0Wkx-YHHP6gN(XASpr*PsBP6~FC-!9DQ=xr5-uv*0-p!~Rj zb>=_#f!lSc7ZO0=%bCnV9q<;J7Ih3NC6Lp%?33U9>l3iCwMpr!;bmk0Ye7sMrrjt1 z(yRhX5s|wh+X7CBzYza+s(U@cvJ}>E5guxGz{Mf(4q7q{*mGUNi8NVpFHr2h-UND; zjvmn@29my0LL^C!06+aLbKS37ks`@pVci&a=loQdD@B74oE6rb@a^kp3U|)6k z3{ec>F1wrs#-Xg2*_XGdD6|=J!=9{kJB#UG^8y_tpU(mn+85)zOBueXdvP5o7faBj z$%1)S-mb2i1=b&YAxwKGuy2^-i`af&4co&+)EOP3;Mki;035UfKjOC1yD^4p-(xco z8nEoYdjb%XBfcZ->fs5hVJ77R={KQQ`2v|}b?)P1q2ig0cSeM8hMKo$a`*Wm23-*D zZ*0DQr7%e#>f;Dv+5qfTMX~L{FngeW7=rKbrXm2xoc~sWsASS0roNJ6+5TWBdgny{ zJjNeqbaEBaE*U)*a?oP9@0nT6QoTzNt<$u#yk2##L(|5$7gJtp`ZusUz`f6f_zSx&8=<} z=-+TryxRe6H#%%zumbF5{s#qwck{DCNLUl2JF677_$d2HtdG zxv1BlDa$o#d>Wuwn~|a3bY9KOc))pEkxP5cO{7i#*_sA`NMmL3)-37~_oH z5v~mA6$rdVKOq1hu&;*_?j?SsIzgMu1fc-1*O5HWIpk^6_8+sIsMa&@4>USUvO_yb zJ6;|tU$udeP(#rSy40d9Z|xP}43Z&mrYZJ1T2R+a{JktN6#k7)pvP1<70?UIk*OLE zA+=lJ#q6#hT};SH25_^Duq*@X6p$x?XTO~k$waY;&Lpx$E|R)h9N}t$5o;*lod!~T z#}oZ4gFKIPiWZke@WXTRJHfZ#{bIg3nlP3B0(j2mw-3Ic3%HdAIT3PI=%*SXy`wmkT`qoe<6=AHp7n}?Y9SqQ+{>n-&Lf{Q( zo3&nT^i1Ddzj_Y|%sn-y)!&zJm8WG-^^6`g=9u%T24#8VXhP&`S)dZi?kB5-lu?(m z?m78^V;1nVgHk*1{8t?{8|+gd8um-M8J8BZ!W04x4)M@)Y^yn)i|uaELokjRYkAqP zSr`Z?FLO=Xx3@itFS=Q;sx!id?66sZKdfx0O1-Re_!}2N6!VlGsUt&t(BkuWB&U>_ zm)qwaoOrQjYPrQtM1Jnh{QdE@c5$R9$i5ZfsAudo-68QA;<{nM1@D*yNeC9|H7t|z zTd-jEQ?bCwM9^#MxUb}NEK>t+7RiQ;^_>Js}9=ajKt z0rXVlf2vy5qElGW85IHUyL z7Y<~y8e7jHRxNFuz%|!($^DduT-5aMpY)0wE3TixA{pZ}d!;8av!lCM_yj358Pc-u zT%~h1IlA$`{7&%aalVWt{AM?cDd7N_Dxy6kO&sE!B*Mr3Ch~ONcYn+4So;T+x$lEv zH7U@gOv68rgoznXZpx~j83;lY?g9mV*pnH=1zJ(Q(+quGTK9%!i@{JSmYLXP* z{s7h|+`ksM+l~l(8u}^Yh$_hP!9dL5)2AHAI8GES!U@u*Buh>nQB<$u-#)`Vi(Sb~ zw_e6H69(m^tmW%Z%W;6MNHR@czy-jHGIb&bK{4aEltNJsu2Hi~-=I95u^Jjle3K$? zJ}Y`72#y{Ac<~Hg*?Pn6nANCK9>T48{z+=CPoK(h4Q?NZiWoNu*QF$imEW6Zx@@@r za}?t4zV|6iFjHqR#O{uwe0JP37~*p>wE=V_@4udZN;t6*_O9nuRrDq(m z*>PGMJAQ+C6B5(Uq_m3}DC0j||6(e2p+f5nsEgP|4y1A;kNXDboS;y2*o+tQy6>*t zp&=33i;H=j$)fU-kz!vw!|*%wfxT}(j-+j_sW97&eqc#8@5@O7=Z7~*xh!>tsWsCa zV=rWExcHR8oE%LSJC^2aWR^OC6>0OEAzLE`a91S$7HHc%lsJth57REO>+bTAwPQ!) zCi~B~3aT++lf3<9LH7>q)#bW@yqzseQPcf*zWKFv_yLT*MCc!J&7{XMO7p#u$c!H4)|DgSPmn(I=iDG8U zBA1Gf`gDTrQm}&N=vPKX$~@wCH|qfJ6CETT3ty2j1L0JeQ>@80dHz=S!%gaWl_{*F zy-ty%#l4n$X8DnW4`!e-lCSx-HO#AbCZyu0S|s0WZH;R#F+D;0Jee+$joxuTz0D<>UCs(2gq@p+CcpD^jWt7-SwjNB3jadh>@(Z&6PY6^!XQFutUjC)8lrv1RejwRK_pnl;6eLB7^5VrtCj` z(9THlqrL$NtkCdy$<$3sW3vqMCQ}S5MI#$8%H;$ewpMIB&x>jw(}XdA&0Cg}^MGjz zJ1^Zu{jbna@SXeN@#^%pYkp?-va8<$`eBxyf>D`9N3zfIvwqP|fe0#hr}$&bvE6Nm z33*VWjG-aoApZ=MqugT+llH~+pZA)|AOPz+{I2r3?s#!(p`PR!1}a!MRRq7o-(BT- zI3!tdj>fl&9?(wjFH>^9Bnte=p-6N{Km8G9b>Tc|e*3V{ZKU?j$jN> z%rCns-cW@k{_nH!IG%hmFbDdUJYIV`BlZ~)jJx;`o9Ly1bqJtDp%<l51IGem=-F>YhOalJLb0TD{-U{%J6QHy(NU^5vhY*taZnhrV&hPr6%zeTk+oPZg3|FYH zsV7Sdl9P`@e@pVDOlyE@+wjM8>9Nj{>|T@-S>~$({ovL^yEhfrP*8v70+rd-&a}mM zUWI$YDsNqHv(_$quV!)WU>_0Z1lc+P-%J0qB@y+8bHp#(cIy@WS12x9?Ndgk z>(u{UoI32{0!nm=-Wb(`>U>Wh&VC2y<0?IWYxC>P@Nq$noJy`T<&;^OL|)%z3ZM_Q zF3&MIMh$IA2p=%Bg}M9oSRqWxj1X5OI?E9DcuUpI>R&K#*Fji8w#x4m(`H3g(P)Xg zZ?YOadYHfkpN7@_q1EG~gCxx*n>oc}RVF`_{V&3!?iwZ04SiG;5raJ_GwzkMCwnjT z*X|mUiAu$D?azF`ONsPKa&Hu%J8^l;j5djkWcwHJMRG%KXK8x-G5Y7JYR7=YB;RtH z2x(0o@d!#XOz0!TzjP(pxSc9bhFf-C3Q$g?fD#${P4!Surhj3Up0e3gRpgubQ&uo< zaQ?rC{0ZeBbGsm#4v6g@UcxDa1GCG^uC8 zTT?m1~{Eg&; zf6dLjZFQ~78{T`L|Dc|diRhibHA@>=n@HPhedk5Oj!95EzY%xd80s-@q_#aZ>ax zj<7Yx&{V2-^&48Vt~xCpZQJo)i(dUi)?Gg*j=4>jIyhl6oH1lsTAtD&nziQV{oJ=LdD+v;?VoT+_6jE7BzIk+*l%cK!EC>aVa&#Gz6fpD#Y!Qq7-BNF>J%a_ZE$seUM% zg`EjcOd22O+OrxWN4dI0BDC*a=JL&_o&|FVkq)${SgD~gjm>D+qXJP&`#T?lO|NlX%^Nh8TseT9)(js zFC)zV_iIG|lR;ICute)7EV=XNe#x{erAV8q%Fcdw)n5I(SS~3Jx%7e-)GAk~=Ia)N zIrNh!2t=b`X^5xz zz8c*Wkkl{^dSpwX@nqb4J?o)rUvYk+hU&H0%Ai4X7rI}Ft>e>yMT`=R*A0TTf07Qz z6`-E1jK!7`J%pL>Tf~I@jQ2ij)y~F~k(Ef(lExqBDai~_U4+anCiZ%AGZNS-98iB? zrRh=bppnubs$n5XHl3mcjwL0*@&8w}sKV@&Ye#*hKxM zTe4#`tD081+xC$0mrNN~8sb>#f)#vP4Flb>5$k3aJ#&+ffQErqrL&l(X@DJSS+P{n zM;$#adafPKYMR!8M2`3fOF;#UdPyCPopn}~Mx`RALG`qYCtvYZPbYQv=>B}&(*r@- zUpx!~@zGFN8d|^N;*+)b&A9r`kgRycpJdg7Y@RPm@5Ev7>Aylm9uDOqEyEKbzj{w= zT%S>+K+|42M>p9#uULMUn@O4yTc#k9gYN@ty|%c<;#Z$Q$<=sW$-;pF8WM$rgicFA zM&{ax{!M-${Yp!|$%lx~Th_gjn;#s?{ivC7^YS=^`6&yO)$lbglo{uDg8h7iqK*g) z3%lr1VW`RmOWtyWn|5IlEe#O@mXD>`Am_3ifQHEsr#d`}nkpe8lx7j9K7Vji$%;r8BL_>{U)_I63A$ zl*i1xnc-HjgL&Q{9hcc_m4~-ZH*tKqo;<}N8ai6}E?MJP#>ebJb;4!K64;&fue2W1 z{ueJGNvn@Ebyd>8RQRsDT2s!zzDKW^KAZ6WSb*th!?>{grIS4&W^=J$#5lB4UINK) zspZn$sa8u8y_+d#wZG7r5#U2+5)_K2e^yT0gG0;$$ko{ZSM+J7lsSj%D(Cr(#OibF zKljdPE%KyRbTF}w+`;KSR;fHlDrc3TnjYqN`HHn{Lr!;>U_1;T6O;{U(snO z;Vk0-hp!LtOne5jGzR+r+t7>Xf;cx5*)*7X($b1mWeaHs&Ft-!4vq@}H|2^tx!J5t zqTZaLcRjJAV~1&#%wf!x_-1DH<0acET)>g-jUqzppk;wW- z@TylVYnSeYrc0A0zX^0M957jjOWkP-=1`#GVY140uGc23o^`a9 z%h)Nl9Jz-FUNKrBp7CN#%%g<_Qmc)f&dVm$)XHUzX7&ZFA{muX2VFtR>E<8re>x03 zkK=9Yz!sgwV+OA$#ZQZN9S*qhac zej)^4-18q*2MDkBt*i0cVYA%K*jIB)M(iF-dd2fzY8^DbH`)3&(j=wA%={FKkhpEs z&+9sLT6xvK@W5tPTnAJ3VFjw?GL%}0rhk-^AO<-9_*y^XlUjFDqmw*%BvTXyavbj9aGR z%$5o zH{IF=M(D@_j5}>txQi1@R@`+mea@@=d%tnmTo=xis9mqn;UL#{M0kiBC7*7bIn_eW zp404^sG+8^nsf@H6fni}V9`rgi0v~w)-Eq3a`@38HE~j|?p4(!5t6rGrTgy75G4IJ z-Q@^%0#(Sob_yS1BAGgbX!Uds>Bq%m*c6*>(yM-X_R&l!Re*Z1Y-750s zyVtE`Lc)3!~KAFVea3RdQy=7a|qEWnf1bZ8by>ZjYvzZ+{fnvhMbA=_zwZ z*`JbgSc!JRhDDvhvP;rvuo&@B^gu9!*O8yYH#K~rfLrh1OMapqn#{6XL@KwaHXE2E znepczRu!YADe+UV$EdKMmjP_Dztiqs4nPxu>3d&HG;4M0f5(In&?iGXk;9lX{jQ|%nJ#u zAIU@H4s*#iw)Ab@aZoXKeX%iXa)P|bk$lLjM>J`6@4p-zff8YIAtHV7C5Hc77u_0i%Kxq|9$q(2 z!y~$!M&zwOUJV+bHz5!SlO7Q$`c@KiPsVxyZM{sFU>!XQ&k>KDWp;6Ls;r+r%A4%E zM(pY@c^B?S=1TCcTzVRwJpA{8u#pPlB4>BgzZV5pK3zuxt-JYr3yo$^Pf8t9O9gna z(6%?!XU<8mSg-rqU)+e^7T91Q)4w$UrW0vN8``CYX6bQKJfFAQ)G9Y$g;c#RN|zBh z+$w}Z(gp)M;+>zo#s+K}k$LHwoKHU^g#Ay{DPsaUG|QYe>_+JE9LqSo!zxd4{PS$& zv`x3#zS}80%b}}%xFfW*sVBO-+%CN2iGKHA>w1*b6-Xn(KG}jS!KVc=x((~6U<_z` z^%io%0P`^0w?BRI{h#7BMuTkYy?L#RBc_=0|H(+Du*-!743_p_9=!dZqLrcz2NJ#y z>d}vpKMF#DC-~n@z4|Cgv3et8tvRV8y^9 z|LF-GM;_|M$5z5_!=v;L(VK9do-lvdn2&hQCHTrLD%3kw+PYSIvl{#l23cT`I?Hv&l^RYFX>15sm+L{l;^#S$<+%=gN+`j#OgCXa9Ll#?dr{ zS;xpXb0g%_X$gP5nJzQ;2(tbvp3tILhdC<2UORQn=};%N&A!QM(Yd?0hWNNU9Ja+S zcG&0q<~P5RlJaRa_~pLE-urK_z3QGUk#{f`<5`PJxR>2-W+3NBUaJ&M+F5K{dyw&~NP`%{Do1SCTEw8x%*V0G~$pc_I zCqC<7PQ}#rv**nzPjntgyqoQcCrYS0Cr_jiAjZHn&cHiNU!dP)rkfgXqJS>;edwyj z?v>{pEto0mHGJES)NY1E-nZsSj6Gz)EIwypsPy5M$miKZ36ApMm#S;|#E}oRw9nhU zz`FL4GPsqVL;%lOf_V&?g;~t$HAd*~Y2t}6!;5)0Azim>kBeDiSN8FRt^V=1ZaHH} zTvx$l#?kcze=94cFEuF%5JAE0u`3@#!Q=>(D&ba&x)KwqO$oGT!*NYP=giAsglho! z>jI;UmM_Z;g+iZmu4jF_p`oD>f}mKKQ;rh&ADhk$r{ShSBj5j?`pv_~_rNDQDr)x@ zqp=rGLL&I`CHsEvX8(d|XN;F7pV^1!)VzePg%^W^5q2EVA@g|PxNK*qwC&BUc&iO{RR!OIBVPWM9zysTm=M1*;zPG zjoDPGNv6kRTQSpTUgcVLq@z;k$ne?Y_XMX3m(LRiDjOTcMb8X_#4-kY7#N;rC^ zYjDN=nB+O9N4C`J1cDqgo!D@QQoOHot7*l=J7iN$RrRz8hrgF}IWsu*8Oc>Sr;x3D zOQx(R9@GqDlZe+EJ;XeL-pBZ{{2H7d*elpf=p=VKn)@|#eLH}LZOVpl0M?NwlRc4D z)qfxQ^$x@sJ4v?IEa_XE`}k(uD7}v)hKBh5ZP>1^uoQjXmB|;c>~xBJi(k33V^y+P zH3H_|PIFIh-u+M(8_w6L=+2wP1}op%+Cr!pp<|mbS`McOL@4D1h@er@gltO~n-h@Q z#Eu&p27^Nvp7hCXyq(5SmAOL6ncjgPuKiQ2VwxhTdpUhF0x4T{ZO5mz42Iqp7No~s zU3q#ASsUg^{tOYvtq%a*INqM7og z_eDmLJ@9Bb8J5^w59dz+*f+l=9O>`>(SItjauwxsDGN*pt8fhK%9&sLNsao)Br!W& zZgIkZ+qjK^u;iGL`-%I6x@E6$0fArqw(@|y2`gKEf;Ei0FZ(}tqnhDr0K^n7eKQvA z_q56FAa;Pitr8*^*kgpttr`k2{aFh@}_$mzmU#4OKxJUSd9{+{Z4aqnXUAVe+z#>&E`N7gGZR+tjk(HZpzI~uk=!AWA*mNRIc?9 z(E1Dw4?n*gr!8zd6GM%k{}YL${$5<>D0z7!<9QmRK+R*NIUgc?hk@2U!QkDXD*P?) z_hgfwQCs4WS2MAwFmC>nH*;ErW4GjIG~XWB&p6LB87it6Ro=BH)gN_`)C>XrEhtuFz+^+J={xwHNMRiEUhPS{)T4gqb5xv&1M*9`lwe<9L5vq z(CYRVi5Z+TK#eJe^XxOBC=zOqQR=Mpy>>f*1)Pht9+NR?%;-C-8S!CBTrm6JILcgU z+6SZ_e^YOGHxHth%GqI1x3$e5{6}6p?h@(eY zDIkAoRpf?b!IpX$rje6~ZjZS|JRt!VF0Dh?I;bdGI9nD*`jZzoB}y%`rF=M30seBL zc;*B1(QEHF{L(arR$A~54~xtcNh>zQ>8we#l_#mXCDuHnT5X((r2MO8=`2ReM-)`Oa?}L|5RCd4I1~gB`yP06=wLKv-mh+7J7Eu_D zO>*-y!B0aR%69gOK*DYRO-e7ZCnnWbuK*FCAG1)iqNFgG$I8r!dl>P=V{@Y0Zhu6Yk(*_^1L^&Chr^rRTu34K6^KPD zHoo#U0uT8LxLmKm9KgIxcNiCJV`XIefMQgB_(&;3nxl8>G1)2n5vra4qOUC(%O4M6 zuOXM(i7R9U>CY>3ij>^{uKyDvbV=U}0Cv44+*Q2R0XN+bh>{0L26+AsRK|)E!eZ%s z8L6_(mOlJIK(~|au{eHwew8G~Rr)v9cZChMMcff^5mP?_c96`^86*D|HyrUtOo35| zARM7S*-rlx*vfm|M17|)T@>k;^%|LuPX|ctH0{$|>^RH!e}1 zvG(wh%eMR9_XE|KY@eq#_#b!YwaHti(W6eR4%A2)V)IWep;zx+gGB~rW;eYzYiGf) zzQh)+CUG?$eW5tnzY){2^ievOm-uL}zhTZ2iG>IYLCb7Z4)9IX7N{vkH(xobmDgtZ z(kWi7__qb&ILVg=h|ur{r;hH{Zr+>>C$@N>D~iV_6d8He>@QVm#p4Q9xXj7Y8Mn{p zMgGjd&OBD}{N`i0%~RU&SNwpa`UxuE=&gIPGD0zJ z11@{wWUsV~(A>&GycEG#oEekXkgGn8YM`K@rTsj9IiazYg!JQ|d45MSKo+LzwS_n= z!Q8Y8-7J~Rw$7D*+hG#{HJ29|i0VxYqwDq$T}93;VQcPc6Msu8BK?BTGd*B~}^Hc-0a9HFy@#*O3gz%Wcux5>0>dCsVciiO%U2H~)2DbwldBOQrU1@z4xgjSI89clA@ zDeWKZ=VCRf@0_q-X<{92ab*KJ{pc@V)Dyo*tqOg4bD?W}ST*8sth#|P{znE@fqx5? z37zPWAXJ+Lxn18GPjAWQ92*hD$UTkR(;s>s zdT$(M$?8?jbm?U5@Jr4nfoYmm?N${jw4rjq9gRxH)(wXp67BiZKz4GMnm^YVgK>p+ zDkdsU54h6mOUk=RjobIfBr?!N7pkXMv;McW_qrTdN0lzUz}W}>k0{S_T02S9l1}3H z^)@eGUIRF6V)Q*aG*Q^7#juMe7Nn|^H>Ul~uCJINdIIS2jWa^aAs3sE;qmBuU1O(QcPKgAf|EgX}r9FegrK2Qzn ziN2kUj;}F+J4@<;)-;5xht|c&ujp6)v33*YQglAMy&-TFC;B>{Qi6Qbu8$>m0&Bg3 ztyl0vJ`!;6C8g@G%C5}ku-w^rSMM7qbRLg&=wW3NrXw+U_h4LA3T9EdF{^kJ(ayI& z0~1-Y(oHjOFMGhu+am_wuYvVtgKlCYq2SZ3M*+QDEG?M1%+=gWpdgc8j6)Opsl2rE zG}@0!QcU|Cux$P^h=GTc&gJ!nMC*n`KXtza_#|0Sn*l*O8KLLBmyXjOebXEL*di;O z{_x6qd!Qw0-x@s{*$MApD5U=-jjPu#uSXYaL=B!Fe^A_=5Q$k?fqME6fAlFN-k9TZ z%M@>9dFwowNbdVFg~4piYYUgw3-7i%y!YapAJ)H}(0*m3lm0!#H^YuX@Q#u z$MLx;8^7G9A6})iHeFMo$?VWELlrU}zepfGH?ziJ;43_d+x`T6_avl>C_rG+L>3)Z zmMP=zx1*hbG;+%>F$tytvU6V@J5&59fy+qT9{=;glJoObpmDRxbm9+;6v4Hpno(iO ziKIXy5Z0G~uel?)1KaC|cQY%0%5LY&{_x+e^C!@^C{aSH-1yTZ{K0o?CO~d4_<%Ht zx1af_$K_gRxSxRCyn*+PvEmb_V1MPG_K`MVj!VO>ZtH&hr-45@Nu&d)o;}Njjw|7l zrWG!7Snb8eVmnzz@gF5|3E+ebe8(r=gDXTcaE>vAHEQt;&HkYRg=(1&=du?H@%= zg~`_TG%*h3<0L@YZSQ7R{^^-z%2hIN46U%R62`gqRjSzaXB!{K7CN4SZ7frf?*fw8 z(VzCHaMQ5tep20t6@teS6T(Nga_1Q)AJHb!vxxGL_F5S`6x%<&O#bG~m^7{=KuPLs zKJaNui(sM};7u%ypk?VLlf`A_d?#;#+bms5E_EyiOu(U^zl4XE3fPPnga>>I3Z!ie zifbQO^mD#RViD`Jq>(2V!WTYc_c`*oSpo7pAuU{w`ia%1hkUI>r!}R7o}PCO?`r~u zB!gymqtLOWXn1bWEfUuQf;kKvk9Jb@m>69t6L<8_HW+`;$EGD9kf#uU|5)BnrpPLa z6i3kZo=E`Ws%Hvz;ZeRPTGjY=qE?As@ZQzo1X9CWLx?0-XUG|Sat$@hTo@kE3#xR) z&TaHcmOk}V!tgUia`nvpTrK7NpJ-vRpJ8%7A-oGTv@{zSjcua}K;Y7&B5Vbw+DYJE zpFK}cyOPtC>bXvsp?5Mzf^}&^1s0Ym_8TX1OL^FEmvQc3-HcLDxJ<{hUdzE<(O4Ed zpUfB1(L~JR9_4g~PlSYp<=YjHAMTIUn57W7p!K&`0}G-a3ehn#Jyp+-k|N9`4E{-% zLI&}!?&Ha8@BBvftN;@bOq_4p!eZPItMAoPJTW9r5$GciP=I9t`J7mW&vpc+up3ip)J}~*LHCbkf>r0~gh(GL z>9uZ*8+FR)3`~7oD(*D59o|s{`;4i>xJWH-o|5?p5*x>!JEYfAZ`%x{N1+vgNLspb zsnh+rZ+Gle`)j{S?#2v*a3zmF&>ES!1Xz5YUbHUoBM>t4;81hgQ1fq2Jt?T#9;Qhr zV0H|kXcB*;HO|b7sw5MR4smWAf7_r$a%W?7x9PywRp5v0E1Tsom?P86>Iw7K=o)Vw z8?vnO(2~AHS_pHkSsjfr+qozjDSbp=Y${X9-2Jd?jxxiDs*QS@>pm8)S}l(y7r@1e zz!P?pL|Yp>bFj@Y{>TC|7c!Dx&s~z(RjCqR?Z=x^9Mc zifzSZoW}p4Zzw?Q8+?Zt7?vuWmQmF;iLK^DEIu!$H6peF9kdip92PcdpWu;id3ZRL z4P;iseWT9YJPI=T7M#mt<@`gvuIg<5IXzvv8Px&O+&naqr3}1r3nv7>A(;F}4KbG4n=>py5+UQ4aD_+^k;@dwaO&^Wo$Qb zvFRk^(;hQeX<&88i7bxwb0n1|<|Q}fPii<$)v`x)g%W^tE|C_Vz=nrfA*_hJLR z=8rR2y2v-hV z<#jU^$S)z>^f7wbfz{qqqkEy5zMv}t&%2p3qw$8fu320zbg^`6)%EY<)vE=Y^vH^q z4htXl9?sL2z<`XHmgL@Rr##|;0T`uRlGW?{r|%P217hidyOJY%#ed2sy-X^Bob68> zpW9!bue;zxx$WL!)K|=P_Dr9Vc2|bPkr%M>>Iqod+R)pS_!6t90)GYd)cIa7)SABH z+;mp$7SeU{J>rMZ+4~K^RNjm(gSLvexsR{>uYC$FMmxfB9kIHLq*@NrBx+-3 z`)2qejncU(_WI{HxI}Zo{hwGZ1sTF(h)XTAU})=Yxg;MJW%>e54f=V6Rh>M4BawJ& zC&Mwt?I=ZjI~E0Y>;_Q?Y1;9)%DoQFRm;kCi^qb$H-^WFbXE?Gt5QZoW$Pn`jC0bT zBH=6}eHscP>qm2pr|T;~z>-6aISL@@`tgnM|vJ#oVFF^m}Wr zl-|<_` zuvFSA8)XjL>;u7mH6LUU$8~}Q3hMEc>EH~Ij$^xX;?`9C(z1hSxt~nmL+3AujwC&Z zC+%2E>%M|eIL@}F$6bIf0jnU|CMemhe{#f6qtT}!`Vb_ZL zu$5g-z(UMv88M~r9Bmp|W&-}zBmcaNJdNAfYN$rv>_)~q{*2Q`{ISz>Yww88h8i^x zmpsoefv+|3;eU`I7Lc)sz~FkZ49Gasyg###D0g492TSwsH@s*mY|ZqjapC}r8`GFX zC5u~}cw>hDVFCVGS390&-0fsUg);m75)DWezQQMAI|JUd1G|!|EczK>Dk@w|Q4y(q zq#Zm7cBGvQOa}NpLc-mA(jZm&Cx!fqg1R6|+$5}2E`F-D*X~Zla8f-zuZj3!Mp{Xkid=mPn zfwEG~?5G`*#Cc1zpeIYnEZf7buy=e8rc$^0l2kTBaedZ;t3SvfAP32(GO|o=iGkgQ z4inKX=2Q+@MS_86|8`X>Ky%nD8_`NJ52zeK2EHYUD^mRQ)_&utlLgA~6n}AS@E`Q9i$q1*wDWtE@7>oM=AGZf}{3$nLfu$FF)mVViXUgJd zhWF{%qp#7?_K!i&#K#DkPODGef5%c2A=u%d)Ac}@_?ym5=Xrr+%|GVZQ@Ml8l8_d| z$+rnI>EP1*(<1J25Py1DwEsGlod57|`#w2;r8X-PPFyKMs;|8W2u?TYq+ZF9Qa@8M{f8zBYjyEm)QYCTIV>pPMd0Ow+iIVmppSvY-N4)64|&wX($j0@?*X1B=EPD zijgI_G4!~*%7*s+Y`$~Q=D7Tj z2o2R)QuSs!sw?sG2}=puccXZ3OyU(06ihr_+i=x@6A%TWqT=DA$iy@9W}(6LSo^mA zhTY!tl;(Go#dql$atd!iC~hMUt;_(po$% zTb1XdQ#v0q@eE1@=TfAd@!CuV*GSFHlHW{1k@7T7bJY(6)_f7jm~zG}raK3APM#WP zzGPK8?c*#GiLdOiKrwx!>FTKe?&tv4uN6dv?13hS&>Y+Hevm5q@i1yCuLrPlny;;A z#DAfAn&Wj|`q;)MaV0y4{|tX|Y&-*DI&gXN(u?GWM~4AG>%@ice8H}#|4;ZgzJ(C% z#j()HK0?N^al=*Fk&r}e8Cu!s4_Q$eyq_f^)AIt zz1z*Anz55(F|pA#~3=m|_>o((@6_uL;l3zFqQ!%#fryD_MluJIbcT5DqxpugypZk zMY0(&E2%zKUzhedFHgdmt`B{-t7^9zO?5Rj%b<&KjE4h5U@&JB?Y^apsuD0&l*Hmf^ky5%M;rXJCq$*2`92k3aLAqBX-eWp? z(b27H%Qeo~Ol-jIw!YNqr*%gAN;p1q5Ht^Hi*T$DWkz>9(Wk4wM_buSg^(;H_95#l z$2l!k%E#(Zr~G1lA^hq4xV)a_nmt2r4n7sBbDX6RZv{O}?nOSplrYUCyzBFPvkL8d z%_a_q@v{U+FXUz9z)N$k{ajdm3K_g~rf~zbEGfepMyE)V>0*jg63?*!DzqhgB&lEj znOMVI%_g&qp%k{#^1R1+WGL)3HV`+Rz}N$2}QN9zhVBdo)GWxll3X>j{dyL?5V)!A_Ldi(U$G|&GUktl4 zair7@+FJ@<0RL=l^xSU92B0@VrPt$}E>ab6=$;Pr^Ed@k{8N}kY*gNM! z>$dRIgZy%}O~lTxeaZ)>25bzR_`3NnrrSfpI^Y%sYwX*5H8|-&E%L=V)?RQg~_a}%Z**F<(=~b(I|I%}!)#e1Hd+TDd zbkc1t4yX!tD$`ICVxt9AS5U1gvQ!i!cqZkja_yxW|MgcMfhm6~ipQ!_C{E+trI@$R z54!jM_E$!`v57F427CAaJa`l=IpRA{4i?UEv7}JYqUs-2$x!wkdzVjvgx5Vy$_39q zJ($D=qmExlAH>D_^_xa3RQVqZ!xb%Kscx%h5G9feFR$_pRA;QwGF5l#J*M%!z4v6_ z2{bF!D3+@%pWf>TW~aGD`ElH4`k{tzigAm&WO?2}_RQ04oY~GzYuoGbu1weUST;ew z%$Y!`Y4(==KGeLkCG>(P#5ROoO zFgx&9N~D!VT5j5Q)11haWyW?C>=a=^-#FCRXHg&-y^u?xF_XL%Qw=ru!v*iXH0u>t zs%jXiEQTz#&iU(z?1_%J=_FhigACG}s|=mXis$|+FBq2IZ6Za?8WK!=W;2P^H8avI ze^10oZ4Ndsj(mYEeM~z|Ow~3`TO7%DW<#aOw5k@Bo^|h4|9l*a701%IpmrxzGLW_r zCpkG}oZxvbL8gsxR7&n^KH+T+NajWOL{{#& zsd=V=BDXRpa~E>cY(e(xKBSr;{%Dw>$Q9+|5}mUYTRvCGCGg0YODcc?nfTdYNRLY$)2fqZE{b8{W|xEuo~!E z%J<2Yc}s5mP0D5z)UH2ibB^x>>OMYHI}G!jYfVn9cFGW%YDmcSCAeG~{nB3zO`Q-F z-cuV8|GQZt8b|l?+O}~h65Mufy&dBGcoQI_<-oN05@-88r?5n}XS3d)0yS1Egx_n6 z#%as0wBo9RMYZJ#*B@X_@%{JyjR&WmRZDru;V+4v4H^0I+dAOgurZP+RVedg`)L(C zP844tu9u!9;H*D0wd24kLlSC!;)51V`<>jz-jifhrTTHW@m){c+m@Y1iLl}!nv9Uv zs$Go<)jJ)LfpEse%=j~>j01}rO$%}VMuXanc*v4lqg|C6^EP;Iex$!C7G=Jq)5E?M zkrA2k0h}gMlIUzD;*?Okfo>RRw#m5W@fSO%k^u*!A|IJ@esk|{V-PFlELl2g)Aehz zbuaX)!i4XEe6(K4u)5dZI7rEg9R}DsEVKl0ZH4kAXL#T6)BZ|vEt6Z;aWUUC_|X$T z-S)Ty@WJh+prINJz<&SwXGYRnM723>s{3zo8G9QaiK!)gSmOJ>fnNjI;^76&jIKtn zE@_5ml?u`XW+Q)VEu4Q@Fi_6d5#s-F|E0e)q-UzSA=O4p#ks&uV$(>Sd~;^pP2{vp zEA5eUsr2m5?}_ciSnH2VI-ZHy6|`pTy+%WTGPO0l1#|dN=E5MiYya*g5+%APG$Xb7 zazV&b)Q+G$wM1y|F|&lEFZ3qmEO>DvB6*W4zD|RWeZ#F}&bo@r1Z6#*VpykQQ^_|! zgjO@u>(La?%2I>Mqvpna2^;&``l^&H!nZFo=OC4pEy9*@w({^d=`PSj-%?)AjAH2a zkZ-N^baH&6t)$Y2@uNJEv6`xvoBeL*N;8g7pfAYw(_%fOMzd+qeq34H)#zdUM?B@9 zZ3%#~s?@BVMZCq|6G;@NhT^hShRh2hWNl)~2^+^=W)n&&XEh^nuBb)u-gA{?*yfOU z6jZ*-fLWt%pmttpPbk`=#tNlmBl#oGz;4&n5T(@Epdqf*d8IP(Y*3`7s|`YiI`=5XoKUUhtLR<#@?b0Ot3KVKv1Je6=icZ`52lDnyZFZMr~Aw=f+n< z4bwRz2UpaZiWhQi=RXOjc&p~Gs9{< zL!_q79-UV{gelon8cwT;Usl5QRnA6(@JUh0TV4I>KJzhZVpohRhD8uplxd8VukD4T;T>MFgzB6&@${8$&2$7iz;`@(ue*8sT59Sg`T5ZKE=SpT`Q3Xw zw?O#opDTvVvvLFS)CBy-g2wh7`Ov~x`M$#Dter@4`>MQ7uj`-f7Drk=3#PR$t!EY;*Cle~9x@7{rAb0s6x1#X&T7F4WNb)4jv!?*B@TalQ6 zQLn%53J)w=2ou7mMa8f~YnK;a{v6ftwI3XhZeCW7PYlLlKw1SShyd4ip`>EZVjB7s ze0`9){=G>~4@!fgg%K~24;noNU>NQULGAqIe$e4+CKu85DK;2ApYC%yF+*=W#a4EH zdcNBf&}X+AS=%Uv%zT37-88xohtOPM*)cI&{`?xKan}2n&ezxUgu`+dFB)Vq(tUr? zr;$(w^eU9sIj0`{Wa6AE!weCm)6Ts?RJrZWbp+w7g0E!q2-lVp0wvkn74A;?LdxJy|3RKCj*{F`_wkHWnNt! zmbqJ>`>=fs}f5+sBQMiENzJfLWVn z_CN6$Uz3w8`c`$%JnB*0tiO$dID414pM&1zB#ma}t0%&nIZUf>*t&;tE#|C#Hx&lV1<3d2C!AHg0#bFExmArrVKVtLIF_ zArUw$U={c#O^llH!X%HJ!QF>RAdnAs5EaM)H*l5vGB*(V=K_9@$tC9F$r11nIXVn~ z4Naw4q)V=Jb^H}+z1s6%OTeTaTgZP)Smghf+1yOD4En7Nvr8if6=r2;Sx z67`LY?U;uQdLF;-e6j4pRum{t`MADU*MmG{(>e$>MAVnts_|6foav6F{R`^>=th8@^Q1lSY*Sc~=zN)s1{vViZO*3+_*IqowUu;he#eOnA(* z*QhKw1qk>N3>`2&#UbX0Oe1It*th3637HTiuxzTW)xIB*MPNmQc3Ux zeLWA9I)1IU`W3h3R_UwsUhvy}d0>+hTl75(rOz3t`JZ!T^-(T2Dd{uIO9$!*ACcZ= zbK_AFoDzBnJ>=%zPqg(q=Aw%ea@RI6#pLV1ljv92yL~T3CIGf70e<2X*kkLl=?pk0 zX*(i0PQz5FZ+h(Swq_S+pKZ6kJv=-({nl7McE7LS?ThcM6?em0_J#Bv*gK8bH~8h1 zbHH#VW_i{p4}63u+wA5hNQG4qGX|x?Z;RT{MeHo%+uA`?3TD4{L2l%B1RN_ia--DE zV!-9LsE;vha!-Ho*StFz7(v+jUCsdGQsz08iW6M2I#_j$0lohFL z-(!YWNYA@fcuYAt=X?d}?0ZtjrP&o7ov>B)R(_4Jj8u$uLH7yx(GOl@V4=n*`>MVokAB)iflL zzF=fZm*L@eGE6!jcdTD|hs5WIBN(xlnB4oBO#%&mXI?&4=6}=UuYV-$kkdzVS~OQ} z_JG)YH>IXi+uv0BlvB{b*(`T|$lgz74j{B+=1?w_-L`U)e({)@!1R9WBnN`d!3W}k zZbk#?_2P{;HcW%gbM8@=6;idIC>`X8+y$Xf1BS=xJ~v@bf4*n9wVg<`X%a|5vE5EK z`F#s#DnjQl7w(TvI8be%%L7`1B6%o8YVQQ;EY;0ub0A4W=m{r~#J z%%B3WxsJa=S>kT`)Pb9(qckCN1p=%&n_|J=1K+m6bq%Vt0~e==8%RCMgOmNf(H1+= z%NrG*eB<|NMRY>0eusz93)17i(;`hs)6b)OGbVV62uQzuMIlZfHyeI8=^i8r@ZOeK z(V5@%ZUi5nLgh5htuzyTM`>$=D*RZ31H)1sKH&;XYlS_O&>Ut)QFS1bC6Q3o%UGcA ztgX}qjC!|~)qxm~Bj|>G_u%*UoH@F@)#ofu0-iVo3cYy@-MdL+AU{{ZXsAeVGfSxy zo5jt%qj}fnmTpM$Cr1KZtH5Bw3*a;C$A&muH(O24oBoEM0=KJ1B&muvAi^_7rU4JHMuXY{ zlbL>o?<3B?Nzb-3bD+j1mw5mmzpd1_%Jcw1bZ@GA*eY^0J}WW#5^~QH-w=qp;Zpg& zQU_8^kn_5b*19~lJcy6U;4PE|+a9nt7WklMiISaylW!KSi!ypC^!h%$MaA;x*{%~e zb;;1%AeBl}p5ti!!0cw)#xdJ#^ZBi+p45+6TSqwLJr2Y}F?fn$pcgK%u36i8B0F=w ze!9AI^FS26c#64_UCKOdPsFnUGMwf-lHrc_N$U6dclkNbs)i3@nIUH89!PD$M@f^L z5h%Pb1FwRpm+(R*w-#e>{@LF~h_voRI^O$U(Du+g8&uti4^C_3yC(yic7_IHMr7>l zUzJ)+y(jdWm+9KgZXpE)HWr7AQ?ma}Zw1QAR7NQH?KInlIx*P-p!J;0@n(3#@#rW^ zaL*5^MnSto&OGb)AcPNi9qRu~eC?B1P;pQZec@a~Uf4gcU4H8cQ{kk}lYan^h8JHr zhU9si6@&7UYg=;);5IGuWLttsw&$Nqmw0W-m@U@|?gh(9N`q?AXw8-Khaj(7<2TcZ z?#vLweabrl=RDJQpBj``c5!VDtdc%JhcefcgKs&uP`p%kW5Cj1ycC1_-$GE<;d%#$($53BRmAvO zN>ub{;0sXkAbo;*8~@{uFZG4ybJFGQ3dsOyQ0vQgVLs^{FQkcUJ)8`y#}KnfXZ-<@ zjN3trfqRJu4{!i;_^Cb&^4?K40x}EnUs*gYZ?+%0&?rtmG<_;F!m(yW_4SdnQ>U!M z@ZY);Dkvt5|KCHaA6SPT$>S%2;Q!k2C%I2*$#lanFSs(Z>ZwM*ELi*JLgJGWt%0h?A+!u= zc;sH!tA@Eo7F*w?7MgRD(O@=4(wo19iNXD?7T2mo9z-8QZo30x&T9j1S1-gGG!tD81bVSAc zwvcE);J+ImYTGJm*s7^{$9H`Ffv0vv;OkS6S-vSjii!}UVn7@op-3Gbj`d;NF`(`3 zw27Gh@YhKyOT10s-5M}z1zoc8+*VA=LOn;sd+TSaw!zhofcag*2XZDc{h%PoWGy*g zM(~45yWP!*!Q!}JVtHiBCt^HvGvtHv`LRway6Fjg$s2Zca*9faFT>m##*YGac4W# z?5UkN1;Ef(|Eom*1|*S+me@S;_vLdkhgPB=5!v(<4=0{X)VCSlR#s!yC zb^wL=RiO95DxXUS5o|5a>(QD&+nI!XG#=m?+a!?Y490 ze?NY&X)cxeXGo}!&gpf-Q{ihGIxngAB8bch$}Nype> z&bH`{7Bd2n6i5VHhZ14xalbfntA8_Pbo(K>A}a$$EMT5%*%-F3<5R_}&P}`+RHNp= zE|NTS+AF7(hzt@-#S4n##w8O+bg}L9516Q@H!fKCULo6u1j7K|#H3ecjLz^I_qox( zOfY^!EF3@Y<}z+|=u`15W-(g9XfE1kpZMq)GM~B}J#pVP!xEx{PZ>L%9>qK|{$won z+E`QTP2B1$nm$r}N|Cn$Z@$QK)~~ZAk<{-tefIi0xBY_@rH@U75aTNE3B5xIQx$}t zbiJYM&N$fRmti7nUyhIQ1`$w!d~9L3_UB{`pI|U&kI|9Vb~7#0%IY9pB7P{=Pb#C0b9&flAORYG6Gp_UJYG{=hB&*v*!8)Pa9(bhb^H~ z5pP!q*|E=t;>ceI(3MDs!V zJ7ik7;Zd*s&BB8HOeJ>Pq0PdTzY=kSOt@UH7jvQ$XxB;k9L5Me%4_zu&icCYZTqSy ze?zDP4Oj#mH(ay*)Y&)$>+X$Z+!**3%BQ)owrqMEc?j3B__oE01P8E#NJCA_6D)_* z#q`WQ2ynwd4tVOU&!o-}nr8BUlt4!f;;Z|1i;l|VEak+_!}z*RO6fa>20C2rdg%jq zsWK1n2-x@97zc*H>h>I8N+nILgsdG!nBo$Sg3^1aS`5ut5d;3@N|8 zWIDx0$NC6b^RGyMkuoj7#=@dqReCM+KHoZotSN57hT)t*n}54^#{QD7JTGp-&}d8S z>Ifta{lVLq3CGl23q(AK$~B~J-%B1NsPZDY>FJ0Wg2Gzn_!*fxzg4L? zP*aXRLR3TX-Xs*whlChrz2T0)#1^gjSwU9a$%}%Bg7vr8$XM&jw z=cYm}54Bf2p;YFp%2(AYJ(Mh>236|fFqU-J<5gs8iH;VtVGz;PluAo%hBGV^EbTbz={Kwx_{@w(r!h(7@q2W+QBfS!|i%n3d@Fv+$hFm#0q!a|#TgWzM!wdysiN zg$2&Gqa$7}ZxdBb;}I28pV^$3kZ$sBpI52N&y04za-_v_>PA5os?sIRlC_f5KBanM zGQmmm0seD8C{iWd?UH0#r)+6+)H-3pnu* zM*T4d?gOCBFXL({YP!iHMd_6s_qlU689j609kn`ccd8yQizOS0mKkB&93_R8xF;tA z8(6^y*sk3EUp(1PptR!rSudwJ_P$8)I&YnsP^Qt5Rip4u^OwdYY|FW1QR-c+CPhZ%63kQEg%NMzUi*!Dzmvlo|56irjcWFc6$bD z3j<@zg+Ai`A6HZdKuh^LeuaW(4{iqrf2p(>OeX(vPr1ibqJ~b7U6yuE-uV+q|1mU2 z6s-)VE7|LQ_cDAq%Z_8#(w^c|I$&P|OL4T>oC*FREtkpq=3%`VWs>%LJ3h#wAj5kZ zZXD`B%nf6Of2ZizC0l13uVthPiQeNq$K24v4-8}R&$Aw^`w{zL_&@JEG_g9!+BGki z8h>p0&%5xU5b2gdcc z4E7>tP%(KGAwy-X2-MwKuZr&M(-u8;{!Mo8ejm_Qo(=VeEud-H_v4G!WAKr3XA+sA z8V2@&Np02;e>oAwZ(2IBbHANykL+HRpI9MbvU6jm-bn0;0!10_v@UzJyzBaM``;f+ z^2EWwzB%F05wHcbri9n0dx}L`qUs-ds-b7}LSbpkk#Oj+nrc~r+Ty;)aBSIUAK#4* zZn_QY+fx@}lwJnC-SD26DFZ8(dra-uJ7b-?(^)C^NuL@ zhyL!r1^+vz+^@^TC5Ydi{BLB0ajs~SJfBEft0pfw#YsFwl$~~4tDob0`q!uWH~Mge z)D-`xJ2CZ%(159!Mb>-4lLz-?2aUyj1(agz`|3BkMgM!?m9h1ecfo_E!HlH7!^)wL zHCtw~WJh}Clm874hb78hmy+CxMD{^+=?eES1g@h*NpRa+w z*079rh;zgK!P;-i|J}KztmnfJTp^Cn^Zpmv=|qznWJVf7+$H}VKIjvH3jK*@D_3Zr z&Y%AUb&<3&Yp=$lWy`o;y;gg(@c*s@!vEz%DvF<<{eN?_)_9mGZjo!=JrL+O7Suth@LiePPZpk;lR>UZdJ3y_$7CQnC2i z0*in+5dXe7Auvr<&t6T~L*!&q>2IIHwT$0#+Y^i6*HXnq`}F_W%HO>$VD+9RuKT~9 zt~@NMZGCsm(o$28N70Llke|X`WtlY@S7)oK1==-L(QxqH1X_+1Z|1xUzPW=(430wY3qhd_!2!nC4r!at_3UKIOU&>~ zTn}=L=6#59*QWA*$Cgmc+Ph82mpG>5_V)+Obo;{UyQw?lG5pu~WY>U}?Rj5cRPtjJ ztjV2xVGa6@D?5LtiBByCpgJHq0?&91+ax~Jj6)mDg{3Cc*tSNLu^3gps%R?}J$nVP z_lb9d`h39){}`Qt>cumWw*J=^v0pF?=fG~Vu80+9UQ1-Oji^nxW8C&5&&N0r&3qqF ztGbmRNx&`5hn3%wtLXwD>liczgzalaIp#PvI^-zmIf#rg?vN9WW$B`AEf;)dz{nIW z{ze$shMdUf+{<)K3^qqN(sVsFinZ^##wVE0V6BCUCGz2zh6_!SK?iUWKn z8i>;5*IBUn8PE>h?Tz^`7u;o=ePArfq;n=|Ov++Qhb)Ns}MKYO>bE&LL2)p^t=k7I~Y-<)2}il+j%cc_dj)Q{sVs!OT_s)(Eh1X z>f$lSQ2;UWdkP%;=WIc_eWY}L6ydVD7SX;{q`-}wgnW#rgg2XK5!~BlGBp8bO7ZkT zh|z-yTE8hK1PLh>nfH@5LxMTP?0rqj2~p@EeSILPX8nUFCX&M$chfJ^f!U?UG24H2 z>@S@nU|5Aa?ED+0AuM@ z%E|$LrM5}YHf}r4B{|95)N!z|5CMf5&-C!J#eA)XalkrYEOf`~^&Mla6AvqqBjfSk zwmPi`L$0;1fJZ;!h32-wSA?@=Iadbinc`|hZm~G);9Z7%suRP$s#qKIs?Lj1eC!;W z(-xEu&q=+A$Q->ZB7qDG?%qn{aptuIPFQ<1R7v6vtsd54mv|e?4V{a ztMRBdYfj1?MJG5@a4Y5c)FEJ(tD1-p<2breV1Q2s)Y zj#ni&$HFVRXE?HRZGPC2%86iR%F^!yfKFj+Kv;^5HDUuqIF{)0-o5Q$N_!6Ssv7jWs!?E%B zVVMaM{^_Rs6~=I$MqMX7;&dPOIEFc;9QOQD)k}PEs19(`$FIunq16D5KQFRP8Ol$E z>>ff!-7>4zjv7A{7%&E#5aD9Qp$sj{a!gfHrXbm5=k366qlGuo3 zy0862V<2>&{eL05yhTqHS7DY({heyyS0(k6G-)qSBTBA%}D< zqVYYb%iZ&6?=rP%Fqh4B0?AE~IpcQ$6&>k*-t?#Mi2$3Zo;Mm57>p}_`YgB#N;4Jv zriLcDK_-fPK^6Hhtf3m9Rr=}YW$7d}vt@9uMDp4jvM@SPSVQ-5$q2SD1su17fQG0a z5`c+UF3LnFgTzkw=C>7fwFvk3wv;%__sbHY$F%K&OS=v-ULL3EuM2QU8Txd}*gt}q zmfea;s4kCn-c4{1;2QS;5zRj`wfmV{r{_NN98+T5`pHpUAH$#qfcvWPnjbrTnp!D1 z3`z&!kcA1qr*~!*D|itC8INUq<2QMp7&!w?|9KGTL1vn<);l>f+99r4p&c0=0O~l< z1NvnO^IEOQsvzb5FnCTPHx0~DcCt^YAjEkELH*ivYkh8FL$>j?R}_&&fg>p;nCwR*$WNXgBrQXnrOdk_Fu4a97OmT^~iZ z2FG>h<~DItQDC>v1GNI`6^NjMIKWK9_A$5Uu&C8_J9Z&F0xQUjj}$s>_?q|;w{?1V zK?bH%x!w_{oj0b0Y;GgiwB4S+5&>r5o`7QTu^H_PYjNe7+S!D-MtM=%I=>j{1|p2l zbRT}XP8YKURU{2eQ1E_(Hr=ek<;X~kXd^7j6q$Egp3-47wifUzCw`Nn&c%ISD5$q^ z{6fIPxR&#}hF%hhkHZ)0v!VQO@TrPKbP`EGseMMfFoubHN^M@npgTadHs~%$6})H> zmu9)OZh!OL6*9Gu`ekpXvhNcntOKMGSz!ld7mXAm0yxIJ6RW>pphu04 z^Bz_PjHJ_b4!bMSaTE>9&Jdb*e6{}V(4 zNn-{mOj7N-^yh6wI9|}9A^gK+XZPs4^!81yUg?XW?xi(R0PUhm`_u%3k$8V3n)x!ba7Jr)s5La1m3Dekc;c?Af>KfM+%Wju_&*n`8e&yd&;9bkrSU!S z3XH-OrGP(Dg8hK<2WNZZvp0XT11Dw^5csLwkrr`L=F_c?!RV4>iA`j7gIsNBqUp!s zBVdp$brU`->wSL?YLrDoQX0<~!xwr8SnHm^Y*9!u8jj|scqU@%flN78uyz%e`$?tk zTGtob`;bIS*)gU8|Kb?~(r`p~yd{uoL~3?i{`XWh;^hmOK@ymWK~9uVHme}(V! zYXGS&23v#-M%*%LTlZuj?H4Wg5OVrskM8t(yuLYvx>41aJQpcv4hdn3r@{lK1fS#x z@e2l>BMv1$enT`$rH#l`qLLp+2G<9c#v{_iCtI$jN@v~s)*rm|9*4u~m4XH*Ravx3 z7S}2_iEWGjvCFyyyf~*c^9CM?`C*UfT}{a$4+4XR%*No78Jg;Eo1je}3bC#UXRP|0 z1%nJ&%dbb8+a!*0vHP2x!+hLe@w_A@#=vt^SKxkG(ve@hzHlz3Bs1Aow+8-kS0eah z_l>1{)SR_awpI5M9I%w1t6kxf;fJ9znWJ=s6uJ9y7d(Z@=(wYu)u5@B$ku&kg52DAs3sx{&UBh)(fx)$%G1hVGq+ z%8Wq;7(JhCb{%H7_+{LHyViZhnxBS`K@29&rrlER-?+lRKF1xseHC{rBrvhr_*(t# z6VY(p7MS|EzG)ix&jvl&*@p+7YN)D;XZPTCPls`b!}H@R&C7f(Ui<5_zs!WbmWxt90>5o%=-nTt_dq z?#Zvh`u`It{M65>DpCZA2B(fSd>_;L{fUevd3_}Lo90oLsnjTrYn0sf{l;Yx`_(@H z8yc<`kt4nf9m;oDvHPA}SpKSdDCyrM>vRx5^wBJ^;oWjTLk4}>d*Ah1E81DaThG;- zim*P<(IY)$4oMyBHLLfbstFoBcux5vdy^RF8TB&9?Yuf zxkbjZgetTestAccount()); - $result = Factory::security()->textRisk()->detect("test"); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/php/test/util/aes/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/util/aes/ClientTest.php deleted file mode 100644 index 816008bb..00000000 --- a/vendor/alipaysdk/easysdk/php/test/util/aes/ClientTest.php +++ /dev/null @@ -1,27 +0,0 @@ -getTestAccount()); - } - - public function testDecrypt(){ - $result = Factory::util()->aes()->decrypt("ILpoMowjIQjfYMR847rnFQ=="); - $this->assertEquals(true, $result == 'test1234567'); - - } - - public function testEncrypt(){ - $result = Factory::util()->aes()->encrypt("test1234567"); - $this->assertEquals(true, $result == 'ILpoMowjIQjfYMR847rnFQ=='); - } -} diff --git a/vendor/alipaysdk/easysdk/php/test/util/generic/ClientTest.php b/vendor/alipaysdk/easysdk/php/test/util/generic/ClientTest.php deleted file mode 100644 index 5854913c..00000000 --- a/vendor/alipaysdk/easysdk/php/test/util/generic/ClientTest.php +++ /dev/null @@ -1,95 +0,0 @@ -getTestAccount()); - } - - public function testSDKExecute() - { - $bizParams = array( - "subject" => "Iphone6 16G", - "out_trade_no" => "f4833085-0c46-4bb0-8e5f-622a02a4cffc", - "total_amount" => "0.10" - ); - - $textParams = array(); - - $result = Factory::util()->generic()->sdkExecute("alipay.trade.app.pay", $textParams, $bizParams); - $this->assertEquals(true, strpos($result->body, 'alipay_sdk=alipay-easysdk-php') > 0); - $this->assertEquals(true, strpos($result->body, 'sign') > 0); - } - - public function testFileExecute() - { - $textParams = array( - "image_type" => "png", - "image_name" => "海底捞", - "image_pids" => "22088021822217233" - ); - $account = new TestAccount(); - $filePath = $account->getResourcesPath(). '/resources/fixture/sample.png'; - - $fileParams = array( - "image_content" => $filePath - ); - - $result = Factory::util()->generic()->fileExecute("alipay.offline.material.image.upload", $textParams, null, $fileParams); - $responseChecker = new ResponseChecker(); - $this->assertEquals(true, $responseChecker->success($result)); - $this->assertEquals('Success', $result->msg); - } - - public function testExecuteWithoutAppAuthToken() - { - $result = Factory::util()->generic()->execute("alipay.trade.create", null, $this->getBizParams(microtime())); - $this->assertEquals('10000', $result->code); - $this->assertEquals('Success', $result->msg); - } - - public function testExecuteWithAppAuthToken() - { - $result = Factory::util()->generic()->execute("alipay.trade.create", $this->getTextParams(), $this->getBizParams(microtime())); - $this->assertEquals('20001', $result->code); - $this->assertEquals('Insufficient Token Permissions', $result->msg); - $this->assertEquals('aop.invalid-app-auth-token', $result->subCode); - $this->assertEquals('无效的应用授权令牌', $result->subMsg); - } - - //设置系统参数(OpenAPI中非biz_content里的参数) - private function getTextParams() - { - return array("app_auth_token" => "201712BB_D0804adb2e743078d1822d536956X34"); - } - - private function getBizParams($outTradeNo) - { - $bizParams = array( - "subject" => "Iphone6 16G", - "out_trade_no" => $outTradeNo, - "total_amount" => "0.10", - "buyer_id" => "2088002656718920", - "extend_params" => $this->getHuabeiParams() - ); - return $bizParams; - } - - private function getHuabeiParams() - { - $extendParams = array("hb_fq_num" => "3", "hb_fq_seller_percent" => "3"); - return $extendParams; - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/tea/base/image/Teafile b/vendor/alipaysdk/easysdk/tea/base/image/Teafile deleted file mode 100644 index 0999cc4b..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/image/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-base-image", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.base.image", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Base.Image", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Base.Image" - }, - "go": { - "namespace": "base/image" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/base/image/main.tea b/vendor/alipaysdk/easysdk/tea/base/image/main.tea deleted file mode 100644 index d93736f7..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/image/main.tea +++ /dev/null @@ -1,88 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayOfflineMaterialImageUploadResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - imageId: string(name='image_id'), - imageUrl: string(name='image_url') -} - -api upload(imageName: string, imageFilePath: string): AlipayOfflineMaterialImageUploadResponse { - var systemParams: map[string]string = { - method = 'alipay.offline.material.image.upload', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - }; - - var textParams: map[string]string = { - image_type = 'jpg', - image_name = imageName - }; - - var fileParams: map[string]string = { - image_content = imageFilePath - }; - - var boundary = @kernel.getRandomBoundary(); - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = @kernel.concatStr('multipart/form-data;charset=utf-8;boundary=', boundary) - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - }); - - __request.body = @kernel.toMultipartRequestBody(textParams, fileParams, boundary); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.offline.material.image.upload"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 100000, - readTimeout = 100000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/base/oauth/Teafile b/vendor/alipaysdk/easysdk/tea/base/oauth/Teafile deleted file mode 100644 index 2d971336..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/oauth/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-base-oauth", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.base.oauth", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Base.OAuth", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Base.OAuth" - }, - "go": { - "namespace": "base/oauth" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/base/oauth/main.tea b/vendor/alipaysdk/easysdk/tea/base/oauth/main.tea deleted file mode 100644 index ff28a4fa..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/oauth/main.tea +++ /dev/null @@ -1,150 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipaySystemOauthTokenResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - userId: string(name='user_id'), - accessToken: string(name='access_token'), - expiresIn: long(name='expires_in'), - refreshToken: string(name='refresh_token'), - reExpiresIn: long(name='re_expires_in') -} - -api getToken(code: string): AlipaySystemOauthTokenResponse { - var systemParams: map[string]string = { - method = 'alipay.system.oauth.token', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - }; - - var textParams: map[string]string = { - grant_type = 'authorization_code', - code = code - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: object = @kernel.readAsJson(__response, "alipay.system.oauth.token"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api refreshToken(refreshToken: string): AlipaySystemOauthTokenResponse { - var systemParams: map[string]string = { - method = 'alipay.system.oauth.token', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - }; - - var textParams: map[string]string = { - grant_type = 'refresh_token', - refresh_token = refreshToken - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: object = @kernel.readAsJson(__response, "alipay.system.oauth.token"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/base/qrcode/Teafile b/vendor/alipaysdk/easysdk/tea/base/qrcode/Teafile deleted file mode 100644 index 48b2d406..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/qrcode/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-base-qrcode", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.base.qrcode", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Base.Qrcode", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Base.Qrcode" - }, - "go": { - "namespace": "base/qrcode" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/base/qrcode/main.tea b/vendor/alipaysdk/easysdk/tea/base/qrcode/main.tea deleted file mode 100644 index 821bf99b..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/qrcode/main.tea +++ /dev/null @@ -1,83 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayOpenAppQrcodeCreateResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - qrCodeUrl: string(name='qr_code_url') -} - -api create(urlParam: string, queryParam: string, describe: string): AlipayOpenAppQrcodeCreateResponse { - var systemParams: map[string]string = { - method = 'alipay.open.app.qrcode.create', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - url_param = urlParam, - query_param = queryParam, - describe = describe - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: object = @kernel.readAsJson(__response, "alipay.open.app.qrcode.create"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/base/video/Teafile b/vendor/alipaysdk/easysdk/tea/base/video/Teafile deleted file mode 100644 index e504f5eb..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/video/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-base-video", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.base.video", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Base.Video", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Base.Video" - }, - "go": { - "namespace": "base/video" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/base/video/main.tea b/vendor/alipaysdk/easysdk/tea/base/video/main.tea deleted file mode 100644 index 9f58f202..00000000 --- a/vendor/alipaysdk/easysdk/tea/base/video/main.tea +++ /dev/null @@ -1,88 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayOfflineMaterialImageUploadResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - imageId: string(name='image_id'), - imageUrl: string(name='image_url') -} - -api upload(videoName: string, videoFilePath: string): AlipayOfflineMaterialImageUploadResponse { - var systemParams: map[string]string = { - method = 'alipay.offline.material.image.upload', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - }; - - var textParams: map[string]string = { - image_type = 'mp4', - image_name = videoName - }; - - var fileParams: map[string]string = { - image_content = videoFilePath - }; - - var boundary = @kernel.getRandomBoundary(); - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = @kernel.concatStr('multipart/form-data;charset=utf-8;boundary=', boundary) - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - }); - - __request.body = @kernel.toMultipartRequestBody(textParams, fileParams, boundary); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.offline.material.image.upload"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 100000, - readTimeout = 100000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/kernel/Teafile b/vendor/alipaysdk/easysdk/tea/kernel/Teafile deleted file mode 100644 index ee192b47..00000000 --- a/vendor/alipaysdk/easysdk/tea/kernel/Teafile +++ /dev/null @@ -1,22 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-kernel", - "version": "0.0.1", - "main": "./main.tea", - "releases": { - "java": "com.alipay.sdk:easysdk-kernel:1.0.3", - "csharp": "AlipayEasySDK.Kernel:1.0.1" - }, - "java": { - "package": "com.alipay.easysdk.kernel" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Kernel" - }, - "php": { - "namespace": "Alipay.EasySDK.Kernel" - }, - "go": { - "namespace": "alipay/easysdk/kernel" - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/tea/kernel/main.tea b/vendor/alipaysdk/easysdk/tea/kernel/main.tea deleted file mode 100644 index c7d3aa42..00000000 --- a/vendor/alipaysdk/easysdk/tea/kernel/main.tea +++ /dev/null @@ -1,50 +0,0 @@ -model Context { - config: map[string]any, - certEnvironment: any -} - -init(context: Context); - -function getTimestamp(): string; - -function getConfig(key: string): string; - -function getSdkVersion(): string; - -function toUrlEncodedRequestBody(bizParams: map[string]any): bytes; - -async function readAsJson(response: $Response, method: string): map[string]any; - -function toRespModel(respMap: map[string]any): map[string]any; - -function getRandomBoundary(): string; - -function toMultipartRequestBody(textParams: map[string]string, fileParams: map[string]string, boundary: string): readable; - -function generatePage(method: string, systemParams: map[string]string, bizParams: map[string]any, textParams: map[string]string, sign: string): string; - -function getMerchantCertSN(): string; - -function getAlipayCertSN(respMap:map[string]any): string; - -function getAlipayRootCertSN(): string; - -function isCertMode(): boolean; - -function extractAlipayPublicKey(alipayCertSN:string): string; - -function verify(respMap: map[string]any, alipayPublicKey: string): boolean; - -function sign(systemParams: map[string]string, bizParams: map[string]any, textParams: map[string]string, merchantPrivateKey: string): string; - -function aesEncrypt(plainText: string, encryptKey: string): string; - -function aesDecrypt(cipherText: string, encryptKey: string): string; - -function generateOrderString(systemParams: map[string]string, bizParams: map[string]any, textParams: map[string]string, sign: string): string; - -function concatStr(a: string, b: string): string; - -function verifyParams(parameters: map[string]string, publicKey: string): boolean; - -function sortMap(randomMap: map[string]string): map[string]string; \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/tea/marketing/openlife/Teafile b/vendor/alipaysdk/easysdk/tea/marketing/openlife/Teafile deleted file mode 100644 index 704b255e..00000000 --- a/vendor/alipaysdk/easysdk/tea/marketing/openlife/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-marketing-openlife", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.marketing.openlife", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Marketing.OpenLife", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Marketing.OpenLife" - }, - "go": { - "namespace": "marketing/openlife" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/marketing/openlife/main.tea b/vendor/alipaysdk/easysdk/tea/marketing/openlife/main.tea deleted file mode 100644 index 54825243..00000000 --- a/vendor/alipaysdk/easysdk/tea/marketing/openlife/main.tea +++ /dev/null @@ -1,644 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayOpenPublicMessageContentCreateResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - contentId: string(name='content_id'), - contentUrl: string(name='content_url') -} - -model AlipayOpenPublicMessageContentModifyResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - contentId: string(name='content_id'), - contentUrl: string(name='content_url') -} - -model AlipayOpenPublicMessageTotalSendResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - messageId: string(name='message_id') -} - -model Text { - title: string(name='title'), - content: string(name='content') -} - -model Article { - title?: string(name='title'), - desc: string(name='desc'), - imageUrl?: string(name='image_url'), - url: string(name='url'), - actionName?: string(name='action_name') -} - -model Keyword { - color: string(name='color'), - value: string(name='value') -} - -model Context { - headColor: string(name='head_color'), - url: string(name='url'), - actionName: string(name='action_name'), - keyword1?: Keyword(name='keyword1'), - keyword2?: Keyword(name='keyword2'), - first?: Keyword(name='first'), - remark?: Keyword(name='remark') -} - -model Template { - templateId: string(name='template_id'), - context: Context(name='context') -} - -model AlipayOpenPublicMessageSingleSendResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg') -} - -model AlipayOpenPublicLifeMsgRecallResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg') -} - -model AlipayOpenPublicTemplateMessageIndustryModifyResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg') -} - -model AlipayOpenPublicSettingCategoryQueryResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - primaryCategory: string(name='primary_category'), - secondaryCategory: string(name='secondary_category') -} - -api createImageTextContent(title: string, cover: string, content: string, contentComment: string, ctype: string, benefit: string, extTags: string, loginIds: string): AlipayOpenPublicMessageContentCreateResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.message.content.create', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - title = title, - cover = cover, - content = content, - could_comment = contentComment, - ctype = ctype, - benefit = benefit, - ext_tags = extTags, - login_ids = loginIds - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.message.content.create"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api modifyImageTextContent(contentId: string, title: string, cover: string, content: string, couldComment: string, ctype: string, benefit: string, extTags: string, loginIds: string): AlipayOpenPublicMessageContentModifyResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.message.content.modify', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - content_id = contentId, - title = title, - cover = cover, - content = content, - could_comment = couldComment, - ctype = ctype, - benefit = benefit, - ext_tags = extTags, - login_ids = loginIds - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.message.content.modify"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api sendText(text: string): AlipayOpenPublicMessageTotalSendResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.message.total.send', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var textObj: Text = new Text { - title = '', - content = text - }; - - var bizParams: map[string]any = { - msg_type = 'text', - text = textObj - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.message.total.send"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api sendImageText(articles: [ Article ]): AlipayOpenPublicMessageTotalSendResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.message.total.send', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - msg_type = 'image-text', - articles = articles - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.message.total.send"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api sendSingleMessage(toUserId: string, template: Template): AlipayOpenPublicMessageSingleSendResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.message.single.send', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - to_user_id = toUserId, - template = template - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.message.single.send"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api recallMessage(messageId: string): AlipayOpenPublicLifeMsgRecallResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.life.msg.recall', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - message_id = messageId - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.life.msg.recall"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api setIndustry(primaryIndustryCode: string, primaryIndustryName: string, secondaryIndustryCode: string, secondaryIndustryName: string): AlipayOpenPublicTemplateMessageIndustryModifyResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.template.message.industry.modify', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - primary_industry_code = primaryIndustryCode, - primary_industry_name = primaryIndustryName, - secondary_industry_code = secondaryIndustryCode, - secondary_industry_name = secondaryIndustryName - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.template.message.industry.modify"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api getIndustry(): AlipayOpenPublicSettingCategoryQueryResponse { - var systemParams: map[string]string = { - method = 'alipay.open.public.setting.category.query', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.public.setting.category.query"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/marketing/pass/Teafile b/vendor/alipaysdk/easysdk/tea/marketing/pass/Teafile deleted file mode 100644 index d0e7498e..00000000 --- a/vendor/alipaysdk/easysdk/tea/marketing/pass/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-marketing-pass", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.marketing.pass", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Marketing.Pass", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Marketing.Pass" - }, - "go": { - "namespace": "marketing/pass" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/marketing/pass/main.tea b/vendor/alipaysdk/easysdk/tea/marketing/pass/main.tea deleted file mode 100644 index 85c03be6..00000000 --- a/vendor/alipaysdk/easysdk/tea/marketing/pass/main.tea +++ /dev/null @@ -1,317 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayPassTemplateAddResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - success: boolean(name='success'), - result: string(name='result') -} - -model AlipayPassTemplateUpdateResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - success: boolean(name='success'), - result: string(name='result') -} - -model AlipayPassInstanceAddResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - success: boolean(name='success'), - result: string(name='result') -} - -model AlipayPassInstanceUpdateResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - success: boolean(name='success'), - result: string(name='result') -} - -api createTemplate(uniqueId: string, tplContent: string): AlipayPassTemplateAddResponse { - var systemParams: map[string]string = { - method = 'alipay.pass.template.add', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - unique_id = uniqueId, - tpl_content = tplContent - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.pass.template.add"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api updateTemplate(tplId: string, tplContent: string): AlipayPassTemplateUpdateResponse { - var systemParams: map[string]string = { - method = 'alipay.pass.template.update', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - tpl_id = tplId, - tpl_content = tplContent - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.pass.template.update"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api addInstance(tplId: string, tplParams: string, recognitionType: string, recognitionInfo: string): AlipayPassInstanceAddResponse { - var systemParams: map[string]string = { - method = 'alipay.pass.instance.add', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - tpl_id = tplId, - tpl_params = tplParams, - recognition_type = recognitionType, - recognition_info = recognitionInfo - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.pass.instance.add"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api updateInstance(serialNumber: string, channelId: string, tplParams: string, status: string, verifyCode: string, verifyType: string): AlipayPassInstanceUpdateResponse { - var systemParams: map[string]string = { - method = 'alipay.pass.instance.update', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - serial_number = serialNumber, - channel_id = channelId, - tpl_params = tplParams, - status = status, - verify_code = verifyCode, - verify_type = verifyType - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.pass.instance.update"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/marketing/templateMessage/Teafile b/vendor/alipaysdk/easysdk/tea/marketing/templateMessage/Teafile deleted file mode 100644 index 9ba709ab..00000000 --- a/vendor/alipaysdk/easysdk/tea/marketing/templateMessage/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-marketing-templatemessage", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.marketing.templatemessage", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Marketing.TemplateMessage", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Marketing.TemplateMessage" - }, - "go": { - "namespace": "marketing/templatemessage" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/marketing/templateMessage/main.tea b/vendor/alipaysdk/easysdk/tea/marketing/templateMessage/main.tea deleted file mode 100644 index 48535ee2..00000000 --- a/vendor/alipaysdk/easysdk/tea/marketing/templateMessage/main.tea +++ /dev/null @@ -1,83 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayOpenAppMiniTemplatemessageSendResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg') -} - -api send(toUserId: string, formId: string, userTemplateId: string, page: string, data: string): AlipayOpenAppMiniTemplatemessageSendResponse { - var systemParams: map[string]string = { - method = 'alipay.open.app.mini.templatemessage.send', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - to_user_id = toUserId, - form_id = formId, - user_template_id = userTemplateId, - page = page, - data = data - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.open.app.mini.templatemessage.send"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/member/identification/Teafile b/vendor/alipaysdk/easysdk/tea/member/identification/Teafile deleted file mode 100644 index 9e5cf34c..00000000 --- a/vendor/alipaysdk/easysdk/tea/member/identification/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-member-identification", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.member.identification", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Member.Identification", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Member.Identification" - }, - "go": { - "namespace": "member/identification" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/member/identification/main.tea b/vendor/alipaysdk/easysdk/tea/member/identification/main.tea deleted file mode 100644 index 90096e4d..00000000 --- a/vendor/alipaysdk/easysdk/tea/member/identification/main.tea +++ /dev/null @@ -1,204 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model IdentityParam { - identityType: string(name='identity_type'), - certType: string(name='cert_type'), - certName: string(name='cert_name'), - certNo: string(name='cert_no') -} - -model MerchantConfig { - returnUrl: string(name='return_url') -} - -model AlipayUserCertifyOpenInitializeResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - certifyId: string(name='certify_id') -} - -model AlipayUserCertifyOpenCertifyResponse { - body: string(name='body', description='认证服务请求地址') -} - -model AlipayUserCertifyOpenQueryResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - passed: string(name='passed'), - identityInfo: string(name='identity_info'), - materialInfo: string(name='material_info') -} - -api init(outerOrderNo: string, bizCode: string, identityParam: IdentityParam, merchantConfig: MerchantConfig): AlipayUserCertifyOpenInitializeResponse { - var systemParams: map[string]string = { - method = 'alipay.user.certify.open.initialize', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - outer_order_no = outerOrderNo, - biz_code = bizCode, - identity_param = identityParam, - merchant_config = merchantConfig - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.user.certify.open.initialize"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -function certify(certifyId: string): AlipayUserCertifyOpenCertifyResponse { - var systemParams: map[string]string = { - method = 'alipay.user.certify.open.certify', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - certify_id = certifyId - }; - - var textParams: map[string]string = { - }; - - var sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig('merchantPrivateKey')); - - var response: map[string]string = { - body = @kernel.generatePage('GET', systemParams, bizParams, textParams, sign) - }; - return response; -} - -api query(certifyId: string): AlipayUserCertifyOpenQueryResponse { - var systemParams: map[string]string = { - method = 'alipay.user.certify.open.query', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - certify_id = certifyId - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.user.certify.open.query"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/app/Teafile b/vendor/alipaysdk/easysdk/tea/payment/app/Teafile deleted file mode 100644 index ce73a531..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/app/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-payment-app", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.payment.app", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Payment.App", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Payment.App" - }, - "go": { - "namespace": "payment/app" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/app/main.tea b/vendor/alipaysdk/easysdk/tea/payment/app/main.tea deleted file mode 100644 index 0f35d864..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/app/main.tea +++ /dev/null @@ -1,42 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayTradeAppPayResponse { - body: string(name='body', description='订单信息,字符串形式') -} - -function pay(subject: string, outTradeNo: string, totalAmount: string): AlipayTradeAppPayResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.app.pay', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - subject = subject, - out_trade_no = outTradeNo, - total_amount = totalAmount - }; - - var textParams: map[string]string = { - }; - - var sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig('merchantPrivateKey')); - - var response: map[string]string = { - body = @kernel.generateOrderString(systemParams, bizParams, textParams, sign) - }; - return response; -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/common/Teafile b/vendor/alipaysdk/easysdk/tea/payment/common/Teafile deleted file mode 100644 index 5e129c3f..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/common/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-payment-common", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.payment.common", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Payment.Common", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Payment.Common" - }, - "go": { - "namespace": "payment/common" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/common/main.tea b/vendor/alipaysdk/easysdk/tea/payment/common/main.tea deleted file mode 100644 index f30c9acd..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/common/main.tea +++ /dev/null @@ -1,650 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model RefundRoyaltyResult{ - refundAmount: string(name='refund_amount'), - royaltyType: string(name='royalty_type'), - resultCode: string(name='result_code'), - transOut: string(name='trans_out'), - transOutEmail: string(name='trans_out_email'), - transIn: string(name='trans_in'), - transInEmail: string(name='trans_in_email'), -} - -model TradeFundBill { - fundChannel: string(name='fund_channel'), - bankCode: string(name='bank_code'), - amount: string(name='amount'), - realAmount: string(name='real_amount'), - fundType: string(name='fund_type') -} - -model TradeSettleDetail { - operationType: string(name='operation_type'), - operationSerial_no: string(name='operation_serial_no'), - operationDt: string(name='operation_dt'), - transOut: string(name='trans_out'), - transIn: string(name='trans_in'), - amount: string(name='amount') -} - -model TradeSettleInfo { - tradeSettleDetailList: [ TradeSettleDetail ](name='trade_settle_detail_list') -} - -model PresetPayToolInfo { - amount: [ string ](name='amount'), - assertTypeCode: string(name='assert_type_code') -} - -model AlipayTradeCreateResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - outTradeNo: string(name='out_trade_no'), - tradeNo: string(name='trade_no') -} - -model AlipayTradeQueryResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - tradeNo: string(name='trade_no'), - outTradeNo: string(name='out_trade_no'), - buyerLogonId: string(name='buyer_logon_id'), - tradeStatus: string(name='trade_status'), - totalAmount: string(name='total_amount'), - transCurrency: string(name='trans_currency'), - settleCurrency: string(name='settle_currency'), - settleAmount: string(name='settle_amount'), - payCurrency: string(name='pay_currency'), - payAmount: string(name='pay_amount'), - settleTransRate: string(name='settle_trans_rate'), - transPayRate: string(name='trans_pay_rate'), - buyerPayAmount: string(name='buyer_pay_amount'), - pointAmount: string(name='point_amount'), - invoiceAmount: string(name='invoice_amount'), - sendPayDate: string(name='send_pay_date'), - receiptAmount: string(name='receipt_amount'), - storeId: string(name='store_id'), - terminalId: string(name='terminal_id'), - fundBillList: [ TradeFundBill ](name='fund_bill_list'), - storeName: string(name='store_name'), - buyerUserId: string(name='buyer_user_id'), - chargeAmount: string(name='charge_amount'), - chargeFlags: string(name='charge_flags'), - settlementId: string(name='settlement_id'), - tradeSettleInfo: [ TradeSettleInfo ](name='trade_settle_info'), - authTradePayMode: string(name='auth_trade_pay_mode'), - buyerUserType: string(name='buyer_user_type'), - mdiscountAmount: string(name='mdiscount_amount'), - discountAmount: string(name='discount_amount'), - buyerUserName: string(name='buyer_user_name'), - subject: string(name='subject'), - body: string(name='body'), - alipaySubMerchantId: string(name='alipay_sub_merchant_id'), - extInfos: string(name='ext_infos') -} - -model AlipayTradeRefundResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - tradeNo: string(name='trade_no'), - outTradeNo: string(name='out_trade_no'), - buyerLogonId: string(name='buyer_logon_id'), - fundChange: string(name='fund_change'), - refundFee: string(name='refund_fee'), - refundCurrency: string(name='refund_currency'), - gmtRefundPay: string(name='gmt_refund_pay'), - refundDetailItemList: [ TradeFundBill ](name='refund_detail_item_list'), - storeName: string(name='store_name'), - buyerUserId: string(name='buyer_user_id'), - refundPresetPaytoolList: [ PresetPayToolInfo ](name='refund_preset_paytool_list'), - refundSettlementId: string(name='refund_settlement_id'), - presentRefundBuyerAmount: string(name='present_refund_buyer_amount'), - presentRefundDiscountAmount: string(name='present_refund_discount_amount'), - presentRefundMdiscountAmount: string(name='present_refund_mdiscount_amount'), -} - -model AlipayTradeCloseResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - tradeNo: string(name='trade_no'), - outTradeNo: string(name='out_trade_no') -} - -model AlipayTradeCancelResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - tradeNo: string(name='trade_no'), - outTradeNo: string(name='out_trade_no'), - retryFlag: string(name='retry_flag'), - action: string(name='action'), - gmtRefundPay: string(name='gmt_refund_pay'), - refundSettlementId: string(name='refund_settlement_id') -} - -model AlipayTradeFastpayRefundQueryResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - errorCode: string(name='error_code'), - gmtRefundPay: string(name='gmt_refund_pay'), - industrySepcDetail: string(name='industry_sepc_detail'), - outRequestNo: string(name='out_request_no'), - outTradeNo: string(name='out_trade_no'), - presentRefundBuyerAmount: string(name='present_refund_buyer_amount'), - presentRefundDiscountAmount: string(name='present_refund_discount_amount'), - presentRefundMdiscountAmount: string(name='present_refund_mdiscount_amount'), - refundAmount: string(name='refund_amount'), - refundChargeAmount: string(name='refund_charge_amount'), - refundDetailItemList: [ TradeFundBill ](name='refund_detail_item_list'), - refundReason: string(name='refund_reason'), - refundRoyaltys: [ RefundRoyaltyResult ](name='refund_royaltys'), - refundSettlementId: string(name='refund_settlement_id'), - refundStatus: string(name='refund_status'), - sendBackFee: string(name='send_back_fee'), - totalAmount: string(name='total_amount'), - tradeNo: string(name='trade_no') -} - -model AlipayDataDataserviceBillDownloadurlQueryResponse{ - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - billDownloadUrl: string(name='bill_download_url'), -} - -api create(subject: string, outTradeNo: string, totalAmount: string, buyerId: string): AlipayTradeCreateResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.create', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - subject = subject, - out_trade_no = outTradeNo, - total_amount = totalAmount, - buyer_id = buyerId - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.create"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api query(outTradeNo: string): AlipayTradeQueryResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.query', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - out_trade_no = outTradeNo - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.query"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api refund(outTradeNo: string, refundAmount: string): AlipayTradeRefundResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.refund', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - out_trade_no = outTradeNo, - refund_amount = refundAmount - }; - - var textParams: map[string]string = { - }; - - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.refund"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api close(outTradeNo: string): AlipayTradeCloseResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.close', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - out_trade_no = outTradeNo - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.close"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api cancel(outTradeNo: string): AlipayTradeCancelResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.cancel', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - out_trade_no = outTradeNo - }; - - var textParams: map[string]string = { - }; - - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.cancel"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api queryRefund(outTradeNo: string, outRequestNo: string): AlipayTradeFastpayRefundQueryResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.fastpay.refund.query', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - out_trade_no = outTradeNo, - out_request_no = outRequestNo - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.fastpay.refund.query"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api downloadBill(billType: string, billDate: string): AlipayDataDataserviceBillDownloadurlQueryResponse { - var systemParams: map[string]string = { - method = 'alipay.data.dataservice.bill.downloadurl.query', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - bill_type = billType, - bill_date = billDate - }; - - var textParams: map[string]string = { - }; - - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.data.dataservice.bill.downloadurl.query"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -function verifyNotify(parameters: map[string]string): boolean { - if (@kernel.isCertMode()) { - return @kernel.verifyParams(parameters, @kernel.extractAlipayPublicKey('')); - } else { - return @kernel.verifyParams(parameters, @kernel.getConfig('alipayPublicKey')); - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/faceToFace/Teafile b/vendor/alipaysdk/easysdk/tea/payment/faceToFace/Teafile deleted file mode 100644 index 676d5726..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/faceToFace/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-payment-facetoface", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.payment.facetoface", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Payment.FaceToFace", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Payment.FaceToFace" - }, - "go": { - "namespace": "payment/facetoface" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/faceToFace/main.tea b/vendor/alipaysdk/easysdk/tea/payment/faceToFace/main.tea deleted file mode 100644 index 47cff15d..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/faceToFace/main.tea +++ /dev/null @@ -1,215 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model TradeFundBill { - fundChannel: string(name='fund_channel'), - bankCode: string(name='bank_code'), - amount: string(name='amount'), - realAmount: string(name='real_amount') -} - -model VoucherDetail { - id: string(name='id'), - name: string(name='name'), - type: string(name='type'), - amount: string(name='amount'), - merchantContribute: string(name='merchant_contribute'), - otherContribute: string(name='other_contribute'), - memo: string(name='memo'), - templateId: string(name='template_id'), - purchaseBuyerContribute: string(name='purchase_buyer_contribute'), - purchaseMerchantContribute: string(name='purchase_merchant_contribute'), - purchaseAntContribute: string(name='purchase_ant_contribute') -} - -model AlipayTradePayResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - tradeNo: string(name='trade_no'), - outTradeNo: string(name='out_trade_no'), - buyerLogonId: string(name='buyer_logon_id'), - settleAmount: string(name='settle_amount'), - payCurrency: string(name='pay_currency'), - payAmount: string(name='pay_amount'), - settleTransRate: string(name='settle_trans_rate'), - transPayRate: string(name='trans_pay_rate'), - totalAmount: string(name='total_amount'), - transCurrency: string(name='trans_currency'), - settleCurrency: string(name='settle_currency'), - receiptAmount: string(name='receipt_amount'), - buyerPayAmount: string(name='buyer_pay_amount'), - pointAmount: string(name='point_amount'), - invoiceAmount: string(name='invoice_amount'), - gmtPayment: string(name='gmt_payment'), - fundBillList: [ TradeFundBill ](name='fund_bill_list'), - cardBalance: string(name='card_balance'), - storeName: string(name='store_name'), - buyerUserId: string(name='buyer_user_id'), - discountGoodsDetail: string(name='discount_goods_detail'), - voucherDetailList: [ VoucherDetail ](name='voucher_detail_list'), - advanceAmount: string(name='advance_amount'), - authTradePayMode: string(name='auth_trade_pay_mode'), - chargeAmount: string(name='charge_amount'), - chargeFlags: string(name='charge_flags'), - settlementId: string(name='settlement_id'), - businessParams: string(name='business_params'), - buyerUserType: string(name='buyer_user_type'), - mdiscountAmount: string(name='mdiscount_amount'), - discountAmount: string(name='discount_amount'), - buyerUserName: string(name='buyer_user_name') -} - -model AlipayTradePrecreateResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - outTradeNo: string(name='out_trade_no'), - qrCode: string(name='qr_code'), -} - - -api pay(subject: string, outTradeNo: string, totalAmount: string, authCode: string): AlipayTradePayResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.pay', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - subject = subject, - out_trade_no = outTradeNo, - total_amount = totalAmount, - auth_code = authCode, - scene = 'bar_code' - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.pay"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - -api preCreate(subject: string, outTradeNo: string, totalAmount: string): AlipayTradePrecreateResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.precreate', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - subject = subject, - out_trade_no = outTradeNo, - total_amount = totalAmount - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.precreate"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/huabei/Teafile b/vendor/alipaysdk/easysdk/tea/payment/huabei/Teafile deleted file mode 100644 index 907b6256..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/huabei/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-payment-huabei", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.payment.huabei", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Payment.Huabei", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Payment.Huabei" - }, - "go": { - "namespace": "payment/huabei" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/huabei/main.tea b/vendor/alipaysdk/easysdk/tea/payment/huabei/main.tea deleted file mode 100644 index 710d019d..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/huabei/main.tea +++ /dev/null @@ -1,91 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model HuabeiConfig { - hbFqNum: string(name='hb_fq_num'), - hbFqSellerPercent: string(name='hb_fq_seller_percent') -} - -model AlipayTradeCreateResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - outTradeNo: string(name='out_trade_no'), - tradeNo: string(name='trade_no') -} - -api create(subject: string, outTradeNo: string, totalAmount: string, buyerId: string, extendParams: HuabeiConfig): AlipayTradeCreateResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.create', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - subject = subject, - out_trade_no = outTradeNo, - total_amount = totalAmount, - buyer_id = buyerId, - extend_params = extendParams - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.trade.create"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/page/Teafile b/vendor/alipaysdk/easysdk/tea/payment/page/Teafile deleted file mode 100644 index 28803ac7..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/page/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-payment-page", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.payment.page", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Payment.Page", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Payment.Page" - }, - "go": { - "namespace": "payment/page" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/page/main.tea b/vendor/alipaysdk/easysdk/tea/payment/page/main.tea deleted file mode 100644 index 84616c8d..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/page/main.tea +++ /dev/null @@ -1,44 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayTradePagePayResponse { - body: string(name='body', description='订单信息,Form表单形式') -} - -function pay(subject: string, outTradeNo: string, totalAmount: string, returnUrl: string): AlipayTradePagePayResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.page.pay', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - subject = subject, - out_trade_no = outTradeNo, - total_amount = totalAmount, - product_code = 'FAST_INSTANT_TRADE_PAY' - }; - - var textParams: map[string]string = { - return_url = returnUrl - }; - - var sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig('merchantPrivateKey')); - - var response: map[string]string = { - body = @kernel.generatePage('POST', systemParams, bizParams, textParams, sign) - }; - return response; -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/wap/Teafile b/vendor/alipaysdk/easysdk/tea/payment/wap/Teafile deleted file mode 100644 index 90a19630..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/wap/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-payment-wap", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.payment.wap", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Payment.Wap", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Payment.Wap" - }, - "go": { - "namespace": "payment/wap" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/payment/wap/main.tea b/vendor/alipaysdk/easysdk/tea/payment/wap/main.tea deleted file mode 100644 index c819dcac..00000000 --- a/vendor/alipaysdk/easysdk/tea/payment/wap/main.tea +++ /dev/null @@ -1,45 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayTradeWapPayResponse { - body: string(name='body', description='订单信息,Form表单形式') -} - -function pay(subject: string, outTradeNo: string, totalAmount: string, quitUrl: string, returnUrl: string): AlipayTradeWapPayResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.wap.pay', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - subject = subject, - out_trade_no = outTradeNo, - total_amount = totalAmount, - quit_url = quitUrl, - product_code = 'QUICK_WAP_WAY' - }; - - var textParams: map[string]string = { - return_url = returnUrl - }; - - var sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig('merchantPrivateKey')); - - var response: map[string]string = { - body = @kernel.generatePage('POST', systemParams, bizParams, textParams, sign) - }; - return response; -} diff --git a/vendor/alipaysdk/easysdk/tea/security/textRisk/Teafile b/vendor/alipaysdk/easysdk/tea/security/textRisk/Teafile deleted file mode 100644 index f396ccb3..00000000 --- a/vendor/alipaysdk/easysdk/tea/security/textRisk/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-security-textrisk", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.security.textrisk", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Security.TextRisk", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Security.TextRisk" - }, - "go": { - "namespace": "security/textRisk" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} \ No newline at end of file diff --git a/vendor/alipaysdk/easysdk/tea/security/textRisk/main.tea b/vendor/alipaysdk/easysdk/tea/security/textRisk/main.tea deleted file mode 100644 index 91fb193d..00000000 --- a/vendor/alipaysdk/easysdk/tea/security/textRisk/main.tea +++ /dev/null @@ -1,82 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipaySecurityRiskContentDetectResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - action: string(name='action'), - keywords: [ string ](name='keywords'), - uniqueId: string(name='unique_id') -} - -api detect(content: string): AlipaySecurityRiskContentDetectResponse { - var systemParams: map[string]string = { - method = 'alipay.security.risk.content.detect', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - content = content - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.security.risk.content.detect"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/trans/Teafile b/vendor/alipaysdk/easysdk/tea/trans/Teafile deleted file mode 100644 index 907b6256..00000000 --- a/vendor/alipaysdk/easysdk/tea/trans/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-payment-huabei", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.payment.huabei", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Payment.Huabei", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Payment.Huabei" - }, - "go": { - "namespace": "payment/huabei" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/trans/main.tea b/vendor/alipaysdk/easysdk/tea/trans/main.tea deleted file mode 100644 index 685dc813..00000000 --- a/vendor/alipaysdk/easysdk/tea/trans/main.tea +++ /dev/null @@ -1,94 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model PayeeInfo { - identity: string(name='identity'), - identityType: string(name='identity_type'), - name: string(name='identity_type') -} - -model AlipayFundTransUniTransferResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg'), - - outBizNo: string(name='out_biz_no'), - orderId: string(name='order_id'), - payFundOrderId: string(name='pay_fund_order_id'), - status: string(name='status'), - transDate: string(name='trans_date') -} - -api transfer(outBizNo: string, transAmount: string, productCode: string, payeeInfo: PayeeInfo): AlipayFundTransUniTransferResponse { - var systemParams: map[string]string = { - method = 'alipay.trade.create', - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var bizParams: map[string]any = { - out_biz_no = outBizNo, - trans_amount = transAmount, - product_code = productCode, - payee_info = payeeInfo - }; - - var textParams: map[string]string = { - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, "alipay.fund.trans.uni.transfer"); - - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} diff --git a/vendor/alipaysdk/easysdk/tea/util/aes/Teafile b/vendor/alipaysdk/easysdk/tea/util/aes/Teafile deleted file mode 100644 index f2031cad..00000000 --- a/vendor/alipaysdk/easysdk/tea/util/aes/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-util-aes", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.util.aes", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Util.AES", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Util.AES" - }, - "go": { - "baseClient": "util/aes" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/util/aes/main.tea b/vendor/alipaysdk/easysdk/tea/util/aes/main.tea deleted file mode 100644 index b07a420b..00000000 --- a/vendor/alipaysdk/easysdk/tea/util/aes/main.tea +++ /dev/null @@ -1,15 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -function decrypt(cipherText: string): string { - return @kernel.aesDecrypt(cipherText, @kernel.getConfig('encryptKey')); -} - -function encrypt(plainText: string): string { - return @kernel.aesEncrypt(plainText, @kernel.getConfig('encryptKey')); -} diff --git a/vendor/alipaysdk/easysdk/tea/util/generic/Teafile b/vendor/alipaysdk/easysdk/tea/util/generic/Teafile deleted file mode 100644 index f692d207..00000000 --- a/vendor/alipaysdk/easysdk/tea/util/generic/Teafile +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scope": "alipay", - "name": "easysdk-system-generic", - "version": "0.0.1", - "main": "./main.tea", - "java": { - "package": "com.alipay.easysdk.util.generic", - "baseClient": "com.alipay.easysdk.kernel.BaseClient" - }, - "csharp": { - "namespace": "Alipay.EasySDK.Util.Generic", - "baseClient": "Alipay.EasySDK.Kernel:BaseClient" - }, - "typescript": { - "baseClient": "@alipay/easysdk-baseclient" - }, - "php": { - "package": "Alipay.EasySDK.Util.Generic" - }, - "go": { - "baseClient": "util/generic" - }, - "libraries": { - "EasySDKKernel": "alipay:easysdk-kernel:*" - } -} diff --git a/vendor/alipaysdk/easysdk/tea/util/generic/main.tea b/vendor/alipaysdk/easysdk/tea/util/generic/main.tea deleted file mode 100644 index e1703b16..00000000 --- a/vendor/alipaysdk/easysdk/tea/util/generic/main.tea +++ /dev/null @@ -1,157 +0,0 @@ -import EasySDKKernel; - -type @kernel = EasySDKKernel - -init(kernel: EasySDKKernel) { - @kernel = kernel; -} - -model AlipayOpenApiGenericResponse { - httpBody: string(name='http_body', description='响应原始字符串'), - code: string(name='code'), - msg: string(name='msg'), - subCode: string(name='sub_code'), - subMsg: string(name='sub_msg') -} - -model AlipayOpenApiGenericSDKResponse { - body: string(name='body', description='订单信息,字符串形式') -} - -api execute(method: string, textParams: map[string]string, bizParams: map[string]any): AlipayOpenApiGenericResponse { - var systemParams: map[string]string = { - method = method, - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = 'application/x-www-form-urlencoded;charset=utf-8' - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toUrlEncodedRequestBody(bizParams); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, method); - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 15000, - readTimeout = 15000, - retry = { - maxAttempts = 0 - } -} - - -api fileExecute(method: string, textParams: map[string]string, bizParams: map[string]any, fileParams: map[string]string): AlipayOpenApiGenericResponse { - var systemParams: map[string]string = { - method = method, - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var boundary = @kernel.getRandomBoundary(); - - __request.protocol = @kernel.getConfig("protocol"); - __request.method = 'POST'; - __request.pathname = '/gateway.do'; - - __request.headers = { - host = @kernel.getConfig("gatewayHost"), - content-type = @kernel.concatStr('multipart/form-data;charset=utf-8;boundary=', boundary) - }; - - __request.query = @kernel.sortMap({ - sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")), - ... systemParams, - ... textParams - }); - - __request.body = @kernel.toMultipartRequestBody(textParams, fileParams, boundary); -} returns { - var respMap: map[string]any = @kernel.readAsJson(__response, method); - if (@kernel.isCertMode()) { - if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) { - return @kernel.toRespModel(respMap); - } - } else { - if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) { - return @kernel.toRespModel(respMap); - } - } - - throw { - message = '验签失败,请检查支付宝公钥设置是否正确。' - } - -} runtime { - ignoreSSL = @kernel.getConfig("ignoreSSL"), - httpProxy = @kernel.getConfig("httpProxy"), - connectTimeout = 100000, - readTimeout = 100000, - retry = { - maxAttempts = 0 - } -} - -api sdkExecute(method: string, textParams: map[string]string, bizParams: map[string]any): AlipayOpenApiGenericSDKResponse { - var systemParams: map[string]string = { - method = method, - app_id = @kernel.getConfig("appId"), - timestamp = @kernel.getTimestamp(), - format = 'json', - version = '1.0', - alipay_sdk = @kernel.getSdkVersion(), - charset = 'UTF-8', - sign_type = @kernel.getConfig("signType"), - app_cert_sn = @kernel.getMerchantCertSN(), - alipay_root_cert_sn = @kernel.getAlipayRootCertSN() - }; - - var sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig('merchantPrivateKey')); - - var response: map[string]string = { - body = @kernel.generateOrderString(systemParams, bizParams, textParams, sign) - }; - return response; -} - diff --git a/vendor/autoload.php b/vendor/autoload.php deleted file mode 100644 index e388db77..00000000 --- a/vendor/autoload.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ - private $vendorDir; - - // PSR-4 - /** - * @var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var list - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> - */ - private $prefixesPsr0 = array(); - /** - * @var list - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var array - */ - private $missingClasses = array(); - - /** @var string|null */ - private $apcuPrefix; - - /** - * @var array - */ - private static $registeredLoaders = array(); - - /** - * @param string|null $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return array> - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return list - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return list - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return array Array of classname => path - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. - * - * @return array - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php deleted file mode 100644 index 2052022f..00000000 --- a/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,396 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to - * @internal - */ - private static $selfDir = null; - - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool - */ - private static $installedIsLocalDir; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints((string) $constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - - // when using reload, we disable the duplicate protection to ensure that self::$installed data is - // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, - // so we have to assume it does not, and that may result in duplicate data being returned when listing - // all installed packages for example - self::$installedIsLocalDir = false; - } - - /** - * @return string - */ - private static function getSelfDir() - { - if (self::$selfDir === null) { - self::$selfDir = strtr(__DIR__, '\\', '/'); - } - - return self::$selfDir; - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - $copiedLocalDir = false; - - if (self::$canGetVendors) { - $selfDir = self::getSelfDir(); - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - $vendorDir = strtr($vendorDir, '\\', '/'); - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require $vendorDir.'/composer/installed.php'; - self::$installedByVendor[$vendorDir] = $required; - $installed[] = $required; - if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { - self::$installed = $required; - self::$installedIsLocalDir = true; - } - } - if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { - $copiedLocalDir = true; - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; - } else { - self::$installed = array(); - } - } - - if (self::$installed !== array() && !$copiedLocalDir) { - $installed[] = self::$installed; - } - - return $installed; - } -} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE deleted file mode 100644 index f27399a0..00000000 --- a/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php deleted file mode 100644 index 0fb0a2c1..00000000 --- a/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,10 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', -); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php deleted file mode 100644 index e09b4af2..00000000 --- a/vendor/composer/autoload_files.php +++ /dev/null @@ -1,13 +0,0 @@ - $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', - '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', - 'd767e4fc2dc52fe66584ab8c6684783e' => $vendorDir . '/adbario/php-dot-notation/src/helpers.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3a..00000000 --- a/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), - 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), - 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), - 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), - 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), - 'Alipay\\EasySDK\\' => array($vendorDir . '/alipaysdk/easysdk/php/src'), - 'AlibabaCloud\\Tea\\FileForm\\' => array($vendorDir . '/alibabacloud/tea-fileform/src'), - 'AlibabaCloud\\Tea\\' => array($vendorDir . '/alibabacloud/tea/src'), - 'Adbar\\' => array($vendorDir . '/adbario/php-dot-notation/src'), -); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php deleted file mode 100644 index 8b13c068..00000000 --- a/vendor/composer/autoload_real.php +++ /dev/null @@ -1,50 +0,0 @@ -register(true); - - $filesToLoad = \Composer\Autoload\ComposerStaticInit524ca69e0ade104f4102231471f256e3::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - - return $loader; - } -} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php deleted file mode 100644 index 907f62a0..00000000 --- a/vendor/composer/autoload_static.php +++ /dev/null @@ -1,90 +0,0 @@ - __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', - '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', - 'd767e4fc2dc52fe66584ab8c6684783e' => __DIR__ . '/..' . '/adbario/php-dot-notation/src/helpers.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'P' => - array ( - 'Psr\\Http\\Message\\' => 17, - 'Psr\\Http\\Client\\' => 16, - ), - 'G' => - array ( - 'GuzzleHttp\\Psr7\\' => 16, - 'GuzzleHttp\\Promise\\' => 19, - 'GuzzleHttp\\' => 11, - ), - 'A' => - array ( - 'Alipay\\EasySDK\\' => 15, - 'AlibabaCloud\\Tea\\FileForm\\' => 26, - 'AlibabaCloud\\Tea\\' => 17, - 'Adbar\\' => 6, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Psr\\Http\\Message\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-factory/src', - 1 => __DIR__ . '/..' . '/psr/http-message/src', - ), - 'Psr\\Http\\Client\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-client/src', - ), - 'GuzzleHttp\\Psr7\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', - ), - 'GuzzleHttp\\Promise\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', - ), - 'GuzzleHttp\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', - ), - 'Alipay\\EasySDK\\' => - array ( - 0 => __DIR__ . '/..' . '/alipaysdk/easysdk/php/src', - ), - 'AlibabaCloud\\Tea\\FileForm\\' => - array ( - 0 => __DIR__ . '/..' . '/alibabacloud/tea-fileform/src', - ), - 'AlibabaCloud\\Tea\\' => - array ( - 0 => __DIR__ . '/..' . '/alibabacloud/tea/src', - ), - 'Adbar\\' => - array ( - 0 => __DIR__ . '/..' . '/adbario/php-dot-notation/src', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit524ca69e0ade104f4102231471f256e3::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit524ca69e0ade104f4102231471f256e3::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit524ca69e0ade104f4102231471f256e3::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json deleted file mode 100644 index 6e8ec96e..00000000 --- a/vendor/composer/installed.json +++ /dev/null @@ -1,855 +0,0 @@ -{ - "packages": [ - { - "name": "adbario/php-dot-notation", - "version": "2.5.0", - "version_normalized": "2.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/adbario/php-dot-notation.git", - "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", - "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^5.5 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "time": "2022-10-14T20:31:46+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Adbar\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Riku Särkinen", - "email": "riku@adbar.io" - } - ], - "description": "PHP dot notation access to arrays", - "homepage": "https://github.com/adbario/php-dot-notation", - "keywords": [ - "ArrayAccess", - "dotnotation" - ], - "support": { - "issues": "https://github.com/adbario/php-dot-notation/issues", - "source": "https://github.com/adbario/php-dot-notation/tree/2.5.0" - }, - "install-path": "../adbario/php-dot-notation" - }, - { - "name": "alibabacloud/tea", - "version": "3.2.1", - "version_normalized": "3.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/aliyun/tea-php.git", - "reference": "1619cb96c158384f72b873e1f85de8b299c9c367" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aliyun/tea-php/zipball/1619cb96c158384f72b873e1f85de8b299c9c367", - "reference": "1619cb96c158384f72b873e1f85de8b299c9c367", - "shasum": "" - }, - "require": { - "adbario/php-dot-notation": "^2.4", - "ext-curl": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "*", - "symfony/dotenv": "^3.4", - "symfony/var-dumper": "^3.4" - }, - "suggest": { - "ext-sockets": "To use client-side monitoring" - }, - "time": "2023-05-16T06:43:41+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "AlibabaCloud\\Tea\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Alibaba Cloud SDK", - "email": "sdk-team@alibabacloud.com", - "homepage": "http://www.alibabacloud.com" - } - ], - "description": "Client of Tea for PHP", - "homepage": "https://www.alibabacloud.com/", - "keywords": [ - "alibabacloud", - "client", - "cloud", - "tea" - ], - "support": { - "issues": "https://github.com/aliyun/tea-php/issues", - "source": "https://github.com/aliyun/tea-php" - }, - "install-path": "../alibabacloud/tea" - }, - { - "name": "alibabacloud/tea-fileform", - "version": "0.3.4", - "version_normalized": "0.3.4.0", - "source": { - "type": "git", - "url": "https://github.com/alibabacloud-sdk-php/tea-fileform.git", - "reference": "4bf0c75a045c8115aa8cb1a394bd08d8bb833181" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/alibabacloud-sdk-php/tea-fileform/zipball/4bf0c75a045c8115aa8cb1a394bd08d8bb833181", - "reference": "4bf0c75a045c8115aa8cb1a394bd08d8bb833181", - "shasum": "" - }, - "require": { - "alibabacloud/tea": "^3.0", - "php": ">5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.3" - }, - "time": "2020-12-01T07:24:35+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "AlibabaCloud\\Tea\\FileForm\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Alibaba Cloud SDK", - "email": "sdk-team@alibabacloud.com" - } - ], - "description": "Alibaba Cloud Tea File Library for PHP", - "support": { - "issues": "https://github.com/alibabacloud-sdk-php/tea-fileform/issues", - "source": "https://github.com/alibabacloud-sdk-php/tea-fileform/tree/0.3.4" - }, - "install-path": "../alibabacloud/tea-fileform" - }, - { - "name": "alipaysdk/easysdk", - "version": "2.2.3", - "version_normalized": "2.2.3.0", - "source": { - "type": "git", - "url": "https://github.com/alipay/alipay-easysdk.git", - "reference": "c6008839a22a5fca08e9f8536730f7abfed522d5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/alipay/alipay-easysdk/zipball/c6008839a22a5fca08e9f8536730f7abfed522d5", - "reference": "c6008839a22a5fca08e9f8536730f7abfed522d5", - "shasum": "" - }, - "require": { - "alibabacloud/tea": "^3.1", - "alibabacloud/tea-fileform": "^0.3.2", - "ext-ctype": "*", - "ext-curl": "*", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle": ">=6.3", - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.5" - }, - "time": "2022-11-28T14:04:57+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Alipay\\EasySDK\\": "php/src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "junying.wjy", - "email": "junying.wjy@antfin.com" - } - ], - "description": "支付宝官方 Alipay Easy SDK", - "support": { - "source": "https://github.com/alipay/alipay-easysdk/tree/v2.2.3" - }, - "install-path": "../alipaysdk/easysdk" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.10.0", - "version_normalized": "7.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", - "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^2.3", - "guzzlehttp/psr7": "^2.8", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-curl": "*", - "guzzle/client-integration-tests": "3.0.2", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.39 || ^9.6.20", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "time": "2025-08-23T22:36:01+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.10.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/guzzle" - }, - { - "name": "guzzlehttp/promises", - "version": "2.3.0", - "version_normalized": "2.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "481557b130ef3790cf82b713667b43030dc9c957" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", - "reference": "481557b130ef3790cf82b713667b43030dc9c957", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" - }, - "time": "2025-08-22T14:34:08+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.3.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/promises" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.8.0", - "version_normalized": "2.8.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "21dc724a0583619cd1652f673303492272778051" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", - "reference": "21dc724a0583619cd1652f673303492272778051", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "time": "2025-08-23T21:21:41+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.8.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/psr7" - }, - { - "name": "psr/http-client", - "version": "1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "time": "2023-09-23T14:17:50+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client" - }, - "install-path": "../psr/http-client" - }, - { - "name": "psr/http-factory", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0 || ^2.0" - }, - "time": "2024-04-15T12:06:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory" - }, - "install-path": "../psr/http-factory" - }, - { - "name": "psr/http-message", - "version": "2.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "time": "2023-04-04T09:54:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "install-path": "../psr/http-message" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "time": "2019-03-08T08:55:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "install-path": "../ralouphie/getallheaders" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.6.0", - "version_normalized": "3.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2024-09-25T14:21:43+00:00", - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/deprecation-contracts" - } - ], - "dev": true, - "dev-package-names": [] -} diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php deleted file mode 100644 index cd4039cf..00000000 --- a/vendor/composer/installed.php +++ /dev/null @@ -1,149 +0,0 @@ - array( - 'name' => '__root__', - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '4367212756e8a4c8a91f8356b0cae7d015b45fe1', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev' => true, - ), - 'versions' => array( - '__root__' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '4367212756e8a4c8a91f8356b0cae7d015b45fe1', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'adbario/php-dot-notation' => array( - 'pretty_version' => '2.5.0', - 'version' => '2.5.0.0', - 'reference' => '081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae', - 'type' => 'library', - 'install_path' => __DIR__ . '/../adbario/php-dot-notation', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'alibabacloud/tea' => array( - 'pretty_version' => '3.2.1', - 'version' => '3.2.1.0', - 'reference' => '1619cb96c158384f72b873e1f85de8b299c9c367', - 'type' => 'library', - 'install_path' => __DIR__ . '/../alibabacloud/tea', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'alibabacloud/tea-fileform' => array( - 'pretty_version' => '0.3.4', - 'version' => '0.3.4.0', - 'reference' => '4bf0c75a045c8115aa8cb1a394bd08d8bb833181', - 'type' => 'library', - 'install_path' => __DIR__ . '/../alibabacloud/tea-fileform', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'alipaysdk/easysdk' => array( - 'pretty_version' => '2.2.3', - 'version' => '2.2.3.0', - 'reference' => 'c6008839a22a5fca08e9f8536730f7abfed522d5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../alipaysdk/easysdk', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/guzzle' => array( - 'pretty_version' => '7.10.0', - 'version' => '7.10.0.0', - 'reference' => 'b51ac707cfa420b7bfd4e4d5e510ba8008e822b4', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/promises' => array( - 'pretty_version' => '2.3.0', - 'version' => '2.3.0.0', - 'reference' => '481557b130ef3790cf82b713667b43030dc9c957', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/promises', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/psr7' => array( - 'pretty_version' => '2.8.0', - 'version' => '2.8.0.0', - 'reference' => '21dc724a0583619cd1652f673303492272778051', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/psr7', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-client' => array( - 'pretty_version' => '1.0.3', - 'version' => '1.0.3.0', - 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-client', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-client-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-factory' => array( - 'pretty_version' => '1.1.0', - 'version' => '1.1.0.0', - 'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-factory', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-factory-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-message' => array( - 'pretty_version' => '2.0', - 'version' => '2.0.0.0', - 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-message', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-message-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'ralouphie/getallheaders' => array( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'reference' => '120b605dfeb996808c31b6477290a714d356e822', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ralouphie/getallheaders', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.6.0', - 'version' => '3.6.0.0', - 'reference' => '63afe740e99a13ba87ec199bb07bbdee937a5b62', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php deleted file mode 100644 index 4c3a5d68..00000000 --- a/vendor/composer/platform_check.php +++ /dev/null @@ -1,26 +0,0 @@ -= 80100)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR - ); -} diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md deleted file mode 100644 index 5fe721e0..00000000 --- a/vendor/guzzlehttp/guzzle/CHANGELOG.md +++ /dev/null @@ -1,1683 +0,0 @@ -# Change Log - -Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version. - -## 7.10.0 - 2025-08-23 - -### Added - -- Support for PHP 8.5 - -### Changed - -- Adjusted `guzzlehttp/promises` version constraint to `^2.3` -- Adjusted `guzzlehttp/psr7` version constraint to `^2.8` - - -## 7.9.3 - 2025-03-27 - -### Changed - -- Remove explicit content-length header for GET requests -- Improve compatibility with bad servers for boolean cookie values - - -## 7.9.2 - 2024-07-24 - -### Fixed - -- Adjusted handler selection to use cURL if its version is 7.21.2 or higher, rather than 7.34.0 - - -## 7.9.1 - 2024-07-19 - -### Fixed - -- Fix TLS 1.3 check for HTTP/2 requests - - -## 7.9.0 - 2024-07-18 - -### Changed - -- Improve protocol version checks to provide feedback around unsupported protocols -- Only select the cURL handler by default if 7.34.0 or higher is linked -- Improved `CurlMultiHandler` to avoid busy wait if possible -- Dropped support for EOL `guzzlehttp/psr7` v1 -- Improved URI user info redaction in errors - -## 7.8.2 - 2024-07-18 - -### Added - -- Support for PHP 8.4 - - -## 7.8.1 - 2023-12-03 - -### Changed - -- Updated links in docs to their canonical versions -- Replaced `call_user_func*` with native calls - - -## 7.8.0 - 2023-08-27 - -### Added - -- Support for PHP 8.3 -- Added automatic closing of handles on `CurlFactory` object destruction - - -## 7.7.1 - 2023-08-27 - -### Changed - -- Remove the need for `AllowDynamicProperties` in `CurlMultiHandler` - - -## 7.7.0 - 2023-05-21 - -### Added - -- Support `guzzlehttp/promises` v2 - - -## 7.6.1 - 2023-05-15 - -### Fixed - -- Fix `SetCookie::fromString` MaxAge deprecation warning and skip invalid MaxAge values - - -## 7.6.0 - 2023-05-14 - -### Added - -- Support for setting the minimum TLS version in a unified way -- Apply on request the version set in options parameters - - -## 7.5.2 - 2023-05-14 - -### Fixed - -- Fixed set cookie constructor validation -- Fixed handling of files with `'0'` body - -### Changed - -- Corrected docs and default connect timeout value to 300 seconds - - -## 7.5.1 - 2023-04-17 - -### Fixed - -- Fixed `NO_PROXY` settings so that setting the `proxy` option to `no` overrides the env variable - -### Changed - -- Adjusted `guzzlehttp/psr7` version constraint to `^1.9.1 || ^2.4.5` - - -## 7.5.0 - 2022-08-28 - -### Added - -- Support PHP 8.2 -- Add request to delay closure params - - -## 7.4.5 - 2022-06-20 - -### Fixed - -* Fix change in port should be considered a change in origin -* Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin - - -## 7.4.4 - 2022-06-09 - -### Fixed - -* Fix failure to strip Authorization header on HTTP downgrade -* Fix failure to strip the Cookie header on change in host or HTTP downgrade - - -## 7.4.3 - 2022-05-25 - -### Fixed - -* Fix cross-domain cookie leakage - - -## 7.4.2 - 2022-03-20 - -### Fixed - -- Remove curl auth on cross-domain redirects to align with the Authorization HTTP header -- Reject non-HTTP schemes in StreamHandler -- Set a default ssl.peer_name context in StreamHandler to allow `force_ip_resolve` - - -## 7.4.1 - 2021-12-06 - -### Changed - -- Replaced implicit URI to string coercion [#2946](https://github.com/guzzle/guzzle/pull/2946) -- Allow `symfony/deprecation-contracts` version 3 [#2961](https://github.com/guzzle/guzzle/pull/2961) - -### Fixed - -- Only close curl handle if it's done [#2950](https://github.com/guzzle/guzzle/pull/2950) - - -## 7.4.0 - 2021-10-18 - -### Added - -- Support PHP 8.1 [#2929](https://github.com/guzzle/guzzle/pull/2929), [#2939](https://github.com/guzzle/guzzle/pull/2939) -- Support `psr/log` version 2 and 3 [#2943](https://github.com/guzzle/guzzle/pull/2943) - -### Fixed - -- Make sure we always call `restore_error_handler()` [#2915](https://github.com/guzzle/guzzle/pull/2915) -- Fix progress parameter type compatibility between the cURL and stream handlers [#2936](https://github.com/guzzle/guzzle/pull/2936) -- Throw `InvalidArgumentException` when an incorrect `headers` array is provided [#2916](https://github.com/guzzle/guzzle/pull/2916), [#2942](https://github.com/guzzle/guzzle/pull/2942) - -### Changed - -- Be more strict with types [#2914](https://github.com/guzzle/guzzle/pull/2914), [#2917](https://github.com/guzzle/guzzle/pull/2917), [#2919](https://github.com/guzzle/guzzle/pull/2919), [#2945](https://github.com/guzzle/guzzle/pull/2945) - - -## 7.3.0 - 2021-03-23 - -### Added - -- Support for DER and P12 certificates [#2413](https://github.com/guzzle/guzzle/pull/2413) -- Support the cURL (http://) scheme for StreamHandler proxies [#2850](https://github.com/guzzle/guzzle/pull/2850) -- Support for `guzzlehttp/psr7:^2.0` [#2878](https://github.com/guzzle/guzzle/pull/2878) - -### Fixed - -- Handle exceptions on invalid header consistently between PHP versions and handlers [#2872](https://github.com/guzzle/guzzle/pull/2872) - - -## 7.2.0 - 2020-10-10 - -### Added - -- Support for PHP 8 [#2712](https://github.com/guzzle/guzzle/pull/2712), [#2715](https://github.com/guzzle/guzzle/pull/2715), [#2789](https://github.com/guzzle/guzzle/pull/2789) -- Support passing a body summarizer to the http errors middleware [#2795](https://github.com/guzzle/guzzle/pull/2795) - -### Fixed - -- Handle exceptions during response creation [#2591](https://github.com/guzzle/guzzle/pull/2591) -- Fix CURLOPT_ENCODING not to be overwritten [#2595](https://github.com/guzzle/guzzle/pull/2595) -- Make sure the Request always has a body object [#2804](https://github.com/guzzle/guzzle/pull/2804) - -### Changed - -- The `TooManyRedirectsException` has a response [#2660](https://github.com/guzzle/guzzle/pull/2660) -- Avoid "functions" from dependencies [#2712](https://github.com/guzzle/guzzle/pull/2712) - -### Deprecated - -- Using environment variable GUZZLE_CURL_SELECT_TIMEOUT [#2786](https://github.com/guzzle/guzzle/pull/2786) - - -## 7.1.1 - 2020-09-30 - -### Fixed - -- Incorrect EOF detection for response body streams on Windows. - -### Changed - -- We dont connect curl `sink` on HEAD requests. -- Removed some PHP 5 workarounds - - -## 7.1.0 - 2020-09-22 - -### Added - -- `GuzzleHttp\MessageFormatterInterface` - -### Fixed - -- Fixed issue that caused cookies with no value not to be stored. -- On redirects, we allow all safe methods like GET, HEAD and OPTIONS. -- Fixed logging on empty responses. -- Make sure MessageFormatter::format returns string - -### Deprecated - -- All functions in `GuzzleHttp` has been deprecated. Use static methods on `Utils` instead. -- `ClientInterface::getConfig()` -- `Client::getConfig()` -- `Client::__call()` -- `Utils::defaultCaBundle()` -- `CurlFactory::LOW_CURL_VERSION_NUMBER` - - -## 7.0.1 - 2020-06-27 - -* Fix multiply defined functions fatal error [#2699](https://github.com/guzzle/guzzle/pull/2699) - - -## 7.0.0 - 2020-06-27 - -No changes since 7.0.0-rc1. - - -## 7.0.0-rc1 - 2020-06-15 - -### Changed - -* Use error level for logging errors in Middleware [#2629](https://github.com/guzzle/guzzle/pull/2629) -* Disabled IDN support by default and require ext-intl to use it [#2675](https://github.com/guzzle/guzzle/pull/2675) - - -## 7.0.0-beta2 - 2020-05-25 - -### Added - -* Using `Utils` class instead of functions in the `GuzzleHttp` namespace. [#2546](https://github.com/guzzle/guzzle/pull/2546) -* `ClientInterface::MAJOR_VERSION` [#2583](https://github.com/guzzle/guzzle/pull/2583) - -### Changed - -* Avoid the `getenv` function when unsafe [#2531](https://github.com/guzzle/guzzle/pull/2531) -* Added real client methods [#2529](https://github.com/guzzle/guzzle/pull/2529) -* Avoid functions due to global install conflicts [#2546](https://github.com/guzzle/guzzle/pull/2546) -* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550) -* Adding methods for HTTP verbs like `Client::get()`, `Client::head()`, `Client::patch()` etc [#2529](https://github.com/guzzle/guzzle/pull/2529) -* `ConnectException` extends `TransferException` [#2541](https://github.com/guzzle/guzzle/pull/2541) -* Updated the default User Agent to "GuzzleHttp/7" [#2654](https://github.com/guzzle/guzzle/pull/2654) - -### Fixed - -* Various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626) - -### Removed - -* Pool option `pool_size` [#2528](https://github.com/guzzle/guzzle/pull/2528) - - -## 7.0.0-beta1 - 2019-12-30 - -The diff might look very big but 95% of Guzzle users will be able to upgrade without modification. -Please see [the upgrade document](UPGRADING.md) that describes all BC breaking changes. - -### Added - -* Implement PSR-18 and dropped PHP 5 support [#2421](https://github.com/guzzle/guzzle/pull/2421) [#2474](https://github.com/guzzle/guzzle/pull/2474) -* PHP 7 types [#2442](https://github.com/guzzle/guzzle/pull/2442) [#2449](https://github.com/guzzle/guzzle/pull/2449) [#2466](https://github.com/guzzle/guzzle/pull/2466) [#2497](https://github.com/guzzle/guzzle/pull/2497) [#2499](https://github.com/guzzle/guzzle/pull/2499) -* IDN support for redirects [2424](https://github.com/guzzle/guzzle/pull/2424) - -### Changed - -* Dont allow passing null as third argument to `BadResponseException::__construct()` [#2427](https://github.com/guzzle/guzzle/pull/2427) -* Use SAPI constant instead of method call [#2450](https://github.com/guzzle/guzzle/pull/2450) -* Use native function invocation [#2444](https://github.com/guzzle/guzzle/pull/2444) -* Better defaults for PHP installations with old ICU lib [2454](https://github.com/guzzle/guzzle/pull/2454) -* Added visibility to all constants [#2462](https://github.com/guzzle/guzzle/pull/2462) -* Dont allow passing `null` as URI to `Client::request()` and `Client::requestAsync()` [#2461](https://github.com/guzzle/guzzle/pull/2461) -* Widen the exception argument to throwable [#2495](https://github.com/guzzle/guzzle/pull/2495) - -### Fixed - -* Logging when Promise rejected with a string [#2311](https://github.com/guzzle/guzzle/pull/2311) - -### Removed - -* Class `SeekException` [#2162](https://github.com/guzzle/guzzle/pull/2162) -* `RequestException::getResponseBodySummary()` [#2425](https://github.com/guzzle/guzzle/pull/2425) -* `CookieJar::getCookieValue()` [#2433](https://github.com/guzzle/guzzle/pull/2433) -* `uri_template()` and `UriTemplate` [#2440](https://github.com/guzzle/guzzle/pull/2440) -* Request options `save_to` and `exceptions` [#2464](https://github.com/guzzle/guzzle/pull/2464) - - -## 6.5.2 - 2019-12-23 - -* idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489) - - -## 6.5.1 - 2019-12-21 - -* Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454) -* IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424) - - -## 6.5.0 - 2019-12-07 - -* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143) -* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287) -* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132) -* Fix: `RetryMiddleware` did not do exponential delay between retires due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132) -* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348) -* Deprecated `ClientInterface::VERSION` - - -## 6.4.1 - 2019-10-23 - -* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that -* Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar` - - -## 6.4.0 - 2019-10-23 - -* Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108) -* Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081) -* Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161) -* Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163) -* Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242) -* Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284) -* Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273) -* Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335) -* Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362) - - -## 6.3.3 - 2018-04-22 - -* Fix: Default headers when decode_content is specified - - -## 6.3.2 - 2018-03-26 - -* Fix: Release process - - -## 6.3.1 - 2018-03-26 - -* Bug fix: Parsing 0 epoch expiry times in cookies [#2014](https://github.com/guzzle/guzzle/pull/2014) -* Improvement: Better ConnectException detection [#2012](https://github.com/guzzle/guzzle/pull/2012) -* Bug fix: Malformed domain that contains a "/" [#1999](https://github.com/guzzle/guzzle/pull/1999) -* Bug fix: Undefined offset when a cookie has no first key-value pair [#1998](https://github.com/guzzle/guzzle/pull/1998) -* Improvement: Support PHPUnit 6 [#1953](https://github.com/guzzle/guzzle/pull/1953) -* Bug fix: Support empty headers [#1915](https://github.com/guzzle/guzzle/pull/1915) -* Bug fix: Ignore case during header modifications [#1916](https://github.com/guzzle/guzzle/pull/1916) - -+ Minor code cleanups, documentation fixes and clarifications. - - -## 6.3.0 - 2017-06-22 - -* Feature: force IP resolution (ipv4 or ipv6) [#1608](https://github.com/guzzle/guzzle/pull/1608), [#1659](https://github.com/guzzle/guzzle/pull/1659) -* Improvement: Don't include summary in exception message when body is empty [#1621](https://github.com/guzzle/guzzle/pull/1621) -* Improvement: Handle `on_headers` option in MockHandler [#1580](https://github.com/guzzle/guzzle/pull/1580) -* Improvement: Added SUSE Linux CA path [#1609](https://github.com/guzzle/guzzle/issues/1609) -* Improvement: Use class reference for getting the name of the class instead of using hardcoded strings [#1641](https://github.com/guzzle/guzzle/pull/1641) -* Feature: Added `read_timeout` option [#1611](https://github.com/guzzle/guzzle/pull/1611) -* Bug fix: PHP 7.x fixes [#1685](https://github.com/guzzle/guzzle/pull/1685), [#1686](https://github.com/guzzle/guzzle/pull/1686), [#1811](https://github.com/guzzle/guzzle/pull/1811) -* Deprecation: BadResponseException instantiation without a response [#1642](https://github.com/guzzle/guzzle/pull/1642) -* Feature: Added NTLM auth [#1569](https://github.com/guzzle/guzzle/pull/1569) -* Feature: Track redirect HTTP status codes [#1711](https://github.com/guzzle/guzzle/pull/1711) -* Improvement: Check handler type during construction [#1745](https://github.com/guzzle/guzzle/pull/1745) -* Improvement: Always include the Content-Length if there's a body [#1721](https://github.com/guzzle/guzzle/pull/1721) -* Feature: Added convenience method to access a cookie by name [#1318](https://github.com/guzzle/guzzle/pull/1318) -* Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684) -* Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827) - -+ Minor code cleanups, documentation fixes and clarifications. - - -## 6.2.3 - 2017-02-28 - -* Fix deprecations with guzzle/psr7 version 1.4 - - -## 6.2.2 - 2016-10-08 - -* Allow to pass nullable Response to delay callable -* Only add scheme when host is present -* Fix drain case where content-length is the literal string zero -* Obfuscate in-URL credentials in exceptions - - -## 6.2.1 - 2016-07-18 - -* Address HTTP_PROXY security vulnerability, CVE-2016-5385: - https://httpoxy.org/ -* Fixing timeout bug with StreamHandler: - https://github.com/guzzle/guzzle/pull/1488 -* Only read up to `Content-Length` in PHP StreamHandler to avoid timeouts when - a server does not honor `Connection: close`. -* Ignore URI fragment when sending requests. - - -## 6.2.0 - 2016-03-21 - -* Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`. - https://github.com/guzzle/guzzle/pull/1389 -* Bug fix: Fix sleep calculation when waiting for delayed requests. - https://github.com/guzzle/guzzle/pull/1324 -* Feature: More flexible history containers. - https://github.com/guzzle/guzzle/pull/1373 -* Bug fix: defer sink stream opening in StreamHandler. - https://github.com/guzzle/guzzle/pull/1377 -* Bug fix: do not attempt to escape cookie values. - https://github.com/guzzle/guzzle/pull/1406 -* Feature: report original content encoding and length on decoded responses. - https://github.com/guzzle/guzzle/pull/1409 -* Bug fix: rewind seekable request bodies before dispatching to cURL. - https://github.com/guzzle/guzzle/pull/1422 -* Bug fix: provide an empty string to `http_build_query` for HHVM workaround. - https://github.com/guzzle/guzzle/pull/1367 - - -## 6.1.1 - 2015-11-22 - -* Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler - https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4 -* Feature: HandlerStack is now more generic. - https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e -* Bug fix: setting verify to false in the StreamHandler now disables peer - verification. https://github.com/guzzle/guzzle/issues/1256 -* Feature: Middleware now uses an exception factory, including more error - context. https://github.com/guzzle/guzzle/pull/1282 -* Feature: better support for disabled functions. - https://github.com/guzzle/guzzle/pull/1287 -* Bug fix: fixed regression where MockHandler was not using `sink`. - https://github.com/guzzle/guzzle/pull/1292 - - -## 6.1.0 - 2015-09-08 - -* Feature: Added the `on_stats` request option to provide access to transfer - statistics for requests. https://github.com/guzzle/guzzle/pull/1202 -* Feature: Added the ability to persist session cookies in CookieJars. - https://github.com/guzzle/guzzle/pull/1195 -* Feature: Some compatibility updates for Google APP Engine - https://github.com/guzzle/guzzle/pull/1216 -* Feature: Added support for NO_PROXY to prevent the use of a proxy based on - a simple set of rules. https://github.com/guzzle/guzzle/pull/1197 -* Feature: Cookies can now contain square brackets. - https://github.com/guzzle/guzzle/pull/1237 -* Bug fix: Now correctly parsing `=` inside of quotes in Cookies. - https://github.com/guzzle/guzzle/pull/1232 -* Bug fix: Cusotm cURL options now correctly override curl options of the - same name. https://github.com/guzzle/guzzle/pull/1221 -* Bug fix: Content-Type header is now added when using an explicitly provided - multipart body. https://github.com/guzzle/guzzle/pull/1218 -* Bug fix: Now ignoring Set-Cookie headers that have no name. -* Bug fix: Reason phrase is no longer cast to an int in some cases in the - cURL handler. https://github.com/guzzle/guzzle/pull/1187 -* Bug fix: Remove the Authorization header when redirecting if the Host - header changes. https://github.com/guzzle/guzzle/pull/1207 -* Bug fix: Cookie path matching fixes - https://github.com/guzzle/guzzle/issues/1129 -* Bug fix: Fixing the cURL `body_as_string` setting - https://github.com/guzzle/guzzle/pull/1201 -* Bug fix: quotes are no longer stripped when parsing cookies. - https://github.com/guzzle/guzzle/issues/1172 -* Bug fix: `form_params` and `query` now always uses the `&` separator. - https://github.com/guzzle/guzzle/pull/1163 -* Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set. - https://github.com/guzzle/guzzle/pull/1189 - - -## 6.0.2 - 2015-07-04 - -* Fixed a memory leak in the curl handlers in which references to callbacks - were not being removed by `curl_reset`. -* Cookies are now extracted properly before redirects. -* Cookies now allow more character ranges. -* Decoded Content-Encoding responses are now modified to correctly reflect - their state if the encoding was automatically removed by a handler. This - means that the `Content-Encoding` header may be removed an the - `Content-Length` modified to reflect the message size after removing the - encoding. -* Added a more explicit error message when trying to use `form_params` and - `multipart` in the same request. -* Several fixes for HHVM support. -* Functions are now conditionally required using an additional level of - indirection to help with global Composer installations. - - -## 6.0.1 - 2015-05-27 - -* Fixed a bug with serializing the `query` request option where the `&` - separator was missing. -* Added a better error message for when `body` is provided as an array. Please - use `form_params` or `multipart` instead. -* Various doc fixes. - - -## 6.0.0 - 2015-05-26 - -* See the UPGRADING.md document for more information. -* Added `multipart` and `form_params` request options. -* Added `synchronous` request option. -* Added the `on_headers` request option. -* Fixed `expect` handling. -* No longer adding default middlewares in the client ctor. These need to be - present on the provided handler in order to work. -* Requests are no longer initiated when sending async requests with the - CurlMultiHandler. This prevents unexpected recursion from requests completing - while ticking the cURL loop. -* Removed the semantics of setting `default` to `true`. This is no longer - required now that the cURL loop is not ticked for async requests. -* Added request and response logging middleware. -* No longer allowing self signed certificates when using the StreamHandler. -* Ensuring that `sink` is valid if saving to a file. -* Request exceptions now include a "handler context" which provides handler - specific contextual information. -* Added `GuzzleHttp\RequestOptions` to allow request options to be applied - using constants. -* `$maxHandles` has been removed from CurlMultiHandler. -* `MultipartPostBody` is now part of the `guzzlehttp/psr7` package. - - -## 5.3.0 - 2015-05-19 - -* Mock now supports `save_to` -* Marked `AbstractRequestEvent::getTransaction()` as public. -* Fixed a bug in which multiple headers using different casing would overwrite - previous headers in the associative array. -* Added `Utils::getDefaultHandler()` -* Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated. -* URL scheme is now always lowercased. - - -## 6.0.0-beta.1 - -* Requires PHP >= 5.5 -* Updated to use PSR-7 - * Requires immutable messages, which basically means an event based system - owned by a request instance is no longer possible. - * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7). - * Removed the dependency on `guzzlehttp/streams`. These stream abstractions - are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7` - namespace. -* Added middleware and handler system - * Replaced the Guzzle event and subscriber system with a middleware system. - * No longer depends on RingPHP, but rather places the HTTP handlers directly - in Guzzle, operating on PSR-7 messages. - * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which - means the `guzzlehttp/retry-subscriber` is now obsolete. - * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`. -* Asynchronous responses - * No longer supports the `future` request option to send an async request. - Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`, - `getAsync`, etc.). - * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid - recursion required by chaining and forwarding react promises. See - https://github.com/guzzle/promises - * Added `requestAsync` and `sendAsync` to send request asynchronously. - * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests - asynchronously. -* Request options - * POST and form updates - * Added the `form_fields` and `form_files` request options. - * Removed the `GuzzleHttp\Post` namespace. - * The `body` request option no longer accepts an array for POST requests. - * The `exceptions` request option has been deprecated in favor of the - `http_errors` request options. - * The `save_to` request option has been deprecated in favor of `sink` request - option. -* Clients no longer accept an array of URI template string and variables for - URI variables. You will need to expand URI templates before passing them - into a client constructor or request method. -* Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are - now magic methods that will send synchronous requests. -* Replaced `Utils.php` with plain functions in `functions.php`. -* Removed `GuzzleHttp\Collection`. -* Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as - an array. -* Removed `GuzzleHttp\Query`. Query string handling is now handled using an - associative array passed into the `query` request option. The query string - is serialized using PHP's `http_build_query`. If you need more control, you - can pass the query string in as a string. -* `GuzzleHttp\QueryParser` has been replaced with the - `GuzzleHttp\Psr7\parse_query`. - - -## 5.2.0 - 2015-01-27 - -* Added `AppliesHeadersInterface` to make applying headers to a request based - on the body more generic and not specific to `PostBodyInterface`. -* Reduced the number of stack frames needed to send requests. -* Nested futures are now resolved in the client rather than the RequestFsm -* Finishing state transitions is now handled in the RequestFsm rather than the - RingBridge. -* Added a guard in the Pool class to not use recursion for request retries. - - -## 5.1.0 - 2014-12-19 - -* Pool class no longer uses recursion when a request is intercepted. -* The size of a Pool can now be dynamically adjusted using a callback. - See https://github.com/guzzle/guzzle/pull/943. -* Setting a request option to `null` when creating a request with a client will - ensure that the option is not set. This allows you to overwrite default - request options on a per-request basis. - See https://github.com/guzzle/guzzle/pull/937. -* Added the ability to limit which protocols are allowed for redirects by - specifying a `protocols` array in the `allow_redirects` request option. -* Nested futures due to retries are now resolved when waiting for synchronous - responses. See https://github.com/guzzle/guzzle/pull/947. -* `"0"` is now an allowed URI path. See - https://github.com/guzzle/guzzle/pull/935. -* `Query` no longer typehints on the `$query` argument in the constructor, - allowing for strings and arrays. -* Exceptions thrown in the `end` event are now correctly wrapped with Guzzle - specific exceptions if necessary. - - -## 5.0.3 - 2014-11-03 - -This change updates query strings so that they are treated as un-encoded values -by default where the value represents an un-encoded value to send over the -wire. A Query object then encodes the value before sending over the wire. This -means that even value query string values (e.g., ":") are url encoded. This -makes the Query class match PHP's http_build_query function. However, if you -want to send requests over the wire using valid query string characters that do -not need to be encoded, then you can provide a string to Url::setQuery() and -pass true as the second argument to specify that the query string is a raw -string that should not be parsed or encoded (unless a call to getQuery() is -subsequently made, forcing the query-string to be converted into a Query -object). - - -## 5.0.2 - 2014-10-30 - -* Added a trailing `\r\n` to multipart/form-data payloads. See - https://github.com/guzzle/guzzle/pull/871 -* Added a `GuzzleHttp\Pool::send()` convenience method to match the docs. -* Status codes are now returned as integers. See - https://github.com/guzzle/guzzle/issues/881 -* No longer overwriting an existing `application/x-www-form-urlencoded` header - when sending POST requests, allowing for customized headers. See - https://github.com/guzzle/guzzle/issues/877 -* Improved path URL serialization. - - * No longer double percent-encoding characters in the path or query string if - they are already encoded. - * Now properly encoding the supplied path to a URL object, instead of only - encoding ' ' and '?'. - * Note: This has been changed in 5.0.3 to now encode query string values by - default unless the `rawString` argument is provided when setting the query - string on a URL: Now allowing many more characters to be present in the - query string without being percent encoded. See - https://datatracker.ietf.org/doc/html/rfc3986#appendix-A - - -## 5.0.1 - 2014-10-16 - -Bugfix release. - -* Fixed an issue where connection errors still returned response object in - error and end events event though the response is unusable. This has been - corrected so that a response is not returned in the `getResponse` method of - these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867 -* Fixed an issue where transfer statistics were not being populated in the - RingBridge. https://github.com/guzzle/guzzle/issues/866 - - -## 5.0.0 - 2014-10-12 - -Adding support for non-blocking responses and some minor API cleanup. - -### New Features - -* Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`. -* Added a public API for creating a default HTTP adapter. -* Updated the redirect plugin to be non-blocking so that redirects are sent - concurrently. Other plugins like this can now be updated to be non-blocking. -* Added a "progress" event so that you can get upload and download progress - events. -* Added `GuzzleHttp\Pool` which implements FutureInterface and transfers - requests concurrently using a capped pool size as efficiently as possible. -* Added `hasListeners()` to EmitterInterface. -* Removed `GuzzleHttp\ClientInterface::sendAll` and marked - `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the - recommended way). - -### Breaking changes - -The breaking changes in this release are relatively minor. The biggest thing to -look out for is that request and response objects no longer implement fluent -interfaces. - -* Removed the fluent interfaces (i.e., `return $this`) from requests, - responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`, - `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and - `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of - why I did this: https://ocramius.github.io/blog/fluent-interfaces-are-evil/. - This also makes the Guzzle message interfaces compatible with the current - PSR-7 message proposal. -* Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except - for the HTTP request functions from function.php, these functions are now - implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode` - moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to - `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to - `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be - `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php - caused problems for many users: they aren't PSR-4 compliant, require an - explicit include, and needed an if-guard to ensure that the functions are not - declared multiple times. -* Rewrote adapter layer. - * Removing all classes from `GuzzleHttp\Adapter`, these are now - implemented as callables that are stored in `GuzzleHttp\Ring\Client`. - * Removed the concept of "parallel adapters". Sending requests serially or - concurrently is now handled using a single adapter. - * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The - Transaction object now exposes the request, response, and client as public - properties. The getters and setters have been removed. -* Removed the "headers" event. This event was only useful for changing the - body a response once the headers of the response were known. You can implement - a similar behavior in a number of ways. One example might be to use a - FnStream that has access to the transaction being sent. For example, when the - first byte is written, you could check if the response headers match your - expectations, and if so, change the actual stream body that is being - written to. -* Removed the `asArray` parameter from - `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header - value as an array, then use the newly added `getHeaderAsArray()` method of - `MessageInterface`. This change makes the Guzzle interfaces compatible with - the PSR-7 interfaces. -* `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add - custom request options using double-dispatch (this was an implementation - detail). Instead, you should now provide an associative array to the - constructor which is a mapping of the request option name mapping to a - function that applies the option value to a request. -* Removed the concept of "throwImmediately" from exceptions and error events. - This control mechanism was used to stop a transfer of concurrent requests - from completing. This can now be handled by throwing the exception or by - cancelling a pool of requests or each outstanding future request individually. -* Updated to "GuzzleHttp\Streams" 3.0. - * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a - `maxLen` parameter. This update makes the Guzzle streams project - compatible with the current PSR-7 proposal. - * `GuzzleHttp\Stream\Stream::__construct`, - `GuzzleHttp\Stream\Stream::factory`, and - `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second - argument. They now accept an associative array of options, including the - "size" key and "metadata" key which can be used to provide custom metadata. - - -## 4.2.2 - 2014-09-08 - -* Fixed a memory leak in the CurlAdapter when reusing cURL handles. -* No longer using `request_fulluri` in stream adapter proxies. -* Relative redirects are now based on the last response, not the first response. - -## 4.2.1 - 2014-08-19 - -* Ensuring that the StreamAdapter does not always add a Content-Type header -* Adding automated github releases with a phar and zip - -## 4.2.0 - 2014-08-17 - -* Now merging in default options using a case-insensitive comparison. - Closes https://github.com/guzzle/guzzle/issues/767 -* Added the ability to automatically decode `Content-Encoding` response bodies - using the `decode_content` request option. This is set to `true` by default - to decode the response body if it comes over the wire with a - `Content-Encoding`. Set this value to `false` to disable decoding the - response content, and pass a string to provide a request `Accept-Encoding` - header and turn on automatic response decoding. This feature now allows you - to pass an `Accept-Encoding` header in the headers of a request but still - disable automatic response decoding. - Closes https://github.com/guzzle/guzzle/issues/764 -* Added the ability to throw an exception immediately when transferring - requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760 -* Updating guzzlehttp/streams dependency to ~2.1 -* No longer utilizing the now deprecated namespaced methods from the stream - package. - -## 4.1.8 - 2014-08-14 - -* Fixed an issue in the CurlFactory that caused setting the `stream=false` - request option to throw an exception. - See: https://github.com/guzzle/guzzle/issues/769 -* TransactionIterator now calls rewind on the inner iterator. - See: https://github.com/guzzle/guzzle/pull/765 -* You can now set the `Content-Type` header to `multipart/form-data` - when creating POST requests to force multipart bodies. - See https://github.com/guzzle/guzzle/issues/768 - -## 4.1.7 - 2014-08-07 - -* Fixed an error in the HistoryPlugin that caused the same request and response - to be logged multiple times when an HTTP protocol error occurs. -* Ensuring that cURL does not add a default Content-Type when no Content-Type - has been supplied by the user. This prevents the adapter layer from modifying - the request that is sent over the wire after any listeners may have already - put the request in a desired state (e.g., signed the request). -* Throwing an exception when you attempt to send requests that have the - "stream" set to true in parallel using the MultiAdapter. -* Only calling curl_multi_select when there are active cURL handles. This was - previously changed and caused performance problems on some systems due to PHP - always selecting until the maximum select timeout. -* Fixed a bug where multipart/form-data POST fields were not correctly - aggregated (e.g., values with "&"). - -## 4.1.6 - 2014-08-03 - -* Added helper methods to make it easier to represent messages as strings, - including getting the start line and getting headers as a string. - -## 4.1.5 - 2014-08-02 - -* Automatically retrying cURL "Connection died, retrying a fresh connect" - errors when possible. -* cURL implementation cleanup -* Allowing multiple event subscriber listeners to be registered per event by - passing an array of arrays of listener configuration. - -## 4.1.4 - 2014-07-22 - -* Fixed a bug that caused multi-part POST requests with more than one field to - serialize incorrectly. -* Paths can now be set to "0" -* `ResponseInterface::xml` now accepts a `libxml_options` option and added a - missing default argument that was required when parsing XML response bodies. -* A `save_to` stream is now created lazily, which means that files are not - created on disk unless a request succeeds. - -## 4.1.3 - 2014-07-15 - -* Various fixes to multipart/form-data POST uploads -* Wrapping function.php in an if-statement to ensure Guzzle can be used - globally and in a Composer install -* Fixed an issue with generating and merging in events to an event array -* POST headers are only applied before sending a request to allow you to change - the query aggregator used before uploading -* Added much more robust query string parsing -* Fixed various parsing and normalization issues with URLs -* Fixing an issue where multi-valued headers were not being utilized correctly - in the StreamAdapter - -## 4.1.2 - 2014-06-18 - -* Added support for sending payloads with GET requests - -## 4.1.1 - 2014-06-08 - -* Fixed an issue related to using custom message factory options in subclasses -* Fixed an issue with nested form fields in a multi-part POST -* Fixed an issue with using the `json` request option for POST requests -* Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar` - -## 4.1.0 - 2014-05-27 - -* Added a `json` request option to easily serialize JSON payloads. -* Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON. -* Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`. -* Added the ability to provide an emitter to a client in the client constructor. -* Added the ability to persist a cookie session using $_SESSION. -* Added a trait that can be used to add event listeners to an iterator. -* Removed request method constants from RequestInterface. -* Fixed warning when invalid request start-lines are received. -* Updated MessageFactory to work with custom request option methods. -* Updated cacert bundle to latest build. - -4.0.2 (2014-04-16) ------------------- - -* Proxy requests using the StreamAdapter now properly use request_fulluri (#632) -* Added the ability to set scalars as POST fields (#628) - -## 4.0.1 - 2014-04-04 - -* The HTTP status code of a response is now set as the exception code of - RequestException objects. -* 303 redirects will now correctly switch from POST to GET requests. -* The default parallel adapter of a client now correctly uses the MultiAdapter. -* HasDataTrait now initializes the internal data array as an empty array so - that the toArray() method always returns an array. - -## 4.0.0 - 2014-03-29 - -* For information on changes and upgrading, see: - https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40 -* Added `GuzzleHttp\batch()` as a convenience function for sending requests in - parallel without needing to write asynchronous code. -* Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`. - You can now pass a callable or an array of associative arrays where each - associative array contains the "fn", "priority", and "once" keys. - -## 4.0.0.rc-2 - 2014-03-25 - -* Removed `getConfig()` and `setConfig()` from clients to avoid confusion - around whether things like base_url, message_factory, etc. should be able to - be retrieved or modified. -* Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface -* functions.php functions were renamed using snake_case to match PHP idioms -* Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and - `GUZZLE_CURL_SELECT_TIMEOUT` environment variables -* Added the ability to specify custom `sendAll()` event priorities -* Added the ability to specify custom stream context options to the stream - adapter. -* Added a functions.php function for `get_path()` and `set_path()` -* CurlAdapter and MultiAdapter now use a callable to generate curl resources -* MockAdapter now properly reads a body and emits a `headers` event -* Updated Url class to check if a scheme and host are set before adding ":" - and "//". This allows empty Url (e.g., "") to be serialized as "". -* Parsing invalid XML no longer emits warnings -* Curl classes now properly throw AdapterExceptions -* Various performance optimizations -* Streams are created with the faster `Stream\create()` function -* Marked deprecation_proxy() as internal -* Test server is now a collection of static methods on a class - -## 4.0.0-rc.1 - 2014-03-15 - -* See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40 - -## 3.8.1 - 2014-01-28 - -* Bug: Always using GET requests when redirecting from a 303 response -* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in - `Guzzle\Http\ClientInterface::setSslVerification()` -* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL -* Bug: The body of a request can now be set to `"0"` -* Sending PHP stream requests no longer forces `HTTP/1.0` -* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of - each sub-exception -* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than - clobbering everything). -* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators) -* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`. - For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`. -* Now properly escaping the regular expression delimiter when matching Cookie domains. -* Network access is now disabled when loading XML documents - -## 3.8.0 - 2013-12-05 - -* Added the ability to define a POST name for a file -* JSON response parsing now properly walks additionalProperties -* cURL error code 18 is now retried automatically in the BackoffPlugin -* Fixed a cURL error when URLs contain fragments -* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were - CurlExceptions -* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e) -* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS` -* Fixed a bug that was encountered when parsing empty header parameters -* UriTemplate now has a `setRegex()` method to match the docs -* The `debug` request parameter now checks if it is truthy rather than if it exists -* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin -* Added the ability to combine URLs using strict RFC 3986 compliance -* Command objects can now return the validation errors encountered by the command -* Various fixes to cache revalidation (#437 and 29797e5) -* Various fixes to the AsyncPlugin -* Cleaned up build scripts - -## 3.7.4 - 2013-10-02 - -* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430) -* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp - (see https://github.com/aws/aws-sdk-php/issues/147) -* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots -* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420) -* Updated the bundled cacert.pem (#419) -* OauthPlugin now supports adding authentication to headers or query string (#425) - -## 3.7.3 - 2013-09-08 - -* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and - `CommandTransferException`. -* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description -* Schemas are only injected into response models when explicitly configured. -* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of - an EntityBody. -* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator. -* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`. -* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody() -* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin -* Bug fix: Visiting XML attributes first before visiting XML children when serializing requests -* Bug fix: Properly parsing headers that contain commas contained in quotes -* Bug fix: mimetype guessing based on a filename is now case-insensitive - -## 3.7.2 - 2013-08-02 - -* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander - See https://github.com/guzzle/guzzle/issues/371 -* Bug fix: Cookie domains are now matched correctly according to RFC 6265 - See https://github.com/guzzle/guzzle/issues/377 -* Bug fix: GET parameters are now used when calculating an OAuth signature -* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted -* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched -* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input. - See https://github.com/guzzle/guzzle/issues/379 -* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See - https://github.com/guzzle/guzzle/pull/380 -* cURL multi cleanup and optimizations - -## 3.7.1 - 2013-07-05 - -* Bug fix: Setting default options on a client now works -* Bug fix: Setting options on HEAD requests now works. See #352 -* Bug fix: Moving stream factory before send event to before building the stream. See #353 -* Bug fix: Cookies no longer match on IP addresses per RFC 6265 -* Bug fix: Correctly parsing header parameters that are in `<>` and quotes -* Added `cert` and `ssl_key` as request options -* `Host` header can now diverge from the host part of a URL if the header is set manually -* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter -* OAuth parameters are only added via the plugin if they aren't already set -* Exceptions are now thrown when a URL cannot be parsed -* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails -* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin - -## 3.7.0 - 2013-06-10 - -* See UPGRADING.md for more information on how to upgrade. -* Requests now support the ability to specify an array of $options when creating a request to more easily modify a - request. You can pass a 'request.options' configuration setting to a client to apply default request options to - every request created by a client (e.g. default query string variables, headers, curl options, etc.). -* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`. - See `Guzzle\Http\StaticClient::mount`. -* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests - created by a command (e.g. custom headers, query string variables, timeout settings, etc.). -* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the - headers of a response -* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key - (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`) -* ServiceBuilders now support storing and retrieving arbitrary data -* CachePlugin can now purge all resources for a given URI -* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource -* CachePlugin now uses the Vary header to determine if a resource is a cache hit -* `Guzzle\Http\Message\Response` now implements `\Serializable` -* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters -* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable -* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()` -* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size -* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message -* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older - Symfony users can still use the old version of Monolog. -* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`. - Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`. -* Several performance improvements to `Guzzle\Common\Collection` -* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: - createRequest, head, delete, put, patch, post, options, prepareRequest -* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` -* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` -* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to - `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a - resource, string, or EntityBody into the $options parameter to specify the download location of the response. -* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a - default `array()` -* Added `Guzzle\Stream\StreamInterface::isRepeatable` -* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use - $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or - $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`. -* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`. -* Removed `Guzzle\Http\ClientInterface::expandTemplate()` -* Removed `Guzzle\Http\ClientInterface::setRequestFactory()` -* Removed `Guzzle\Http\ClientInterface::getCurlMulti()` -* Removed `Guzzle\Http\Message\RequestInterface::canCache` -* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect` -* Removed `Guzzle\Http\Message\RequestInterface::isRedirect` -* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. -* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting - `Guzzle\Common\Version::$emitWarnings` to true. -* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use - `$request->getResponseBody()->isRepeatable()` instead. -* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use - `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use - `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. -* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. -* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated -* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. - These will work through Guzzle 4.0 -* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params]. -* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. -* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`. -* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. -* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. -* Marked `Guzzle\Common\Collection::inject()` as deprecated. -* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');` -* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a - CacheStorageInterface. These two objects and interface will be removed in a future version. -* Always setting X-cache headers on cached responses -* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin -* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface - $request, Response $response);` -* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` -* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` -* Added `CacheStorageInterface::purge($url)` -* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin - $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, - CanCacheStrategyInterface $canCache = null)` -* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` - -## 3.6.0 - 2013-05-29 - -* ServiceDescription now implements ToArrayInterface -* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters -* Guzzle can now correctly parse incomplete URLs -* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. -* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution -* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). -* Specific header implementations can be created for complex headers. When a message creates a header, it uses a - HeaderFactory which can map specific headers to specific header classes. There is now a Link header and - CacheControl header implementation. -* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate -* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() -* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in - Guzzle\Http\Curl\RequestMediator -* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. -* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface -* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() -* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() -* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). -* All response header helper functions return a string rather than mixing Header objects and strings inconsistently -* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle - directly via interfaces -* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist - but are a no-op until removed. -* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a - `Guzzle\Service\Command\ArrayCommandInterface`. -* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response - on a request while the request is still being transferred -* The ability to case-insensitively search for header values -* Guzzle\Http\Message\Header::hasExactHeader -* Guzzle\Http\Message\Header::raw. Use getAll() -* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object - instead. -* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess -* Added the ability to cast Model objects to a string to view debug information. - -## 3.5.0 - 2013-05-13 - -* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times -* Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove - itself from the EventDispatcher) -* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values -* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too -* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a - non-existent key -* Bug: All __call() method arguments are now required (helps with mocking frameworks) -* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference - to help with refcount based garbage collection of resources created by sending a request -* Deprecating ZF1 cache and log adapters. These will be removed in the next major version. -* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the - HistoryPlugin for a history. -* Added a `responseBody` alias for the `response_body` location -* Refactored internals to no longer rely on Response::getRequest() -* HistoryPlugin can now be cast to a string -* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests - and responses that are sent over the wire -* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects - -## 3.4.3 - 2013-04-30 - -* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response -* Added a check to re-extract the temp cacert bundle from the phar before sending each request - -## 3.4.2 - 2013-04-29 - -* Bug fix: Stream objects now work correctly with "a" and "a+" modes -* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present -* Bug fix: AsyncPlugin no longer forces HEAD requests -* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter -* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails -* Setting a response on a request will write to the custom request body from the response body if one is specified -* LogPlugin now writes to php://output when STDERR is undefined -* Added the ability to set multiple POST files for the same key in a single call -* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default -* Added the ability to queue CurlExceptions to the MockPlugin -* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send) -* Configuration loading now allows remote files - -## 3.4.1 - 2013-04-16 - -* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti - handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost. -* Exceptions are now properly grouped when sending requests in parallel -* Redirects are now properly aggregated when a multi transaction fails -* Redirects now set the response on the original object even in the event of a failure -* Bug fix: Model names are now properly set even when using $refs -* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax -* Added support for oauth_callback in OAuth signatures -* Added support for oauth_verifier in OAuth signatures -* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection - -## 3.4.0 - 2013-04-11 - -* Bug fix: URLs are now resolved correctly based on https://datatracker.ietf.org/doc/html/rfc3986#section-5.2. #289 -* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289 -* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263 -* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264. -* Bug fix: Added `number` type to service descriptions. -* Bug fix: empty parameters are removed from an OAuth signature -* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header -* Bug fix: Fixed "array to string" error when validating a union of types in a service description -* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream -* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin. -* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs. -* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections. -* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if - the Content-Type can be determined based on the entity body or the path of the request. -* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder. -* Added support for a PSR-3 LogAdapter. -* Added a `command.after_prepare` event -* Added `oauth_callback` parameter to the OauthPlugin -* Added the ability to create a custom stream class when using a stream factory -* Added a CachingEntityBody decorator -* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized. -* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar. -* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies -* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This - means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use - POST fields or files (the latter is only used when emulating a form POST in the browser). -* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest - -## 3.3.1 - 2013-03-10 - -* Added the ability to create PHP streaming responses from HTTP requests -* Bug fix: Running any filters when parsing response headers with service descriptions -* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing -* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across - response location visitors. -* Bug fix: Removed the possibility of creating configuration files with circular dependencies -* RequestFactory::create() now uses the key of a POST file when setting the POST file name -* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set - -## 3.3.0 - 2013-03-03 - -* A large number of performance optimizations have been made -* Bug fix: Added 'wb' as a valid write mode for streams -* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned -* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()` -* BC: Removed `Guzzle\Http\Utils` class -* BC: Setting a service description on a client will no longer modify the client's command factories. -* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using - the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' -* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to - lowercase -* Operation parameter objects are now lazy loaded internally -* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses -* Added support for instantiating responseType=class responseClass classes. Classes must implement - `Guzzle\Service\Command\ResponseClassInterface` -* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These - additional properties also support locations and can be used to parse JSON responses where the outermost part of the - JSON is an array -* Added support for nested renaming of JSON models (rename sentAs to name) -* CachePlugin - * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error - * Debug headers can now added to cached response in the CachePlugin - -## 3.2.0 - 2013-02-14 - -* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients. -* URLs with no path no longer contain a "/" by default -* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url. -* BadResponseException no longer includes the full request and response message -* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface -* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface -* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription -* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list -* xmlEncoding can now be customized for the XML declaration of a XML service description operation -* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value - aggregation and no longer uses callbacks -* The URL encoding implementation of Guzzle\Http\QueryString can now be customized -* Bug fix: Filters were not always invoked for array service description parameters -* Bug fix: Redirects now use a target response body rather than a temporary response body -* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded -* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives - -## 3.1.2 - 2013-01-27 - -* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the - response body. For example, the XmlVisitor now parses the XML response into an array in the before() method. -* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent -* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444) -* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse() -* Setting default headers on a client after setting the user-agent will not erase the user-agent setting - -## 3.1.1 - 2013-01-20 - -* Adding wildcard support to Guzzle\Common\Collection::getPath() -* Adding alias support to ServiceBuilder configs -* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface - -## 3.1.0 - 2013-01-12 - -* BC: CurlException now extends from RequestException rather than BadResponseException -* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse() -* Added getData to ServiceDescriptionInterface -* Added context array to RequestInterface::setState() -* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http -* Bug: Adding required content-type when JSON request visitor adds JSON to a command -* Bug: Fixing the serialization of a service description with custom data -* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing - an array of successful and failed responses -* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection -* Added Guzzle\Http\IoEmittingEntityBody -* Moved command filtration from validators to location visitors -* Added `extends` attributes to service description parameters -* Added getModels to ServiceDescriptionInterface - -## 3.0.7 - 2012-12-19 - -* Fixing phar detection when forcing a cacert to system if null or true -* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()` -* Cleaning up `Guzzle\Common\Collection::inject` method -* Adding a response_body location to service descriptions - -## 3.0.6 - 2012-12-09 - -* CurlMulti performance improvements -* Adding setErrorResponses() to Operation -* composer.json tweaks - -## 3.0.5 - 2012-11-18 - -* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin -* Bug: Response body can now be a string containing "0" -* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert -* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs -* Added support for XML attributes in service description responses -* DefaultRequestSerializer now supports array URI parameter values for URI template expansion -* Added better mimetype guessing to requests and post files - -## 3.0.4 - 2012-11-11 - -* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value -* Bug: Cookies can now be added that have a name, domain, or value set to "0" -* Bug: Using the system cacert bundle when using the Phar -* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures -* Enhanced cookie jar de-duplication -* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added -* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies -* Added the ability to create any sort of hash for a stream rather than just an MD5 hash - -## 3.0.3 - 2012-11-04 - -* Implementing redirects in PHP rather than cURL -* Added PECL URI template extension and using as default parser if available -* Bug: Fixed Content-Length parsing of Response factory -* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams. -* Adding ToArrayInterface throughout library -* Fixing OauthPlugin to create unique nonce values per request - -## 3.0.2 - 2012-10-25 - -* Magic methods are enabled by default on clients -* Magic methods return the result of a command -* Service clients no longer require a base_url option in the factory -* Bug: Fixed an issue with URI templates where null template variables were being expanded - -## 3.0.1 - 2012-10-22 - -* Models can now be used like regular collection objects by calling filter, map, etc. -* Models no longer require a Parameter structure or initial data in the constructor -* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator` - -## 3.0.0 - 2012-10-15 - -* Rewrote service description format to be based on Swagger - * Now based on JSON schema - * Added nested input structures and nested response models - * Support for JSON and XML input and output models - * Renamed `commands` to `operations` - * Removed dot class notation - * Removed custom types -* Broke the project into smaller top-level namespaces to be more component friendly -* Removed support for XML configs and descriptions. Use arrays or JSON files. -* Removed the Validation component and Inspector -* Moved all cookie code to Guzzle\Plugin\Cookie -* Magic methods on a Guzzle\Service\Client now return the command un-executed. -* Calling getResult() or getResponse() on a command will lazily execute the command if needed. -* Now shipping with cURL's CA certs and using it by default -* Added previousResponse() method to response objects -* No longer sending Accept and Accept-Encoding headers on every request -* Only sending an Expect header by default when a payload is greater than 1MB -* Added/moved client options: - * curl.blacklist to curl.option.blacklist - * Added ssl.certificate_authority -* Added a Guzzle\Iterator component -* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin -* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin) -* Added a more robust caching plugin -* Added setBody to response objects -* Updating LogPlugin to use a more flexible MessageFormatter -* Added a completely revamped build process -* Cleaning up Collection class and removing default values from the get method -* Fixed ZF2 cache adapters - -## 2.8.8 - 2012-10-15 - -* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did - -## 2.8.7 - 2012-09-30 - -* Bug: Fixed config file aliases for JSON includes -* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests -* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload -* Bug: Hardening request and response parsing to account for missing parts -* Bug: Fixed PEAR packaging -* Bug: Fixed Request::getInfo -* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail -* Adding the ability for the namespace Iterator factory to look in multiple directories -* Added more getters/setters/removers from service descriptions -* Added the ability to remove POST fields from OAuth signatures -* OAuth plugin now supports 2-legged OAuth - -## 2.8.6 - 2012-09-05 - -* Added the ability to modify and build service descriptions -* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command -* Added a `json` parameter location -* Now allowing dot notation for classes in the CacheAdapterFactory -* Using the union of two arrays rather than an array_merge when extending service builder services and service params -* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references - in service builder config files. -* Services defined in two different config files that include one another will by default replace the previously - defined service, but you can now create services that extend themselves and merge their settings over the previous -* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like - '_default' with a default JSON configuration file. - -## 2.8.5 - 2012-08-29 - -* Bug: Suppressed empty arrays from URI templates -* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching -* Added support for HTTP responses that do not contain a reason phrase in the start-line -* AbstractCommand commands are now invokable -* Added a way to get the data used when signing an Oauth request before a request is sent - -## 2.8.4 - 2012-08-15 - -* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin -* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable. -* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream -* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream -* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5()) -* Added additional response status codes -* Removed SSL information from the default User-Agent header -* DELETE requests can now send an entity body -* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries -* Added the ability of the MockPlugin to consume mocked request bodies -* LogPlugin now exposes request and response objects in the extras array - -## 2.8.3 - 2012-07-30 - -* Bug: Fixed a case where empty POST requests were sent as GET requests -* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body -* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new -* Added multiple inheritance to service description commands -* Added an ApiCommandInterface and added `getParamNames()` and `hasParam()` -* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything -* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles - -## 2.8.2 - 2012-07-24 - -* Bug: Query string values set to 0 are no longer dropped from the query string -* Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()` -* Bug: `+` is now treated as an encoded space when parsing query strings -* QueryString and Collection performance improvements -* Allowing dot notation for class paths in filters attribute of a service descriptions - -## 2.8.1 - 2012-07-16 - -* Loosening Event Dispatcher dependency -* POST redirects can now be customized using CURLOPT_POSTREDIR - -## 2.8.0 - 2012-07-15 - -* BC: Guzzle\Http\Query - * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl) - * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding() - * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool) - * Changed the aggregation functions of QueryString to be static methods - * Can now use fromString() with querystrings that have a leading ? -* cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters -* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body -* Cookies are no longer URL decoded by default -* Bug: URI template variables set to null are no longer expanded - -## 2.7.2 - 2012-07-02 - -* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser. -* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty() -* CachePlugin now allows for a custom request parameter function to check if a request can be cached -* Bug fix: CachePlugin now only caches GET and HEAD requests by default -* Bug fix: Using header glue when transferring headers over the wire -* Allowing deeply nested arrays for composite variables in URI templates -* Batch divisors can now return iterators or arrays - -## 2.7.1 - 2012-06-26 - -* Minor patch to update version number in UA string -* Updating build process - -## 2.7.0 - 2012-06-25 - -* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes. -* BC: Removed magic setX methods from commands -* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method -* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable. -* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity) -* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace -* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin -* Added the ability to set POST fields and files in a service description -* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method -* Adding a command.before_prepare event to clients -* Added BatchClosureTransfer and BatchClosureDivisor -* BatchTransferException now includes references to the batch divisor and transfer strategies -* Fixed some tests so that they pass more reliably -* Added Guzzle\Common\Log\ArrayLogAdapter - -## 2.6.6 - 2012-06-10 - -* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin -* BC: Removing Guzzle\Service\Command\CommandSet -* Adding generic batching system (replaces the batch queue plugin and command set) -* Updating ZF cache and log adapters and now using ZF's composer repository -* Bug: Setting the name of each ApiParam when creating through an ApiCommand -* Adding result_type, result_doc, deprecated, and doc_url to service descriptions -* Bug: Changed the default cookie header casing back to 'Cookie' - -## 2.6.5 - 2012-06-03 - -* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource() -* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from -* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data -* BC: Renaming methods in the CookieJarInterface -* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations -* Making the default glue for HTTP headers ';' instead of ',' -* Adding a removeValue to Guzzle\Http\Message\Header -* Adding getCookies() to request interface. -* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber() - -## 2.6.4 - 2012-05-30 - -* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class. -* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand -* Bug: Fixing magic method command calls on clients -* Bug: Email constraint only validates strings -* Bug: Aggregate POST fields when POST files are present in curl handle -* Bug: Fixing default User-Agent header -* Bug: Only appending or prepending parameters in commands if they are specified -* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes -* Allowing the use of dot notation for class namespaces when using instance_of constraint -* Added any_match validation constraint -* Added an AsyncPlugin -* Passing request object to the calculateWait method of the ExponentialBackoffPlugin -* Allowing the result of a command object to be changed -* Parsing location and type sub values when instantiating a service description rather than over and over at runtime - -## 2.6.3 - 2012-05-23 - -* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options. -* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields. -* You can now use an array of data when creating PUT request bodies in the request factory. -* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable. -* [Http] Adding support for Content-Type in multipart POST uploads per upload -* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1]) -* Adding more POST data operations for easier manipulation of POST data. -* You can now set empty POST fields. -* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files. -* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate. -* CS updates - -## 2.6.2 - 2012-05-19 - -* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method. - -## 2.6.1 - 2012-05-19 - -* [BC] Removing 'path' support in service descriptions. Use 'uri'. -* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache. -* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it. -* [BC] Removing Guzzle\Common\XmlElement. -* All commands, both dynamic and concrete, have ApiCommand objects. -* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits. -* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored. -* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible. - -## 2.6.0 - 2012-05-15 - -* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder -* [BC] Executing a Command returns the result of the command rather than the command -* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed. -* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args. -* [BC] Moving ResourceIterator* to Guzzle\Service\Resource -* [BC] Completely refactored ResourceIterators to iterate over a cloned command object -* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate -* [BC] Guzzle\Guzzle is now deprecated -* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject -* Adding Guzzle\Version class to give version information about Guzzle -* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate() -* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data -* ServiceDescription and ServiceBuilder are now cacheable using similar configs -* Changing the format of XML and JSON service builder configs. Backwards compatible. -* Cleaned up Cookie parsing -* Trimming the default Guzzle User-Agent header -* Adding a setOnComplete() method to Commands that is called when a command completes -* Keeping track of requests that were mocked in the MockPlugin -* Fixed a caching bug in the CacheAdapterFactory -* Inspector objects can be injected into a Command object -* Refactoring a lot of code and tests to be case insensitive when dealing with headers -* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL -* Adding the ability to set global option overrides to service builder configs -* Adding the ability to include other service builder config files from within XML and JSON files -* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method. - -## 2.5.0 - 2012-05-08 - -* Major performance improvements -* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated. -* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component. -* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}" -* Added the ability to passed parameters to all requests created by a client -* Added callback functionality to the ExponentialBackoffPlugin -* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies. -* Rewinding request stream bodies when retrying requests -* Exception is thrown when JSON response body cannot be decoded -* Added configurable magic method calls to clients and commands. This is off by default. -* Fixed a defect that added a hash to every parsed URL part -* Fixed duplicate none generation for OauthPlugin. -* Emitting an event each time a client is generated by a ServiceBuilder -* Using an ApiParams object instead of a Collection for parameters of an ApiCommand -* cache.* request parameters should be renamed to params.cache.* -* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle. -* Added the ability to disable type validation of service descriptions -* ServiceDescriptions and ServiceBuilders are now Serializable diff --git a/vendor/guzzlehttp/guzzle/LICENSE b/vendor/guzzlehttp/guzzle/LICENSE deleted file mode 100644 index fd2375d8..00000000 --- a/vendor/guzzlehttp/guzzle/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011 Michael Dowling -Copyright (c) 2012 Jeremy Lindblom -Copyright (c) 2014 Graham Campbell -Copyright (c) 2015 Márk Sági-Kazár -Copyright (c) 2015 Tobias Schultze -Copyright (c) 2016 Tobias Nyholm -Copyright (c) 2016 George Mponos - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md deleted file mode 100644 index cdaebee3..00000000 --- a/vendor/guzzlehttp/guzzle/README.md +++ /dev/null @@ -1,94 +0,0 @@ -![Guzzle](.github/logo.png?raw=true) - -# Guzzle, PHP HTTP client - -[![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases) -[![Build Status](https://img.shields.io/github/actions/workflow/status/guzzle/guzzle/ci.yml?label=ci%20build&style=flat-square)](https://github.com/guzzle/guzzle/actions?query=workflow%3ACI) -[![Total Downloads](https://img.shields.io/packagist/dt/guzzlehttp/guzzle.svg?style=flat-square)](https://packagist.org/packages/guzzlehttp/guzzle) - -Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and -trivial to integrate with web services. - -- Simple interface for building query strings, POST requests, streaming large - uploads, streaming large downloads, using HTTP cookies, uploading JSON data, - etc... -- Can send both synchronous and asynchronous requests using the same interface. -- Uses PSR-7 interfaces for requests, responses, and streams. This allows you - to utilize other PSR-7 compatible libraries with Guzzle. -- Supports PSR-18 allowing interoperability between other PSR-18 HTTP Clients. -- Abstracts away the underlying HTTP transport, allowing you to write - environment and transport agnostic code; i.e., no hard dependency on cURL, - PHP streams, sockets, or non-blocking event loops. -- Middleware system allows you to augment and compose client behavior. - -```php -$client = new \GuzzleHttp\Client(); -$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle'); - -echo $response->getStatusCode(); // 200 -echo $response->getHeaderLine('content-type'); // 'application/json; charset=utf8' -echo $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}' - -// Send an asynchronous request. -$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org'); -$promise = $client->sendAsync($request)->then(function ($response) { - echo 'I completed! ' . $response->getBody(); -}); - -$promise->wait(); -``` - -## Help and docs - -We use GitHub issues only to discuss bugs and new features. For support please refer to: - -- [Documentation](https://docs.guzzlephp.org) -- [Stack Overflow](https://stackoverflow.com/questions/tagged/guzzle) -- [#guzzle](https://app.slack.com/client/T0D2S9JCT/CE6UAAKL4) channel on [PHP-HTTP Slack](https://slack.httplug.io/) -- [Gitter](https://gitter.im/guzzle/guzzle) - - -## Installing Guzzle - -The recommended way to install Guzzle is through -[Composer](https://getcomposer.org/). - -```bash -composer require guzzlehttp/guzzle -``` - - -## Version Guidance - -| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | -|---------|---------------------|---------------------|--------------|---------------------|---------------------|-------|--------------| -| 3.x | EOL (2016-10-31) | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 | -| 4.x | EOL (2016-10-31) | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 | -| 5.x | EOL (2019-10-31) | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 | -| 6.x | EOL (2023-10-31) | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 | -| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.5 | - -[guzzle-3-repo]: https://github.com/guzzle/guzzle3 -[guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x -[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3 -[guzzle-6-repo]: https://github.com/guzzle/guzzle/tree/6.5 -[guzzle-7-repo]: https://github.com/guzzle/guzzle -[guzzle-3-docs]: https://guzzle3.readthedocs.io/ -[guzzle-5-docs]: https://docs.guzzlephp.org/en/5.3/ -[guzzle-6-docs]: https://docs.guzzlephp.org/en/6.5/ -[guzzle-7-docs]: https://docs.guzzlephp.org/en/latest/ - - -## Security - -If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/guzzle/security/policy) for more information. - -## License - -Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information. - -## For Enterprise - -Available as part of the Tidelift Subscription - -The maintainers of Guzzle and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-guzzlehttp-guzzle?utm_source=packagist-guzzlehttp-guzzle&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/vendor/guzzlehttp/guzzle/UPGRADING.md b/vendor/guzzlehttp/guzzle/UPGRADING.md deleted file mode 100644 index 4efbb596..00000000 --- a/vendor/guzzlehttp/guzzle/UPGRADING.md +++ /dev/null @@ -1,1253 +0,0 @@ -Guzzle Upgrade Guide -==================== - -6.0 to 7.0 ----------- - -In order to take advantage of the new features of PHP, Guzzle dropped the support -of PHP 5. The minimum supported PHP version is now PHP 7.2. Type hints and return -types for functions and methods have been added wherever possible. - -Please make sure: -- You are calling a function or a method with the correct type. -- If you extend a class of Guzzle; update all signatures on methods you override. - -#### Other backwards compatibility breaking changes - -- Class `GuzzleHttp\UriTemplate` is removed. -- Class `GuzzleHttp\Exception\SeekException` is removed. -- Classes `GuzzleHttp\Exception\BadResponseException`, `GuzzleHttp\Exception\ClientException`, - `GuzzleHttp\Exception\ServerException` can no longer be initialized with an empty - Response as argument. -- Class `GuzzleHttp\Exception\ConnectException` now extends `GuzzleHttp\Exception\TransferException` - instead of `GuzzleHttp\Exception\RequestException`. -- Function `GuzzleHttp\Exception\ConnectException::getResponse()` is removed. -- Function `GuzzleHttp\Exception\ConnectException::hasResponse()` is removed. -- Constant `GuzzleHttp\ClientInterface::VERSION` is removed. Added `GuzzleHttp\ClientInterface::MAJOR_VERSION` instead. -- Function `GuzzleHttp\Exception\RequestException::getResponseBodySummary` is removed. - Use `\GuzzleHttp\Psr7\get_message_body_summary` as an alternative. -- Function `GuzzleHttp\Cookie\CookieJar::getCookieValue` is removed. -- Request option `exceptions` is removed. Please use `http_errors`. -- Request option `save_to` is removed. Please use `sink`. -- Pool option `pool_size` is removed. Please use `concurrency`. -- We now look for environment variables in the `$_SERVER` super global, due to thread safety issues with `getenv`. We continue to fallback to `getenv` in CLI environments, for maximum compatibility. -- The `get`, `head`, `put`, `post`, `patch`, `delete`, `getAsync`, `headAsync`, `putAsync`, `postAsync`, `patchAsync`, and `deleteAsync` methods are now implemented as genuine methods on `GuzzleHttp\Client`, with strong typing. The original `__call` implementation remains unchanged for now, for maximum backwards compatibility, but won't be invoked under normal operation. -- The `log` middleware will log the errors with level `error` instead of `notice` -- Support for international domain names (IDN) is now disabled by default, and enabling it requires installing ext-intl, linked against a modern version of the C library (ICU 4.6 or higher). - -#### Native functions calls - -All internal native functions calls of Guzzle are now prefixed with a slash. This -change makes it impossible for method overloading by other libraries or applications. -Example: - -```php -// Before: -curl_version(); - -// After: -\curl_version(); -``` - -For the full diff you can check [here](https://github.com/guzzle/guzzle/compare/6.5.4..master). - -5.0 to 6.0 ----------- - -Guzzle now uses [PSR-7](https://www.php-fig.org/psr/psr-7/) for HTTP messages. -Due to the fact that these messages are immutable, this prompted a refactoring -of Guzzle to use a middleware based system rather than an event system. Any -HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be -updated to work with the new immutable PSR-7 request and response objects. Any -event listeners or subscribers need to be updated to become middleware -functions that wrap handlers (or are injected into a -`GuzzleHttp\HandlerStack`). - -- Removed `GuzzleHttp\BatchResults` -- Removed `GuzzleHttp\Collection` -- Removed `GuzzleHttp\HasDataTrait` -- Removed `GuzzleHttp\ToArrayInterface` -- The `guzzlehttp/streams` dependency has been removed. Stream functionality - is now present in the `GuzzleHttp\Psr7` namespace provided by the - `guzzlehttp/psr7` package. -- Guzzle no longer uses ReactPHP promises and now uses the - `guzzlehttp/promises` library. We use a custom promise library for three - significant reasons: - 1. React promises (at the time of writing this) are recursive. Promise - chaining and promise resolution will eventually blow the stack. Guzzle - promises are not recursive as they use a sort of trampolining technique. - Note: there has been movement in the React project to modify promises to - no longer utilize recursion. - 2. Guzzle needs to have the ability to synchronously block on a promise to - wait for a result. Guzzle promises allows this functionality (and does - not require the use of recursion). - 3. Because we need to be able to wait on a result, doing so using React - promises requires wrapping react promises with RingPHP futures. This - overhead is no longer needed, reducing stack sizes, reducing complexity, - and improving performance. -- `GuzzleHttp\Mimetypes` has been moved to a function in - `GuzzleHttp\Psr7\mimetype_from_extension` and - `GuzzleHttp\Psr7\mimetype_from_filename`. -- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query - strings must now be passed into request objects as strings, or provided to - the `query` request option when creating requests with clients. The `query` - option uses PHP's `http_build_query` to convert an array to a string. If you - need a different serialization technique, you will need to pass the query - string in as a string. There are a couple helper functions that will make - working with query strings easier: `GuzzleHttp\Psr7\parse_query` and - `GuzzleHttp\Psr7\build_query`. -- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware - system based on PSR-7, using RingPHP and it's middleware system as well adds - more complexity than the benefits it provides. All HTTP handlers that were - present in RingPHP have been modified to work directly with PSR-7 messages - and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces - complexity in Guzzle, removes a dependency, and improves performance. RingPHP - will be maintained for Guzzle 5 support, but will no longer be a part of - Guzzle 6. -- As Guzzle now uses a middleware based systems the event system and RingPHP - integration has been removed. Note: while the event system has been removed, - it is possible to add your own type of event system that is powered by the - middleware system. - - Removed the `Event` namespace. - - Removed the `Subscriber` namespace. - - Removed `Transaction` class - - Removed `RequestFsm` - - Removed `RingBridge` - - `GuzzleHttp\Subscriber\Cookie` is now provided by - `GuzzleHttp\Middleware::cookies` - - `GuzzleHttp\Subscriber\HttpError` is now provided by - `GuzzleHttp\Middleware::httpError` - - `GuzzleHttp\Subscriber\History` is now provided by - `GuzzleHttp\Middleware::history` - - `GuzzleHttp\Subscriber\Mock` is now provided by - `GuzzleHttp\Handler\MockHandler` - - `GuzzleHttp\Subscriber\Prepare` is now provided by - `GuzzleHttp\PrepareBodyMiddleware` - - `GuzzleHttp\Subscriber\Redirect` is now provided by - `GuzzleHttp\RedirectMiddleware` -- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in - `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone. -- Static functions in `GuzzleHttp\Utils` have been moved to namespaced - functions under the `GuzzleHttp` namespace. This requires either a Composer - based autoloader or you to include functions.php. -- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to - `GuzzleHttp\ClientInterface::getConfig`. -- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed. -- The `json` and `xml` methods of response objects has been removed. With the - migration to strictly adhering to PSR-7 as the interface for Guzzle messages, - adding methods to message interfaces would actually require Guzzle messages - to extend from PSR-7 messages rather then work with them directly. - -## Migrating to middleware - -The change to PSR-7 unfortunately required significant refactoring to Guzzle -due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event -system from plugins. The event system relied on mutability of HTTP messages and -side effects in order to work. With immutable messages, you have to change your -workflow to become more about either returning a value (e.g., functional -middlewares) or setting a value on an object. Guzzle v6 has chosen the -functional middleware approach. - -Instead of using the event system to listen for things like the `before` event, -you now create a stack based middleware function that intercepts a request on -the way in and the promise of the response on the way out. This is a much -simpler and more predictable approach than the event system and works nicely -with PSR-7 middleware. Due to the use of promises, the middleware system is -also asynchronous. - -v5: - -```php -use GuzzleHttp\Event\BeforeEvent; -$client = new GuzzleHttp\Client(); -// Get the emitter and listen to the before event. -$client->getEmitter()->on('before', function (BeforeEvent $e) { - // Guzzle v5 events relied on mutation - $e->getRequest()->setHeader('X-Foo', 'Bar'); -}); -``` - -v6: - -In v6, you can modify the request before it is sent using the `mapRequest` -middleware. The idiomatic way in v6 to modify the request/response lifecycle is -to setup a handler middleware stack up front and inject the handler into a -client. - -```php -use GuzzleHttp\Middleware; -// Create a handler stack that has all of the default middlewares attached -$handler = GuzzleHttp\HandlerStack::create(); -// Push the handler onto the handler stack -$handler->push(Middleware::mapRequest(function (RequestInterface $request) { - // Notice that we have to return a request object - return $request->withHeader('X-Foo', 'Bar'); -})); -// Inject the handler into the client -$client = new GuzzleHttp\Client(['handler' => $handler]); -``` - -## POST Requests - -This version added the [`form_params`](https://docs.guzzlephp.org/en/latest/request-options.html#form_params) -and `multipart` request options. `form_params` is an associative array of -strings or array of strings and is used to serialize an -`application/x-www-form-urlencoded` POST request. The -[`multipart`](https://docs.guzzlephp.org/en/latest/request-options.html#multipart) -option is now used to send a multipart/form-data POST request. - -`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add -POST files to a multipart/form-data request. - -The `body` option no longer accepts an array to send POST requests. Please use -`multipart` or `form_params` instead. - -The `base_url` option has been renamed to `base_uri`. - -4.x to 5.0 ----------- - -## Rewritten Adapter Layer - -Guzzle now uses [RingPHP](https://ringphp.readthedocs.org/en/latest) to send -HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor -is still supported, but it has now been renamed to `handler`. Instead of -passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP -`callable` that follows the RingPHP specification. - -## Removed Fluent Interfaces - -[Fluent interfaces were removed](https://ocramius.github.io/blog/fluent-interfaces-are-evil/) -from the following classes: - -- `GuzzleHttp\Collection` -- `GuzzleHttp\Url` -- `GuzzleHttp\Query` -- `GuzzleHttp\Post\PostBody` -- `GuzzleHttp\Cookie\SetCookie` - -## Removed functions.php - -Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following -functions can be used as replacements. - -- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode` -- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath` -- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path` -- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however, - deprecated in favor of using `GuzzleHttp\Pool::batch()`. - -The "procedural" global client has been removed with no replacement (e.g., -`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client` -object as a replacement. - -## `throwImmediately` has been removed - -The concept of "throwImmediately" has been removed from exceptions and error -events. This control mechanism was used to stop a transfer of concurrent -requests from completing. This can now be handled by throwing the exception or -by cancelling a pool of requests or each outstanding future request -individually. - -## headers event has been removed - -Removed the "headers" event. This event was only useful for changing the -body a response once the headers of the response were known. You can implement -a similar behavior in a number of ways. One example might be to use a -FnStream that has access to the transaction being sent. For example, when the -first byte is written, you could check if the response headers match your -expectations, and if so, change the actual stream body that is being -written to. - -## Updates to HTTP Messages - -Removed the `asArray` parameter from -`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header -value as an array, then use the newly added `getHeaderAsArray()` method of -`MessageInterface`. This change makes the Guzzle interfaces compatible with -the PSR-7 interfaces. - -3.x to 4.0 ----------- - -## Overarching changes: - -- Now requires PHP 5.4 or greater. -- No longer requires cURL to send requests. -- Guzzle no longer wraps every exception it throws. Only exceptions that are - recoverable are now wrapped by Guzzle. -- Various namespaces have been removed or renamed. -- No longer requiring the Symfony EventDispatcher. A custom event dispatcher - based on the Symfony EventDispatcher is - now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant - speed and functionality improvements). - -Changes per Guzzle 3.x namespace are described below. - -## Batch - -The `Guzzle\Batch` namespace has been removed. This is best left to -third-parties to implement on top of Guzzle's core HTTP library. - -## Cache - -The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement -has been implemented yet, but hoping to utilize a PSR cache interface). - -## Common - -- Removed all of the wrapped exceptions. It's better to use the standard PHP - library for unrecoverable exceptions. -- `FromConfigInterface` has been removed. -- `Guzzle\Common\Version` has been removed. The VERSION constant can be found - at `GuzzleHttp\ClientInterface::VERSION`. - -### Collection - -- `getAll` has been removed. Use `toArray` to convert a collection to an array. -- `inject` has been removed. -- `keySearch` has been removed. -- `getPath` no longer supports wildcard expressions. Use something better like - JMESPath for this. -- `setPath` now supports appending to an existing array via the `[]` notation. - -### Events - -Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses -`GuzzleHttp\Event\Emitter`. - -- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by - `GuzzleHttp\Event\EmitterInterface`. -- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by - `GuzzleHttp\Event\Emitter`. -- `Symfony\Component\EventDispatcher\Event` is replaced by - `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in - `GuzzleHttp\Event\EventInterface`. -- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and - `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the - event emitter of a request, client, etc. now uses the `getEmitter` method - rather than the `getDispatcher` method. - -#### Emitter - -- Use the `once()` method to add a listener that automatically removes itself - the first time it is invoked. -- Use the `listeners()` method to retrieve a list of event listeners rather than - the `getListeners()` method. -- Use `emit()` instead of `dispatch()` to emit an event from an emitter. -- Use `attach()` instead of `addSubscriber()` and `detach()` instead of - `removeSubscriber()`. - -```php -$mock = new Mock(); -// 3.x -$request->getEventDispatcher()->addSubscriber($mock); -$request->getEventDispatcher()->removeSubscriber($mock); -// 4.x -$request->getEmitter()->attach($mock); -$request->getEmitter()->detach($mock); -``` - -Use the `on()` method to add a listener rather than the `addListener()` method. - -```php -// 3.x -$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } ); -// 4.x -$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } ); -``` - -## Http - -### General changes - -- The cacert.pem certificate has been moved to `src/cacert.pem`. -- Added the concept of adapters that are used to transfer requests over the - wire. -- Simplified the event system. -- Sending requests in parallel is still possible, but batching is no longer a - concept of the HTTP layer. Instead, you must use the `complete` and `error` - events to asynchronously manage parallel request transfers. -- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`. -- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`. -- QueryAggregators have been rewritten so that they are simply callable - functions. -- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in - `functions.php` for an easy to use static client instance. -- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from - `GuzzleHttp\Exception\TransferException`. - -### Client - -Calling methods like `get()`, `post()`, `head()`, etc. no longer create and -return a request, but rather creates a request, sends the request, and returns -the response. - -```php -// 3.0 -$request = $client->get('/'); -$response = $request->send(); - -// 4.0 -$response = $client->get('/'); - -// or, to mirror the previous behavior -$request = $client->createRequest('GET', '/'); -$response = $client->send($request); -``` - -`GuzzleHttp\ClientInterface` has changed. - -- The `send` method no longer accepts more than one request. Use `sendAll` to - send multiple requests in parallel. -- `setUserAgent()` has been removed. Use a default request option instead. You - could, for example, do something like: - `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`. -- `setSslVerification()` has been removed. Use default request options instead, - like `$client->setConfig('defaults/verify', true)`. - -`GuzzleHttp\Client` has changed. - -- The constructor now accepts only an associative array. You can include a - `base_url` string or array to use a URI template as the base URL of a client. - You can also specify a `defaults` key that is an associative array of default - request options. You can pass an `adapter` to use a custom adapter, - `batch_adapter` to use a custom adapter for sending requests in parallel, or - a `message_factory` to change the factory used to create HTTP requests and - responses. -- The client no longer emits a `client.create_request` event. -- Creating requests with a client no longer automatically utilize a URI - template. You must pass an array into a creational method (e.g., - `createRequest`, `get`, `put`, etc.) in order to expand a URI template. - -### Messages - -Messages no longer have references to their counterparts (i.e., a request no -longer has a reference to it's response, and a response no loger has a -reference to its request). This association is now managed through a -`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to -these transaction objects using request events that are emitted over the -lifecycle of a request. - -#### Requests with a body - -- `GuzzleHttp\Message\EntityEnclosingRequest` and - `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The - separation between requests that contain a body and requests that do not - contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface` - handles both use cases. -- Any method that previously accepts a `GuzzleHttp\Response` object now accept a - `GuzzleHttp\Message\ResponseInterface`. -- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to - `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create - both requests and responses and is implemented in - `GuzzleHttp\Message\MessageFactory`. -- POST field and file methods have been removed from the request object. You - must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface` - to control the format of a POST body. Requests that are created using a - standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use - a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if - the method is POST and no body is provided. - -```php -$request = $client->createRequest('POST', '/'); -$request->getBody()->setField('foo', 'bar'); -$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r'))); -``` - -#### Headers - -- `GuzzleHttp\Message\Header` has been removed. Header values are now simply - represented by an array of values or as a string. Header values are returned - as a string by default when retrieving a header value from a message. You can - pass an optional argument of `true` to retrieve a header value as an array - of strings instead of a single concatenated string. -- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to - `GuzzleHttp\Post`. This interface has been simplified and now allows the - addition of arbitrary headers. -- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most - of the custom headers are now handled separately in specific - subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has - been updated to properly handle headers that contain parameters (like the - `Link` header). - -#### Responses - -- `GuzzleHttp\Message\Response::getInfo()` and - `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event - system to retrieve this type of information. -- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed. -- `GuzzleHttp\Message\Response::getMessage()` has been removed. -- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific - methods have moved to the CacheSubscriber. -- Header specific helper functions like `getContentMd5()` have been removed. - Just use `getHeader('Content-MD5')` instead. -- `GuzzleHttp\Message\Response::setRequest()` and - `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event - system to work with request and response objects as a transaction. -- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the - Redirect subscriber instead. -- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have - been removed. Use `getStatusCode()` instead. - -#### Streaming responses - -Streaming requests can now be created by a client directly, returning a -`GuzzleHttp\Message\ResponseInterface` object that contains a body stream -referencing an open PHP HTTP stream. - -```php -// 3.0 -use Guzzle\Stream\PhpStreamRequestFactory; -$request = $client->get('/'); -$factory = new PhpStreamRequestFactory(); -$stream = $factory->fromRequest($request); -$data = $stream->read(1024); - -// 4.0 -$response = $client->get('/', ['stream' => true]); -// Read some data off of the stream in the response body -$data = $response->getBody()->read(1024); -``` - -#### Redirects - -The `configureRedirects()` method has been removed in favor of a -`allow_redirects` request option. - -```php -// Standard redirects with a default of a max of 5 redirects -$request = $client->createRequest('GET', '/', ['allow_redirects' => true]); - -// Strict redirects with a custom number of redirects -$request = $client->createRequest('GET', '/', [ - 'allow_redirects' => ['max' => 5, 'strict' => true] -]); -``` - -#### EntityBody - -EntityBody interfaces and classes have been removed or moved to -`GuzzleHttp\Stream`. All classes and interfaces that once required -`GuzzleHttp\EntityBodyInterface` now require -`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no -longer uses `GuzzleHttp\EntityBody::factory` but now uses -`GuzzleHttp\Stream\Stream::factory` or even better: -`GuzzleHttp\Stream\create()`. - -- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface` -- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream` -- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream` -- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream` -- `Guzzle\Http\IoEmittyinEntityBody` has been removed. - -#### Request lifecycle events - -Requests previously submitted a large number of requests. The number of events -emitted over the lifecycle of a request has been significantly reduced to make -it easier to understand how to extend the behavior of a request. All events -emitted during the lifecycle of a request now emit a custom -`GuzzleHttp\Event\EventInterface` object that contains context providing -methods and a way in which to modify the transaction at that specific point in -time (e.g., intercept the request and set a response on the transaction). - -- `request.before_send` has been renamed to `before` and now emits a - `GuzzleHttp\Event\BeforeEvent` -- `request.complete` has been renamed to `complete` and now emits a - `GuzzleHttp\Event\CompleteEvent`. -- `request.sent` has been removed. Use `complete`. -- `request.success` has been removed. Use `complete`. -- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`. -- `request.exception` has been removed. Use `error`. -- `request.receive.status_line` has been removed. -- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to - maintain a status update. -- `curl.callback.write` has been removed. Use a custom `StreamInterface` to - intercept writes. -- `curl.callback.read` has been removed. Use a custom `StreamInterface` to - intercept reads. - -`headers` is a new event that is emitted after the response headers of a -request have been received before the body of the response is downloaded. This -event emits a `GuzzleHttp\Event\HeadersEvent`. - -You can intercept a request and inject a response using the `intercept()` event -of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and -`GuzzleHttp\Event\ErrorEvent` event. - -See: https://docs.guzzlephp.org/en/latest/events.html - -## Inflection - -The `Guzzle\Inflection` namespace has been removed. This is not a core concern -of Guzzle. - -## Iterator - -The `Guzzle\Iterator` namespace has been removed. - -- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and - `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of - Guzzle itself. -- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent - class is shipped with PHP 5.4. -- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because - it's easier to just wrap an iterator in a generator that maps values. - -For a replacement of these iterators, see https://github.com/nikic/iter - -## Log - -The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The -`Guzzle\Log` namespace has been removed. Guzzle now relies on -`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been -moved to `GuzzleHttp\Subscriber\Log\Formatter`. - -## Parser - -The `Guzzle\Parser` namespace has been removed. This was previously used to -make it possible to plug in custom parsers for cookies, messages, URI -templates, and URLs; however, this level of complexity is not needed in Guzzle -so it has been removed. - -- Cookie: Cookie parsing logic has been moved to - `GuzzleHttp\Cookie\SetCookie::fromString`. -- Message: Message parsing logic for both requests and responses has been moved - to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only - used in debugging or deserializing messages, so it doesn't make sense for - Guzzle as a library to add this level of complexity to parsing messages. -- UriTemplate: URI template parsing has been moved to - `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL - URI template library if it is installed. -- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously - it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary, - then developers are free to subclass `GuzzleHttp\Url`. - -## Plugin - -The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`. -Several plugins are shipping with the core Guzzle library under this namespace. - -- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar - code has moved to `GuzzleHttp\Cookie`. -- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin. -- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is - received. -- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin. -- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before - sending. This subscriber is attached to all requests by default. -- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin. - -The following plugins have been removed (third-parties are free to re-implement -these if needed): - -- `GuzzleHttp\Plugin\Async` has been removed. -- `GuzzleHttp\Plugin\CurlAuth` has been removed. -- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This - functionality should instead be implemented with event listeners that occur - after normal response parsing occurs in the guzzle/command package. - -The following plugins are not part of the core Guzzle package, but are provided -in separate repositories: - -- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler - to build custom retry policies using simple functions rather than various - chained classes. See: https://github.com/guzzle/retry-subscriber -- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to - https://github.com/guzzle/cache-subscriber -- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to - https://github.com/guzzle/log-subscriber -- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to - https://github.com/guzzle/message-integrity-subscriber -- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to - `GuzzleHttp\Subscriber\MockSubscriber`. -- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to - https://github.com/guzzle/oauth-subscriber - -## Service - -The service description layer of Guzzle has moved into two separate packages: - -- https://github.com/guzzle/command Provides a high level abstraction over web - services by representing web service operations using commands. -- https://github.com/guzzle/guzzle-services Provides an implementation of - guzzle/command that provides request serialization and response parsing using - Guzzle service descriptions. - -## Stream - -Stream have moved to a separate package available at -https://github.com/guzzle/streams. - -`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take -on the responsibilities of `Guzzle\Http\EntityBody` and -`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number -of methods implemented by the `StreamInterface` has been drastically reduced to -allow developers to more easily extend and decorate stream behavior. - -## Removed methods from StreamInterface - -- `getStream` and `setStream` have been removed to better encapsulate streams. -- `getMetadata` and `setMetadata` have been removed in favor of - `GuzzleHttp\Stream\MetadataStreamInterface`. -- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been - removed. This data is accessible when - using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`. -- `rewind` has been removed. Use `seek(0)` for a similar behavior. - -## Renamed methods - -- `detachStream` has been renamed to `detach`. -- `feof` has been renamed to `eof`. -- `ftell` has been renamed to `tell`. -- `readLine` has moved from an instance method to a static class method of - `GuzzleHttp\Stream\Stream`. - -## Metadata streams - -`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams -that contain additional metadata accessible via `getMetadata()`. -`GuzzleHttp\Stream\StreamInterface::getMetadata` and -`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed. - -## StreamRequestFactory - -The entire concept of the StreamRequestFactory has been removed. The way this -was used in Guzzle 3 broke the actual interface of sending streaming requests -(instead of getting back a Response, you got a StreamInterface). Streaming -PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`. - -3.6 to 3.7 ----------- - -### Deprecations - -- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.: - -```php -\Guzzle\Common\Version::$emitWarnings = true; -``` - -The following APIs and options have been marked as deprecated: - -- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead. -- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. -- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. -- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated -- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. -- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. -- Marked `Guzzle\Common\Collection::inject()` as deprecated. -- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use - `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or - `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` - -3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational -request methods. When paired with a client's configuration settings, these options allow you to specify default settings -for various aspects of a request. Because these options make other previous configuration options redundant, several -configuration options and methods of a client and AbstractCommand have been deprecated. - -- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`. -- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`. -- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')` -- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0 - - $command = $client->getCommand('foo', array( - 'command.headers' => array('Test' => '123'), - 'command.response_body' => '/path/to/file' - )); - - // Should be changed to: - - $command = $client->getCommand('foo', array( - 'command.request_options' => array( - 'headers' => array('Test' => '123'), - 'save_as' => '/path/to/file' - ) - )); - -### Interface changes - -Additions and changes (you will need to update any implementations or subclasses you may have created): - -- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: - createRequest, head, delete, put, patch, post, options, prepareRequest -- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` -- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` -- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to - `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a - resource, string, or EntityBody into the $options parameter to specify the download location of the response. -- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a - default `array()` -- Added `Guzzle\Stream\StreamInterface::isRepeatable` -- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. - -The following methods were removed from interfaces. All of these methods are still available in the concrete classes -that implement them, but you should update your code to use alternative methods: - -- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use - `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or - `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or - `$client->setDefaultOption('headers/{header_name}', 'value')`. or - `$client->setDefaultOption('headers', array('header_name' => 'value'))`. -- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`. -- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail. -- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail. -- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail. -- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin. -- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin. -- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin. - -### Cache plugin breaking changes - -- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a - CacheStorageInterface. These two objects and interface will be removed in a future version. -- Always setting X-cache headers on cached responses -- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin -- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface - $request, Response $response);` -- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` -- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` -- Added `CacheStorageInterface::purge($url)` -- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin - $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, - CanCacheStrategyInterface $canCache = null)` -- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` - -3.5 to 3.6 ----------- - -* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. -* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution -* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). - For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader(). - Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request. -* Specific header implementations can be created for complex headers. When a message creates a header, it uses a - HeaderFactory which can map specific headers to specific header classes. There is now a Link header and - CacheControl header implementation. -* Moved getLinks() from Response to just be used on a Link header object. - -If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the -HeaderInterface (e.g. toArray(), getAll(), etc.). - -### Interface changes - -* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate -* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() -* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in - Guzzle\Http\Curl\RequestMediator -* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. -* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface -* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() - -### Removed deprecated functions - -* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() -* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). - -### Deprecations - -* The ability to case-insensitively search for header values -* Guzzle\Http\Message\Header::hasExactHeader -* Guzzle\Http\Message\Header::raw. Use getAll() -* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object - instead. - -### Other changes - -* All response header helper functions return a string rather than mixing Header objects and strings inconsistently -* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle - directly via interfaces -* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist - but are a no-op until removed. -* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a - `Guzzle\Service\Command\ArrayCommandInterface`. -* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response - on a request while the request is still being transferred -* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess - -3.3 to 3.4 ----------- - -Base URLs of a client now follow the rules of https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.2 when merging URLs. - -3.2 to 3.3 ----------- - -### Response::getEtag() quote stripping removed - -`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header - -### Removed `Guzzle\Http\Utils` - -The `Guzzle\Http\Utils` class was removed. This class was only used for testing. - -### Stream wrapper and type - -`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase. - -### curl.emit_io became emit_io - -Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the -'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' - -3.1 to 3.2 ----------- - -### CurlMulti is no longer reused globally - -Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added -to a single client can pollute requests dispatched from other clients. - -If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the -ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is -created. - -```php -$multi = new Guzzle\Http\Curl\CurlMulti(); -$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json'); -$builder->addListener('service_builder.create_client', function ($event) use ($multi) { - $event['client']->setCurlMulti($multi); -} -}); -``` - -### No default path - -URLs no longer have a default path value of '/' if no path was specified. - -Before: - -```php -$request = $client->get('http://www.foo.com'); -echo $request->getUrl(); -// >> http://www.foo.com/ -``` - -After: - -```php -$request = $client->get('http://www.foo.com'); -echo $request->getUrl(); -// >> http://www.foo.com -``` - -### Less verbose BadResponseException - -The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and -response information. You can, however, get access to the request and response object by calling `getRequest()` or -`getResponse()` on the exception object. - -### Query parameter aggregation - -Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a -setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is -responsible for handling the aggregation of multi-valued query string variables into a flattened hash. - -2.8 to 3.x ----------- - -### Guzzle\Service\Inspector - -Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig` - -**Before** - -```php -use Guzzle\Service\Inspector; - -class YourClient extends \Guzzle\Service\Client -{ - public static function factory($config = array()) - { - $default = array(); - $required = array('base_url', 'username', 'api_key'); - $config = Inspector::fromConfig($config, $default, $required); - - $client = new self( - $config->get('base_url'), - $config->get('username'), - $config->get('api_key') - ); - $client->setConfig($config); - - $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); - - return $client; - } -``` - -**After** - -```php -use Guzzle\Common\Collection; - -class YourClient extends \Guzzle\Service\Client -{ - public static function factory($config = array()) - { - $default = array(); - $required = array('base_url', 'username', 'api_key'); - $config = Collection::fromConfig($config, $default, $required); - - $client = new self( - $config->get('base_url'), - $config->get('username'), - $config->get('api_key') - ); - $client->setConfig($config); - - $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); - - return $client; - } -``` - -### Convert XML Service Descriptions to JSON - -**Before** - -```xml - - - - - - Get a list of groups - - - Uses a search query to get a list of groups - - - - Create a group - - - - - Delete a group by ID - - - - - - - Update a group - - - - - - -``` - -**After** - -```json -{ - "name": "Zendesk REST API v2", - "apiVersion": "2012-12-31", - "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users", - "operations": { - "list_groups": { - "httpMethod":"GET", - "uri": "groups.json", - "summary": "Get a list of groups" - }, - "search_groups":{ - "httpMethod":"GET", - "uri": "search.json?query=\"{query} type:group\"", - "summary": "Uses a search query to get a list of groups", - "parameters":{ - "query":{ - "location": "uri", - "description":"Zendesk Search Query", - "type": "string", - "required": true - } - } - }, - "create_group": { - "httpMethod":"POST", - "uri": "groups.json", - "summary": "Create a group", - "parameters":{ - "data": { - "type": "array", - "location": "body", - "description":"Group JSON", - "filters": "json_encode", - "required": true - }, - "Content-Type":{ - "type": "string", - "location":"header", - "static": "application/json" - } - } - }, - "delete_group": { - "httpMethod":"DELETE", - "uri": "groups/{id}.json", - "summary": "Delete a group", - "parameters":{ - "id":{ - "location": "uri", - "description":"Group to delete by ID", - "type": "integer", - "required": true - } - } - }, - "get_group": { - "httpMethod":"GET", - "uri": "groups/{id}.json", - "summary": "Get a ticket", - "parameters":{ - "id":{ - "location": "uri", - "description":"Group to get by ID", - "type": "integer", - "required": true - } - } - }, - "update_group": { - "httpMethod":"PUT", - "uri": "groups/{id}.json", - "summary": "Update a group", - "parameters":{ - "id": { - "location": "uri", - "description":"Group to update by ID", - "type": "integer", - "required": true - }, - "data": { - "type": "array", - "location": "body", - "description":"Group JSON", - "filters": "json_encode", - "required": true - }, - "Content-Type":{ - "type": "string", - "location":"header", - "static": "application/json" - } - } - } -} -``` - -### Guzzle\Service\Description\ServiceDescription - -Commands are now called Operations - -**Before** - -```php -use Guzzle\Service\Description\ServiceDescription; - -$sd = new ServiceDescription(); -$sd->getCommands(); // @returns ApiCommandInterface[] -$sd->hasCommand($name); -$sd->getCommand($name); // @returns ApiCommandInterface|null -$sd->addCommand($command); // @param ApiCommandInterface $command -``` - -**After** - -```php -use Guzzle\Service\Description\ServiceDescription; - -$sd = new ServiceDescription(); -$sd->getOperations(); // @returns OperationInterface[] -$sd->hasOperation($name); -$sd->getOperation($name); // @returns OperationInterface|null -$sd->addOperation($operation); // @param OperationInterface $operation -``` - -### Guzzle\Common\Inflection\Inflector - -Namespace is now `Guzzle\Inflection\Inflector` - -### Guzzle\Http\Plugin - -Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below. - -### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log - -Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively. - -**Before** - -```php -use Guzzle\Common\Log\ClosureLogAdapter; -use Guzzle\Http\Plugin\LogPlugin; - -/** @var \Guzzle\Http\Client */ -$client; - -// $verbosity is an integer indicating desired message verbosity level -$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE); -``` - -**After** - -```php -use Guzzle\Log\ClosureLogAdapter; -use Guzzle\Log\MessageFormatter; -use Guzzle\Plugin\Log\LogPlugin; - -/** @var \Guzzle\Http\Client */ -$client; - -// $format is a string indicating desired message format -- @see MessageFormatter -$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT); -``` - -### Guzzle\Http\Plugin\CurlAuthPlugin - -Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`. - -### Guzzle\Http\Plugin\ExponentialBackoffPlugin - -Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes. - -**Before** - -```php -use Guzzle\Http\Plugin\ExponentialBackoffPlugin; - -$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge( - ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429) - )); - -$client->addSubscriber($backoffPlugin); -``` - -**After** - -```php -use Guzzle\Plugin\Backoff\BackoffPlugin; -use Guzzle\Plugin\Backoff\HttpBackoffStrategy; - -// Use convenient factory method instead -- see implementation for ideas of what -// you can do with chaining backoff strategies -$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge( - HttpBackoffStrategy::getDefaultFailureCodes(), array(429) - )); -$client->addSubscriber($backoffPlugin); -``` - -### Known Issues - -#### [BUG] Accept-Encoding header behavior changed unintentionally. - -(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e) - -In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to -properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen. -See issue #217 for a workaround, or use a version containing the fix. diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json deleted file mode 100644 index 0db75a95..00000000 --- a/vendor/guzzlehttp/guzzle/composer.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "name": "guzzlehttp/guzzle", - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "framework", - "http", - "rest", - "web service", - "curl", - "client", - "HTTP client", - "PSR-7", - "PSR-18" - ], - "license": "MIT", - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "repositories": [ - { - "type": "package", - "package": { - "name": "guzzle/client-integration-tests", - "version": "v3.0.2", - "dist": { - "url": "https://codeload.github.com/guzzle/client-integration-tests/zip/2c025848417c1135031fdf9c728ee53d0a7ceaee", - "type": "zip" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.11", - "php-http/message": "^1.0 || ^2.0", - "guzzlehttp/psr7": "^1.7 || ^2.0", - "th3n3rd/cartesian-product": "^0.3" - }, - "autoload": { - "psr-4": { - "Http\\Client\\Tests\\": "src/" - } - }, - "bin": [ - "bin/http_test_server" - ] - } - } - ], - "require": { - "php": "^7.2.5 || ^8.0", - "ext-json": "*", - "guzzlehttp/promises": "^2.3", - "guzzlehttp/psr7": "^2.8", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "bamarni/composer-bin-plugin": "^1.8.2", - "guzzle/client-integration-tests": "3.0.2", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.39 || ^9.6.20", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "config": { - "allow-plugins": { - "bamarni/composer-bin-plugin": true - }, - "preferred-install": "dist", - "sort-packages": true - }, - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "autoload-dev": { - "psr-4": { - "GuzzleHttp\\Tests\\": "tests/" - } - } -} diff --git a/vendor/guzzlehttp/guzzle/package-lock.json b/vendor/guzzlehttp/guzzle/package-lock.json deleted file mode 100644 index 0e14dc18..00000000 --- a/vendor/guzzlehttp/guzzle/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "guzzle", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/vendor/guzzlehttp/guzzle/src/BodySummarizer.php b/vendor/guzzlehttp/guzzle/src/BodySummarizer.php deleted file mode 100644 index 761506dd..00000000 --- a/vendor/guzzlehttp/guzzle/src/BodySummarizer.php +++ /dev/null @@ -1,28 +0,0 @@ -truncateAt = $truncateAt; - } - - /** - * Returns a summarized message body. - */ - public function summarize(MessageInterface $message): ?string - { - return $this->truncateAt === null - ? Psr7\Message::bodySummary($message) - : Psr7\Message::bodySummary($message, $this->truncateAt); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php b/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php deleted file mode 100644 index 3e02e036..00000000 --- a/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php +++ /dev/null @@ -1,13 +0,0 @@ - 'http://www.foo.com/1.0/', - * 'timeout' => 0, - * 'allow_redirects' => false, - * 'proxy' => '192.168.16.1:10' - * ]); - * - * Client configuration settings include the following options: - * - * - handler: (callable) Function that transfers HTTP requests over the - * wire. The function is called with a Psr7\Http\Message\RequestInterface - * and array of transfer options, and must return a - * GuzzleHttp\Promise\PromiseInterface that is fulfilled with a - * Psr7\Http\Message\ResponseInterface on success. - * If no handler is provided, a default handler will be created - * that enables all of the request options below by attaching all of the - * default middleware to the handler. - * - base_uri: (string|UriInterface) Base URI of the client that is merged - * into relative URIs. Can be a string or instance of UriInterface. - * - **: any request option - * - * @param array $config Client configuration settings. - * - * @see RequestOptions for a list of available request options. - */ - public function __construct(array $config = []) - { - if (!isset($config['handler'])) { - $config['handler'] = HandlerStack::create(); - } elseif (!\is_callable($config['handler'])) { - throw new InvalidArgumentException('handler must be a callable'); - } - - // Convert the base_uri to a UriInterface - if (isset($config['base_uri'])) { - $config['base_uri'] = Psr7\Utils::uriFor($config['base_uri']); - } - - $this->configureDefaults($config); - } - - /** - * @param string $method - * @param array $args - * - * @return PromiseInterface|ResponseInterface - * - * @deprecated Client::__call will be removed in guzzlehttp/guzzle:8.0. - */ - public function __call($method, $args) - { - if (\count($args) < 1) { - throw new InvalidArgumentException('Magic request methods require a URI and optional options array'); - } - - $uri = $args[0]; - $opts = $args[1] ?? []; - - return \substr($method, -5) === 'Async' - ? $this->requestAsync(\substr($method, 0, -5), $uri, $opts) - : $this->request($method, $uri, $opts); - } - - /** - * Asynchronously send an HTTP request. - * - * @param array $options Request options to apply to the given - * request and to the transfer. See \GuzzleHttp\RequestOptions. - */ - public function sendAsync(RequestInterface $request, array $options = []): PromiseInterface - { - // Merge the base URI into the request URI if needed. - $options = $this->prepareDefaults($options); - - return $this->transfer( - $request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')), - $options - ); - } - - /** - * Send an HTTP request. - * - * @param array $options Request options to apply to the given - * request and to the transfer. See \GuzzleHttp\RequestOptions. - * - * @throws GuzzleException - */ - public function send(RequestInterface $request, array $options = []): ResponseInterface - { - $options[RequestOptions::SYNCHRONOUS] = true; - - return $this->sendAsync($request, $options)->wait(); - } - - /** - * The HttpClient PSR (PSR-18) specify this method. - * - * {@inheritDoc} - */ - public function sendRequest(RequestInterface $request): ResponseInterface - { - $options[RequestOptions::SYNCHRONOUS] = true; - $options[RequestOptions::ALLOW_REDIRECTS] = false; - $options[RequestOptions::HTTP_ERRORS] = false; - - return $this->sendAsync($request, $options)->wait(); - } - - /** - * Create and send an asynchronous HTTP request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string $method HTTP method - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions. - */ - public function requestAsync(string $method, $uri = '', array $options = []): PromiseInterface - { - $options = $this->prepareDefaults($options); - // Remove request modifying parameter because it can be done up-front. - $headers = $options['headers'] ?? []; - $body = $options['body'] ?? null; - $version = $options['version'] ?? '1.1'; - // Merge the URI into the base URI. - $uri = $this->buildUri(Psr7\Utils::uriFor($uri), $options); - if (\is_array($body)) { - throw $this->invalidBody(); - } - $request = new Psr7\Request($method, $uri, $headers, $body, $version); - // Remove the option so that they are not doubly-applied. - unset($options['headers'], $options['body'], $options['version']); - - return $this->transfer($request, $options); - } - - /** - * Create and send an HTTP request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. - * - * @param string $method HTTP method. - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions. - * - * @throws GuzzleException - */ - public function request(string $method, $uri = '', array $options = []): ResponseInterface - { - $options[RequestOptions::SYNCHRONOUS] = true; - - return $this->requestAsync($method, $uri, $options)->wait(); - } - - /** - * Get a client configuration option. - * - * These options include default request options of the client, a "handler" - * (if utilized by the concrete client), and a "base_uri" if utilized by - * the concrete client. - * - * @param string|null $option The config option to retrieve. - * - * @return mixed - * - * @deprecated Client::getConfig will be removed in guzzlehttp/guzzle:8.0. - */ - public function getConfig(?string $option = null) - { - return $option === null - ? $this->config - : ($this->config[$option] ?? null); - } - - private function buildUri(UriInterface $uri, array $config): UriInterface - { - if (isset($config['base_uri'])) { - $uri = Psr7\UriResolver::resolve(Psr7\Utils::uriFor($config['base_uri']), $uri); - } - - if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) { - $idnOptions = ($config['idn_conversion'] === true) ? \IDNA_DEFAULT : $config['idn_conversion']; - $uri = Utils::idnUriConvert($uri, $idnOptions); - } - - return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri; - } - - /** - * Configures the default options for a client. - */ - private function configureDefaults(array $config): void - { - $defaults = [ - 'allow_redirects' => RedirectMiddleware::$defaultSettings, - 'http_errors' => true, - 'decode_content' => true, - 'verify' => true, - 'cookies' => false, - 'idn_conversion' => false, - ]; - - // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. - - // We can only trust the HTTP_PROXY environment variable in a CLI - // process due to the fact that PHP has no reliable mechanism to - // get environment variables that start with "HTTP_". - if (\PHP_SAPI === 'cli' && ($proxy = Utils::getenv('HTTP_PROXY'))) { - $defaults['proxy']['http'] = $proxy; - } - - if ($proxy = Utils::getenv('HTTPS_PROXY')) { - $defaults['proxy']['https'] = $proxy; - } - - if ($noProxy = Utils::getenv('NO_PROXY')) { - $cleanedNoProxy = \str_replace(' ', '', $noProxy); - $defaults['proxy']['no'] = \explode(',', $cleanedNoProxy); - } - - $this->config = $config + $defaults; - - if (!empty($config['cookies']) && $config['cookies'] === true) { - $this->config['cookies'] = new CookieJar(); - } - - // Add the default user-agent header. - if (!isset($this->config['headers'])) { - $this->config['headers'] = ['User-Agent' => Utils::defaultUserAgent()]; - } else { - // Add the User-Agent header if one was not already set. - foreach (\array_keys($this->config['headers']) as $name) { - if (\strtolower($name) === 'user-agent') { - return; - } - } - $this->config['headers']['User-Agent'] = Utils::defaultUserAgent(); - } - } - - /** - * Merges default options into the array. - * - * @param array $options Options to modify by reference - */ - private function prepareDefaults(array $options): array - { - $defaults = $this->config; - - if (!empty($defaults['headers'])) { - // Default headers are only added if they are not present. - $defaults['_conditional'] = $defaults['headers']; - unset($defaults['headers']); - } - - // Special handling for headers is required as they are added as - // conditional headers and as headers passed to a request ctor. - if (\array_key_exists('headers', $options)) { - // Allows default headers to be unset. - if ($options['headers'] === null) { - $defaults['_conditional'] = []; - unset($options['headers']); - } elseif (!\is_array($options['headers'])) { - throw new InvalidArgumentException('headers must be an array'); - } - } - - // Shallow merge defaults underneath options. - $result = $options + $defaults; - - // Remove null values. - foreach ($result as $k => $v) { - if ($v === null) { - unset($result[$k]); - } - } - - return $result; - } - - /** - * Transfers the given request and applies request options. - * - * The URI of the request is not modified and the request options are used - * as-is without merging in default options. - * - * @param array $options See \GuzzleHttp\RequestOptions. - */ - private function transfer(RequestInterface $request, array $options): PromiseInterface - { - $request = $this->applyOptions($request, $options); - /** @var HandlerStack $handler */ - $handler = $options['handler']; - - try { - return P\Create::promiseFor($handler($request, $options)); - } catch (\Exception $e) { - return P\Create::rejectionFor($e); - } - } - - /** - * Applies the array of request options to a request. - */ - private function applyOptions(RequestInterface $request, array &$options): RequestInterface - { - $modify = [ - 'set_headers' => [], - ]; - - if (isset($options['headers'])) { - if (array_keys($options['headers']) === range(0, count($options['headers']) - 1)) { - throw new InvalidArgumentException('The headers array must have header name as keys.'); - } - $modify['set_headers'] = $options['headers']; - unset($options['headers']); - } - - if (isset($options['form_params'])) { - if (isset($options['multipart'])) { - throw new InvalidArgumentException('You cannot use ' - .'form_params and multipart at the same time. Use the ' - .'form_params option if you want to send application/' - .'x-www-form-urlencoded requests, and the multipart ' - .'option to send multipart/form-data requests.'); - } - $options['body'] = \http_build_query($options['form_params'], '', '&'); - unset($options['form_params']); - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); - $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded'; - } - - if (isset($options['multipart'])) { - $options['body'] = new Psr7\MultipartStream($options['multipart']); - unset($options['multipart']); - } - - if (isset($options['json'])) { - $options['body'] = Utils::jsonEncode($options['json']); - unset($options['json']); - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); - $options['_conditional']['Content-Type'] = 'application/json'; - } - - if (!empty($options['decode_content']) - && $options['decode_content'] !== true - ) { - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\Utils::caselessRemove(['Accept-Encoding'], $options['_conditional']); - $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; - } - - if (isset($options['body'])) { - if (\is_array($options['body'])) { - throw $this->invalidBody(); - } - $modify['body'] = Psr7\Utils::streamFor($options['body']); - unset($options['body']); - } - - if (!empty($options['auth']) && \is_array($options['auth'])) { - $value = $options['auth']; - $type = isset($value[2]) ? \strtolower($value[2]) : 'basic'; - switch ($type) { - case 'basic': - // Ensure that we don't have the header in different case and set the new value. - $modify['set_headers'] = Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']); - $modify['set_headers']['Authorization'] = 'Basic ' - .\base64_encode("$value[0]:$value[1]"); - break; - case 'digest': - // @todo: Do not rely on curl - $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_DIGEST; - $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]"; - break; - case 'ntlm': - $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_NTLM; - $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]"; - break; - } - } - - if (isset($options['query'])) { - $value = $options['query']; - if (\is_array($value)) { - $value = \http_build_query($value, '', '&', \PHP_QUERY_RFC3986); - } - if (!\is_string($value)) { - throw new InvalidArgumentException('query must be a string or array'); - } - $modify['query'] = $value; - unset($options['query']); - } - - // Ensure that sink is not an invalid value. - if (isset($options['sink'])) { - // TODO: Add more sink validation? - if (\is_bool($options['sink'])) { - throw new InvalidArgumentException('sink must not be a boolean'); - } - } - - if (isset($options['version'])) { - $modify['version'] = $options['version']; - } - - $request = Psr7\Utils::modifyRequest($request, $modify); - if ($request->getBody() instanceof Psr7\MultipartStream) { - // Use a multipart/form-data POST if a Content-Type is not set. - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); - $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' - .$request->getBody()->getBoundary(); - } - - // Merge in conditional headers if they are not present. - if (isset($options['_conditional'])) { - // Build up the changes so it's in a single clone of the message. - $modify = []; - foreach ($options['_conditional'] as $k => $v) { - if (!$request->hasHeader($k)) { - $modify['set_headers'][$k] = $v; - } - } - $request = Psr7\Utils::modifyRequest($request, $modify); - // Don't pass this internal value along to middleware/handlers. - unset($options['_conditional']); - } - - return $request; - } - - /** - * Return an InvalidArgumentException with pre-set message. - */ - private function invalidBody(): InvalidArgumentException - { - return new InvalidArgumentException('Passing in the "body" request ' - .'option as an array to send a request is not supported. ' - .'Please use the "form_params" request option to send a ' - .'application/x-www-form-urlencoded request, or the "multipart" ' - .'request option to send a multipart/form-data request.'); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php deleted file mode 100644 index 6aaee61a..00000000 --- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php +++ /dev/null @@ -1,84 +0,0 @@ -request('GET', $uri, $options); - } - - /** - * Create and send an HTTP HEAD request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - * - * @throws GuzzleException - */ - public function head($uri, array $options = []): ResponseInterface - { - return $this->request('HEAD', $uri, $options); - } - - /** - * Create and send an HTTP PUT request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - * - * @throws GuzzleException - */ - public function put($uri, array $options = []): ResponseInterface - { - return $this->request('PUT', $uri, $options); - } - - /** - * Create and send an HTTP POST request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - * - * @throws GuzzleException - */ - public function post($uri, array $options = []): ResponseInterface - { - return $this->request('POST', $uri, $options); - } - - /** - * Create and send an HTTP PATCH request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - * - * @throws GuzzleException - */ - public function patch($uri, array $options = []): ResponseInterface - { - return $this->request('PATCH', $uri, $options); - } - - /** - * Create and send an HTTP DELETE request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - * - * @throws GuzzleException - */ - public function delete($uri, array $options = []): ResponseInterface - { - return $this->request('DELETE', $uri, $options); - } - - /** - * Create and send an asynchronous HTTP request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string $method HTTP method - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - */ - abstract public function requestAsync(string $method, $uri, array $options = []): PromiseInterface; - - /** - * Create and send an asynchronous HTTP GET request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - */ - public function getAsync($uri, array $options = []): PromiseInterface - { - return $this->requestAsync('GET', $uri, $options); - } - - /** - * Create and send an asynchronous HTTP HEAD request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - */ - public function headAsync($uri, array $options = []): PromiseInterface - { - return $this->requestAsync('HEAD', $uri, $options); - } - - /** - * Create and send an asynchronous HTTP PUT request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - */ - public function putAsync($uri, array $options = []): PromiseInterface - { - return $this->requestAsync('PUT', $uri, $options); - } - - /** - * Create and send an asynchronous HTTP POST request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - */ - public function postAsync($uri, array $options = []): PromiseInterface - { - return $this->requestAsync('POST', $uri, $options); - } - - /** - * Create and send an asynchronous HTTP PATCH request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - */ - public function patchAsync($uri, array $options = []): PromiseInterface - { - return $this->requestAsync('PATCH', $uri, $options); - } - - /** - * Create and send an asynchronous HTTP DELETE request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. - */ - public function deleteAsync($uri, array $options = []): PromiseInterface - { - return $this->requestAsync('DELETE', $uri, $options); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php deleted file mode 100644 index b616cf2e..00000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php +++ /dev/null @@ -1,307 +0,0 @@ -strictMode = $strictMode; - - foreach ($cookieArray as $cookie) { - if (!($cookie instanceof SetCookie)) { - $cookie = new SetCookie($cookie); - } - $this->setCookie($cookie); - } - } - - /** - * Create a new Cookie jar from an associative array and domain. - * - * @param array $cookies Cookies to create the jar from - * @param string $domain Domain to set the cookies to - */ - public static function fromArray(array $cookies, string $domain): self - { - $cookieJar = new self(); - foreach ($cookies as $name => $value) { - $cookieJar->setCookie(new SetCookie([ - 'Domain' => $domain, - 'Name' => $name, - 'Value' => $value, - 'Discard' => true, - ])); - } - - return $cookieJar; - } - - /** - * Evaluate if this cookie should be persisted to storage - * that survives between requests. - * - * @param SetCookie $cookie Being evaluated. - * @param bool $allowSessionCookies If we should persist session cookies - */ - public static function shouldPersist(SetCookie $cookie, bool $allowSessionCookies = false): bool - { - if ($cookie->getExpires() || $allowSessionCookies) { - if (!$cookie->getDiscard()) { - return true; - } - } - - return false; - } - - /** - * Finds and returns the cookie based on the name - * - * @param string $name cookie name to search for - * - * @return SetCookie|null cookie that was found or null if not found - */ - public function getCookieByName(string $name): ?SetCookie - { - foreach ($this->cookies as $cookie) { - if ($cookie->getName() !== null && \strcasecmp($cookie->getName(), $name) === 0) { - return $cookie; - } - } - - return null; - } - - public function toArray(): array - { - return \array_map(static function (SetCookie $cookie): array { - return $cookie->toArray(); - }, $this->getIterator()->getArrayCopy()); - } - - public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void - { - if (!$domain) { - $this->cookies = []; - - return; - } elseif (!$path) { - $this->cookies = \array_filter( - $this->cookies, - static function (SetCookie $cookie) use ($domain): bool { - return !$cookie->matchesDomain($domain); - } - ); - } elseif (!$name) { - $this->cookies = \array_filter( - $this->cookies, - static function (SetCookie $cookie) use ($path, $domain): bool { - return !($cookie->matchesPath($path) - && $cookie->matchesDomain($domain)); - } - ); - } else { - $this->cookies = \array_filter( - $this->cookies, - static function (SetCookie $cookie) use ($path, $domain, $name) { - return !($cookie->getName() == $name - && $cookie->matchesPath($path) - && $cookie->matchesDomain($domain)); - } - ); - } - } - - public function clearSessionCookies(): void - { - $this->cookies = \array_filter( - $this->cookies, - static function (SetCookie $cookie): bool { - return !$cookie->getDiscard() && $cookie->getExpires(); - } - ); - } - - public function setCookie(SetCookie $cookie): bool - { - // If the name string is empty (but not 0), ignore the set-cookie - // string entirely. - $name = $cookie->getName(); - if (!$name && $name !== '0') { - return false; - } - - // Only allow cookies with set and valid domain, name, value - $result = $cookie->validate(); - if ($result !== true) { - if ($this->strictMode) { - throw new \RuntimeException('Invalid cookie: '.$result); - } - $this->removeCookieIfEmpty($cookie); - - return false; - } - - // Resolve conflicts with previously set cookies - foreach ($this->cookies as $i => $c) { - // Two cookies are identical, when their path, and domain are - // identical. - if ($c->getPath() != $cookie->getPath() - || $c->getDomain() != $cookie->getDomain() - || $c->getName() != $cookie->getName() - ) { - continue; - } - - // The previously set cookie is a discard cookie and this one is - // not so allow the new cookie to be set - if (!$cookie->getDiscard() && $c->getDiscard()) { - unset($this->cookies[$i]); - continue; - } - - // If the new cookie's expiration is further into the future, then - // replace the old cookie - if ($cookie->getExpires() > $c->getExpires()) { - unset($this->cookies[$i]); - continue; - } - - // If the value has changed, we better change it - if ($cookie->getValue() !== $c->getValue()) { - unset($this->cookies[$i]); - continue; - } - - // The cookie exists, so no need to continue - return false; - } - - $this->cookies[] = $cookie; - - return true; - } - - public function count(): int - { - return \count($this->cookies); - } - - /** - * @return \ArrayIterator - */ - public function getIterator(): \ArrayIterator - { - return new \ArrayIterator(\array_values($this->cookies)); - } - - public function extractCookies(RequestInterface $request, ResponseInterface $response): void - { - if ($cookieHeader = $response->getHeader('Set-Cookie')) { - foreach ($cookieHeader as $cookie) { - $sc = SetCookie::fromString($cookie); - if (!$sc->getDomain()) { - $sc->setDomain($request->getUri()->getHost()); - } - if (0 !== \strpos($sc->getPath(), '/')) { - $sc->setPath($this->getCookiePathFromRequest($request)); - } - if (!$sc->matchesDomain($request->getUri()->getHost())) { - continue; - } - // Note: At this point `$sc->getDomain()` being a public suffix should - // be rejected, but we don't want to pull in the full PSL dependency. - $this->setCookie($sc); - } - } - } - - /** - * Computes cookie path following RFC 6265 section 5.1.4 - * - * @see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.4 - */ - private function getCookiePathFromRequest(RequestInterface $request): string - { - $uriPath = $request->getUri()->getPath(); - if ('' === $uriPath) { - return '/'; - } - if (0 !== \strpos($uriPath, '/')) { - return '/'; - } - if ('/' === $uriPath) { - return '/'; - } - $lastSlashPos = \strrpos($uriPath, '/'); - if (0 === $lastSlashPos || false === $lastSlashPos) { - return '/'; - } - - return \substr($uriPath, 0, $lastSlashPos); - } - - public function withCookieHeader(RequestInterface $request): RequestInterface - { - $values = []; - $uri = $request->getUri(); - $scheme = $uri->getScheme(); - $host = $uri->getHost(); - $path = $uri->getPath() ?: '/'; - - foreach ($this->cookies as $cookie) { - if ($cookie->matchesPath($path) - && $cookie->matchesDomain($host) - && !$cookie->isExpired() - && (!$cookie->getSecure() || $scheme === 'https') - ) { - $values[] = $cookie->getName().'=' - .$cookie->getValue(); - } - } - - return $values - ? $request->withHeader('Cookie', \implode('; ', $values)) - : $request; - } - - /** - * If a cookie already exists and the server asks to set it again with a - * null value, the cookie must be deleted. - */ - private function removeCookieIfEmpty(SetCookie $cookie): void - { - $cookieValue = $cookie->getValue(); - if ($cookieValue === null || $cookieValue === '') { - $this->clear( - $cookie->getDomain(), - $cookie->getPath(), - $cookie->getName() - ); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php deleted file mode 100644 index 93ada58d..00000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +++ /dev/null @@ -1,80 +0,0 @@ - - */ -interface CookieJarInterface extends \Countable, \IteratorAggregate -{ - /** - * Create a request with added cookie headers. - * - * If no matching cookies are found in the cookie jar, then no Cookie - * header is added to the request and the same request is returned. - * - * @param RequestInterface $request Request object to modify. - * - * @return RequestInterface returns the modified request. - */ - public function withCookieHeader(RequestInterface $request): RequestInterface; - - /** - * Extract cookies from an HTTP response and store them in the CookieJar. - * - * @param RequestInterface $request Request that was sent - * @param ResponseInterface $response Response that was received - */ - public function extractCookies(RequestInterface $request, ResponseInterface $response): void; - - /** - * Sets a cookie in the cookie jar. - * - * @param SetCookie $cookie Cookie to set. - * - * @return bool Returns true on success or false on failure - */ - public function setCookie(SetCookie $cookie): bool; - - /** - * Remove cookies currently held in the cookie jar. - * - * Invoking this method without arguments will empty the whole cookie jar. - * If given a $domain argument only cookies belonging to that domain will - * be removed. If given a $domain and $path argument, cookies belonging to - * the specified path within that domain are removed. If given all three - * arguments, then the cookie with the specified name, path and domain is - * removed. - * - * @param string|null $domain Clears cookies matching a domain - * @param string|null $path Clears cookies matching a domain and path - * @param string|null $name Clears cookies matching a domain, path, and name - */ - public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void; - - /** - * Discard all sessions cookies. - * - * Removes cookies that don't have an expire field or a have a discard - * field set to true. To be called when the user agent shuts down according - * to RFC 2965. - */ - public function clearSessionCookies(): void; - - /** - * Converts the cookie jar to an array. - */ - public function toArray(): array; -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php deleted file mode 100644 index 290236d5..00000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php +++ /dev/null @@ -1,101 +0,0 @@ -filename = $cookieFile; - $this->storeSessionCookies = $storeSessionCookies; - - if (\file_exists($cookieFile)) { - $this->load($cookieFile); - } - } - - /** - * Saves the file when shutting down - */ - public function __destruct() - { - $this->save($this->filename); - } - - /** - * Saves the cookies to a file. - * - * @param string $filename File to save - * - * @throws \RuntimeException if the file cannot be found or created - */ - public function save(string $filename): void - { - $json = []; - /** @var SetCookie $cookie */ - foreach ($this as $cookie) { - if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { - $json[] = $cookie->toArray(); - } - } - - $jsonStr = Utils::jsonEncode($json); - if (false === \file_put_contents($filename, $jsonStr, \LOCK_EX)) { - throw new \RuntimeException("Unable to save file {$filename}"); - } - } - - /** - * Load cookies from a JSON formatted file. - * - * Old cookies are kept unless overwritten by newly loaded ones. - * - * @param string $filename Cookie file to load. - * - * @throws \RuntimeException if the file cannot be loaded. - */ - public function load(string $filename): void - { - $json = \file_get_contents($filename); - if (false === $json) { - throw new \RuntimeException("Unable to load file {$filename}"); - } - if ($json === '') { - return; - } - - $data = Utils::jsonDecode($json, true); - if (\is_array($data)) { - foreach ($data as $cookie) { - $this->setCookie(new SetCookie($cookie)); - } - } elseif (\is_scalar($data) && !empty($data)) { - throw new \RuntimeException("Invalid cookie file: {$filename}"); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php deleted file mode 100644 index cb3e67c6..00000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php +++ /dev/null @@ -1,77 +0,0 @@ -sessionKey = $sessionKey; - $this->storeSessionCookies = $storeSessionCookies; - $this->load(); - } - - /** - * Saves cookies to session when shutting down - */ - public function __destruct() - { - $this->save(); - } - - /** - * Save cookies to the client session - */ - public function save(): void - { - $json = []; - /** @var SetCookie $cookie */ - foreach ($this as $cookie) { - if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { - $json[] = $cookie->toArray(); - } - } - - $_SESSION[$this->sessionKey] = \json_encode($json); - } - - /** - * Load the contents of the client session into the data array - */ - protected function load(): void - { - if (!isset($_SESSION[$this->sessionKey])) { - return; - } - $data = \json_decode($_SESSION[$this->sessionKey], true); - if (\is_array($data)) { - foreach ($data as $cookie) { - $this->setCookie(new SetCookie($cookie)); - } - } elseif (\strlen($data)) { - throw new \RuntimeException('Invalid cookie data'); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php deleted file mode 100644 index 47c4d10a..00000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php +++ /dev/null @@ -1,492 +0,0 @@ - null, - 'Value' => null, - 'Domain' => null, - 'Path' => '/', - 'Max-Age' => null, - 'Expires' => null, - 'Secure' => false, - 'Discard' => false, - 'HttpOnly' => false, - ]; - - /** - * @var array Cookie data - */ - private $data; - - /** - * Create a new SetCookie object from a string. - * - * @param string $cookie Set-Cookie header string - */ - public static function fromString(string $cookie): self - { - // Create the default return array - $data = self::$defaults; - // Explode the cookie string using a series of semicolons - $pieces = \array_filter(\array_map('trim', \explode(';', $cookie))); - // The name of the cookie (first kvp) must exist and include an equal sign. - if (!isset($pieces[0]) || \strpos($pieces[0], '=') === false) { - return new self($data); - } - - // Add the cookie pieces into the parsed data array - foreach ($pieces as $part) { - $cookieParts = \explode('=', $part, 2); - $key = \trim($cookieParts[0]); - $value = isset($cookieParts[1]) - ? \trim($cookieParts[1], " \n\r\t\0\x0B") - : true; - - // Only check for non-cookies when cookies have been found - if (!isset($data['Name'])) { - $data['Name'] = $key; - $data['Value'] = $value; - } else { - foreach (\array_keys(self::$defaults) as $search) { - if (!\strcasecmp($search, $key)) { - if ($search === 'Max-Age') { - if (is_numeric($value)) { - $data[$search] = (int) $value; - } - } elseif ($search === 'Secure' || $search === 'Discard' || $search === 'HttpOnly') { - if ($value) { - $data[$search] = true; - } - } else { - $data[$search] = $value; - } - continue 2; - } - } - $data[$key] = $value; - } - } - - return new self($data); - } - - /** - * @param array $data Array of cookie data provided by a Cookie parser - */ - public function __construct(array $data = []) - { - $this->data = self::$defaults; - - if (isset($data['Name'])) { - $this->setName($data['Name']); - } - - if (isset($data['Value'])) { - $this->setValue($data['Value']); - } - - if (isset($data['Domain'])) { - $this->setDomain($data['Domain']); - } - - if (isset($data['Path'])) { - $this->setPath($data['Path']); - } - - if (isset($data['Max-Age'])) { - $this->setMaxAge($data['Max-Age']); - } - - if (isset($data['Expires'])) { - $this->setExpires($data['Expires']); - } - - if (isset($data['Secure'])) { - $this->setSecure($data['Secure']); - } - - if (isset($data['Discard'])) { - $this->setDiscard($data['Discard']); - } - - if (isset($data['HttpOnly'])) { - $this->setHttpOnly($data['HttpOnly']); - } - - // Set the remaining values that don't have extra validation logic - foreach (array_diff(array_keys($data), array_keys(self::$defaults)) as $key) { - $this->data[$key] = $data[$key]; - } - - // Extract the Expires value and turn it into a UNIX timestamp if needed - if (!$this->getExpires() && $this->getMaxAge()) { - // Calculate the Expires date - $this->setExpires(\time() + $this->getMaxAge()); - } elseif (null !== ($expires = $this->getExpires()) && !\is_numeric($expires)) { - $this->setExpires($expires); - } - } - - public function __toString() - { - $str = $this->data['Name'].'='.($this->data['Value'] ?? '').'; '; - foreach ($this->data as $k => $v) { - if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) { - if ($k === 'Expires') { - $str .= 'Expires='.\gmdate('D, d M Y H:i:s \G\M\T', $v).'; '; - } else { - $str .= ($v === true ? $k : "{$k}={$v}").'; '; - } - } - } - - return \rtrim($str, '; '); - } - - public function toArray(): array - { - return $this->data; - } - - /** - * Get the cookie name. - * - * @return string - */ - public function getName() - { - return $this->data['Name']; - } - - /** - * Set the cookie name. - * - * @param string $name Cookie name - */ - public function setName($name): void - { - if (!is_string($name)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Name'] = (string) $name; - } - - /** - * Get the cookie value. - * - * @return string|null - */ - public function getValue() - { - return $this->data['Value']; - } - - /** - * Set the cookie value. - * - * @param string $value Cookie value - */ - public function setValue($value): void - { - if (!is_string($value)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Value'] = (string) $value; - } - - /** - * Get the domain. - * - * @return string|null - */ - public function getDomain() - { - return $this->data['Domain']; - } - - /** - * Set the domain of the cookie. - * - * @param string|null $domain - */ - public function setDomain($domain): void - { - if (!is_string($domain) && null !== $domain) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Domain'] = null === $domain ? null : (string) $domain; - } - - /** - * Get the path. - * - * @return string - */ - public function getPath() - { - return $this->data['Path']; - } - - /** - * Set the path of the cookie. - * - * @param string $path Path of the cookie - */ - public function setPath($path): void - { - if (!is_string($path)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Path'] = (string) $path; - } - - /** - * Maximum lifetime of the cookie in seconds. - * - * @return int|null - */ - public function getMaxAge() - { - return null === $this->data['Max-Age'] ? null : (int) $this->data['Max-Age']; - } - - /** - * Set the max-age of the cookie. - * - * @param int|null $maxAge Max age of the cookie in seconds - */ - public function setMaxAge($maxAge): void - { - if (!is_int($maxAge) && null !== $maxAge) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Max-Age'] = $maxAge === null ? null : (int) $maxAge; - } - - /** - * The UNIX timestamp when the cookie Expires. - * - * @return string|int|null - */ - public function getExpires() - { - return $this->data['Expires']; - } - - /** - * Set the unix timestamp for which the cookie will expire. - * - * @param int|string|null $timestamp Unix timestamp or any English textual datetime description. - */ - public function setExpires($timestamp): void - { - if (!is_int($timestamp) && !is_string($timestamp) && null !== $timestamp) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int, string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Expires'] = null === $timestamp ? null : (\is_numeric($timestamp) ? (int) $timestamp : \strtotime((string) $timestamp)); - } - - /** - * Get whether or not this is a secure cookie. - * - * @return bool - */ - public function getSecure() - { - return $this->data['Secure']; - } - - /** - * Set whether or not the cookie is secure. - * - * @param bool $secure Set to true or false if secure - */ - public function setSecure($secure): void - { - if (!is_bool($secure)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Secure'] = (bool) $secure; - } - - /** - * Get whether or not this is a session cookie. - * - * @return bool|null - */ - public function getDiscard() - { - return $this->data['Discard']; - } - - /** - * Set whether or not this is a session cookie. - * - * @param bool $discard Set to true or false if this is a session cookie - */ - public function setDiscard($discard): void - { - if (!is_bool($discard)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['Discard'] = (bool) $discard; - } - - /** - * Get whether or not this is an HTTP only cookie. - * - * @return bool - */ - public function getHttpOnly() - { - return $this->data['HttpOnly']; - } - - /** - * Set whether or not this is an HTTP only cookie. - * - * @param bool $httpOnly Set to true or false if this is HTTP only - */ - public function setHttpOnly($httpOnly): void - { - if (!is_bool($httpOnly)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->data['HttpOnly'] = (bool) $httpOnly; - } - - /** - * Check if the cookie matches a path value. - * - * A request-path path-matches a given cookie-path if at least one of - * the following conditions holds: - * - * - The cookie-path and the request-path are identical. - * - The cookie-path is a prefix of the request-path, and the last - * character of the cookie-path is %x2F ("/"). - * - The cookie-path is a prefix of the request-path, and the first - * character of the request-path that is not included in the cookie- - * path is a %x2F ("/") character. - * - * @param string $requestPath Path to check against - */ - public function matchesPath(string $requestPath): bool - { - $cookiePath = $this->getPath(); - - // Match on exact matches or when path is the default empty "/" - if ($cookiePath === '/' || $cookiePath == $requestPath) { - return true; - } - - // Ensure that the cookie-path is a prefix of the request path. - if (0 !== \strpos($requestPath, $cookiePath)) { - return false; - } - - // Match if the last character of the cookie-path is "/" - if (\substr($cookiePath, -1, 1) === '/') { - return true; - } - - // Match if the first character not included in cookie path is "/" - return \substr($requestPath, \strlen($cookiePath), 1) === '/'; - } - - /** - * Check if the cookie matches a domain value. - * - * @param string $domain Domain to check against - */ - public function matchesDomain(string $domain): bool - { - $cookieDomain = $this->getDomain(); - if (null === $cookieDomain) { - return true; - } - - // Remove the leading '.' as per spec in RFC 6265. - // https://datatracker.ietf.org/doc/html/rfc6265#section-5.2.3 - $cookieDomain = \ltrim(\strtolower($cookieDomain), '.'); - - $domain = \strtolower($domain); - - // Domain not set or exact match. - if ('' === $cookieDomain || $domain === $cookieDomain) { - return true; - } - - // Matching the subdomain according to RFC 6265. - // https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.3 - if (\filter_var($domain, \FILTER_VALIDATE_IP)) { - return false; - } - - return (bool) \preg_match('/\.'.\preg_quote($cookieDomain, '/').'$/', $domain); - } - - /** - * Check if the cookie is expired. - */ - public function isExpired(): bool - { - return $this->getExpires() !== null && \time() > $this->getExpires(); - } - - /** - * Check if the cookie is valid according to RFC 6265. - * - * @return bool|string Returns true if valid or an error message if invalid - */ - public function validate() - { - $name = $this->getName(); - if ($name === '') { - return 'The cookie name must not be empty'; - } - - // Check if any of the invalid characters are present in the cookie name - if (\preg_match( - '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/', - $name - )) { - return 'Cookie name must not contain invalid characters: ASCII ' - .'Control characters (0-31;127), space, tab and the ' - .'following characters: ()<>@,;:\"/?={}'; - } - - // Value must not be null. 0 and empty string are valid. Empty strings - // are technically against RFC 6265, but known to happen in the wild. - $value = $this->getValue(); - if ($value === null) { - return 'The cookie value must not be empty'; - } - - // Domains must not be empty, but can be 0. "0" is not a valid internet - // domain, but may be used as server name in a private network. - $domain = $this->getDomain(); - if ($domain === null || $domain === '') { - return 'The cookie domain must not be empty'; - } - - return true; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php deleted file mode 100644 index ba67ad49..00000000 --- a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php +++ /dev/null @@ -1,39 +0,0 @@ -request = $request; - $this->handlerContext = $handlerContext; - } - - /** - * Get the request that caused the exception - */ - public function getRequest(): RequestInterface - { - return $this->request; - } - - /** - * Get contextual information about the error from the underlying handler. - * - * The contents of this array will vary depending on which handler you are - * using. It may also be just an empty array. Relying on this data will - * couple you to a specific handler, but can give more debug information - * when needed. - */ - public function getHandlerContext(): array - { - return $this->handlerContext; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php deleted file mode 100644 index fa3ed699..00000000 --- a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php +++ /dev/null @@ -1,9 +0,0 @@ -getStatusCode() : 0; - parent::__construct($message, $code, $previous); - $this->request = $request; - $this->response = $response; - $this->handlerContext = $handlerContext; - } - - /** - * Wrap non-RequestExceptions with a RequestException - */ - public static function wrapException(RequestInterface $request, \Throwable $e): RequestException - { - return $e instanceof RequestException ? $e : new RequestException($e->getMessage(), $request, null, $e); - } - - /** - * Factory method to create a new exception with a normalized error message - * - * @param RequestInterface $request Request sent - * @param ResponseInterface $response Response received - * @param \Throwable|null $previous Previous exception - * @param array $handlerContext Optional handler context - * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer - */ - public static function create( - RequestInterface $request, - ?ResponseInterface $response = null, - ?\Throwable $previous = null, - array $handlerContext = [], - ?BodySummarizerInterface $bodySummarizer = null - ): self { - if (!$response) { - return new self( - 'Error completing request', - $request, - null, - $previous, - $handlerContext - ); - } - - $level = (int) \floor($response->getStatusCode() / 100); - if ($level === 4) { - $label = 'Client error'; - $className = ClientException::class; - } elseif ($level === 5) { - $label = 'Server error'; - $className = ServerException::class; - } else { - $label = 'Unsuccessful request'; - $className = __CLASS__; - } - - $uri = \GuzzleHttp\Psr7\Utils::redactUserInfo($request->getUri()); - - // Client Error: `GET /` resulted in a `404 Not Found` response: - // ... (truncated) - $message = \sprintf( - '%s: `%s %s` resulted in a `%s %s` response', - $label, - $request->getMethod(), - $uri->__toString(), - $response->getStatusCode(), - $response->getReasonPhrase() - ); - - $summary = ($bodySummarizer ?? new BodySummarizer())->summarize($response); - - if ($summary !== null) { - $message .= ":\n{$summary}\n"; - } - - return new $className($message, $request, $response, $previous, $handlerContext); - } - - /** - * Get the request that caused the exception - */ - public function getRequest(): RequestInterface - { - return $this->request; - } - - /** - * Get the associated response - */ - public function getResponse(): ?ResponseInterface - { - return $this->response; - } - - /** - * Check if a response was received - */ - public function hasResponse(): bool - { - return $this->response !== null; - } - - /** - * Get contextual information about the error from the underlying handler. - * - * The contents of this array will vary depending on which handler you are - * using. It may also be just an empty array. Relying on this data will - * couple you to a specific handler, but can give more debug information - * when needed. - */ - public function getHandlerContext(): array - { - return $this->handlerContext; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php deleted file mode 100644 index 8055e067..00000000 --- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php +++ /dev/null @@ -1,10 +0,0 @@ -maxHandles = $maxHandles; - } - - public function create(RequestInterface $request, array $options): EasyHandle - { - $protocolVersion = $request->getProtocolVersion(); - - if ('2' === $protocolVersion || '2.0' === $protocolVersion) { - if (!self::supportsHttp2()) { - throw new ConnectException('HTTP/2 is supported by the cURL handler, however libcurl is built without HTTP/2 support.', $request); - } - } elseif ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) { - throw new ConnectException(sprintf('HTTP/%s is not supported by the cURL handler.', $protocolVersion), $request); - } - - if (isset($options['curl']['body_as_string'])) { - $options['_body_as_string'] = $options['curl']['body_as_string']; - unset($options['curl']['body_as_string']); - } - - $easy = new EasyHandle(); - $easy->request = $request; - $easy->options = $options; - $conf = $this->getDefaultConf($easy); - $this->applyMethod($easy, $conf); - $this->applyHandlerOptions($easy, $conf); - $this->applyHeaders($easy, $conf); - unset($conf['_headers']); - - // Add handler options from the request configuration options - if (isset($options['curl'])) { - $conf = \array_replace($conf, $options['curl']); - } - - $conf[\CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy); - $easy->handle = $this->handles ? \array_pop($this->handles) : \curl_init(); - curl_setopt_array($easy->handle, $conf); - - return $easy; - } - - private static function supportsHttp2(): bool - { - static $supportsHttp2 = null; - - if (null === $supportsHttp2) { - $supportsHttp2 = self::supportsTls12() - && defined('CURL_VERSION_HTTP2') - && (\CURL_VERSION_HTTP2 & \curl_version()['features']); - } - - return $supportsHttp2; - } - - private static function supportsTls12(): bool - { - static $supportsTls12 = null; - - if (null === $supportsTls12) { - $supportsTls12 = \CURL_SSLVERSION_TLSv1_2 & \curl_version()['features']; - } - - return $supportsTls12; - } - - private static function supportsTls13(): bool - { - static $supportsTls13 = null; - - if (null === $supportsTls13) { - $supportsTls13 = defined('CURL_SSLVERSION_TLSv1_3') - && (\CURL_SSLVERSION_TLSv1_3 & \curl_version()['features']); - } - - return $supportsTls13; - } - - public function release(EasyHandle $easy): void - { - $resource = $easy->handle; - unset($easy->handle); - - if (\count($this->handles) >= $this->maxHandles) { - if (PHP_VERSION_ID < 80000) { - \curl_close($resource); - } - } else { - // Remove all callback functions as they can hold onto references - // and are not cleaned up by curl_reset. Using curl_setopt_array - // does not work for some reason, so removing each one - // individually. - \curl_setopt($resource, \CURLOPT_HEADERFUNCTION, null); - \curl_setopt($resource, \CURLOPT_READFUNCTION, null); - \curl_setopt($resource, \CURLOPT_WRITEFUNCTION, null); - \curl_setopt($resource, \CURLOPT_PROGRESSFUNCTION, null); - \curl_reset($resource); - $this->handles[] = $resource; - } - } - - /** - * Completes a cURL transaction, either returning a response promise or a - * rejected promise. - * - * @param callable(RequestInterface, array): PromiseInterface $handler - * @param CurlFactoryInterface $factory Dictates how the handle is released - */ - public static function finish(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface - { - if (isset($easy->options['on_stats'])) { - self::invokeStats($easy); - } - - if (!$easy->response || $easy->errno) { - return self::finishError($handler, $easy, $factory); - } - - // Return the response if it is present and there is no error. - $factory->release($easy); - - // Rewind the body of the response if possible. - $body = $easy->response->getBody(); - if ($body->isSeekable()) { - $body->rewind(); - } - - return new FulfilledPromise($easy->response); - } - - private static function invokeStats(EasyHandle $easy): void - { - $curlStats = \curl_getinfo($easy->handle); - $curlStats['appconnect_time'] = \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME); - $stats = new TransferStats( - $easy->request, - $easy->response, - $curlStats['total_time'], - $easy->errno, - $curlStats - ); - ($easy->options['on_stats'])($stats); - } - - /** - * @param callable(RequestInterface, array): PromiseInterface $handler - */ - private static function finishError(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface - { - // Get error information and release the handle to the factory. - $ctx = [ - 'errno' => $easy->errno, - 'error' => \curl_error($easy->handle), - 'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME), - ] + \curl_getinfo($easy->handle); - $ctx[self::CURL_VERSION_STR] = self::getCurlVersion(); - $factory->release($easy); - - // Retry when nothing is present or when curl failed to rewind. - if (empty($easy->options['_err_message']) && (!$easy->errno || $easy->errno == 65)) { - return self::retryFailedRewind($handler, $easy, $ctx); - } - - return self::createRejection($easy, $ctx); - } - - private static function getCurlVersion(): string - { - static $curlVersion = null; - - if (null === $curlVersion) { - $curlVersion = \curl_version()['version']; - } - - return $curlVersion; - } - - private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface - { - static $connectionErrors = [ - \CURLE_OPERATION_TIMEOUTED => true, - \CURLE_COULDNT_RESOLVE_HOST => true, - \CURLE_COULDNT_CONNECT => true, - \CURLE_SSL_CONNECT_ERROR => true, - \CURLE_GOT_NOTHING => true, - ]; - - if ($easy->createResponseException) { - return P\Create::rejectionFor( - new RequestException( - 'An error was encountered while creating the response', - $easy->request, - $easy->response, - $easy->createResponseException, - $ctx - ) - ); - } - - // If an exception was encountered during the onHeaders event, then - // return a rejected promise that wraps that exception. - if ($easy->onHeadersException) { - return P\Create::rejectionFor( - new RequestException( - 'An error was encountered during the on_headers event', - $easy->request, - $easy->response, - $easy->onHeadersException, - $ctx - ) - ); - } - - $uri = $easy->request->getUri(); - - $sanitizedError = self::sanitizeCurlError($ctx['error'] ?? '', $uri); - - $message = \sprintf( - 'cURL error %s: %s (%s)', - $ctx['errno'], - $sanitizedError, - 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html' - ); - - if ('' !== $sanitizedError) { - $redactedUriString = \GuzzleHttp\Psr7\Utils::redactUserInfo($uri)->__toString(); - if ($redactedUriString !== '' && false === \strpos($sanitizedError, $redactedUriString)) { - $message .= \sprintf(' for %s', $redactedUriString); - } - } - - // Create a connection exception if it was a specific error code. - $error = isset($connectionErrors[$easy->errno]) - ? new ConnectException($message, $easy->request, null, $ctx) - : new RequestException($message, $easy->request, $easy->response, null, $ctx); - - return P\Create::rejectionFor($error); - } - - private static function sanitizeCurlError(string $error, UriInterface $uri): string - { - if ('' === $error) { - return $error; - } - - $baseUri = $uri->withQuery('')->withFragment(''); - $baseUriString = $baseUri->__toString(); - - if ('' === $baseUriString) { - return $error; - } - - $redactedUriString = \GuzzleHttp\Psr7\Utils::redactUserInfo($baseUri)->__toString(); - - return str_replace($baseUriString, $redactedUriString, $error); - } - - /** - * @return array - */ - private function getDefaultConf(EasyHandle $easy): array - { - $conf = [ - '_headers' => $easy->request->getHeaders(), - \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), - \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), - \CURLOPT_RETURNTRANSFER => false, - \CURLOPT_HEADER => false, - \CURLOPT_CONNECTTIMEOUT => 300, - ]; - - if (\defined('CURLOPT_PROTOCOLS')) { - $conf[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS; - } - - $version = $easy->request->getProtocolVersion(); - - if ('2' === $version || '2.0' === $version) { - $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0; - } elseif ('1.1' === $version) { - $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1; - } else { - $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0; - } - - return $conf; - } - - private function applyMethod(EasyHandle $easy, array &$conf): void - { - $body = $easy->request->getBody(); - $size = $body->getSize(); - - if ($size === null || $size > 0) { - $this->applyBody($easy->request, $easy->options, $conf); - - return; - } - - $method = $easy->request->getMethod(); - if ($method === 'PUT' || $method === 'POST') { - // See https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2 - if (!$easy->request->hasHeader('Content-Length')) { - $conf[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0'; - } - } elseif ($method === 'HEAD') { - $conf[\CURLOPT_NOBODY] = true; - unset( - $conf[\CURLOPT_WRITEFUNCTION], - $conf[\CURLOPT_READFUNCTION], - $conf[\CURLOPT_FILE], - $conf[\CURLOPT_INFILE] - ); - } - } - - private function applyBody(RequestInterface $request, array $options, array &$conf): void - { - $size = $request->hasHeader('Content-Length') - ? (int) $request->getHeaderLine('Content-Length') - : null; - - // Send the body as a string if the size is less than 1MB OR if the - // [curl][body_as_string] request value is set. - if (($size !== null && $size < 1000000) || !empty($options['_body_as_string'])) { - $conf[\CURLOPT_POSTFIELDS] = (string) $request->getBody(); - // Don't duplicate the Content-Length header - $this->removeHeader('Content-Length', $conf); - $this->removeHeader('Transfer-Encoding', $conf); - } else { - $conf[\CURLOPT_UPLOAD] = true; - if ($size !== null) { - $conf[\CURLOPT_INFILESIZE] = $size; - $this->removeHeader('Content-Length', $conf); - } - $body = $request->getBody(); - if ($body->isSeekable()) { - $body->rewind(); - } - $conf[\CURLOPT_READFUNCTION] = static function ($ch, $fd, $length) use ($body) { - return $body->read($length); - }; - } - - // If the Expect header is not present, prevent curl from adding it - if (!$request->hasHeader('Expect')) { - $conf[\CURLOPT_HTTPHEADER][] = 'Expect:'; - } - - // cURL sometimes adds a content-type by default. Prevent this. - if (!$request->hasHeader('Content-Type')) { - $conf[\CURLOPT_HTTPHEADER][] = 'Content-Type:'; - } - } - - private function applyHeaders(EasyHandle $easy, array &$conf): void - { - foreach ($conf['_headers'] as $name => $values) { - foreach ($values as $value) { - $value = (string) $value; - if ($value === '') { - // cURL requires a special format for empty headers. - // See https://github.com/guzzle/guzzle/issues/1882 for more details. - $conf[\CURLOPT_HTTPHEADER][] = "$name;"; - } else { - $conf[\CURLOPT_HTTPHEADER][] = "$name: $value"; - } - } - } - - // Remove the Accept header if one was not set - if (!$easy->request->hasHeader('Accept')) { - $conf[\CURLOPT_HTTPHEADER][] = 'Accept:'; - } - } - - /** - * Remove a header from the options array. - * - * @param string $name Case-insensitive header to remove - * @param array $options Array of options to modify - */ - private function removeHeader(string $name, array &$options): void - { - foreach (\array_keys($options['_headers']) as $key) { - if (!\strcasecmp($key, $name)) { - unset($options['_headers'][$key]); - - return; - } - } - } - - private function applyHandlerOptions(EasyHandle $easy, array &$conf): void - { - $options = $easy->options; - if (isset($options['verify'])) { - if ($options['verify'] === false) { - unset($conf[\CURLOPT_CAINFO]); - $conf[\CURLOPT_SSL_VERIFYHOST] = 0; - $conf[\CURLOPT_SSL_VERIFYPEER] = false; - } else { - $conf[\CURLOPT_SSL_VERIFYHOST] = 2; - $conf[\CURLOPT_SSL_VERIFYPEER] = true; - if (\is_string($options['verify'])) { - // Throw an error if the file/folder/link path is not valid or doesn't exist. - if (!\file_exists($options['verify'])) { - throw new \InvalidArgumentException("SSL CA bundle not found: {$options['verify']}"); - } - // If it's a directory or a link to a directory use CURLOPT_CAPATH. - // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO. - if ( - \is_dir($options['verify']) - || ( - \is_link($options['verify']) === true - && ($verifyLink = \readlink($options['verify'])) !== false - && \is_dir($verifyLink) - ) - ) { - $conf[\CURLOPT_CAPATH] = $options['verify']; - } else { - $conf[\CURLOPT_CAINFO] = $options['verify']; - } - } - } - } - - if (!isset($options['curl'][\CURLOPT_ENCODING]) && !empty($options['decode_content'])) { - $accept = $easy->request->getHeaderLine('Accept-Encoding'); - if ($accept) { - $conf[\CURLOPT_ENCODING] = $accept; - } else { - // The empty string enables all available decoders and implicitly - // sets a matching 'Accept-Encoding' header. - $conf[\CURLOPT_ENCODING] = ''; - // But as the user did not specify any encoding preference, - // let's leave it up to server by preventing curl from sending - // the header, which will be interpreted as 'Accept-Encoding: *'. - // https://www.rfc-editor.org/rfc/rfc9110#field.accept-encoding - $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; - } - } - - if (!isset($options['sink'])) { - // Use a default temp stream if no sink was set. - $options['sink'] = \GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'w+'); - } - $sink = $options['sink']; - if (!\is_string($sink)) { - $sink = \GuzzleHttp\Psr7\Utils::streamFor($sink); - } elseif (!\is_dir(\dirname($sink))) { - // Ensure that the directory exists before failing in curl. - throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink)); - } else { - $sink = new LazyOpenStream($sink, 'w+'); - } - $easy->sink = $sink; - $conf[\CURLOPT_WRITEFUNCTION] = static function ($ch, $write) use ($sink): int { - return $sink->write($write); - }; - - $timeoutRequiresNoSignal = false; - if (isset($options['timeout'])) { - $timeoutRequiresNoSignal |= $options['timeout'] < 1; - $conf[\CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000; - } - - // CURL default value is CURL_IPRESOLVE_WHATEVER - if (isset($options['force_ip_resolve'])) { - if ('v4' === $options['force_ip_resolve']) { - $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4; - } elseif ('v6' === $options['force_ip_resolve']) { - $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V6; - } - } - - if (isset($options['connect_timeout'])) { - $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1; - $conf[\CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000; - } - - if ($timeoutRequiresNoSignal && \strtoupper(\substr(\PHP_OS, 0, 3)) !== 'WIN') { - $conf[\CURLOPT_NOSIGNAL] = true; - } - - if (isset($options['proxy'])) { - if (!\is_array($options['proxy'])) { - $conf[\CURLOPT_PROXY] = $options['proxy']; - } else { - $scheme = $easy->request->getUri()->getScheme(); - if (isset($options['proxy'][$scheme])) { - $host = $easy->request->getUri()->getHost(); - if (isset($options['proxy']['no']) && Utils::isHostInNoProxy($host, $options['proxy']['no'])) { - unset($conf[\CURLOPT_PROXY]); - } else { - $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme]; - } - } - } - } - - if (isset($options['crypto_method'])) { - $protocolVersion = $easy->request->getProtocolVersion(); - - // If HTTP/2, upgrade TLS 1.0 and 1.1 to 1.2 - if ('2' === $protocolVersion || '2.0' === $protocolVersion) { - if ( - \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method'] - || \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method'] - || \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method'] - ) { - $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2; - } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) { - if (!self::supportsTls13()) { - throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL'); - } - $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3; - } else { - throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); - } - } elseif (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) { - $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0; - } elseif (\STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']) { - $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1; - } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) { - if (!self::supportsTls12()) { - throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL'); - } - $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2; - } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) { - if (!self::supportsTls13()) { - throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL'); - } - $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3; - } else { - throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); - } - } - - if (isset($options['cert'])) { - $cert = $options['cert']; - if (\is_array($cert)) { - $conf[\CURLOPT_SSLCERTPASSWD] = $cert[1]; - $cert = $cert[0]; - } - if (!\file_exists($cert)) { - throw new \InvalidArgumentException("SSL certificate not found: {$cert}"); - } - // OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files. - // see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html - $ext = pathinfo($cert, \PATHINFO_EXTENSION); - if (preg_match('#^(der|p12)$#i', $ext)) { - $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext); - } - $conf[\CURLOPT_SSLCERT] = $cert; - } - - if (isset($options['ssl_key'])) { - if (\is_array($options['ssl_key'])) { - if (\count($options['ssl_key']) === 2) { - [$sslKey, $conf[\CURLOPT_SSLKEYPASSWD]] = $options['ssl_key']; - } else { - [$sslKey] = $options['ssl_key']; - } - } - - $sslKey = $sslKey ?? $options['ssl_key']; - - if (!\file_exists($sslKey)) { - throw new \InvalidArgumentException("SSL private key not found: {$sslKey}"); - } - $conf[\CURLOPT_SSLKEY] = $sslKey; - } - - if (isset($options['progress'])) { - $progress = $options['progress']; - if (!\is_callable($progress)) { - throw new \InvalidArgumentException('progress client option must be callable'); - } - $conf[\CURLOPT_NOPROGRESS] = false; - $conf[\CURLOPT_PROGRESSFUNCTION] = static function ($resource, int $downloadSize, int $downloaded, int $uploadSize, int $uploaded) use ($progress) { - $progress($downloadSize, $downloaded, $uploadSize, $uploaded); - }; - } - - if (!empty($options['debug'])) { - $conf[\CURLOPT_STDERR] = Utils::debugResource($options['debug']); - $conf[\CURLOPT_VERBOSE] = true; - } - } - - /** - * This function ensures that a response was set on a transaction. If one - * was not set, then the request is retried if possible. This error - * typically means you are sending a payload, curl encountered a - * "Connection died, retrying a fresh connect" error, tried to rewind the - * stream, and then encountered a "necessary data rewind wasn't possible" - * error, causing the request to be sent through curl_multi_info_read() - * without an error status. - * - * @param callable(RequestInterface, array): PromiseInterface $handler - */ - private static function retryFailedRewind(callable $handler, EasyHandle $easy, array $ctx): PromiseInterface - { - try { - // Only rewind if the body has been read from. - $body = $easy->request->getBody(); - if ($body->tell() > 0) { - $body->rewind(); - } - } catch (\RuntimeException $e) { - $ctx['error'] = 'The connection unexpectedly failed without ' - .'providing an error. The request would have been retried, ' - .'but attempting to rewind the request body failed. ' - .'Exception: '.$e; - - return self::createRejection($easy, $ctx); - } - - // Retry no more than 3 times before giving up. - if (!isset($easy->options['_curl_retries'])) { - $easy->options['_curl_retries'] = 1; - } elseif ($easy->options['_curl_retries'] == 2) { - $ctx['error'] = 'The cURL request was retried 3 times ' - .'and did not succeed. The most likely reason for the failure ' - .'is that cURL was unable to rewind the body of the request ' - .'and subsequent retries resulted in the same error. Turn on ' - .'the debug option to see what went wrong. See ' - .'https://bugs.php.net/bug.php?id=47204 for more information.'; - - return self::createRejection($easy, $ctx); - } else { - ++$easy->options['_curl_retries']; - } - - return $handler($easy->request, $easy->options); - } - - private function createHeaderFn(EasyHandle $easy): callable - { - if (isset($easy->options['on_headers'])) { - $onHeaders = $easy->options['on_headers']; - - if (!\is_callable($onHeaders)) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - } else { - $onHeaders = null; - } - - return static function ($ch, $h) use ( - $onHeaders, - $easy, - &$startingResponse - ) { - $value = \trim($h); - if ($value === '') { - $startingResponse = true; - try { - $easy->createResponse(); - } catch (\Exception $e) { - $easy->createResponseException = $e; - - return -1; - } - if ($onHeaders !== null) { - try { - $onHeaders($easy->response); - } catch (\Exception $e) { - // Associate the exception with the handle and trigger - // a curl header write error by returning 0. - $easy->onHeadersException = $e; - - return -1; - } - } - } elseif ($startingResponse) { - $startingResponse = false; - $easy->headers = [$value]; - } else { - $easy->headers[] = $value; - } - - return \strlen($h); - }; - } - - public function __destruct() - { - foreach ($this->handles as $id => $handle) { - if (PHP_VERSION_ID < 80000) { - \curl_close($handle); - } - - unset($this->handles[$id]); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php deleted file mode 100644 index fe57ed5d..00000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php +++ /dev/null @@ -1,25 +0,0 @@ -factory = $options['handle_factory'] - ?? new CurlFactory(3); - } - - public function __invoke(RequestInterface $request, array $options): PromiseInterface - { - if (isset($options['delay'])) { - \usleep($options['delay'] * 1000); - } - - $easy = $this->factory->create($request, $options); - \curl_exec($easy->handle); - $easy->errno = \curl_errno($easy->handle); - - return CurlFactory::finish($this, $easy, $this->factory); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php deleted file mode 100644 index 21abbedf..00000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +++ /dev/null @@ -1,287 +0,0 @@ - An array of delay times, indexed by handle id in `addRequest`. - * - * @see CurlMultiHandler::addRequest - */ - private $delays = []; - - /** - * @var array An associative array of CURLMOPT_* options and corresponding values for curl_multi_setopt() - */ - private $options = []; - - /** @var resource|\CurlMultiHandle */ - private $_mh; - - /** - * This handler accepts the following options: - * - * - handle_factory: An optional factory used to create curl handles - * - select_timeout: Optional timeout (in seconds) to block before timing - * out while selecting curl handles. Defaults to 1 second. - * - options: An associative array of CURLMOPT_* options and - * corresponding values for curl_multi_setopt() - */ - public function __construct(array $options = []) - { - $this->factory = $options['handle_factory'] ?? new CurlFactory(50); - - if (isset($options['select_timeout'])) { - $this->selectTimeout = $options['select_timeout']; - } elseif ($selectTimeout = Utils::getenv('GUZZLE_CURL_SELECT_TIMEOUT')) { - @trigger_error('Since guzzlehttp/guzzle 7.2.0: Using environment variable GUZZLE_CURL_SELECT_TIMEOUT is deprecated. Use option "select_timeout" instead.', \E_USER_DEPRECATED); - $this->selectTimeout = (int) $selectTimeout; - } else { - $this->selectTimeout = 1; - } - - $this->options = $options['options'] ?? []; - - // unsetting the property forces the first access to go through - // __get(). - unset($this->_mh); - } - - /** - * @param string $name - * - * @return resource|\CurlMultiHandle - * - * @throws \BadMethodCallException when another field as `_mh` will be gotten - * @throws \RuntimeException when curl can not initialize a multi handle - */ - public function __get($name) - { - if ($name !== '_mh') { - throw new \BadMethodCallException("Can not get other property as '_mh'."); - } - - $multiHandle = \curl_multi_init(); - - if (false === $multiHandle) { - throw new \RuntimeException('Can not initialize curl multi handle.'); - } - - $this->_mh = $multiHandle; - - foreach ($this->options as $option => $value) { - // A warning is raised in case of a wrong option. - curl_multi_setopt($this->_mh, $option, $value); - } - - return $this->_mh; - } - - public function __destruct() - { - if (isset($this->_mh)) { - \curl_multi_close($this->_mh); - unset($this->_mh); - } - } - - public function __invoke(RequestInterface $request, array $options): PromiseInterface - { - $easy = $this->factory->create($request, $options); - $id = (int) $easy->handle; - - $promise = new Promise( - [$this, 'execute'], - function () use ($id) { - return $this->cancel($id); - } - ); - - $this->addRequest(['easy' => $easy, 'deferred' => $promise]); - - return $promise; - } - - /** - * Ticks the curl event loop. - */ - public function tick(): void - { - // Add any delayed handles if needed. - if ($this->delays) { - $currentTime = Utils::currentTime(); - foreach ($this->delays as $id => $delay) { - if ($currentTime >= $delay) { - unset($this->delays[$id]); - \curl_multi_add_handle( - $this->_mh, - $this->handles[$id]['easy']->handle - ); - } - } - } - - // Run curl_multi_exec in the queue to enable other async tasks to run - P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue'])); - - // Step through the task queue which may add additional requests. - P\Utils::queue()->run(); - - if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) { - // Perform a usleep if a select returns -1. - // See: https://bugs.php.net/bug.php?id=61141 - \usleep(250); - } - - while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { - // Prevent busy looping for slow HTTP requests. - \curl_multi_select($this->_mh, $this->selectTimeout); - } - - $this->processMessages(); - } - - /** - * Runs \curl_multi_exec() inside the event loop, to prevent busy looping - */ - private function tickInQueue(): void - { - if (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { - \curl_multi_select($this->_mh, 0); - P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue'])); - } - } - - /** - * Runs until all outstanding connections have completed. - */ - public function execute(): void - { - $queue = P\Utils::queue(); - - while ($this->handles || !$queue->isEmpty()) { - // If there are no transfers, then sleep for the next delay - if (!$this->active && $this->delays) { - \usleep($this->timeToNext()); - } - $this->tick(); - } - } - - private function addRequest(array $entry): void - { - $easy = $entry['easy']; - $id = (int) $easy->handle; - $this->handles[$id] = $entry; - if (empty($easy->options['delay'])) { - \curl_multi_add_handle($this->_mh, $easy->handle); - } else { - $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000); - } - } - - /** - * Cancels a handle from sending and removes references to it. - * - * @param int $id Handle ID to cancel and remove. - * - * @return bool True on success, false on failure. - */ - private function cancel($id): bool - { - if (!is_int($id)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an integer to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - // Cannot cancel if it has been processed. - if (!isset($this->handles[$id])) { - return false; - } - - $handle = $this->handles[$id]['easy']->handle; - unset($this->delays[$id], $this->handles[$id]); - \curl_multi_remove_handle($this->_mh, $handle); - - if (PHP_VERSION_ID < 80000) { - \curl_close($handle); - } - - return true; - } - - private function processMessages(): void - { - while ($done = \curl_multi_info_read($this->_mh)) { - if ($done['msg'] !== \CURLMSG_DONE) { - // if it's not done, then it would be premature to remove the handle. ref https://github.com/guzzle/guzzle/pull/2892#issuecomment-945150216 - continue; - } - $id = (int) $done['handle']; - \curl_multi_remove_handle($this->_mh, $done['handle']); - - if (!isset($this->handles[$id])) { - // Probably was cancelled. - continue; - } - - $entry = $this->handles[$id]; - unset($this->handles[$id], $this->delays[$id]); - $entry['easy']->errno = $done['result']; - $entry['deferred']->resolve( - CurlFactory::finish($this, $entry['easy'], $this->factory) - ); - } - } - - private function timeToNext(): int - { - $currentTime = Utils::currentTime(); - $nextTime = \PHP_INT_MAX; - foreach ($this->delays as $time) { - if ($time < $nextTime) { - $nextTime = $time; - } - } - - return ((int) \max(0, $nextTime - $currentTime)) * 1000000; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php deleted file mode 100644 index 1bc39f4b..00000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php +++ /dev/null @@ -1,112 +0,0 @@ -headers); - - $normalizedKeys = Utils::normalizeHeaderKeys($headers); - - if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) { - $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; - unset($headers[$normalizedKeys['content-encoding']]); - if (isset($normalizedKeys['content-length'])) { - $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']]; - - $bodyLength = (int) $this->sink->getSize(); - if ($bodyLength) { - $headers[$normalizedKeys['content-length']] = $bodyLength; - } else { - unset($headers[$normalizedKeys['content-length']]); - } - } - } - - // Attach a response to the easy handle with the parsed headers. - $this->response = new Response( - $status, - $headers, - $this->sink, - $ver, - $reason - ); - } - - /** - * @param string $name - * - * @return void - * - * @throws \BadMethodCallException - */ - public function __get($name) - { - $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: '.$name; - throw new \BadMethodCallException($msg); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php b/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php deleted file mode 100644 index 5554b8fa..00000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php +++ /dev/null @@ -1,42 +0,0 @@ -|null $queue The parameters to be passed to the append function, as an indexed array. - * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled. - * @param callable|null $onRejected Callback to invoke when the return value is rejected. - */ - public function __construct(?array $queue = null, ?callable $onFulfilled = null, ?callable $onRejected = null) - { - $this->onFulfilled = $onFulfilled; - $this->onRejected = $onRejected; - - if ($queue) { - // array_values included for BC - $this->append(...array_values($queue)); - } - } - - public function __invoke(RequestInterface $request, array $options): PromiseInterface - { - if (!$this->queue) { - throw new \OutOfBoundsException('Mock queue is empty'); - } - - if (isset($options['delay']) && \is_numeric($options['delay'])) { - \usleep((int) $options['delay'] * 1000); - } - - $this->lastRequest = $request; - $this->lastOptions = $options; - $response = \array_shift($this->queue); - - if (isset($options['on_headers'])) { - if (!\is_callable($options['on_headers'])) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - try { - $options['on_headers']($response); - } catch (\Exception $e) { - $msg = 'An error was encountered during the on_headers event'; - $response = new RequestException($msg, $request, $response, $e); - } - } - - if (\is_callable($response)) { - $response = $response($request, $options); - } - - $response = $response instanceof \Throwable - ? P\Create::rejectionFor($response) - : P\Create::promiseFor($response); - - return $response->then( - function (?ResponseInterface $value) use ($request, $options) { - $this->invokeStats($request, $options, $value); - if ($this->onFulfilled) { - ($this->onFulfilled)($value); - } - - if ($value !== null && isset($options['sink'])) { - $contents = (string) $value->getBody(); - $sink = $options['sink']; - - if (\is_resource($sink)) { - \fwrite($sink, $contents); - } elseif (\is_string($sink)) { - \file_put_contents($sink, $contents); - } elseif ($sink instanceof StreamInterface) { - $sink->write($contents); - } - } - - return $value; - }, - function ($reason) use ($request, $options) { - $this->invokeStats($request, $options, null, $reason); - if ($this->onRejected) { - ($this->onRejected)($reason); - } - - return P\Create::rejectionFor($reason); - } - ); - } - - /** - * Adds one or more variadic requests, exceptions, callables, or promises - * to the queue. - * - * @param mixed ...$values - */ - public function append(...$values): void - { - foreach ($values as $value) { - if ($value instanceof ResponseInterface - || $value instanceof \Throwable - || $value instanceof PromiseInterface - || \is_callable($value) - ) { - $this->queue[] = $value; - } else { - throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found '.Utils::describeType($value)); - } - } - } - - /** - * Get the last received request. - */ - public function getLastRequest(): ?RequestInterface - { - return $this->lastRequest; - } - - /** - * Get the last received request options. - */ - public function getLastOptions(): array - { - return $this->lastOptions; - } - - /** - * Returns the number of remaining items in the queue. - */ - public function count(): int - { - return \count($this->queue); - } - - public function reset(): void - { - $this->queue = []; - } - - /** - * @param mixed $reason Promise or reason. - */ - private function invokeStats( - RequestInterface $request, - array $options, - ?ResponseInterface $response = null, - $reason = null - ): void { - if (isset($options['on_stats'])) { - $transferTime = $options['transfer_time'] ?? 0; - $stats = new TransferStats($request, $response, $transferTime, $reason); - ($options['on_stats'])($stats); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php deleted file mode 100644 index 9df70cf2..00000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php +++ /dev/null @@ -1,51 +0,0 @@ -getProtocolVersion(); - - if ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) { - throw new ConnectException(sprintf('HTTP/%s is not supported by the stream handler.', $protocolVersion), $request); - } - - $startTime = isset($options['on_stats']) ? Utils::currentTime() : null; - - try { - // Does not support the expect header. - $request = $request->withoutHeader('Expect'); - - // Append a content-length header if body size is zero to match - // the behavior of `CurlHandler` - if ( - ( - 0 === \strcasecmp('PUT', $request->getMethod()) - || 0 === \strcasecmp('POST', $request->getMethod()) - ) - && 0 === $request->getBody()->getSize() - ) { - $request = $request->withHeader('Content-Length', '0'); - } - - return $this->createResponse( - $request, - $options, - $this->createStream($request, $options), - $startTime - ); - } catch (\InvalidArgumentException $e) { - throw $e; - } catch (\Exception $e) { - // Determine if the error was a networking error. - $message = $e->getMessage(); - // This list can probably get more comprehensive. - if (false !== \strpos($message, 'getaddrinfo') // DNS lookup failed - || false !== \strpos($message, 'Connection refused') - || false !== \strpos($message, "couldn't connect to host") // error on HHVM - || false !== \strpos($message, 'connection attempt failed') - ) { - $e = new ConnectException($e->getMessage(), $request, $e); - } else { - $e = RequestException::wrapException($request, $e); - } - $this->invokeStats($options, $request, $startTime, null, $e); - - return P\Create::rejectionFor($e); - } - } - - private function invokeStats( - array $options, - RequestInterface $request, - ?float $startTime, - ?ResponseInterface $response = null, - ?\Throwable $error = null - ): void { - if (isset($options['on_stats'])) { - $stats = new TransferStats($request, $response, Utils::currentTime() - $startTime, $error, []); - ($options['on_stats'])($stats); - } - } - - /** - * @param resource $stream - */ - private function createResponse(RequestInterface $request, array $options, $stream, ?float $startTime): PromiseInterface - { - $hdrs = $this->lastHeaders; - $this->lastHeaders = []; - - try { - [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($hdrs); - } catch (\Exception $e) { - return P\Create::rejectionFor( - new RequestException('An error was encountered while creating the response', $request, null, $e) - ); - } - - [$stream, $headers] = $this->checkDecode($options, $headers, $stream); - $stream = Psr7\Utils::streamFor($stream); - $sink = $stream; - - if (\strcasecmp('HEAD', $request->getMethod())) { - $sink = $this->createSink($stream, $options); - } - - try { - $response = new Psr7\Response($status, $headers, $sink, $ver, $reason); - } catch (\Exception $e) { - return P\Create::rejectionFor( - new RequestException('An error was encountered while creating the response', $request, null, $e) - ); - } - - if (isset($options['on_headers'])) { - try { - $options['on_headers']($response); - } catch (\Exception $e) { - return P\Create::rejectionFor( - new RequestException('An error was encountered during the on_headers event', $request, $response, $e) - ); - } - } - - // Do not drain when the request is a HEAD request because they have - // no body. - if ($sink !== $stream) { - $this->drain($stream, $sink, $response->getHeaderLine('Content-Length')); - } - - $this->invokeStats($options, $request, $startTime, $response, null); - - return new FulfilledPromise($response); - } - - private function createSink(StreamInterface $stream, array $options): StreamInterface - { - if (!empty($options['stream'])) { - return $stream; - } - - $sink = $options['sink'] ?? Psr7\Utils::tryFopen('php://temp', 'r+'); - - return \is_string($sink) ? new Psr7\LazyOpenStream($sink, 'w+') : Psr7\Utils::streamFor($sink); - } - - /** - * @param resource $stream - */ - private function checkDecode(array $options, array $headers, $stream): array - { - // Automatically decode responses when instructed. - if (!empty($options['decode_content'])) { - $normalizedKeys = Utils::normalizeHeaderKeys($headers); - if (isset($normalizedKeys['content-encoding'])) { - $encoding = $headers[$normalizedKeys['content-encoding']]; - if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') { - $stream = new Psr7\InflateStream(Psr7\Utils::streamFor($stream)); - $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; - - // Remove content-encoding header - unset($headers[$normalizedKeys['content-encoding']]); - - // Fix content-length header - if (isset($normalizedKeys['content-length'])) { - $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']]; - $length = (int) $stream->getSize(); - if ($length === 0) { - unset($headers[$normalizedKeys['content-length']]); - } else { - $headers[$normalizedKeys['content-length']] = [$length]; - } - } - } - } - } - - return [$stream, $headers]; - } - - /** - * Drains the source stream into the "sink" client option. - * - * @param string $contentLength Header specifying the amount of - * data to read. - * - * @throws \RuntimeException when the sink option is invalid. - */ - private function drain(StreamInterface $source, StreamInterface $sink, string $contentLength): StreamInterface - { - // If a content-length header is provided, then stop reading once - // that number of bytes has been read. This can prevent infinitely - // reading from a stream when dealing with servers that do not honor - // Connection: Close headers. - Psr7\Utils::copyToStream( - $source, - $sink, - (\strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1 - ); - - $sink->seek(0); - $source->close(); - - return $sink; - } - - /** - * Create a resource and check to ensure it was created successfully - * - * @param callable $callback Callable that returns stream resource - * - * @return resource - * - * @throws \RuntimeException on error - */ - private function createResource(callable $callback) - { - $errors = []; - \set_error_handler(static function ($_, $msg, $file, $line) use (&$errors): bool { - $errors[] = [ - 'message' => $msg, - 'file' => $file, - 'line' => $line, - ]; - - return true; - }); - - try { - $resource = $callback(); - } finally { - \restore_error_handler(); - } - - if (!$resource) { - $message = 'Error creating resource: '; - foreach ($errors as $err) { - foreach ($err as $key => $value) { - $message .= "[$key] $value".\PHP_EOL; - } - } - throw new \RuntimeException(\trim($message)); - } - - return $resource; - } - - /** - * @return resource - */ - private function createStream(RequestInterface $request, array $options) - { - static $methods; - if (!$methods) { - $methods = \array_flip(\get_class_methods(__CLASS__)); - } - - if (!\in_array($request->getUri()->getScheme(), ['http', 'https'])) { - throw new RequestException(\sprintf("The scheme '%s' is not supported.", $request->getUri()->getScheme()), $request); - } - - // HTTP/1.1 streams using the PHP stream wrapper require a - // Connection: close header - if ($request->getProtocolVersion() === '1.1' - && !$request->hasHeader('Connection') - ) { - $request = $request->withHeader('Connection', 'close'); - } - - // Ensure SSL is verified by default - if (!isset($options['verify'])) { - $options['verify'] = true; - } - - $params = []; - $context = $this->getDefaultContext($request); - - if (isset($options['on_headers']) && !\is_callable($options['on_headers'])) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - - if (!empty($options)) { - foreach ($options as $key => $value) { - $method = "add_{$key}"; - if (isset($methods[$method])) { - $this->{$method}($request, $context, $value, $params); - } - } - } - - if (isset($options['stream_context'])) { - if (!\is_array($options['stream_context'])) { - throw new \InvalidArgumentException('stream_context must be an array'); - } - $context = \array_replace_recursive($context, $options['stream_context']); - } - - // Microsoft NTLM authentication only supported with curl handler - if (isset($options['auth'][2]) && 'ntlm' === $options['auth'][2]) { - throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler'); - } - - $uri = $this->resolveHost($request, $options); - - $contextResource = $this->createResource( - static function () use ($context, $params) { - return \stream_context_create($context, $params); - } - ); - - return $this->createResource( - function () use ($uri, $contextResource, $context, $options, $request) { - $resource = @\fopen((string) $uri, 'r', false, $contextResource); - - // See https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_http_response_header_predefined_variable - if (function_exists('http_get_last_response_headers')) { - /** @var array|null */ - $http_response_header = \http_get_last_response_headers(); - } - - $this->lastHeaders = $http_response_header ?? []; - - if (false === $resource) { - throw new ConnectException(sprintf('Connection refused for URI %s', $uri), $request, null, $context); - } - - if (isset($options['read_timeout'])) { - $readTimeout = $options['read_timeout']; - $sec = (int) $readTimeout; - $usec = ($readTimeout - $sec) * 100000; - \stream_set_timeout($resource, $sec, $usec); - } - - return $resource; - } - ); - } - - private function resolveHost(RequestInterface $request, array $options): UriInterface - { - $uri = $request->getUri(); - - if (isset($options['force_ip_resolve']) && !\filter_var($uri->getHost(), \FILTER_VALIDATE_IP)) { - if ('v4' === $options['force_ip_resolve']) { - $records = \dns_get_record($uri->getHost(), \DNS_A); - if (false === $records || !isset($records[0]['ip'])) { - throw new ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); - } - - return $uri->withHost($records[0]['ip']); - } - if ('v6' === $options['force_ip_resolve']) { - $records = \dns_get_record($uri->getHost(), \DNS_AAAA); - if (false === $records || !isset($records[0]['ipv6'])) { - throw new ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); - } - - return $uri->withHost('['.$records[0]['ipv6'].']'); - } - } - - return $uri; - } - - private function getDefaultContext(RequestInterface $request): array - { - $headers = ''; - foreach ($request->getHeaders() as $name => $value) { - foreach ($value as $val) { - $headers .= "$name: $val\r\n"; - } - } - - $context = [ - 'http' => [ - 'method' => $request->getMethod(), - 'header' => $headers, - 'protocol_version' => $request->getProtocolVersion(), - 'ignore_errors' => true, - 'follow_location' => 0, - ], - 'ssl' => [ - 'peer_name' => $request->getUri()->getHost(), - ], - ]; - - $body = (string) $request->getBody(); - - if ('' !== $body) { - $context['http']['content'] = $body; - // Prevent the HTTP handler from adding a Content-Type header. - if (!$request->hasHeader('Content-Type')) { - $context['http']['header'] .= "Content-Type:\r\n"; - } - } - - $context['http']['header'] = \rtrim($context['http']['header']); - - return $context; - } - - /** - * @param mixed $value as passed via Request transfer options. - */ - private function add_proxy(RequestInterface $request, array &$options, $value, array &$params): void - { - $uri = null; - - if (!\is_array($value)) { - $uri = $value; - } else { - $scheme = $request->getUri()->getScheme(); - if (isset($value[$scheme])) { - if (!isset($value['no']) || !Utils::isHostInNoProxy($request->getUri()->getHost(), $value['no'])) { - $uri = $value[$scheme]; - } - } - } - - if (!$uri) { - return; - } - - $parsed = $this->parse_proxy($uri); - $options['http']['proxy'] = $parsed['proxy']; - - if ($parsed['auth']) { - if (!isset($options['http']['header'])) { - $options['http']['header'] = []; - } - $options['http']['header'] .= "\r\nProxy-Authorization: {$parsed['auth']}"; - } - } - - /** - * Parses the given proxy URL to make it compatible with the format PHP's stream context expects. - */ - private function parse_proxy(string $url): array - { - $parsed = \parse_url($url); - - if ($parsed !== false && isset($parsed['scheme']) && $parsed['scheme'] === 'http') { - if (isset($parsed['host']) && isset($parsed['port'])) { - $auth = null; - if (isset($parsed['user']) && isset($parsed['pass'])) { - $auth = \base64_encode("{$parsed['user']}:{$parsed['pass']}"); - } - - return [ - 'proxy' => "tcp://{$parsed['host']}:{$parsed['port']}", - 'auth' => $auth ? "Basic {$auth}" : null, - ]; - } - } - - // Return proxy as-is. - return [ - 'proxy' => $url, - 'auth' => null, - ]; - } - - /** - * @param mixed $value as passed via Request transfer options. - */ - private function add_timeout(RequestInterface $request, array &$options, $value, array &$params): void - { - if ($value > 0) { - $options['http']['timeout'] = $value; - } - } - - /** - * @param mixed $value as passed via Request transfer options. - */ - private function add_crypto_method(RequestInterface $request, array &$options, $value, array &$params): void - { - if ( - $value === \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT - || $value === \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT - || $value === \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT - || (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && $value === \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT) - ) { - $options['http']['crypto_method'] = $value; - - return; - } - - throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); - } - - /** - * @param mixed $value as passed via Request transfer options. - */ - private function add_verify(RequestInterface $request, array &$options, $value, array &$params): void - { - if ($value === false) { - $options['ssl']['verify_peer'] = false; - $options['ssl']['verify_peer_name'] = false; - - return; - } - - if (\is_string($value)) { - $options['ssl']['cafile'] = $value; - if (!\file_exists($value)) { - throw new \RuntimeException("SSL CA bundle not found: $value"); - } - } elseif ($value !== true) { - throw new \InvalidArgumentException('Invalid verify request option'); - } - - $options['ssl']['verify_peer'] = true; - $options['ssl']['verify_peer_name'] = true; - $options['ssl']['allow_self_signed'] = false; - } - - /** - * @param mixed $value as passed via Request transfer options. - */ - private function add_cert(RequestInterface $request, array &$options, $value, array &$params): void - { - if (\is_array($value)) { - $options['ssl']['passphrase'] = $value[1]; - $value = $value[0]; - } - - if (!\file_exists($value)) { - throw new \RuntimeException("SSL certificate not found: {$value}"); - } - - $options['ssl']['local_cert'] = $value; - } - - /** - * @param mixed $value as passed via Request transfer options. - */ - private function add_progress(RequestInterface $request, array &$options, $value, array &$params): void - { - self::addNotification( - $params, - static function ($code, $a, $b, $c, $transferred, $total) use ($value) { - if ($code == \STREAM_NOTIFY_PROGRESS) { - // The upload progress cannot be determined. Use 0 for cURL compatibility: - // https://curl.se/libcurl/c/CURLOPT_PROGRESSFUNCTION.html - $value($total, $transferred, 0, 0); - } - } - ); - } - - /** - * @param mixed $value as passed via Request transfer options. - */ - private function add_debug(RequestInterface $request, array &$options, $value, array &$params): void - { - if ($value === false) { - return; - } - - static $map = [ - \STREAM_NOTIFY_CONNECT => 'CONNECT', - \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', - \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', - \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', - \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', - \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', - \STREAM_NOTIFY_PROGRESS => 'PROGRESS', - \STREAM_NOTIFY_FAILURE => 'FAILURE', - \STREAM_NOTIFY_COMPLETED => 'COMPLETED', - \STREAM_NOTIFY_RESOLVE => 'RESOLVE', - ]; - static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; - - $value = Utils::debugResource($value); - $ident = $request->getMethod().' '.$request->getUri()->withFragment(''); - self::addNotification( - $params, - static function (int $code, ...$passed) use ($ident, $value, $map, $args): void { - \fprintf($value, '<%s> [%s] ', $ident, $map[$code]); - foreach (\array_filter($passed) as $i => $v) { - \fwrite($value, $args[$i].': "'.$v.'" '); - } - \fwrite($value, "\n"); - } - ); - } - - private static function addNotification(array &$params, callable $notify): void - { - // Wrap the existing function if needed. - if (!isset($params['notification'])) { - $params['notification'] = $notify; - } else { - $params['notification'] = self::callArray([ - $params['notification'], - $notify, - ]); - } - } - - private static function callArray(array $functions): callable - { - return static function (...$args) use ($functions) { - foreach ($functions as $fn) { - $fn(...$args); - } - }; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php deleted file mode 100644 index 03f9a18f..00000000 --- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php +++ /dev/null @@ -1,275 +0,0 @@ -push(Middleware::httpErrors(), 'http_errors'); - $stack->push(Middleware::redirect(), 'allow_redirects'); - $stack->push(Middleware::cookies(), 'cookies'); - $stack->push(Middleware::prepareBody(), 'prepare_body'); - - return $stack; - } - - /** - * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler. - */ - public function __construct(?callable $handler = null) - { - $this->handler = $handler; - } - - /** - * Invokes the handler stack as a composed handler - * - * @return ResponseInterface|PromiseInterface - */ - public function __invoke(RequestInterface $request, array $options) - { - $handler = $this->resolve(); - - return $handler($request, $options); - } - - /** - * Dumps a string representation of the stack. - * - * @return string - */ - public function __toString() - { - $depth = 0; - $stack = []; - - if ($this->handler !== null) { - $stack[] = '0) Handler: '.$this->debugCallable($this->handler); - } - - $result = ''; - foreach (\array_reverse($this->stack) as $tuple) { - ++$depth; - $str = "{$depth}) Name: '{$tuple[1]}', "; - $str .= 'Function: '.$this->debugCallable($tuple[0]); - $result = "> {$str}\n{$result}"; - $stack[] = $str; - } - - foreach (\array_keys($stack) as $k) { - $result .= "< {$stack[$k]}\n"; - } - - return $result; - } - - /** - * Set the HTTP handler that actually returns a promise. - * - * @param callable(RequestInterface, array): PromiseInterface $handler Accepts a request and array of options and - * returns a Promise. - */ - public function setHandler(callable $handler): void - { - $this->handler = $handler; - $this->cached = null; - } - - /** - * Returns true if the builder has a handler. - */ - public function hasHandler(): bool - { - return $this->handler !== null; - } - - /** - * Unshift a middleware to the bottom of the stack. - * - * @param callable(callable): callable $middleware Middleware function - * @param string $name Name to register for this middleware. - */ - public function unshift(callable $middleware, ?string $name = null): void - { - \array_unshift($this->stack, [$middleware, $name]); - $this->cached = null; - } - - /** - * Push a middleware to the top of the stack. - * - * @param callable(callable): callable $middleware Middleware function - * @param string $name Name to register for this middleware. - */ - public function push(callable $middleware, string $name = ''): void - { - $this->stack[] = [$middleware, $name]; - $this->cached = null; - } - - /** - * Add a middleware before another middleware by name. - * - * @param string $findName Middleware to find - * @param callable(callable): callable $middleware Middleware function - * @param string $withName Name to register for this middleware. - */ - public function before(string $findName, callable $middleware, string $withName = ''): void - { - $this->splice($findName, $withName, $middleware, true); - } - - /** - * Add a middleware after another middleware by name. - * - * @param string $findName Middleware to find - * @param callable(callable): callable $middleware Middleware function - * @param string $withName Name to register for this middleware. - */ - public function after(string $findName, callable $middleware, string $withName = ''): void - { - $this->splice($findName, $withName, $middleware, false); - } - - /** - * Remove a middleware by instance or name from the stack. - * - * @param callable|string $remove Middleware to remove by instance or name. - */ - public function remove($remove): void - { - if (!is_string($remove) && !is_callable($remove)) { - trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a callable or string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); - } - - $this->cached = null; - $idx = \is_callable($remove) ? 0 : 1; - $this->stack = \array_values(\array_filter( - $this->stack, - static function ($tuple) use ($idx, $remove) { - return $tuple[$idx] !== $remove; - } - )); - } - - /** - * Compose the middleware and handler into a single callable function. - * - * @return callable(RequestInterface, array): PromiseInterface - */ - public function resolve(): callable - { - if ($this->cached === null) { - if (($prev = $this->handler) === null) { - throw new \LogicException('No handler has been specified'); - } - - foreach (\array_reverse($this->stack) as $fn) { - /** @var callable(RequestInterface, array): PromiseInterface $prev */ - $prev = $fn[0]($prev); - } - - $this->cached = $prev; - } - - return $this->cached; - } - - private function findByName(string $name): int - { - foreach ($this->stack as $k => $v) { - if ($v[1] === $name) { - return $k; - } - } - - throw new \InvalidArgumentException("Middleware not found: $name"); - } - - /** - * Splices a function into the middleware list at a specific position. - */ - private function splice(string $findName, string $withName, callable $middleware, bool $before): void - { - $this->cached = null; - $idx = $this->findByName($findName); - $tuple = [$middleware, $withName]; - - if ($before) { - if ($idx === 0) { - \array_unshift($this->stack, $tuple); - } else { - $replacement = [$tuple, $this->stack[$idx]]; - \array_splice($this->stack, $idx, 1, $replacement); - } - } elseif ($idx === \count($this->stack) - 1) { - $this->stack[] = $tuple; - } else { - $replacement = [$this->stack[$idx], $tuple]; - \array_splice($this->stack, $idx, 1, $replacement); - } - } - - /** - * Provides a debug string for a given callable. - * - * @param callable|string $fn Function to write as a string. - */ - private function debugCallable($fn): string - { - if (\is_string($fn)) { - return "callable({$fn})"; - } - - if (\is_array($fn)) { - return \is_string($fn[0]) - ? "callable({$fn[0]}::{$fn[1]})" - : "callable(['".\get_class($fn[0])."', '{$fn[1]}'])"; - } - - /** @var object $fn */ - return 'callable('.\spl_object_hash($fn).')'; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php deleted file mode 100644 index 9b77eee8..00000000 --- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php +++ /dev/null @@ -1,199 +0,0 @@ ->>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; - public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; - - /** - * @var string Template used to format log messages - */ - private $template; - - /** - * @param string $template Log message template - */ - public function __construct(?string $template = self::CLF) - { - $this->template = $template ?: self::CLF; - } - - /** - * Returns a formatted message string. - * - * @param RequestInterface $request Request that was sent - * @param ResponseInterface|null $response Response that was received - * @param \Throwable|null $error Exception that was received - */ - public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string - { - $cache = []; - - /** @var string */ - return \preg_replace_callback( - '/{\s*([A-Za-z_\-\.0-9]+)\s*}/', - function (array $matches) use ($request, $response, $error, &$cache) { - if (isset($cache[$matches[1]])) { - return $cache[$matches[1]]; - } - - $result = ''; - switch ($matches[1]) { - case 'request': - $result = Psr7\Message::toString($request); - break; - case 'response': - $result = $response ? Psr7\Message::toString($response) : ''; - break; - case 'req_headers': - $result = \trim($request->getMethod() - .' '.$request->getRequestTarget()) - .' HTTP/'.$request->getProtocolVersion()."\r\n" - .$this->headers($request); - break; - case 'res_headers': - $result = $response ? - \sprintf( - 'HTTP/%s %d %s', - $response->getProtocolVersion(), - $response->getStatusCode(), - $response->getReasonPhrase() - )."\r\n".$this->headers($response) - : 'NULL'; - break; - case 'req_body': - $result = $request->getBody()->__toString(); - break; - case 'res_body': - if (!$response instanceof ResponseInterface) { - $result = 'NULL'; - break; - } - - $body = $response->getBody(); - - if (!$body->isSeekable()) { - $result = 'RESPONSE_NOT_LOGGEABLE'; - break; - } - - $result = $response->getBody()->__toString(); - break; - case 'ts': - case 'date_iso_8601': - $result = \gmdate('c'); - break; - case 'date_common_log': - $result = \date('d/M/Y:H:i:s O'); - break; - case 'method': - $result = $request->getMethod(); - break; - case 'version': - $result = $request->getProtocolVersion(); - break; - case 'uri': - case 'url': - $result = $request->getUri()->__toString(); - break; - case 'target': - $result = $request->getRequestTarget(); - break; - case 'req_version': - $result = $request->getProtocolVersion(); - break; - case 'res_version': - $result = $response - ? $response->getProtocolVersion() - : 'NULL'; - break; - case 'host': - $result = $request->getHeaderLine('Host'); - break; - case 'hostname': - $result = \gethostname(); - break; - case 'code': - $result = $response ? $response->getStatusCode() : 'NULL'; - break; - case 'phrase': - $result = $response ? $response->getReasonPhrase() : 'NULL'; - break; - case 'error': - $result = $error ? $error->getMessage() : 'NULL'; - break; - default: - // handle prefixed dynamic headers - if (\strpos($matches[1], 'req_header_') === 0) { - $result = $request->getHeaderLine(\substr($matches[1], 11)); - } elseif (\strpos($matches[1], 'res_header_') === 0) { - $result = $response - ? $response->getHeaderLine(\substr($matches[1], 11)) - : 'NULL'; - } - } - - $cache[$matches[1]] = $result; - - return $result; - }, - $this->template - ); - } - - /** - * Get headers from message as string - */ - private function headers(MessageInterface $message): string - { - $result = ''; - foreach ($message->getHeaders() as $name => $values) { - $result .= $name.': '.\implode(', ', $values)."\r\n"; - } - - return \trim($result); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php b/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php deleted file mode 100644 index a39ac248..00000000 --- a/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php +++ /dev/null @@ -1,18 +0,0 @@ -withCookieHeader($request); - - return $handler($request, $options) - ->then( - static function (ResponseInterface $response) use ($cookieJar, $request): ResponseInterface { - $cookieJar->extractCookies($request, $response); - - return $response; - } - ); - }; - }; - } - - /** - * Middleware that throws exceptions for 4xx or 5xx responses when the - * "http_errors" request option is set to true. - * - * @param BodySummarizerInterface|null $bodySummarizer The body summarizer to use in exception messages. - * - * @return callable(callable): callable Returns a function that accepts the next handler. - */ - public static function httpErrors(?BodySummarizerInterface $bodySummarizer = null): callable - { - return static function (callable $handler) use ($bodySummarizer): callable { - return static function ($request, array $options) use ($handler, $bodySummarizer) { - if (empty($options['http_errors'])) { - return $handler($request, $options); - } - - return $handler($request, $options)->then( - static function (ResponseInterface $response) use ($request, $bodySummarizer) { - $code = $response->getStatusCode(); - if ($code < 400) { - return $response; - } - throw RequestException::create($request, $response, null, [], $bodySummarizer); - } - ); - }; - }; - } - - /** - * Middleware that pushes history data to an ArrayAccess container. - * - * @param array|\ArrayAccess $container Container to hold the history (by reference). - * - * @return callable(callable): callable Returns a function that accepts the next handler. - * - * @throws \InvalidArgumentException if container is not an array or ArrayAccess. - */ - public static function history(&$container): callable - { - if (!\is_array($container) && !$container instanceof \ArrayAccess) { - throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess'); - } - - return static function (callable $handler) use (&$container): callable { - return static function (RequestInterface $request, array $options) use ($handler, &$container) { - return $handler($request, $options)->then( - static function ($value) use ($request, &$container, $options) { - $container[] = [ - 'request' => $request, - 'response' => $value, - 'error' => null, - 'options' => $options, - ]; - - return $value; - }, - static function ($reason) use ($request, &$container, $options) { - $container[] = [ - 'request' => $request, - 'response' => null, - 'error' => $reason, - 'options' => $options, - ]; - - return P\Create::rejectionFor($reason); - } - ); - }; - }; - } - - /** - * Middleware that invokes a callback before and after sending a request. - * - * The provided listener cannot modify or alter the response. It simply - * "taps" into the chain to be notified before returning the promise. The - * before listener accepts a request and options array, and the after - * listener accepts a request, options array, and response promise. - * - * @param callable $before Function to invoke before forwarding the request. - * @param callable $after Function invoked after forwarding. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function tap(?callable $before = null, ?callable $after = null): callable - { - return static function (callable $handler) use ($before, $after): callable { - return static function (RequestInterface $request, array $options) use ($handler, $before, $after) { - if ($before) { - $before($request, $options); - } - $response = $handler($request, $options); - if ($after) { - $after($request, $options, $response); - } - - return $response; - }; - }; - } - - /** - * Middleware that handles request redirects. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function redirect(): callable - { - return static function (callable $handler): RedirectMiddleware { - return new RedirectMiddleware($handler); - }; - } - - /** - * Middleware that retries requests based on the boolean result of - * invoking the provided "decider" function. - * - * If no delay function is provided, a simple implementation of exponential - * backoff will be utilized. - * - * @param callable $decider Function that accepts the number of retries, - * a request, [response], and [exception] and - * returns true if the request is to be retried. - * @param callable $delay Function that accepts the number of retries and - * returns the number of milliseconds to delay. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function retry(callable $decider, ?callable $delay = null): callable - { - return static function (callable $handler) use ($decider, $delay): RetryMiddleware { - return new RetryMiddleware($decider, $handler, $delay); - }; - } - - /** - * Middleware that logs requests, responses, and errors using a message - * formatter. - * - * @param LoggerInterface $logger Logs messages. - * @param MessageFormatterInterface|MessageFormatter $formatter Formatter used to create message strings. - * @param string $logLevel Level at which to log requests. - * - * @phpstan-param \Psr\Log\LogLevel::* $logLevel Level at which to log requests. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function log(LoggerInterface $logger, $formatter, string $logLevel = 'info'): callable - { - // To be compatible with Guzzle 7.1.x we need to allow users to pass a MessageFormatter - if (!$formatter instanceof MessageFormatter && !$formatter instanceof MessageFormatterInterface) { - throw new \LogicException(sprintf('Argument 2 to %s::log() must be of type %s', self::class, MessageFormatterInterface::class)); - } - - return static function (callable $handler) use ($logger, $formatter, $logLevel): callable { - return static function (RequestInterface $request, array $options = []) use ($handler, $logger, $formatter, $logLevel) { - return $handler($request, $options)->then( - static function ($response) use ($logger, $request, $formatter, $logLevel): ResponseInterface { - $message = $formatter->format($request, $response); - $logger->log($logLevel, $message); - - return $response; - }, - static function ($reason) use ($logger, $request, $formatter): PromiseInterface { - $response = $reason instanceof RequestException ? $reason->getResponse() : null; - $message = $formatter->format($request, $response, P\Create::exceptionFor($reason)); - $logger->error($message); - - return P\Create::rejectionFor($reason); - } - ); - }; - }; - } - - /** - * This middleware adds a default content-type if possible, a default - * content-length or transfer-encoding header, and the expect header. - */ - public static function prepareBody(): callable - { - return static function (callable $handler): PrepareBodyMiddleware { - return new PrepareBodyMiddleware($handler); - }; - } - - /** - * Middleware that applies a map function to the request before passing to - * the next handler. - * - * @param callable $fn Function that accepts a RequestInterface and returns - * a RequestInterface. - */ - public static function mapRequest(callable $fn): callable - { - return static function (callable $handler) use ($fn): callable { - return static function (RequestInterface $request, array $options) use ($handler, $fn) { - return $handler($fn($request), $options); - }; - }; - } - - /** - * Middleware that applies a map function to the resolved promise's - * response. - * - * @param callable $fn Function that accepts a ResponseInterface and - * returns a ResponseInterface. - */ - public static function mapResponse(callable $fn): callable - { - return static function (callable $handler) use ($fn): callable { - return static function (RequestInterface $request, array $options) use ($handler, $fn) { - return $handler($request, $options)->then($fn); - }; - }; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php deleted file mode 100644 index ddc304bb..00000000 --- a/vendor/guzzlehttp/guzzle/src/Pool.php +++ /dev/null @@ -1,125 +0,0 @@ - $rfn) { - if ($rfn instanceof RequestInterface) { - yield $key => $client->sendAsync($rfn, $opts); - } elseif (\is_callable($rfn)) { - yield $key => $rfn($opts); - } else { - throw new \InvalidArgumentException('Each value yielded by the iterator must be a Psr7\Http\Message\RequestInterface or a callable that returns a promise that fulfills with a Psr7\Message\Http\ResponseInterface object.'); - } - } - }; - - $this->each = new EachPromise($requests(), $config); - } - - /** - * Get promise - */ - public function promise(): PromiseInterface - { - return $this->each->promise(); - } - - /** - * Sends multiple requests concurrently and returns an array of responses - * and exceptions that uses the same ordering as the provided requests. - * - * IMPORTANT: This method keeps every request and response in memory, and - * as such, is NOT recommended when sending a large number or an - * indeterminate number of requests concurrently. - * - * @param ClientInterface $client Client used to send the requests - * @param array|\Iterator $requests Requests to send concurrently. - * @param array $options Passes through the options available in - * {@see Pool::__construct} - * - * @return array Returns an array containing the response or an exception - * in the same order that the requests were sent. - * - * @throws \InvalidArgumentException if the event format is incorrect. - */ - public static function batch(ClientInterface $client, $requests, array $options = []): array - { - $res = []; - self::cmpCallback($options, 'fulfilled', $res); - self::cmpCallback($options, 'rejected', $res); - $pool = new static($client, $requests, $options); - $pool->promise()->wait(); - \ksort($res); - - return $res; - } - - /** - * Execute callback(s) - */ - private static function cmpCallback(array &$options, string $name, array &$results): void - { - if (!isset($options[$name])) { - $options[$name] = static function ($v, $k) use (&$results) { - $results[$k] = $v; - }; - } else { - $currentFn = $options[$name]; - $options[$name] = static function ($v, $k) use (&$results, $currentFn) { - $currentFn($v, $k); - $results[$k] = $v; - }; - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php deleted file mode 100644 index 7dde6c5f..00000000 --- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +++ /dev/null @@ -1,105 +0,0 @@ -nextHandler = $nextHandler; - } - - public function __invoke(RequestInterface $request, array $options): PromiseInterface - { - $fn = $this->nextHandler; - - // Don't do anything if the request has no body. - if ($request->getBody()->getSize() === 0) { - return $fn($request, $options); - } - - $modify = []; - - // Add a default content-type if possible. - if (!$request->hasHeader('Content-Type')) { - if ($uri = $request->getBody()->getMetadata('uri')) { - if (is_string($uri) && $type = Psr7\MimeType::fromFilename($uri)) { - $modify['set_headers']['Content-Type'] = $type; - } - } - } - - // Add a default content-length or transfer-encoding header. - if (!$request->hasHeader('Content-Length') - && !$request->hasHeader('Transfer-Encoding') - ) { - $size = $request->getBody()->getSize(); - if ($size !== null) { - $modify['set_headers']['Content-Length'] = $size; - } else { - $modify['set_headers']['Transfer-Encoding'] = 'chunked'; - } - } - - // Add the expect header if needed. - $this->addExpectHeader($request, $options, $modify); - - return $fn(Psr7\Utils::modifyRequest($request, $modify), $options); - } - - /** - * Add expect header - */ - private function addExpectHeader(RequestInterface $request, array $options, array &$modify): void - { - // Determine if the Expect header should be used - if ($request->hasHeader('Expect')) { - return; - } - - $expect = $options['expect'] ?? null; - - // Return if disabled or using HTTP/1.0 - if ($expect === false || $request->getProtocolVersion() === '1.0') { - return; - } - - // The expect header is unconditionally enabled - if ($expect === true) { - $modify['set_headers']['Expect'] = '100-Continue'; - - return; - } - - // By default, send the expect header when the payload is > 1mb - if ($expect === null) { - $expect = 1048576; - } - - // Always add if the body cannot be rewound, the size cannot be - // determined, or the size is greater than the cutoff threshold - $body = $request->getBody(); - $size = $body->getSize(); - - if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { - $modify['set_headers']['Expect'] = '100-Continue'; - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php deleted file mode 100644 index 7aa21a62..00000000 --- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +++ /dev/null @@ -1,228 +0,0 @@ - 5, - 'protocols' => ['http', 'https'], - 'strict' => false, - 'referer' => false, - 'track_redirects' => false, - ]; - - /** - * @var callable(RequestInterface, array): PromiseInterface - */ - private $nextHandler; - - /** - * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke. - */ - public function __construct(callable $nextHandler) - { - $this->nextHandler = $nextHandler; - } - - public function __invoke(RequestInterface $request, array $options): PromiseInterface - { - $fn = $this->nextHandler; - - if (empty($options['allow_redirects'])) { - return $fn($request, $options); - } - - if ($options['allow_redirects'] === true) { - $options['allow_redirects'] = self::$defaultSettings; - } elseif (!\is_array($options['allow_redirects'])) { - throw new \InvalidArgumentException('allow_redirects must be true, false, or array'); - } else { - // Merge the default settings with the provided settings - $options['allow_redirects'] += self::$defaultSettings; - } - - if (empty($options['allow_redirects']['max'])) { - return $fn($request, $options); - } - - return $fn($request, $options) - ->then(function (ResponseInterface $response) use ($request, $options) { - return $this->checkRedirect($request, $options, $response); - }); - } - - /** - * @return ResponseInterface|PromiseInterface - */ - public function checkRedirect(RequestInterface $request, array $options, ResponseInterface $response) - { - if (\strpos((string) $response->getStatusCode(), '3') !== 0 - || !$response->hasHeader('Location') - ) { - return $response; - } - - $this->guardMax($request, $response, $options); - $nextRequest = $this->modifyRequest($request, $options, $response); - - // If authorization is handled by curl, unset it if URI is cross-origin. - if (Psr7\UriComparator::isCrossOrigin($request->getUri(), $nextRequest->getUri()) && defined('\CURLOPT_HTTPAUTH')) { - unset( - $options['curl'][\CURLOPT_HTTPAUTH], - $options['curl'][\CURLOPT_USERPWD] - ); - } - - if (isset($options['allow_redirects']['on_redirect'])) { - ($options['allow_redirects']['on_redirect'])( - $request, - $response, - $nextRequest->getUri() - ); - } - - $promise = $this($nextRequest, $options); - - // Add headers to be able to track history of redirects. - if (!empty($options['allow_redirects']['track_redirects'])) { - return $this->withTracking( - $promise, - (string) $nextRequest->getUri(), - $response->getStatusCode() - ); - } - - return $promise; - } - - /** - * Enable tracking on promise. - */ - private function withTracking(PromiseInterface $promise, string $uri, int $statusCode): PromiseInterface - { - return $promise->then( - static function (ResponseInterface $response) use ($uri, $statusCode) { - // Note that we are pushing to the front of the list as this - // would be an earlier response than what is currently present - // in the history header. - $historyHeader = $response->getHeader(self::HISTORY_HEADER); - $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER); - \array_unshift($historyHeader, $uri); - \array_unshift($statusHeader, (string) $statusCode); - - return $response->withHeader(self::HISTORY_HEADER, $historyHeader) - ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader); - } - ); - } - - /** - * Check for too many redirects. - * - * @throws TooManyRedirectsException Too many redirects. - */ - private function guardMax(RequestInterface $request, ResponseInterface $response, array &$options): void - { - $current = $options['__redirect_count'] - ?? 0; - $options['__redirect_count'] = $current + 1; - $max = $options['allow_redirects']['max']; - - if ($options['__redirect_count'] > $max) { - throw new TooManyRedirectsException("Will not follow more than {$max} redirects", $request, $response); - } - } - - public function modifyRequest(RequestInterface $request, array $options, ResponseInterface $response): RequestInterface - { - // Request modifications to apply. - $modify = []; - $protocols = $options['allow_redirects']['protocols']; - - // Use a GET request if this is an entity enclosing request and we are - // not forcing RFC compliance, but rather emulating what all browsers - // would do. - $statusCode = $response->getStatusCode(); - if ($statusCode == 303 - || ($statusCode <= 302 && !$options['allow_redirects']['strict']) - ) { - $safeMethods = ['GET', 'HEAD', 'OPTIONS']; - $requestMethod = $request->getMethod(); - - $modify['method'] = in_array($requestMethod, $safeMethods) ? $requestMethod : 'GET'; - $modify['body'] = ''; - } - - $uri = self::redirectUri($request, $response, $protocols); - if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) { - $idnOptions = ($options['idn_conversion'] === true) ? \IDNA_DEFAULT : $options['idn_conversion']; - $uri = Utils::idnUriConvert($uri, $idnOptions); - } - - $modify['uri'] = $uri; - Psr7\Message::rewindBody($request); - - // Add the Referer header if it is told to do so and only - // add the header if we are not redirecting from https to http. - if ($options['allow_redirects']['referer'] - && $modify['uri']->getScheme() === $request->getUri()->getScheme() - ) { - $uri = $request->getUri()->withUserInfo(''); - $modify['set_headers']['Referer'] = (string) $uri; - } else { - $modify['remove_headers'][] = 'Referer'; - } - - // Remove Authorization and Cookie headers if URI is cross-origin. - if (Psr7\UriComparator::isCrossOrigin($request->getUri(), $modify['uri'])) { - $modify['remove_headers'][] = 'Authorization'; - $modify['remove_headers'][] = 'Cookie'; - } - - return Psr7\Utils::modifyRequest($request, $modify); - } - - /** - * Set the appropriate URL on the request based on the location header. - */ - private static function redirectUri( - RequestInterface $request, - ResponseInterface $response, - array $protocols - ): UriInterface { - $location = Psr7\UriResolver::resolve( - $request->getUri(), - new Psr7\Uri($response->getHeaderLine('Location')) - ); - - // Ensure that the redirect URI is allowed based on the protocols. - if (!\in_array($location->getScheme(), $protocols)) { - throw new BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response); - } - - return $location; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php deleted file mode 100644 index 84a3500e..00000000 --- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php +++ /dev/null @@ -1,274 +0,0 @@ -decider = $decider; - $this->nextHandler = $nextHandler; - $this->delay = $delay ?: __CLASS__.'::exponentialDelay'; - } - - /** - * Default exponential backoff delay function. - * - * @return int milliseconds. - */ - public static function exponentialDelay(int $retries): int - { - return (int) 2 ** ($retries - 1) * 1000; - } - - public function __invoke(RequestInterface $request, array $options): PromiseInterface - { - if (!isset($options['retries'])) { - $options['retries'] = 0; - } - - $fn = $this->nextHandler; - - return $fn($request, $options) - ->then( - $this->onFulfilled($request, $options), - $this->onRejected($request, $options) - ); - } - - /** - * Execute fulfilled closure - */ - private function onFulfilled(RequestInterface $request, array $options): callable - { - return function ($value) use ($request, $options) { - if (!($this->decider)( - $options['retries'], - $request, - $value, - null - )) { - return $value; - } - - return $this->doRetry($request, $options, $value); - }; - } - - /** - * Execute rejected closure - */ - private function onRejected(RequestInterface $req, array $options): callable - { - return function ($reason) use ($req, $options) { - if (!($this->decider)( - $options['retries'], - $req, - null, - $reason - )) { - return P\Create::rejectionFor($reason); - } - - return $this->doRetry($req, $options); - }; - } - - private function doRetry(RequestInterface $request, array $options, ?ResponseInterface $response = null): PromiseInterface - { - $options['delay'] = ($this->delay)(++$options['retries'], $response, $request); - - return $this($request, $options); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php deleted file mode 100644 index 93fa334c..00000000 --- a/vendor/guzzlehttp/guzzle/src/TransferStats.php +++ /dev/null @@ -1,133 +0,0 @@ -request = $request; - $this->response = $response; - $this->transferTime = $transferTime; - $this->handlerErrorData = $handlerErrorData; - $this->handlerStats = $handlerStats; - } - - public function getRequest(): RequestInterface - { - return $this->request; - } - - /** - * Returns the response that was received (if any). - */ - public function getResponse(): ?ResponseInterface - { - return $this->response; - } - - /** - * Returns true if a response was received. - */ - public function hasResponse(): bool - { - return $this->response !== null; - } - - /** - * Gets handler specific error data. - * - * This might be an exception, a integer representing an error code, or - * anything else. Relying on this value assumes that you know what handler - * you are using. - * - * @return mixed - */ - public function getHandlerErrorData() - { - return $this->handlerErrorData; - } - - /** - * Get the effective URI the request was sent to. - */ - public function getEffectiveUri(): UriInterface - { - return $this->request->getUri(); - } - - /** - * Get the estimated time the request was being transferred by the handler. - * - * @return float|null Time in seconds. - */ - public function getTransferTime(): ?float - { - return $this->transferTime; - } - - /** - * Gets an array of all of the handler specific transfer data. - */ - public function getHandlerStats(): array - { - return $this->handlerStats; - } - - /** - * Get a specific handler statistic from the handler by name. - * - * @param string $stat Handler specific transfer stat to retrieve. - * - * @return mixed|null - */ - public function getHandlerStat(string $stat) - { - return $this->handlerStats[$stat] ?? null; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Utils.php b/vendor/guzzlehttp/guzzle/src/Utils.php deleted file mode 100644 index c6a5893d..00000000 --- a/vendor/guzzlehttp/guzzle/src/Utils.php +++ /dev/null @@ -1,384 +0,0 @@ -= 0) { - if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) { - $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler()); - } elseif (\function_exists('curl_exec')) { - $handler = new CurlHandler(); - } elseif (\function_exists('curl_multi_exec')) { - $handler = new CurlMultiHandler(); - } - } - - if (\ini_get('allow_url_fopen')) { - $handler = $handler - ? Proxy::wrapStreaming($handler, new StreamHandler()) - : new StreamHandler(); - } elseif (!$handler) { - throw new \RuntimeException('GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.'); - } - - return $handler; - } - - /** - * Get the default User-Agent string to use with Guzzle. - */ - public static function defaultUserAgent(): string - { - return sprintf('GuzzleHttp/%d', ClientInterface::MAJOR_VERSION); - } - - /** - * Returns the default cacert bundle for the current system. - * - * First, the openssl.cafile and curl.cainfo php.ini settings are checked. - * If those settings are not configured, then the common locations for - * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X - * and Windows are checked. If any of these file locations are found on - * disk, they will be utilized. - * - * Note: the result of this function is cached for subsequent calls. - * - * @throws \RuntimeException if no bundle can be found. - * - * @deprecated Utils::defaultCaBundle will be removed in guzzlehttp/guzzle:8.0. This method is not needed in PHP 5.6+. - */ - public static function defaultCaBundle(): string - { - static $cached = null; - static $cafiles = [ - // Red Hat, CentOS, Fedora (provided by the ca-certificates package) - '/etc/pki/tls/certs/ca-bundle.crt', - // Ubuntu, Debian (provided by the ca-certificates package) - '/etc/ssl/certs/ca-certificates.crt', - // FreeBSD (provided by the ca_root_nss package) - '/usr/local/share/certs/ca-root-nss.crt', - // SLES 12 (provided by the ca-certificates package) - '/var/lib/ca-certificates/ca-bundle.pem', - // OS X provided by homebrew (using the default path) - '/usr/local/etc/openssl/cert.pem', - // Google app engine - '/etc/ca-certificates.crt', - // Windows? - 'C:\\windows\\system32\\curl-ca-bundle.crt', - 'C:\\windows\\curl-ca-bundle.crt', - ]; - - if ($cached) { - return $cached; - } - - if ($ca = \ini_get('openssl.cafile')) { - return $cached = $ca; - } - - if ($ca = \ini_get('curl.cainfo')) { - return $cached = $ca; - } - - foreach ($cafiles as $filename) { - if (\file_exists($filename)) { - return $cached = $filename; - } - } - - throw new \RuntimeException( - <<< EOT -No system CA bundle could be found in any of the the common system locations. -PHP versions earlier than 5.6 are not properly configured to use the system's -CA bundle by default. In order to verify peer certificates, you will need to -supply the path on disk to a certificate bundle to the 'verify' request -option: https://docs.guzzlephp.org/en/latest/request-options.html#verify. If -you do not need a specific certificate bundle, then Mozilla provides a commonly -used CA bundle which can be downloaded here (provided by the maintainer of -cURL): https://curl.haxx.se/ca/cacert.pem. Once you have a CA bundle available -on disk, you can set the 'openssl.cafile' PHP ini setting to point to the path -to the file, allowing you to omit the 'verify' request option. See -https://curl.haxx.se/docs/sslcerts.html for more information. -EOT - ); - } - - /** - * Creates an associative array of lowercase header names to the actual - * header casing. - */ - public static function normalizeHeaderKeys(array $headers): array - { - $result = []; - foreach (\array_keys($headers) as $key) { - $result[\strtolower($key)] = $key; - } - - return $result; - } - - /** - * Returns true if the provided host matches any of the no proxy areas. - * - * This method will strip a port from the host if it is present. Each pattern - * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a - * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" == - * "baz.foo.com", but ".foo.com" != "foo.com"). - * - * Areas are matched in the following cases: - * 1. "*" (without quotes) always matches any hosts. - * 2. An exact match. - * 3. The area starts with "." and the area is the last part of the host. e.g. - * '.mit.edu' will match any host that ends with '.mit.edu'. - * - * @param string $host Host to check against the patterns. - * @param string[] $noProxyArray An array of host patterns. - * - * @throws InvalidArgumentException - */ - public static function isHostInNoProxy(string $host, array $noProxyArray): bool - { - if (\strlen($host) === 0) { - throw new InvalidArgumentException('Empty host provided'); - } - - // Strip port if present. - [$host] = \explode(':', $host, 2); - - foreach ($noProxyArray as $area) { - // Always match on wildcards. - if ($area === '*') { - return true; - } - - if (empty($area)) { - // Don't match on empty values. - continue; - } - - if ($area === $host) { - // Exact matches. - return true; - } - // Special match if the area when prefixed with ".". Remove any - // existing leading "." and add a new leading ".". - $area = '.'.\ltrim($area, '.'); - if (\substr($host, -\strlen($area)) === $area) { - return true; - } - } - - return false; - } - - /** - * Wrapper for json_decode that throws when an error occurs. - * - * @param string $json JSON data to parse - * @param bool $assoc When true, returned objects will be converted - * into associative arrays. - * @param int $depth User specified recursion depth. - * @param int $options Bitmask of JSON decode options. - * - * @return object|array|string|int|float|bool|null - * - * @throws InvalidArgumentException if the JSON cannot be decoded. - * - * @see https://www.php.net/manual/en/function.json-decode.php - */ - public static function jsonDecode(string $json, bool $assoc = false, int $depth = 512, int $options = 0) - { - $data = \json_decode($json, $assoc, $depth, $options); - if (\JSON_ERROR_NONE !== \json_last_error()) { - throw new InvalidArgumentException('json_decode error: '.\json_last_error_msg()); - } - - return $data; - } - - /** - * Wrapper for JSON encoding that throws when an error occurs. - * - * @param mixed $value The value being encoded - * @param int $options JSON encode option bitmask - * @param int $depth Set the maximum depth. Must be greater than zero. - * - * @throws InvalidArgumentException if the JSON cannot be encoded. - * - * @see https://www.php.net/manual/en/function.json-encode.php - */ - public static function jsonEncode($value, int $options = 0, int $depth = 512): string - { - $json = \json_encode($value, $options, $depth); - if (\JSON_ERROR_NONE !== \json_last_error()) { - throw new InvalidArgumentException('json_encode error: '.\json_last_error_msg()); - } - - /** @var string */ - return $json; - } - - /** - * Wrapper for the hrtime() or microtime() functions - * (depending on the PHP version, one of the two is used) - * - * @return float UNIX timestamp - * - * @internal - */ - public static function currentTime(): float - { - return (float) \function_exists('hrtime') ? \hrtime(true) / 1e9 : \microtime(true); - } - - /** - * @throws InvalidArgumentException - * - * @internal - */ - public static function idnUriConvert(UriInterface $uri, int $options = 0): UriInterface - { - if ($uri->getHost()) { - $asciiHost = self::idnToAsci($uri->getHost(), $options, $info); - if ($asciiHost === false) { - $errorBitSet = $info['errors'] ?? 0; - - $errorConstants = array_filter(array_keys(get_defined_constants()), static function (string $name): bool { - return substr($name, 0, 11) === 'IDNA_ERROR_'; - }); - - $errors = []; - foreach ($errorConstants as $errorConstant) { - if ($errorBitSet & constant($errorConstant)) { - $errors[] = $errorConstant; - } - } - - $errorMessage = 'IDN conversion failed'; - if ($errors) { - $errorMessage .= ' (errors: '.implode(', ', $errors).')'; - } - - throw new InvalidArgumentException($errorMessage); - } - if ($uri->getHost() !== $asciiHost) { - // Replace URI only if the ASCII version is different - $uri = $uri->withHost($asciiHost); - } - } - - return $uri; - } - - /** - * @internal - */ - public static function getenv(string $name): ?string - { - if (isset($_SERVER[$name])) { - return (string) $_SERVER[$name]; - } - - if (\PHP_SAPI === 'cli' && ($value = \getenv($name)) !== false && $value !== null) { - return (string) $value; - } - - return null; - } - - /** - * @return string|false - */ - private static function idnToAsci(string $domain, int $options, ?array &$info = []) - { - if (\function_exists('idn_to_ascii') && \defined('INTL_IDNA_VARIANT_UTS46')) { - return \idn_to_ascii($domain, $options, \INTL_IDNA_VARIANT_UTS46, $info); - } - - throw new \Error('ext-idn or symfony/polyfill-intl-idn not loaded or too old'); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php deleted file mode 100644 index 9ab4b964..00000000 --- a/vendor/guzzlehttp/guzzle/src/functions.php +++ /dev/null @@ -1,167 +0,0 @@ - -Copyright (c) 2015 Graham Campbell -Copyright (c) 2017 Tobias Schultze -Copyright (c) 2020 Tobias Nyholm - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md deleted file mode 100644 index 493a9315..00000000 --- a/vendor/guzzlehttp/promises/README.md +++ /dev/null @@ -1,559 +0,0 @@ -# Guzzle Promises - -[Promises/A+](https://promisesaplus.com/) implementation that handles promise -chaining and resolution iteratively, allowing for "infinite" promise chaining -while keeping the stack size constant. Read [this blog post](https://blog.domenic.me/youre-missing-the-point-of-promises/) -for a general introduction to promises. - -- [Features](#features) -- [Quick start](#quick-start) -- [Synchronous wait](#synchronous-wait) -- [Cancellation](#cancellation) -- [API](#api) - - [Promise](#promise) - - [FulfilledPromise](#fulfilledpromise) - - [RejectedPromise](#rejectedpromise) -- [Promise interop](#promise-interop) -- [Implementation notes](#implementation-notes) - - -## Features - -- [Promises/A+](https://promisesaplus.com/) implementation. -- Promise resolution and chaining is handled iteratively, allowing for - "infinite" promise chaining. -- Promises have a synchronous `wait` method. -- Promises can be cancelled. -- Works with any object that has a `then` function. -- C# style async/await coroutine promises using - `GuzzleHttp\Promise\Coroutine::of()`. - - -## Installation - -```shell -composer require guzzlehttp/promises -``` - - -## Version Guidance - -| Version | Status | PHP Version | -|---------|---------------------|--------------| -| 1.x | Security fixes only | >=5.5,<8.3 | -| 2.x | Latest | >=7.2.5,<8.6 | - - -## Quick Start - -A *promise* represents the eventual result of an asynchronous operation. The -primary way of interacting with a promise is through its `then` method, which -registers callbacks to receive either a promise's eventual value or the reason -why the promise cannot be fulfilled. - -### Callbacks - -Callbacks are registered with the `then` method by providing an optional -`$onFulfilled` followed by an optional `$onRejected` function. - - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise->then( - // $onFulfilled - function ($value) { - echo 'The promise was fulfilled.'; - }, - // $onRejected - function ($reason) { - echo 'The promise was rejected.'; - } -); -``` - -*Resolving* a promise means that you either fulfill a promise with a *value* or -reject a promise with a *reason*. Resolving a promise triggers callbacks -registered with the promise's `then` method. These callbacks are triggered -only once and in the order in which they were added. - -### Resolving a Promise - -Promises are fulfilled using the `resolve($value)` method. Resolving a promise -with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger -all of the onFulfilled callbacks (resolving a promise with a rejected promise -will reject the promise and trigger the `$onRejected` callbacks). - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise - ->then(function ($value) { - // Return a value and don't break the chain - return "Hello, " . $value; - }) - // This then is executed after the first then and receives the value - // returned from the first then. - ->then(function ($value) { - echo $value; - }); - -// Resolving the promise triggers the $onFulfilled callbacks and outputs -// "Hello, reader." -$promise->resolve('reader.'); -``` - -### Promise Forwarding - -Promises can be chained one after the other. Each then in the chain is a new -promise. The return value of a promise is what's forwarded to the next -promise in the chain. Returning a promise in a `then` callback will cause the -subsequent promises in the chain to only be fulfilled when the returned promise -has been fulfilled. The next promise in the chain will be invoked with the -resolved value of the promise. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$nextPromise = new Promise(); - -$promise - ->then(function ($value) use ($nextPromise) { - echo $value; - return $nextPromise; - }) - ->then(function ($value) { - echo $value; - }); - -// Triggers the first callback and outputs "A" -$promise->resolve('A'); -// Triggers the second callback and outputs "B" -$nextPromise->resolve('B'); -``` - -### Promise Rejection - -When a promise is rejected, the `$onRejected` callbacks are invoked with the -rejection reason. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise->then(null, function ($reason) { - echo $reason; -}); - -$promise->reject('Error!'); -// Outputs "Error!" -``` - -### Rejection Forwarding - -If an exception is thrown in an `$onRejected` callback, subsequent -`$onRejected` callbacks are invoked with the thrown exception as the reason. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise->then(null, function ($reason) { - throw new Exception($reason); -})->then(null, function ($reason) { - assert($reason->getMessage() === 'Error!'); -}); - -$promise->reject('Error!'); -``` - -You can also forward a rejection down the promise chain by returning a -`GuzzleHttp\Promise\RejectedPromise` in either an `$onFulfilled` or -`$onRejected` callback. - -```php -use GuzzleHttp\Promise\Promise; -use GuzzleHttp\Promise\RejectedPromise; - -$promise = new Promise(); -$promise->then(null, function ($reason) { - return new RejectedPromise($reason); -})->then(null, function ($reason) { - assert($reason === 'Error!'); -}); - -$promise->reject('Error!'); -``` - -If an exception is not thrown in a `$onRejected` callback and the callback -does not return a rejected promise, downstream `$onFulfilled` callbacks are -invoked using the value returned from the `$onRejected` callback. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise - ->then(null, function ($reason) { - return "It's ok"; - }) - ->then(function ($value) { - assert($value === "It's ok"); - }); - -$promise->reject('Error!'); -``` - - -## Synchronous Wait - -You can synchronously force promises to complete using a promise's `wait` -method. When creating a promise, you can provide a wait function that is used -to synchronously force a promise to complete. When a wait function is invoked -it is expected to deliver a value to the promise or reject the promise. If the -wait function does not deliver a value, then an exception is thrown. The wait -function provided to a promise constructor is invoked when the `wait` function -of the promise is called. - -```php -$promise = new Promise(function () use (&$promise) { - $promise->resolve('foo'); -}); - -// Calling wait will return the value of the promise. -echo $promise->wait(); // outputs "foo" -``` - -If an exception is encountered while invoking the wait function of a promise, -the promise is rejected with the exception and the exception is thrown. - -```php -$promise = new Promise(function () use (&$promise) { - throw new Exception('foo'); -}); - -$promise->wait(); // throws the exception. -``` - -Calling `wait` on a promise that has been fulfilled will not trigger the wait -function. It will simply return the previously resolved value. - -```php -$promise = new Promise(function () { die('this is not called!'); }); -$promise->resolve('foo'); -echo $promise->wait(); // outputs "foo" -``` - -Calling `wait` on a promise that has been rejected will throw an exception. If -the rejection reason is an instance of `\Exception` the reason is thrown. -Otherwise, a `GuzzleHttp\Promise\RejectionException` is thrown and the reason -can be obtained by calling the `getReason` method of the exception. - -```php -$promise = new Promise(); -$promise->reject('foo'); -$promise->wait(); -``` - -> PHP Fatal error: Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo' - -### Unwrapping a Promise - -When synchronously waiting on a promise, you are joining the state of the -promise into the current state of execution (i.e., return the value of the -promise if it was fulfilled or throw an exception if it was rejected). This is -called "unwrapping" the promise. Waiting on a promise will by default unwrap -the promise state. - -You can force a promise to resolve and *not* unwrap the state of the promise -by passing `false` to the first argument of the `wait` function: - -```php -$promise = new Promise(); -$promise->reject('foo'); -// This will not throw an exception. It simply ensures the promise has -// been resolved. -$promise->wait(false); -``` - -When unwrapping a promise, the resolved value of the promise will be waited -upon until the unwrapped value is not a promise. This means that if you resolve -promise A with a promise B and unwrap promise A, the value returned by the -wait function will be the value delivered to promise B. - -**Note**: when you do not unwrap the promise, no value is returned. - - -## Cancellation - -You can cancel a promise that has not yet been fulfilled using the `cancel()` -method of a promise. When creating a promise you can provide an optional -cancel function that when invoked cancels the action of computing a resolution -of the promise. - - -## API - -### Promise - -When creating a promise object, you can provide an optional `$waitFn` and -`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is -expected to resolve the promise. `$cancelFn` is a function with no arguments -that is expected to cancel the computation of a promise. It is invoked when the -`cancel()` method of a promise is called. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise( - function () use (&$promise) { - $promise->resolve('waited'); - }, - function () { - // do something that will cancel the promise computation (e.g., close - // a socket, cancel a database query, etc...) - } -); - -assert('waited' === $promise->wait()); -``` - -A promise has the following methods: - -- `then(callable $onFulfilled, callable $onRejected) : PromiseInterface` - - Appends fulfillment and rejection handlers to the promise, and returns a new promise resolving to the return value of the called handler. - -- `otherwise(callable $onRejected) : PromiseInterface` - - Appends a rejection handler callback to the promise, and returns a new promise resolving to the return value of the callback if it is called, or to its original fulfillment value if the promise is instead fulfilled. - -- `wait($unwrap = true) : mixed` - - Synchronously waits on the promise to complete. - - `$unwrap` controls whether or not the value of the promise is returned for a - fulfilled promise or if an exception is thrown if the promise is rejected. - This is set to `true` by default. - -- `cancel()` - - Attempts to cancel the promise if possible. The promise being cancelled and - the parent most ancestor that has not yet been resolved will also be - cancelled. Any promises waiting on the cancelled promise to resolve will also - be cancelled. - -- `getState() : string` - - Returns the state of the promise. One of `pending`, `fulfilled`, or - `rejected`. - -- `resolve($value)` - - Fulfills the promise with the given `$value`. - -- `reject($reason)` - - Rejects the promise with the given `$reason`. - - -### FulfilledPromise - -A fulfilled promise can be created to represent a promise that has been -fulfilled. - -```php -use GuzzleHttp\Promise\FulfilledPromise; - -$promise = new FulfilledPromise('value'); - -// Fulfilled callbacks are immediately invoked. -$promise->then(function ($value) { - echo $value; -}); -``` - - -### RejectedPromise - -A rejected promise can be created to represent a promise that has been -rejected. - -```php -use GuzzleHttp\Promise\RejectedPromise; - -$promise = new RejectedPromise('Error'); - -// Rejected callbacks are immediately invoked. -$promise->then(null, function ($reason) { - echo $reason; -}); -``` - - -## Promise Interoperability - -This library works with foreign promises that have a `then` method. This means -you can use Guzzle promises with [React promises](https://github.com/reactphp/promise) -for example. When a foreign promise is returned inside of a then method -callback, promise resolution will occur recursively. - -```php -// Create a React promise -$deferred = new React\Promise\Deferred(); -$reactPromise = $deferred->promise(); - -// Create a Guzzle promise that is fulfilled with a React promise. -$guzzlePromise = new GuzzleHttp\Promise\Promise(); -$guzzlePromise->then(function ($value) use ($reactPromise) { - // Do something something with the value... - // Return the React promise - return $reactPromise; -}); -``` - -Please note that wait and cancel chaining is no longer possible when forwarding -a foreign promise. You will need to wrap a third-party promise with a Guzzle -promise in order to utilize wait and cancel functions with foreign promises. - - -### Event Loop Integration - -In order to keep the stack size constant, Guzzle promises are resolved -asynchronously using a task queue. When waiting on promises synchronously, the -task queue will be automatically run to ensure that the blocking promise and -any forwarded promises are resolved. When using promises asynchronously in an -event loop, you will need to run the task queue on each tick of the loop. If -you do not run the task queue, then promises will not be resolved. - -You can run the task queue using the `run()` method of the global task queue -instance. - -```php -// Get the global task queue -$queue = GuzzleHttp\Promise\Utils::queue(); -$queue->run(); -``` - -For example, you could use Guzzle promises with React using a periodic timer: - -```php -$loop = React\EventLoop\Factory::create(); -$loop->addPeriodicTimer(0, [$queue, 'run']); -``` - - -## Implementation Notes - -### Promise Resolution and Chaining is Handled Iteratively - -By shuffling pending handlers from one owner to another, promises are -resolved iteratively, allowing for "infinite" then chaining. - -```php -then(function ($v) { - // The stack size remains constant (a good thing) - echo xdebug_get_stack_depth() . ', '; - return $v + 1; - }); -} - -$parent->resolve(0); -var_dump($p->wait()); // int(1000) - -``` - -When a promise is fulfilled or rejected with a non-promise value, the promise -then takes ownership of the handlers of each child promise and delivers values -down the chain without using recursion. - -When a promise is resolved with another promise, the original promise transfers -all of its pending handlers to the new promise. When the new promise is -eventually resolved, all of the pending handlers are delivered the forwarded -value. - -### A Promise is the Deferred - -Some promise libraries implement promises using a deferred object to represent -a computation and a promise object to represent the delivery of the result of -the computation. This is a nice separation of computation and delivery because -consumers of the promise cannot modify the value that will be eventually -delivered. - -One side effect of being able to implement promise resolution and chaining -iteratively is that you need to be able for one promise to reach into the state -of another promise to shuffle around ownership of handlers. In order to achieve -this without making the handlers of a promise publicly mutable, a promise is -also the deferred value, allowing promises of the same parent class to reach -into and modify the private properties of promises of the same type. While this -does allow consumers of the value to modify the resolution or rejection of the -deferred, it is a small price to pay for keeping the stack size constant. - -```php -$promise = new Promise(); -$promise->then(function ($value) { echo $value; }); -// The promise is the deferred value, so you can deliver a value to it. -$promise->resolve('foo'); -// prints "foo" -``` - - -## Upgrading from Function API - -A static API was first introduced in 1.4.0, in order to mitigate problems with -functions conflicting between global and local copies of the package. The -function API was removed in 2.0.0. A migration table has been provided here for -your convenience: - -| Original Function | Replacement Method | -|----------------|----------------| -| `queue` | `Utils::queue` | -| `task` | `Utils::task` | -| `promise_for` | `Create::promiseFor` | -| `rejection_for` | `Create::rejectionFor` | -| `exception_for` | `Create::exceptionFor` | -| `iter_for` | `Create::iterFor` | -| `inspect` | `Utils::inspect` | -| `inspect_all` | `Utils::inspectAll` | -| `unwrap` | `Utils::unwrap` | -| `all` | `Utils::all` | -| `some` | `Utils::some` | -| `any` | `Utils::any` | -| `settle` | `Utils::settle` | -| `each` | `Each::of` | -| `each_limit` | `Each::ofLimit` | -| `each_limit_all` | `Each::ofLimitAll` | -| `!is_fulfilled` | `Is::pending` | -| `is_fulfilled` | `Is::fulfilled` | -| `is_rejected` | `Is::rejected` | -| `is_settled` | `Is::settled` | -| `coroutine` | `Coroutine::of` | - - -## Security - -If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/promises/security/policy) for more information. - - -## License - -Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information. - - -## For Enterprise - -Available as part of the Tidelift Subscription - -The maintainers of Guzzle and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-guzzlehttp-promises?utm_source=packagist-guzzlehttp-promises&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json deleted file mode 100644 index 9d6e8567..00000000 --- a/vendor/guzzlehttp/promises/composer.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "guzzlehttp/promises", - "description": "Guzzle promises library", - "keywords": ["promise"], - "license": "MIT", - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "GuzzleHttp\\Promise\\Tests\\": "tests/" - } - }, - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "config": { - "allow-plugins": { - "bamarni/composer-bin-plugin": true - }, - "preferred-install": "dist", - "sort-packages": true - } -} diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php deleted file mode 100644 index 40ffdbcf..00000000 --- a/vendor/guzzlehttp/promises/src/AggregateException.php +++ /dev/null @@ -1,19 +0,0 @@ -then(function ($v) { echo $v; }); - * - * @param callable $generatorFn Generator function to wrap into a promise. - * - * @return Promise - * - * @see https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration - */ -final class Coroutine implements PromiseInterface -{ - /** - * @var PromiseInterface|null - */ - private $currentPromise; - - /** - * @var Generator - */ - private $generator; - - /** - * @var Promise - */ - private $result; - - public function __construct(callable $generatorFn) - { - $this->generator = $generatorFn(); - $this->result = new Promise(function (): void { - while (isset($this->currentPromise)) { - $this->currentPromise->wait(); - } - }); - try { - $this->nextCoroutine($this->generator->current()); - } catch (Throwable $throwable) { - $this->result->reject($throwable); - } - } - - /** - * Create a new coroutine. - */ - public static function of(callable $generatorFn): self - { - return new self($generatorFn); - } - - public function then( - ?callable $onFulfilled = null, - ?callable $onRejected = null - ): PromiseInterface { - return $this->result->then($onFulfilled, $onRejected); - } - - public function otherwise(callable $onRejected): PromiseInterface - { - return $this->result->otherwise($onRejected); - } - - public function wait(bool $unwrap = true) - { - return $this->result->wait($unwrap); - } - - public function getState(): string - { - return $this->result->getState(); - } - - public function resolve($value): void - { - $this->result->resolve($value); - } - - public function reject($reason): void - { - $this->result->reject($reason); - } - - public function cancel(): void - { - $this->currentPromise->cancel(); - $this->result->cancel(); - } - - private function nextCoroutine($yielded): void - { - $this->currentPromise = Create::promiseFor($yielded) - ->then([$this, '_handleSuccess'], [$this, '_handleFailure']); - } - - /** - * @internal - */ - public function _handleSuccess($value): void - { - unset($this->currentPromise); - try { - $next = $this->generator->send($value); - if ($this->generator->valid()) { - $this->nextCoroutine($next); - } else { - $this->result->resolve($value); - } - } catch (Throwable $throwable) { - $this->result->reject($throwable); - } - } - - /** - * @internal - */ - public function _handleFailure($reason): void - { - unset($this->currentPromise); - try { - $nextYield = $this->generator->throw(Create::exceptionFor($reason)); - // The throw was caught, so keep iterating on the coroutine - $this->nextCoroutine($nextYield); - } catch (Throwable $throwable) { - $this->result->reject($throwable); - } - } -} diff --git a/vendor/guzzlehttp/promises/src/Create.php b/vendor/guzzlehttp/promises/src/Create.php deleted file mode 100644 index 9d3fc4a1..00000000 --- a/vendor/guzzlehttp/promises/src/Create.php +++ /dev/null @@ -1,79 +0,0 @@ -then([$promise, 'resolve'], [$promise, 'reject']); - - return $promise; - } - - return new FulfilledPromise($value); - } - - /** - * Creates a rejected promise for a reason if the reason is not a promise. - * If the provided reason is a promise, then it is returned as-is. - * - * @param mixed $reason Promise or reason. - */ - public static function rejectionFor($reason): PromiseInterface - { - if ($reason instanceof PromiseInterface) { - return $reason; - } - - return new RejectedPromise($reason); - } - - /** - * Create an exception for a rejected promise value. - * - * @param mixed $reason - */ - public static function exceptionFor($reason): \Throwable - { - if ($reason instanceof \Throwable) { - return $reason; - } - - return new RejectionException($reason); - } - - /** - * Returns an iterator for the given value. - * - * @param mixed $value - */ - public static function iterFor($value): \Iterator - { - if ($value instanceof \Iterator) { - return $value; - } - - if (is_array($value)) { - return new \ArrayIterator($value); - } - - return new \ArrayIterator([$value]); - } -} diff --git a/vendor/guzzlehttp/promises/src/Each.php b/vendor/guzzlehttp/promises/src/Each.php deleted file mode 100644 index dd72c831..00000000 --- a/vendor/guzzlehttp/promises/src/Each.php +++ /dev/null @@ -1,81 +0,0 @@ - $onFulfilled, - 'rejected' => $onRejected, - ]))->promise(); - } - - /** - * Like of, but only allows a certain number of outstanding promises at any - * given time. - * - * $concurrency may be an integer or a function that accepts the number of - * pending promises and returns a numeric concurrency limit value to allow - * for dynamic a concurrency size. - * - * @param mixed $iterable - * @param int|callable $concurrency - */ - public static function ofLimit( - $iterable, - $concurrency, - ?callable $onFulfilled = null, - ?callable $onRejected = null - ): PromiseInterface { - return (new EachPromise($iterable, [ - 'fulfilled' => $onFulfilled, - 'rejected' => $onRejected, - 'concurrency' => $concurrency, - ]))->promise(); - } - - /** - * Like limit, but ensures that no promise in the given $iterable argument - * is rejected. If any promise is rejected, then the aggregate promise is - * rejected with the encountered rejection. - * - * @param mixed $iterable - * @param int|callable $concurrency - */ - public static function ofLimitAll( - $iterable, - $concurrency, - ?callable $onFulfilled = null - ): PromiseInterface { - return self::ofLimit( - $iterable, - $concurrency, - $onFulfilled, - function ($reason, $idx, PromiseInterface $aggregate): void { - $aggregate->reject($reason); - } - ); - } -} diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php deleted file mode 100644 index e1238981..00000000 --- a/vendor/guzzlehttp/promises/src/EachPromise.php +++ /dev/null @@ -1,248 +0,0 @@ -iterable = Create::iterFor($iterable); - - if (isset($config['concurrency'])) { - $this->concurrency = $config['concurrency']; - } - - if (isset($config['fulfilled'])) { - $this->onFulfilled = $config['fulfilled']; - } - - if (isset($config['rejected'])) { - $this->onRejected = $config['rejected']; - } - } - - /** @psalm-suppress InvalidNullableReturnType */ - public function promise(): PromiseInterface - { - if ($this->aggregate) { - return $this->aggregate; - } - - try { - $this->createPromise(); - /** @psalm-assert Promise $this->aggregate */ - $this->iterable->rewind(); - $this->refillPending(); - } catch (\Throwable $e) { - $this->aggregate->reject($e); - } - - /** - * @psalm-suppress NullableReturnStatement - */ - return $this->aggregate; - } - - private function createPromise(): void - { - $this->mutex = false; - $this->aggregate = new Promise(function (): void { - if ($this->checkIfFinished()) { - return; - } - reset($this->pending); - // Consume a potentially fluctuating list of promises while - // ensuring that indexes are maintained (precluding array_shift). - while ($promise = current($this->pending)) { - next($this->pending); - $promise->wait(); - if (Is::settled($this->aggregate)) { - return; - } - } - }); - - // Clear the references when the promise is resolved. - $clearFn = function (): void { - $this->iterable = $this->concurrency = $this->pending = null; - $this->onFulfilled = $this->onRejected = null; - $this->nextPendingIndex = 0; - }; - - $this->aggregate->then($clearFn, $clearFn); - } - - private function refillPending(): void - { - if (!$this->concurrency) { - // Add all pending promises. - while ($this->addPending() && $this->advanceIterator()) { - } - - return; - } - - // Add only up to N pending promises. - $concurrency = is_callable($this->concurrency) - ? ($this->concurrency)(count($this->pending)) - : $this->concurrency; - $concurrency = max($concurrency - count($this->pending), 0); - // Concurrency may be set to 0 to disallow new promises. - if (!$concurrency) { - return; - } - // Add the first pending promise. - $this->addPending(); - // Note this is special handling for concurrency=1 so that we do - // not advance the iterator after adding the first promise. This - // helps work around issues with generators that might not have the - // next value to yield until promise callbacks are called. - while (--$concurrency - && $this->advanceIterator() - && $this->addPending()) { - } - } - - private function addPending(): bool - { - if (!$this->iterable || !$this->iterable->valid()) { - return false; - } - - $promise = Create::promiseFor($this->iterable->current()); - $key = $this->iterable->key(); - - // Iterable keys may not be unique, so we use a counter to - // guarantee uniqueness - $idx = $this->nextPendingIndex++; - - $this->pending[$idx] = $promise->then( - function ($value) use ($idx, $key): void { - if ($this->onFulfilled) { - ($this->onFulfilled)( - $value, - $key, - $this->aggregate - ); - } - $this->step($idx); - }, - function ($reason) use ($idx, $key): void { - if ($this->onRejected) { - ($this->onRejected)( - $reason, - $key, - $this->aggregate - ); - } - $this->step($idx); - } - ); - - return true; - } - - private function advanceIterator(): bool - { - // Place a lock on the iterator so that we ensure to not recurse, - // preventing fatal generator errors. - if ($this->mutex) { - return false; - } - - $this->mutex = true; - - try { - $this->iterable->next(); - $this->mutex = false; - - return true; - } catch (\Throwable $e) { - $this->aggregate->reject($e); - $this->mutex = false; - - return false; - } - } - - private function step(int $idx): void - { - // If the promise was already resolved, then ignore this step. - if (Is::settled($this->aggregate)) { - return; - } - - unset($this->pending[$idx]); - - // Only refill pending promises if we are not locked, preventing the - // EachPromise to recursively invoke the provided iterator, which - // cause a fatal error: "Cannot resume an already running generator" - if ($this->advanceIterator() && !$this->checkIfFinished()) { - // Add more pending promises if possible. - $this->refillPending(); - } - } - - private function checkIfFinished(): bool - { - if (!$this->pending && !$this->iterable->valid()) { - // Resolve the promise if there's nothing left to do. - $this->aggregate->resolve(null); - - return true; - } - - return false; - } -} diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php deleted file mode 100644 index 727ec315..00000000 --- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php +++ /dev/null @@ -1,89 +0,0 @@ -value = $value; - } - - public function then( - ?callable $onFulfilled = null, - ?callable $onRejected = null - ): PromiseInterface { - // Return itself if there is no onFulfilled function. - if (!$onFulfilled) { - return $this; - } - - $queue = Utils::queue(); - $p = new Promise([$queue, 'run']); - $value = $this->value; - $queue->add(static function () use ($p, $value, $onFulfilled): void { - if (Is::pending($p)) { - try { - $p->resolve($onFulfilled($value)); - } catch (\Throwable $e) { - $p->reject($e); - } - } - }); - - return $p; - } - - public function otherwise(callable $onRejected): PromiseInterface - { - return $this->then(null, $onRejected); - } - - public function wait(bool $unwrap = true) - { - return $unwrap ? $this->value : null; - } - - public function getState(): string - { - return self::FULFILLED; - } - - public function resolve($value): void - { - if ($value !== $this->value) { - throw new \LogicException('Cannot resolve a fulfilled promise'); - } - } - - public function reject($reason): void - { - throw new \LogicException('Cannot reject a fulfilled promise'); - } - - public function cancel(): void - { - // pass - } -} diff --git a/vendor/guzzlehttp/promises/src/Is.php b/vendor/guzzlehttp/promises/src/Is.php deleted file mode 100644 index f3f05038..00000000 --- a/vendor/guzzlehttp/promises/src/Is.php +++ /dev/null @@ -1,40 +0,0 @@ -getState() === PromiseInterface::PENDING; - } - - /** - * Returns true if a promise is fulfilled or rejected. - */ - public static function settled(PromiseInterface $promise): bool - { - return $promise->getState() !== PromiseInterface::PENDING; - } - - /** - * Returns true if a promise is fulfilled. - */ - public static function fulfilled(PromiseInterface $promise): bool - { - return $promise->getState() === PromiseInterface::FULFILLED; - } - - /** - * Returns true if a promise is rejected. - */ - public static function rejected(PromiseInterface $promise): bool - { - return $promise->getState() === PromiseInterface::REJECTED; - } -} diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php deleted file mode 100644 index c0c5be2c..00000000 --- a/vendor/guzzlehttp/promises/src/Promise.php +++ /dev/null @@ -1,281 +0,0 @@ -waitFn = $waitFn; - $this->cancelFn = $cancelFn; - } - - public function then( - ?callable $onFulfilled = null, - ?callable $onRejected = null - ): PromiseInterface { - if ($this->state === self::PENDING) { - $p = new Promise(null, [$this, 'cancel']); - $this->handlers[] = [$p, $onFulfilled, $onRejected]; - $p->waitList = $this->waitList; - $p->waitList[] = $this; - - return $p; - } - - // Return a fulfilled promise and immediately invoke any callbacks. - if ($this->state === self::FULFILLED) { - $promise = Create::promiseFor($this->result); - - return $onFulfilled ? $promise->then($onFulfilled) : $promise; - } - - // It's either cancelled or rejected, so return a rejected promise - // and immediately invoke any callbacks. - $rejection = Create::rejectionFor($this->result); - - return $onRejected ? $rejection->then(null, $onRejected) : $rejection; - } - - public function otherwise(callable $onRejected): PromiseInterface - { - return $this->then(null, $onRejected); - } - - public function wait(bool $unwrap = true) - { - $this->waitIfPending(); - - if ($this->result instanceof PromiseInterface) { - return $this->result->wait($unwrap); - } - if ($unwrap) { - if ($this->state === self::FULFILLED) { - return $this->result; - } - // It's rejected so "unwrap" and throw an exception. - throw Create::exceptionFor($this->result); - } - } - - public function getState(): string - { - return $this->state; - } - - public function cancel(): void - { - if ($this->state !== self::PENDING) { - return; - } - - $this->waitFn = $this->waitList = null; - - if ($this->cancelFn) { - $fn = $this->cancelFn; - $this->cancelFn = null; - try { - $fn(); - } catch (\Throwable $e) { - $this->reject($e); - } - } - - // Reject the promise only if it wasn't rejected in a then callback. - /** @psalm-suppress RedundantCondition */ - if ($this->state === self::PENDING) { - $this->reject(new CancellationException('Promise has been cancelled')); - } - } - - public function resolve($value): void - { - $this->settle(self::FULFILLED, $value); - } - - public function reject($reason): void - { - $this->settle(self::REJECTED, $reason); - } - - private function settle(string $state, $value): void - { - if ($this->state !== self::PENDING) { - // Ignore calls with the same resolution. - if ($state === $this->state && $value === $this->result) { - return; - } - throw $this->state === $state - ? new \LogicException("The promise is already {$state}.") - : new \LogicException("Cannot change a {$this->state} promise to {$state}"); - } - - if ($value === $this) { - throw new \LogicException('Cannot fulfill or reject a promise with itself'); - } - - // Clear out the state of the promise but stash the handlers. - $this->state = $state; - $this->result = $value; - $handlers = $this->handlers; - $this->handlers = null; - $this->waitList = $this->waitFn = null; - $this->cancelFn = null; - - if (!$handlers) { - return; - } - - // If the value was not a settled promise or a thenable, then resolve - // it in the task queue using the correct ID. - if (!is_object($value) || !method_exists($value, 'then')) { - $id = $state === self::FULFILLED ? 1 : 2; - // It's a success, so resolve the handlers in the queue. - Utils::queue()->add(static function () use ($id, $value, $handlers): void { - foreach ($handlers as $handler) { - self::callHandler($id, $value, $handler); - } - }); - } elseif ($value instanceof Promise && Is::pending($value)) { - // We can just merge our handlers onto the next promise. - $value->handlers = array_merge($value->handlers, $handlers); - } else { - // Resolve the handlers when the forwarded promise is resolved. - $value->then( - static function ($value) use ($handlers): void { - foreach ($handlers as $handler) { - self::callHandler(1, $value, $handler); - } - }, - static function ($reason) use ($handlers): void { - foreach ($handlers as $handler) { - self::callHandler(2, $reason, $handler); - } - } - ); - } - } - - /** - * Call a stack of handlers using a specific callback index and value. - * - * @param int $index 1 (resolve) or 2 (reject). - * @param mixed $value Value to pass to the callback. - * @param array $handler Array of handler data (promise and callbacks). - */ - private static function callHandler(int $index, $value, array $handler): void - { - /** @var PromiseInterface $promise */ - $promise = $handler[0]; - - // The promise may have been cancelled or resolved before placing - // this thunk in the queue. - if (Is::settled($promise)) { - return; - } - - try { - if (isset($handler[$index])) { - /* - * If $f throws an exception, then $handler will be in the exception - * stack trace. Since $handler contains a reference to the callable - * itself we get a circular reference. We clear the $handler - * here to avoid that memory leak. - */ - $f = $handler[$index]; - unset($handler); - $promise->resolve($f($value)); - } elseif ($index === 1) { - // Forward resolution values as-is. - $promise->resolve($value); - } else { - // Forward rejections down the chain. - $promise->reject($value); - } - } catch (\Throwable $reason) { - $promise->reject($reason); - } - } - - private function waitIfPending(): void - { - if ($this->state !== self::PENDING) { - return; - } elseif ($this->waitFn) { - $this->invokeWaitFn(); - } elseif ($this->waitList) { - $this->invokeWaitList(); - } else { - // If there's no wait function, then reject the promise. - $this->reject('Cannot wait on a promise that has ' - .'no internal wait function. You must provide a wait ' - .'function when constructing the promise to be able to ' - .'wait on a promise.'); - } - - Utils::queue()->run(); - - /** @psalm-suppress RedundantCondition */ - if ($this->state === self::PENDING) { - $this->reject('Invoking the wait callback did not resolve the promise'); - } - } - - private function invokeWaitFn(): void - { - try { - $wfn = $this->waitFn; - $this->waitFn = null; - $wfn(true); - } catch (\Throwable $reason) { - if ($this->state === self::PENDING) { - // The promise has not been resolved yet, so reject the promise - // with the exception. - $this->reject($reason); - } else { - // The promise was already resolved, so there's a problem in - // the application. - throw $reason; - } - } - } - - private function invokeWaitList(): void - { - $waitList = $this->waitList; - $this->waitList = null; - - foreach ($waitList as $result) { - do { - $result->waitIfPending(); - $result = $result->result; - } while ($result instanceof Promise); - - if ($result instanceof PromiseInterface) { - $result->wait(false); - } - } - } -} diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php deleted file mode 100644 index c11721e4..00000000 --- a/vendor/guzzlehttp/promises/src/PromiseInterface.php +++ /dev/null @@ -1,91 +0,0 @@ -reason = $reason; - } - - public function then( - ?callable $onFulfilled = null, - ?callable $onRejected = null - ): PromiseInterface { - // If there's no onRejected callback then just return self. - if (!$onRejected) { - return $this; - } - - $queue = Utils::queue(); - $reason = $this->reason; - $p = new Promise([$queue, 'run']); - $queue->add(static function () use ($p, $reason, $onRejected): void { - if (Is::pending($p)) { - try { - // Return a resolved promise if onRejected does not throw. - $p->resolve($onRejected($reason)); - } catch (\Throwable $e) { - // onRejected threw, so return a rejected promise. - $p->reject($e); - } - } - }); - - return $p; - } - - public function otherwise(callable $onRejected): PromiseInterface - { - return $this->then(null, $onRejected); - } - - public function wait(bool $unwrap = true) - { - if ($unwrap) { - throw Create::exceptionFor($this->reason); - } - - return null; - } - - public function getState(): string - { - return self::REJECTED; - } - - public function resolve($value): void - { - throw new \LogicException('Cannot resolve a rejected promise'); - } - - public function reject($reason): void - { - if ($reason !== $this->reason) { - throw new \LogicException('Cannot reject a rejected promise'); - } - } - - public function cancel(): void - { - // pass - } -} diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php deleted file mode 100644 index 47dca862..00000000 --- a/vendor/guzzlehttp/promises/src/RejectionException.php +++ /dev/null @@ -1,49 +0,0 @@ -reason = $reason; - - $message = 'The promise was rejected'; - - if ($description) { - $message .= ' with reason: '.$description; - } elseif (is_string($reason) - || (is_object($reason) && method_exists($reason, '__toString')) - ) { - $message .= ' with reason: '.$this->reason; - } elseif ($reason instanceof \JsonSerializable) { - $message .= ' with reason: '.json_encode($this->reason, JSON_PRETTY_PRINT); - } - - parent::__construct($message); - } - - /** - * Returns the rejection reason. - * - * @return mixed - */ - public function getReason() - { - return $this->reason; - } -} diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php deleted file mode 100644 index 503e0b2d..00000000 --- a/vendor/guzzlehttp/promises/src/TaskQueue.php +++ /dev/null @@ -1,71 +0,0 @@ -run(); - * - * @final - */ -class TaskQueue implements TaskQueueInterface -{ - private $enableShutdown = true; - private $queue = []; - - public function __construct(bool $withShutdown = true) - { - if ($withShutdown) { - register_shutdown_function(function (): void { - if ($this->enableShutdown) { - // Only run the tasks if an E_ERROR didn't occur. - $err = error_get_last(); - if (!$err || ($err['type'] ^ E_ERROR)) { - $this->run(); - } - } - }); - } - } - - public function isEmpty(): bool - { - return !$this->queue; - } - - public function add(callable $task): void - { - $this->queue[] = $task; - } - - public function run(): void - { - while ($task = array_shift($this->queue)) { - /** @var callable $task */ - $task(); - } - } - - /** - * The task queue will be run and exhausted by default when the process - * exits IFF the exit is not the result of a PHP E_ERROR error. - * - * You can disable running the automatic shutdown of the queue by calling - * this function. If you disable the task queue shutdown process, then you - * MUST either run the task queue (as a result of running your event loop - * or manually using the run() method) or wait on each outstanding promise. - * - * Note: This shutdown will occur before any destructors are triggered. - */ - public function disableShutdown(): void - { - $this->enableShutdown = false; - } -} diff --git a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php deleted file mode 100644 index 34c561a4..00000000 --- a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - * while ($eventLoop->isRunning()) { - * GuzzleHttp\Promise\Utils::queue()->run(); - * } - * - * - * @param TaskQueueInterface|null $assign Optionally specify a new queue instance. - */ - public static function queue(?TaskQueueInterface $assign = null): TaskQueueInterface - { - static $queue; - - if ($assign) { - $queue = $assign; - } elseif (!$queue) { - $queue = new TaskQueue(); - } - - return $queue; - } - - /** - * Adds a function to run in the task queue when it is next `run()` and - * returns a promise that is fulfilled or rejected with the result. - * - * @param callable $task Task function to run. - */ - public static function task(callable $task): PromiseInterface - { - $queue = self::queue(); - $promise = new Promise([$queue, 'run']); - $queue->add(function () use ($task, $promise): void { - try { - if (Is::pending($promise)) { - $promise->resolve($task()); - } - } catch (\Throwable $e) { - $promise->reject($e); - } - }); - - return $promise; - } - - /** - * Synchronously waits on a promise to resolve and returns an inspection - * state array. - * - * Returns a state associative array containing a "state" key mapping to a - * valid promise state. If the state of the promise is "fulfilled", the - * array will contain a "value" key mapping to the fulfilled value of the - * promise. If the promise is rejected, the array will contain a "reason" - * key mapping to the rejection reason of the promise. - * - * @param PromiseInterface $promise Promise or value. - */ - public static function inspect(PromiseInterface $promise): array - { - try { - return [ - 'state' => PromiseInterface::FULFILLED, - 'value' => $promise->wait(), - ]; - } catch (RejectionException $e) { - return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()]; - } catch (\Throwable $e) { - return ['state' => PromiseInterface::REJECTED, 'reason' => $e]; - } - } - - /** - * Waits on all of the provided promises, but does not unwrap rejected - * promises as thrown exception. - * - * Returns an array of inspection state arrays. - * - * @see inspect for the inspection state array format. - * - * @param PromiseInterface[] $promises Traversable of promises to wait upon. - */ - public static function inspectAll($promises): array - { - $results = []; - foreach ($promises as $key => $promise) { - $results[$key] = self::inspect($promise); - } - - return $results; - } - - /** - * Waits on all of the provided promises and returns the fulfilled values. - * - * Returns an array that contains the value of each promise (in the same - * order the promises were provided). An exception is thrown if any of the - * promises are rejected. - * - * @param iterable $promises Iterable of PromiseInterface objects to wait on. - * - * @throws \Throwable on error - */ - public static function unwrap($promises): array - { - $results = []; - foreach ($promises as $key => $promise) { - $results[$key] = $promise->wait(); - } - - return $results; - } - - /** - * Given an array of promises, return a promise that is fulfilled when all - * the items in the array are fulfilled. - * - * The promise's fulfillment value is an array with fulfillment values at - * respective positions to the original array. If any promise in the array - * rejects, the returned promise is rejected with the rejection reason. - * - * @param mixed $promises Promises or values. - * @param bool $recursive If true, resolves new promises that might have been added to the stack during its own resolution. - */ - public static function all($promises, bool $recursive = false): PromiseInterface - { - $results = []; - $promise = Each::of( - $promises, - function ($value, $idx) use (&$results): void { - $results[$idx] = $value; - }, - function ($reason, $idx, Promise $aggregate): void { - if (Is::pending($aggregate)) { - $aggregate->reject($reason); - } - } - )->then(function () use (&$results) { - ksort($results); - - return $results; - }); - - if (true === $recursive) { - $promise = $promise->then(function ($results) use ($recursive, &$promises) { - foreach ($promises as $promise) { - if (Is::pending($promise)) { - return self::all($promises, $recursive); - } - } - - return $results; - }); - } - - return $promise; - } - - /** - * Initiate a competitive race between multiple promises or values (values - * will become immediately fulfilled promises). - * - * When count amount of promises have been fulfilled, the returned promise - * is fulfilled with an array that contains the fulfillment values of the - * winners in order of resolution. - * - * This promise is rejected with a {@see AggregateException} if the number - * of fulfilled promises is less than the desired $count. - * - * @param int $count Total number of promises. - * @param mixed $promises Promises or values. - */ - public static function some(int $count, $promises): PromiseInterface - { - $results = []; - $rejections = []; - - return Each::of( - $promises, - function ($value, $idx, PromiseInterface $p) use (&$results, $count): void { - if (Is::settled($p)) { - return; - } - $results[$idx] = $value; - if (count($results) >= $count) { - $p->resolve(null); - } - }, - function ($reason) use (&$rejections): void { - $rejections[] = $reason; - } - )->then( - function () use (&$results, &$rejections, $count) { - if (count($results) !== $count) { - throw new AggregateException( - 'Not enough promises to fulfill count', - $rejections - ); - } - ksort($results); - - return array_values($results); - } - ); - } - - /** - * Like some(), with 1 as count. However, if the promise fulfills, the - * fulfillment value is not an array of 1 but the value directly. - * - * @param mixed $promises Promises or values. - */ - public static function any($promises): PromiseInterface - { - return self::some(1, $promises)->then(function ($values) { - return $values[0]; - }); - } - - /** - * Returns a promise that is fulfilled when all of the provided promises have - * been fulfilled or rejected. - * - * The returned promise is fulfilled with an array of inspection state arrays. - * - * @see inspect for the inspection state array format. - * - * @param mixed $promises Promises or values. - */ - public static function settle($promises): PromiseInterface - { - $results = []; - - return Each::of( - $promises, - function ($value, $idx) use (&$results): void { - $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value]; - }, - function ($reason, $idx) use (&$results): void { - $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason]; - } - )->then(function () use (&$results) { - ksort($results); - - return $results; - }); - } -} diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md deleted file mode 100644 index 4a2a1219..00000000 --- a/vendor/guzzlehttp/psr7/CHANGELOG.md +++ /dev/null @@ -1,485 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## 2.8.0 - 2025-08-23 - -### Added - -- Allow empty lists as header values - -### Changed - -- PHP 8.5 support - -## 2.7.1 - 2025-03-27 - -### Fixed - -- Fixed uppercase IPv6 addresses in URI - -### Changed - -- Improve uploaded file error message - -## 2.7.0 - 2024-07-18 - -### Added - -- Add `Utils::redactUserInfo()` method -- Add ability to encode bools as ints in `Query::build` - -## 2.6.3 - 2024-07-18 - -### Fixed - -- Make `StreamWrapper::stream_stat()` return `false` if inner stream's size is `null` - -### Changed - -- PHP 8.4 support - -## 2.6.2 - 2023-12-03 - -### Fixed - -- Fixed another issue with the fact that PHP transforms numeric strings in array keys to ints - -### Changed - -- Updated links in docs to their canonical versions -- Replaced `call_user_func*` with native calls - -## 2.6.1 - 2023-08-27 - -### Fixed - -- Properly handle the fact that PHP transforms numeric strings in array keys to ints - -## 2.6.0 - 2023-08-03 - -### Changed - -- Updated the mime type map to add some new entries, fix a couple of invalid entries, and remove an invalid entry -- Fallback to `application/octet-stream` if we are unable to guess the content type for a multipart file upload - -## 2.5.1 - 2023-08-03 - -### Fixed - -- Corrected mime type for `.acc` files to `audio/aac` - -### Changed - -- PHP 8.3 support - -## 2.5.0 - 2023-04-17 - -### Changed - -- Adjusted `psr/http-message` version constraint to `^1.1 || ^2.0` - -## 2.4.5 - 2023-04-17 - -### Fixed - -- Prevent possible warnings on unset variables in `ServerRequest::normalizeNestedFileSpec` -- Fixed `Message::bodySummary` when `preg_match` fails -- Fixed header validation issue - -## 2.4.4 - 2023-03-09 - -### Changed - -- Removed the need for `AllowDynamicProperties` in `LazyOpenStream` - -## 2.4.3 - 2022-10-26 - -### Changed - -- Replaced `sha1(uniqid())` by `bin2hex(random_bytes(20))` - -## 2.4.2 - 2022-10-25 - -### Fixed - -- Fixed erroneous behaviour when combining host and relative path - -## 2.4.1 - 2022-08-28 - -### Fixed - -- Rewind body before reading in `Message::bodySummary` - -## 2.4.0 - 2022-06-20 - -### Added - -- Added provisional PHP 8.2 support -- Added `UriComparator::isCrossOrigin` method - -## 2.3.0 - 2022-06-09 - -### Fixed - -- Added `Header::splitList` method -- Added `Utils::tryGetContents` method -- Improved `Stream::getContents` method -- Updated mimetype mappings - -## 2.2.2 - 2022-06-08 - -### Fixed - -- Fix `Message::parseRequestUri` for numeric headers -- Re-wrap exceptions thrown in `fread` into runtime exceptions -- Throw an exception when multipart options is misformatted - -## 2.2.1 - 2022-03-20 - -### Fixed - -- Correct header value validation - -## 2.2.0 - 2022-03-20 - -### Added - -- A more compressive list of mime types -- Add JsonSerializable to Uri -- Missing return types - -### Fixed - -- Bug MultipartStream no `uri` metadata -- Bug MultipartStream with filename for `data://` streams -- Fixed new line handling in MultipartStream -- Reduced RAM usage when copying streams -- Updated parsing in `Header::normalize()` - -## 2.1.1 - 2022-03-20 - -### Fixed - -- Validate header values properly - -## 2.1.0 - 2021-10-06 - -### Changed - -- Attempting to create a `Uri` object from a malformed URI will no longer throw a generic - `InvalidArgumentException`, but rather a `MalformedUriException`, which inherits from the former - for backwards compatibility. Callers relying on the exception being thrown to detect invalid - URIs should catch the new exception. - -### Fixed - -- Return `null` in caching stream size if remote size is `null` - -## 2.0.0 - 2021-06-30 - -Identical to the RC release. - -## 2.0.0@RC-1 - 2021-04-29 - -### Fixed - -- Handle possibly unset `url` in `stream_get_meta_data` - -## 2.0.0@beta-1 - 2021-03-21 - -### Added - -- PSR-17 factories -- Made classes final -- PHP7 type hints - -### Changed - -- When building a query string, booleans are represented as 1 and 0. - -### Removed - -- PHP < 7.2 support -- All functions in the `GuzzleHttp\Psr7` namespace - -## 1.8.1 - 2021-03-21 - -### Fixed - -- Issue parsing IPv6 URLs -- Issue modifying ServerRequest lost all its attributes - -## 1.8.0 - 2021-03-21 - -### Added - -- Locale independent URL parsing -- Most classes got a `@final` annotation to prepare for 2.0 - -### Fixed - -- Issue when creating stream from `php://input` and curl-ext is not installed -- Broken `Utils::tryFopen()` on PHP 8 - -## 1.7.0 - 2020-09-30 - -### Added - -- Replaced functions by static methods - -### Fixed - -- Converting a non-seekable stream to a string -- Handle multiple Set-Cookie correctly -- Ignore array keys in header values when merging -- Allow multibyte characters to be parsed in `Message:bodySummary()` - -### Changed - -- Restored partial HHVM 3 support - - -## [1.6.1] - 2019-07-02 - -### Fixed - -- Accept null and bool header values again - - -## [1.6.0] - 2019-06-30 - -### Added - -- Allowed version `^3.0` of `ralouphie/getallheaders` dependency (#244) -- Added MIME type for WEBP image format (#246) -- Added more validation of values according to PSR-7 and RFC standards, e.g. status code range (#250, #272) - -### Changed - -- Tests don't pass with HHVM 4.0, so HHVM support got dropped. Other libraries like composer have done the same. (#262) -- Accept port number 0 to be valid (#270) - -### Fixed - -- Fixed subsequent reads from `php://input` in ServerRequest (#247) -- Fixed readable/writable detection for certain stream modes (#248) -- Fixed encoding of special characters in the `userInfo` component of an URI (#253) - - -## [1.5.2] - 2018-12-04 - -### Fixed - -- Check body size when getting the message summary - - -## [1.5.1] - 2018-12-04 - -### Fixed - -- Get the summary of a body only if it is readable - - -## [1.5.0] - 2018-12-03 - -### Added - -- Response first-line to response string exception (fixes #145) -- A test for #129 behavior -- `get_message_body_summary` function in order to get the message summary -- `3gp` and `mkv` mime types - -### Changed - -- Clarify exception message when stream is detached - -### Deprecated - -- Deprecated parsing folded header lines as per RFC 7230 - -### Fixed - -- Fix `AppendStream::detach` to not close streams -- `InflateStream` preserves `isSeekable` attribute of the underlying stream -- `ServerRequest::getUriFromGlobals` to support URLs in query parameters - - -Several other fixes and improvements. - - -## [1.4.2] - 2017-03-20 - -### Fixed - -- Reverted BC break to `Uri::resolve` and `Uri::removeDotSegments` by removing - calls to `trigger_error` when deprecated methods are invoked. - - -## [1.4.1] - 2017-02-27 - -### Added - -- Rriggering of silenced deprecation warnings. - -### Fixed - -- Reverted BC break by reintroducing behavior to automagically fix a URI with a - relative path and an authority by adding a leading slash to the path. It's only - deprecated now. - - -## [1.4.0] - 2017-02-21 - -### Added - -- Added common URI utility methods based on RFC 3986 (see documentation in the readme): - - `Uri::isDefaultPort` - - `Uri::isAbsolute` - - `Uri::isNetworkPathReference` - - `Uri::isAbsolutePathReference` - - `Uri::isRelativePathReference` - - `Uri::isSameDocumentReference` - - `Uri::composeComponents` - - `UriNormalizer::normalize` - - `UriNormalizer::isEquivalent` - - `UriResolver::relativize` - -### Changed - -- Ensure `ServerRequest::getUriFromGlobals` returns a URI in absolute form. -- Allow `parse_response` to parse a response without delimiting space and reason. -- Ensure each URI modification results in a valid URI according to PSR-7 discussions. - Invalid modifications will throw an exception instead of returning a wrong URI or - doing some magic. - - `(new Uri)->withPath('foo')->withHost('example.com')` will throw an exception - because the path of a URI with an authority must start with a slash "/" or be empty - - `(new Uri())->withScheme('http')` will return `'http://localhost'` - -### Deprecated - -- `Uri::resolve` in favor of `UriResolver::resolve` -- `Uri::removeDotSegments` in favor of `UriResolver::removeDotSegments` - -### Fixed - -- `Stream::read` when length parameter <= 0. -- `copy_to_stream` reads bytes in chunks instead of `maxLen` into memory. -- `ServerRequest::getUriFromGlobals` when `Host` header contains port. -- Compatibility of URIs with `file` scheme and empty host. - - -## [1.3.1] - 2016-06-25 - -### Fixed - -- `Uri::__toString` for network path references, e.g. `//example.org`. -- Missing lowercase normalization for host. -- Handling of URI components in case they are `'0'` in a lot of places, - e.g. as a user info password. -- `Uri::withAddedHeader` to correctly merge headers with different case. -- Trimming of header values in `Uri::withAddedHeader`. Header values may - be surrounded by whitespace which should be ignored according to RFC 7230 - Section 3.2.4. This does not apply to header names. -- `Uri::withAddedHeader` with an array of header values. -- `Uri::resolve` when base path has no slash and handling of fragment. -- Handling of encoding in `Uri::with(out)QueryValue` so one can pass the - key/value both in encoded as well as decoded form to those methods. This is - consistent with withPath, withQuery etc. -- `ServerRequest::withoutAttribute` when attribute value is null. - - -## [1.3.0] - 2016-04-13 - -### Added - -- Remaining interfaces needed for full PSR7 compatibility - (ServerRequestInterface, UploadedFileInterface, etc.). -- Support for stream_for from scalars. - -### Changed - -- Can now extend Uri. - -### Fixed -- A bug in validating request methods by making it more permissive. - - -## [1.2.3] - 2016-02-18 - -### Fixed - -- Support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote - streams, which can sometimes return fewer bytes than requested with `fread`. -- Handling of gzipped responses with FNAME headers. - - -## [1.2.2] - 2016-01-22 - -### Added - -- Support for URIs without any authority. -- Support for HTTP 451 'Unavailable For Legal Reasons.' -- Support for using '0' as a filename. -- Support for including non-standard ports in Host headers. - - -## [1.2.1] - 2015-11-02 - -### Changes - -- Now supporting negative offsets when seeking to SEEK_END. - - -## [1.2.0] - 2015-08-15 - -### Changed - -- Body as `"0"` is now properly added to a response. -- Now allowing forward seeking in CachingStream. -- Now properly parsing HTTP requests that contain proxy targets in - `parse_request`. -- functions.php is now conditionally required. -- user-info is no longer dropped when resolving URIs. - - -## [1.1.0] - 2015-06-24 - -### Changed - -- URIs can now be relative. -- `multipart/form-data` headers are now overridden case-insensitively. -- URI paths no longer encode the following characters because they are allowed - in URIs: "(", ")", "*", "!", "'" -- A port is no longer added to a URI when the scheme is missing and no port is - present. - - -## 1.0.0 - 2015-05-19 - -Initial release. - -Currently unsupported: - -- `Psr\Http\Message\ServerRequestInterface` -- `Psr\Http\Message\UploadedFileInterface` - - - -[1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0 -[1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2 -[1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1 -[1.5.0]: https://github.com/guzzle/psr7/compare/1.4.2...1.5.0 -[1.4.2]: https://github.com/guzzle/psr7/compare/1.4.1...1.4.2 -[1.4.1]: https://github.com/guzzle/psr7/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/guzzle/psr7/compare/1.3.1...1.4.0 -[1.3.1]: https://github.com/guzzle/psr7/compare/1.3.0...1.3.1 -[1.3.0]: https://github.com/guzzle/psr7/compare/1.2.3...1.3.0 -[1.2.3]: https://github.com/guzzle/psr7/compare/1.2.2...1.2.3 -[1.2.2]: https://github.com/guzzle/psr7/compare/1.2.1...1.2.2 -[1.2.1]: https://github.com/guzzle/psr7/compare/1.2.0...1.2.1 -[1.2.0]: https://github.com/guzzle/psr7/compare/1.1.0...1.2.0 -[1.1.0]: https://github.com/guzzle/psr7/compare/1.0.0...1.1.0 diff --git a/vendor/guzzlehttp/psr7/LICENSE b/vendor/guzzlehttp/psr7/LICENSE deleted file mode 100644 index 51c7ec81..00000000 --- a/vendor/guzzlehttp/psr7/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Michael Dowling -Copyright (c) 2015 Márk Sági-Kazár -Copyright (c) 2015 Graham Campbell -Copyright (c) 2016 Tobias Schultze -Copyright (c) 2016 George Mponos -Copyright (c) 2018 Tobias Nyholm - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md deleted file mode 100644 index 24aad860..00000000 --- a/vendor/guzzlehttp/psr7/README.md +++ /dev/null @@ -1,887 +0,0 @@ -# PSR-7 Message Implementation - -This repository contains a full [PSR-7](https://www.php-fig.org/psr/psr-7/) -message implementation, several stream decorators, and some helpful -functionality like query string parsing. - -![CI](https://github.com/guzzle/psr7/workflows/CI/badge.svg) -![Static analysis](https://github.com/guzzle/psr7/workflows/Static%20analysis/badge.svg) - - -## Features - -This package comes with a number of stream implementations and stream -decorators. - - -## Installation - -```shell -composer require guzzlehttp/psr7 -``` - -## Version Guidance - -| Version | Status | PHP Version | -|---------|---------------------|--------------| -| 1.x | EOL (2024-06-30) | >=5.4,<8.2 | -| 2.x | Latest | >=7.2.5,<8.6 | - - -## AppendStream - -`GuzzleHttp\Psr7\AppendStream` - -Reads from multiple streams, one after the other. - -```php -use GuzzleHttp\Psr7; - -$a = Psr7\Utils::streamFor('abc, '); -$b = Psr7\Utils::streamFor('123.'); -$composed = new Psr7\AppendStream([$a, $b]); - -$composed->addStream(Psr7\Utils::streamFor(' Above all listen to me')); - -echo $composed; // abc, 123. Above all listen to me. -``` - - -## BufferStream - -`GuzzleHttp\Psr7\BufferStream` - -Provides a buffer stream that can be written to fill a buffer, and read -from to remove bytes from the buffer. - -This stream returns a "hwm" metadata value that tells upstream consumers -what the configured high water mark of the stream is, or the maximum -preferred size of the buffer. - -```php -use GuzzleHttp\Psr7; - -// When more than 1024 bytes are in the buffer, it will begin returning -// false to writes. This is an indication that writers should slow down. -$buffer = new Psr7\BufferStream(1024); -``` - - -## CachingStream - -The CachingStream is used to allow seeking over previously read bytes on -non-seekable streams. This can be useful when transferring a non-seekable -entity body fails due to needing to rewind the stream (for example, resulting -from a redirect). Data that is read from the remote stream will be buffered in -a PHP temp stream so that previously read bytes are cached first in memory, -then on disk. - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\Utils::streamFor(fopen('http://www.google.com', 'r')); -$stream = new Psr7\CachingStream($original); - -$stream->read(1024); -echo $stream->tell(); -// 1024 - -$stream->seek(0); -echo $stream->tell(); -// 0 -``` - - -## DroppingStream - -`GuzzleHttp\Psr7\DroppingStream` - -Stream decorator that begins dropping data once the size of the underlying -stream becomes too full. - -```php -use GuzzleHttp\Psr7; - -// Create an empty stream -$stream = Psr7\Utils::streamFor(); - -// Start dropping data when the stream has more than 10 bytes -$dropping = new Psr7\DroppingStream($stream, 10); - -$dropping->write('01234567890123456789'); -echo $stream; // 0123456789 -``` - - -## FnStream - -`GuzzleHttp\Psr7\FnStream` - -Compose stream implementations based on a hash of functions. - -Allows for easy testing and extension of a provided stream without needing -to create a concrete class for a simple extension point. - -```php - -use GuzzleHttp\Psr7; - -$stream = Psr7\Utils::streamFor('hi'); -$fnStream = Psr7\FnStream::decorate($stream, [ - 'rewind' => function () use ($stream) { - echo 'About to rewind - '; - $stream->rewind(); - echo 'rewound!'; - } -]); - -$fnStream->rewind(); -// Outputs: About to rewind - rewound! -``` - - -## InflateStream - -`GuzzleHttp\Psr7\InflateStream` - -Uses PHP's zlib.inflate filter to inflate zlib (HTTP deflate, RFC1950) or gzipped (RFC1952) content. - -This stream decorator converts the provided stream to a PHP stream resource, -then appends the zlib.inflate filter. The stream is then converted back -to a Guzzle stream resource to be used as a Guzzle stream. - - -## LazyOpenStream - -`GuzzleHttp\Psr7\LazyOpenStream` - -Lazily reads or writes to a file that is opened only after an IO operation -take place on the stream. - -```php -use GuzzleHttp\Psr7; - -$stream = new Psr7\LazyOpenStream('/path/to/file', 'r'); -// The file has not yet been opened... - -echo $stream->read(10); -// The file is opened and read from only when needed. -``` - - -## LimitStream - -`GuzzleHttp\Psr7\LimitStream` - -LimitStream can be used to read a subset or slice of an existing stream object. -This can be useful for breaking a large file into smaller pieces to be sent in -chunks (e.g. Amazon S3's multipart upload API). - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\Utils::streamFor(fopen('/tmp/test.txt', 'r+')); -echo $original->getSize(); -// >>> 1048576 - -// Limit the size of the body to 1024 bytes and start reading from byte 2048 -$stream = new Psr7\LimitStream($original, 1024, 2048); -echo $stream->getSize(); -// >>> 1024 -echo $stream->tell(); -// >>> 0 -``` - - -## MultipartStream - -`GuzzleHttp\Psr7\MultipartStream` - -Stream that when read returns bytes for a streaming multipart or -multipart/form-data stream. - - -## NoSeekStream - -`GuzzleHttp\Psr7\NoSeekStream` - -NoSeekStream wraps a stream and does not allow seeking. - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\Utils::streamFor('foo'); -$noSeek = new Psr7\NoSeekStream($original); - -echo $noSeek->read(3); -// foo -var_export($noSeek->isSeekable()); -// false -$noSeek->seek(0); -var_export($noSeek->read(3)); -// NULL -``` - - -## PumpStream - -`GuzzleHttp\Psr7\PumpStream` - -Provides a read only stream that pumps data from a PHP callable. - -When invoking the provided callable, the PumpStream will pass the amount of -data requested to read to the callable. The callable can choose to ignore -this value and return fewer or more bytes than requested. Any extra data -returned by the provided callable is buffered internally until drained using -the read() function of the PumpStream. The provided callable MUST return -false when there is no more data to read. - - -## Implementing stream decorators - -Creating a stream decorator is very easy thanks to the -`GuzzleHttp\Psr7\StreamDecoratorTrait`. This trait provides methods that -implement `Psr\Http\Message\StreamInterface` by proxying to an underlying -stream. Just `use` the `StreamDecoratorTrait` and implement your custom -methods. - -For example, let's say we wanted to call a specific function each time the last -byte is read from a stream. This could be implemented by overriding the -`read()` method. - -```php -use Psr\Http\Message\StreamInterface; -use GuzzleHttp\Psr7\StreamDecoratorTrait; - -class EofCallbackStream implements StreamInterface -{ - use StreamDecoratorTrait; - - private $callback; - - private $stream; - - public function __construct(StreamInterface $stream, callable $cb) - { - $this->stream = $stream; - $this->callback = $cb; - } - - public function read($length) - { - $result = $this->stream->read($length); - - // Invoke the callback when EOF is hit. - if ($this->eof()) { - ($this->callback)(); - } - - return $result; - } -} -``` - -This decorator could be added to any existing stream and used like so: - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\Utils::streamFor('foo'); - -$eofStream = new EofCallbackStream($original, function () { - echo 'EOF!'; -}); - -$eofStream->read(2); -$eofStream->read(1); -// echoes "EOF!" -$eofStream->seek(0); -$eofStream->read(3); -// echoes "EOF!" -``` - - -## PHP StreamWrapper - -You can use the `GuzzleHttp\Psr7\StreamWrapper` class if you need to use a -PSR-7 stream as a PHP stream resource. - -Use the `GuzzleHttp\Psr7\StreamWrapper::getResource()` method to create a PHP -stream from a PSR-7 stream. - -```php -use GuzzleHttp\Psr7\StreamWrapper; - -$stream = GuzzleHttp\Psr7\Utils::streamFor('hello!'); -$resource = StreamWrapper::getResource($stream); -echo fread($resource, 6); // outputs hello! -``` - - -# Static API - -There are various static methods available under the `GuzzleHttp\Psr7` namespace. - - -## `GuzzleHttp\Psr7\Message::toString` - -`public static function toString(MessageInterface $message): string` - -Returns the string representation of an HTTP message. - -```php -$request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com'); -echo GuzzleHttp\Psr7\Message::toString($request); -``` - - -## `GuzzleHttp\Psr7\Message::bodySummary` - -`public static function bodySummary(MessageInterface $message, int $truncateAt = 120): string|null` - -Get a short summary of the message body. - -Will return `null` if the response is not printable. - - -## `GuzzleHttp\Psr7\Message::rewindBody` - -`public static function rewindBody(MessageInterface $message): void` - -Attempts to rewind a message body and throws an exception on failure. - -The body of the message will only be rewound if a call to `tell()` -returns a value other than `0`. - - -## `GuzzleHttp\Psr7\Message::parseMessage` - -`public static function parseMessage(string $message): array` - -Parses an HTTP message into an associative array. - -The array contains the "start-line" key containing the start line of -the message, "headers" key containing an associative array of header -array values, and a "body" key containing the body of the message. - - -## `GuzzleHttp\Psr7\Message::parseRequestUri` - -`public static function parseRequestUri(string $path, array $headers): string` - -Constructs a URI for an HTTP request message. - - -## `GuzzleHttp\Psr7\Message::parseRequest` - -`public static function parseRequest(string $message): Request` - -Parses a request message string into a request object. - - -## `GuzzleHttp\Psr7\Message::parseResponse` - -`public static function parseResponse(string $message): Response` - -Parses a response message string into a response object. - - -## `GuzzleHttp\Psr7\Header::parse` - -`public static function parse(string|array $header): array` - -Parse an array of header values containing ";" separated data into an -array of associative arrays representing the header key value pair data -of the header. When a parameter does not contain a value, but just -contains a key, this function will inject a key with a '' string value. - - -## `GuzzleHttp\Psr7\Header::splitList` - -`public static function splitList(string|string[] $header): string[]` - -Splits a HTTP header defined to contain a comma-separated list into -each individual value: - -``` -$knownEtags = Header::splitList($request->getHeader('if-none-match')); -``` - -Example headers include `accept`, `cache-control` and `if-none-match`. - - -## `GuzzleHttp\Psr7\Header::normalize` (deprecated) - -`public static function normalize(string|array $header): array` - -`Header::normalize()` is deprecated in favor of [`Header::splitList()`](README.md#guzzlehttppsr7headersplitlist) -which performs the same operation with a cleaned up API and improved -documentation. - -Converts an array of header values that may contain comma separated -headers into an array of headers with no comma separated values. - - -## `GuzzleHttp\Psr7\Query::parse` - -`public static function parse(string $str, int|bool $urlEncoding = true): array` - -Parse a query string into an associative array. - -If multiple values are found for the same key, the value of that key -value pair will become an array. This function does not parse nested -PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2` -will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`. - - -## `GuzzleHttp\Psr7\Query::build` - -`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string` - -Build a query string from an array of key value pairs. - -This function can use the return value of `parse()` to build a query -string. This function does not modify the provided keys when an array is -encountered (like `http_build_query()` would). - - -## `GuzzleHttp\Psr7\Utils::caselessRemove` - -`public static function caselessRemove(iterable $keys, $keys, array $data): array` - -Remove the items given by the keys, case insensitively from the data. - - -## `GuzzleHttp\Psr7\Utils::copyToStream` - -`public static function copyToStream(StreamInterface $source, StreamInterface $dest, int $maxLen = -1): void` - -Copy the contents of a stream into another stream until the given number -of bytes have been read. - - -## `GuzzleHttp\Psr7\Utils::copyToString` - -`public static function copyToString(StreamInterface $stream, int $maxLen = -1): string` - -Copy the contents of a stream into a string until the given number of -bytes have been read. - - -## `GuzzleHttp\Psr7\Utils::hash` - -`public static function hash(StreamInterface $stream, string $algo, bool $rawOutput = false): string` - -Calculate a hash of a stream. - -This method reads the entire stream to calculate a rolling hash, based on -PHP's `hash_init` functions. - - -## `GuzzleHttp\Psr7\Utils::modifyRequest` - -`public static function modifyRequest(RequestInterface $request, array $changes): RequestInterface` - -Clone and modify a request with the given changes. - -This method is useful for reducing the number of clones needed to mutate -a message. - -- method: (string) Changes the HTTP method. -- set_headers: (array) Sets the given headers. -- remove_headers: (array) Remove the given headers. -- body: (mixed) Sets the given body. -- uri: (UriInterface) Set the URI. -- query: (string) Set the query string value of the URI. -- version: (string) Set the protocol version. - - -## `GuzzleHttp\Psr7\Utils::readLine` - -`public static function readLine(StreamInterface $stream, ?int $maxLength = null): string` - -Read a line from the stream up to the maximum allowed buffer length. - - -## `GuzzleHttp\Psr7\Utils::redactUserInfo` - -`public static function redactUserInfo(UriInterface $uri): UriInterface` - -Redact the password in the user info part of a URI. - - -## `GuzzleHttp\Psr7\Utils::streamFor` - -`public static function streamFor(resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource = '', array $options = []): StreamInterface` - -Create a new stream based on the input type. - -Options is an associative array that can contain the following keys: - -- metadata: Array of custom metadata. -- size: Size of the stream. - -This method accepts the following `$resource` types: - -- `Psr\Http\Message\StreamInterface`: Returns the value as-is. -- `string`: Creates a stream object that uses the given string as the contents. -- `resource`: Creates a stream object that wraps the given PHP stream resource. -- `Iterator`: If the provided value implements `Iterator`, then a read-only - stream object will be created that wraps the given iterable. Each time the - stream is read from, data from the iterator will fill a buffer and will be - continuously called until the buffer is equal to the requested read size. - Subsequent read calls will first read from the buffer and then call `next` - on the underlying iterator until it is exhausted. -- `object` with `__toString()`: If the object has the `__toString()` method, - the object will be cast to a string and then a stream will be returned that - uses the string value. -- `NULL`: When `null` is passed, an empty stream object is returned. -- `callable` When a callable is passed, a read-only stream object will be - created that invokes the given callable. The callable is invoked with the - number of suggested bytes to read. The callable can return any number of - bytes, but MUST return `false` when there is no more data to return. The - stream object that wraps the callable will invoke the callable until the - number of requested bytes are available. Any additional bytes will be - buffered and used in subsequent reads. - -```php -$stream = GuzzleHttp\Psr7\Utils::streamFor('foo'); -$stream = GuzzleHttp\Psr7\Utils::streamFor(fopen('/path/to/file', 'r')); - -$generator = function ($bytes) { - for ($i = 0; $i < $bytes; $i++) { - yield ' '; - } -} - -$stream = GuzzleHttp\Psr7\Utils::streamFor($generator(100)); -``` - - -## `GuzzleHttp\Psr7\Utils::tryFopen` - -`public static function tryFopen(string $filename, string $mode): resource` - -Safely opens a PHP stream resource using a filename. - -When fopen fails, PHP normally raises a warning. This function adds an -error handler that checks for errors and throws an exception instead. - - -## `GuzzleHttp\Psr7\Utils::tryGetContents` - -`public static function tryGetContents(resource $stream): string` - -Safely gets the contents of a given stream. - -When stream_get_contents fails, PHP normally raises a warning. This -function adds an error handler that checks for errors and throws an -exception instead. - - -## `GuzzleHttp\Psr7\Utils::uriFor` - -`public static function uriFor(string|UriInterface $uri): UriInterface` - -Returns a UriInterface for the given value. - -This function accepts a string or UriInterface and returns a -UriInterface for the given value. If the value is already a -UriInterface, it is returned as-is. - - -## `GuzzleHttp\Psr7\MimeType::fromFilename` - -`public static function fromFilename(string $filename): string|null` - -Determines the mimetype of a file by looking at its extension. - - -## `GuzzleHttp\Psr7\MimeType::fromExtension` - -`public static function fromExtension(string $extension): string|null` - -Maps a file extensions to a mimetype. - - -## Upgrading from Function API - -The static API was first introduced in 1.7.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API was removed in 2.0.0. A migration table has been provided here for your convenience: - -| Original Function | Replacement Method | -|----------------|----------------| -| `str` | `Message::toString` | -| `uri_for` | `Utils::uriFor` | -| `stream_for` | `Utils::streamFor` | -| `parse_header` | `Header::parse` | -| `normalize_header` | `Header::normalize` | -| `modify_request` | `Utils::modifyRequest` | -| `rewind_body` | `Message::rewindBody` | -| `try_fopen` | `Utils::tryFopen` | -| `copy_to_string` | `Utils::copyToString` | -| `copy_to_stream` | `Utils::copyToStream` | -| `hash` | `Utils::hash` | -| `readline` | `Utils::readLine` | -| `parse_request` | `Message::parseRequest` | -| `parse_response` | `Message::parseResponse` | -| `parse_query` | `Query::parse` | -| `build_query` | `Query::build` | -| `mimetype_from_filename` | `MimeType::fromFilename` | -| `mimetype_from_extension` | `MimeType::fromExtension` | -| `_parse_message` | `Message::parseMessage` | -| `_parse_request_uri` | `Message::parseRequestUri` | -| `get_message_body_summary` | `Message::bodySummary` | -| `_caseless_remove` | `Utils::caselessRemove` | - - -# Additional URI Methods - -Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class, -this library also provides additional functionality when working with URIs as static methods. - -## URI Types - -An instance of `Psr\Http\Message\UriInterface` can either be an absolute URI or a relative reference. -An absolute URI has a scheme. A relative reference is used to express a URI relative to another URI, -the base URI. Relative references can be divided into several forms according to -[RFC 3986 Section 4.2](https://datatracker.ietf.org/doc/html/rfc3986#section-4.2): - -- network-path references, e.g. `//example.com/path` -- absolute-path references, e.g. `/path` -- relative-path references, e.g. `subpath` - -The following methods can be used to identify the type of the URI. - -### `GuzzleHttp\Psr7\Uri::isAbsolute` - -`public static function isAbsolute(UriInterface $uri): bool` - -Whether the URI is absolute, i.e. it has a scheme. - -### `GuzzleHttp\Psr7\Uri::isNetworkPathReference` - -`public static function isNetworkPathReference(UriInterface $uri): bool` - -Whether the URI is a network-path reference. A relative reference that begins with two slash characters is -termed an network-path reference. - -### `GuzzleHttp\Psr7\Uri::isAbsolutePathReference` - -`public static function isAbsolutePathReference(UriInterface $uri): bool` - -Whether the URI is a absolute-path reference. A relative reference that begins with a single slash character is -termed an absolute-path reference. - -### `GuzzleHttp\Psr7\Uri::isRelativePathReference` - -`public static function isRelativePathReference(UriInterface $uri): bool` - -Whether the URI is a relative-path reference. A relative reference that does not begin with a slash character is -termed a relative-path reference. - -### `GuzzleHttp\Psr7\Uri::isSameDocumentReference` - -`public static function isSameDocumentReference(UriInterface $uri, ?UriInterface $base = null): bool` - -Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its -fragment component, identical to the base URI. When no base URI is given, only an empty URI reference -(apart from its fragment) is considered a same-document reference. - -## URI Components - -Additional methods to work with URI components. - -### `GuzzleHttp\Psr7\Uri::isDefaultPort` - -`public static function isDefaultPort(UriInterface $uri): bool` - -Whether the URI has the default port of the current scheme. `Psr\Http\Message\UriInterface::getPort` may return null -or the standard port. This method can be used independently of the implementation. - -### `GuzzleHttp\Psr7\Uri::composeComponents` - -`public static function composeComponents($scheme, $authority, $path, $query, $fragment): string` - -Composes a URI reference string from its various components according to -[RFC 3986 Section 5.3](https://datatracker.ietf.org/doc/html/rfc3986#section-5.3). Usually this method does not need -to be called manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__toString`. - -### `GuzzleHttp\Psr7\Uri::fromParts` - -`public static function fromParts(array $parts): UriInterface` - -Creates a URI from a hash of [`parse_url`](https://www.php.net/manual/en/function.parse-url.php) components. - - -### `GuzzleHttp\Psr7\Uri::withQueryValue` - -`public static function withQueryValue(UriInterface $uri, $key, $value): UriInterface` - -Creates a new URI with a specific query string value. Any existing query string values that exactly match the -provided key are removed and replaced with the given key value pair. A value of null will set the query string -key without a value, e.g. "key" instead of "key=value". - -### `GuzzleHttp\Psr7\Uri::withQueryValues` - -`public static function withQueryValues(UriInterface $uri, array $keyValueArray): UriInterface` - -Creates a new URI with multiple query string values. It has the same behavior as `withQueryValue()` but for an -associative array of key => value. - -### `GuzzleHttp\Psr7\Uri::withoutQueryValue` - -`public static function withoutQueryValue(UriInterface $uri, $key): UriInterface` - -Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the -provided key are removed. - -## Cross-Origin Detection - -`GuzzleHttp\Psr7\UriComparator` provides methods to determine if a modified URL should be considered cross-origin. - -### `GuzzleHttp\Psr7\UriComparator::isCrossOrigin` - -`public static function isCrossOrigin(UriInterface $original, UriInterface $modified): bool` - -Determines if a modified URL should be considered cross-origin with respect to an original URL. - -## Reference Resolution - -`GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according -to [RFC 3986 Section 5](https://datatracker.ietf.org/doc/html/rfc3986#section-5). This is for example also what web -browsers do when resolving a link in a website based on the current request URI. - -### `GuzzleHttp\Psr7\UriResolver::resolve` - -`public static function resolve(UriInterface $base, UriInterface $rel): UriInterface` - -Converts the relative URI into a new URI that is resolved against the base URI. - -### `GuzzleHttp\Psr7\UriResolver::removeDotSegments` - -`public static function removeDotSegments(string $path): string` - -Removes dot segments from a path and returns the new path according to -[RFC 3986 Section 5.2.4](https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4). - -### `GuzzleHttp\Psr7\UriResolver::relativize` - -`public static function relativize(UriInterface $base, UriInterface $target): UriInterface` - -Returns the target URI as a relative reference from the base URI. This method is the counterpart to resolve(): - -```php -(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) -``` - -One use-case is to use the current request URI as base URI and then generate relative links in your documents -to reduce the document size or offer self-contained downloadable document archives. - -```php -$base = new Uri('http://example.com/a/b/'); -echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. -echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. -echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. -echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. -``` - -## Normalization and Comparison - -`GuzzleHttp\Psr7\UriNormalizer` provides methods to normalize and compare URIs according to -[RFC 3986 Section 6](https://datatracker.ietf.org/doc/html/rfc3986#section-6). - -### `GuzzleHttp\Psr7\UriNormalizer::normalize` - -`public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS): UriInterface` - -Returns a normalized URI. The scheme and host component are already normalized to lowercase per PSR-7 UriInterface. -This methods adds additional normalizations that can be configured with the `$flags` parameter which is a bitmask -of normalizations to apply. The following normalizations are available: - -- `UriNormalizer::PRESERVING_NORMALIZATIONS` - - Default normalizations which only include the ones that preserve semantics. - -- `UriNormalizer::CAPITALIZE_PERCENT_ENCODING` - - All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized. - - Example: `http://example.org/a%c2%b1b` → `http://example.org/a%C2%B1b` - -- `UriNormalizer::DECODE_UNRESERVED_CHARACTERS` - - Decodes percent-encoded octets of unreserved characters. For consistency, percent-encoded octets in the ranges of - ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should - not be created by URI producers and, when found in a URI, should be decoded to their corresponding unreserved - characters by URI normalizers. - - Example: `http://example.org/%7Eusern%61me/` → `http://example.org/~username/` - -- `UriNormalizer::CONVERT_EMPTY_PATH` - - Converts the empty path to "/" for http and https URIs. - - Example: `http://example.org` → `http://example.org/` - -- `UriNormalizer::REMOVE_DEFAULT_HOST` - - Removes the default host of the given URI scheme from the URI. Only the "file" scheme defines the default host - "localhost". All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile` are equivalent according to - RFC 3986. - - Example: `file://localhost/myfile` → `file:///myfile` - -- `UriNormalizer::REMOVE_DEFAULT_PORT` - - Removes the default port of the given URI scheme from the URI. - - Example: `http://example.org:80/` → `http://example.org/` - -- `UriNormalizer::REMOVE_DOT_SEGMENTS` - - Removes unnecessary dot-segments. Dot-segments in relative-path references are not removed as it would - change the semantics of the URI reference. - - Example: `http://example.org/../a/b/../c/./d.html` → `http://example.org/a/c/d.html` - -- `UriNormalizer::REMOVE_DUPLICATE_SLASHES` - - Paths which include two or more adjacent slashes are converted to one. Webservers usually ignore duplicate slashes - and treat those URIs equivalent. But in theory those URIs do not need to be equivalent. So this normalization - may change the semantics. Encoded slashes (%2F) are not removed. - - Example: `http://example.org//foo///bar.html` → `http://example.org/foo/bar.html` - -- `UriNormalizer::SORT_QUERY_PARAMETERS` - - Sort query parameters with their values in alphabetical order. However, the order of parameters in a URI may be - significant (this is not defined by the standard). So this normalization is not safe and may change the semantics - of the URI. - - Example: `?lang=en&article=fred` → `?article=fred&lang=en` - -### `GuzzleHttp\Psr7\UriNormalizer::isEquivalent` - -`public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS): bool` - -Whether two URIs can be considered equivalent. Both URIs are normalized automatically before comparison with the given -`$normalizations` bitmask. The method also accepts relative URI references and returns true when they are equivalent. -This of course assumes they will be resolved against the same base URI. If this is not the case, determination of -equivalence or difference of relative references does not mean anything. - - -## Security - -If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/psr7/security/policy) for more information. - - -## License - -Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information. - - -## For Enterprise - -Available as part of the Tidelift Subscription - -The maintainers of Guzzle and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-guzzlehttp-psr7?utm_source=packagist-guzzlehttp-psr7&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json deleted file mode 100644 index 96098f53..00000000 --- a/vendor/guzzlehttp/psr7/composer.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "guzzlehttp/psr7", - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "request", - "response", - "message", - "stream", - "http", - "uri", - "url", - "psr-7" - ], - "license": "MIT", - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.44 || ^9.6.25" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "GuzzleHttp\\Tests\\Psr7\\": "tests/" - } - }, - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "config": { - "allow-plugins": { - "bamarni/composer-bin-plugin": true - }, - "preferred-install": "dist", - "sort-packages": true - } -} diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php deleted file mode 100644 index ee8f3788..00000000 --- a/vendor/guzzlehttp/psr7/src/AppendStream.php +++ /dev/null @@ -1,248 +0,0 @@ -addStream($stream); - } - } - - public function __toString(): string - { - try { - $this->rewind(); - - return $this->getContents(); - } catch (\Throwable $e) { - if (\PHP_VERSION_ID >= 70400) { - throw $e; - } - trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR); - - return ''; - } - } - - /** - * Add a stream to the AppendStream - * - * @param StreamInterface $stream Stream to append. Must be readable. - * - * @throws \InvalidArgumentException if the stream is not readable - */ - public function addStream(StreamInterface $stream): void - { - if (!$stream->isReadable()) { - throw new \InvalidArgumentException('Each stream must be readable'); - } - - // The stream is only seekable if all streams are seekable - if (!$stream->isSeekable()) { - $this->seekable = false; - } - - $this->streams[] = $stream; - } - - public function getContents(): string - { - return Utils::copyToString($this); - } - - /** - * Closes each attached stream. - */ - public function close(): void - { - $this->pos = $this->current = 0; - $this->seekable = true; - - foreach ($this->streams as $stream) { - $stream->close(); - } - - $this->streams = []; - } - - /** - * Detaches each attached stream. - * - * Returns null as it's not clear which underlying stream resource to return. - */ - public function detach() - { - $this->pos = $this->current = 0; - $this->seekable = true; - - foreach ($this->streams as $stream) { - $stream->detach(); - } - - $this->streams = []; - - return null; - } - - public function tell(): int - { - return $this->pos; - } - - /** - * Tries to calculate the size by adding the size of each stream. - * - * If any of the streams do not return a valid number, then the size of the - * append stream cannot be determined and null is returned. - */ - public function getSize(): ?int - { - $size = 0; - - foreach ($this->streams as $stream) { - $s = $stream->getSize(); - if ($s === null) { - return null; - } - $size += $s; - } - - return $size; - } - - public function eof(): bool - { - return !$this->streams - || ($this->current >= count($this->streams) - 1 - && $this->streams[$this->current]->eof()); - } - - public function rewind(): void - { - $this->seek(0); - } - - /** - * Attempts to seek to the given position. Only supports SEEK_SET. - */ - public function seek($offset, $whence = SEEK_SET): void - { - if (!$this->seekable) { - throw new \RuntimeException('This AppendStream is not seekable'); - } elseif ($whence !== SEEK_SET) { - throw new \RuntimeException('The AppendStream can only seek with SEEK_SET'); - } - - $this->pos = $this->current = 0; - - // Rewind each stream - foreach ($this->streams as $i => $stream) { - try { - $stream->rewind(); - } catch (\Exception $e) { - throw new \RuntimeException('Unable to seek stream ' - .$i.' of the AppendStream', 0, $e); - } - } - - // Seek to the actual position by reading from each stream - while ($this->pos < $offset && !$this->eof()) { - $result = $this->read(min(8096, $offset - $this->pos)); - if ($result === '') { - break; - } - } - } - - /** - * Reads from all of the appended streams until the length is met or EOF. - */ - public function read($length): string - { - $buffer = ''; - $total = count($this->streams) - 1; - $remaining = $length; - $progressToNext = false; - - while ($remaining > 0) { - // Progress to the next stream if needed. - if ($progressToNext || $this->streams[$this->current]->eof()) { - $progressToNext = false; - if ($this->current === $total) { - break; - } - ++$this->current; - } - - $result = $this->streams[$this->current]->read($remaining); - - if ($result === '') { - $progressToNext = true; - continue; - } - - $buffer .= $result; - $remaining = $length - strlen($buffer); - } - - $this->pos += strlen($buffer); - - return $buffer; - } - - public function isReadable(): bool - { - return true; - } - - public function isWritable(): bool - { - return false; - } - - public function isSeekable(): bool - { - return $this->seekable; - } - - public function write($string): int - { - throw new \RuntimeException('Cannot write to an AppendStream'); - } - - /** - * @return mixed - */ - public function getMetadata($key = null) - { - return $key ? null : []; - } -} diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php deleted file mode 100644 index 2b0eb77b..00000000 --- a/vendor/guzzlehttp/psr7/src/BufferStream.php +++ /dev/null @@ -1,147 +0,0 @@ -hwm = $hwm; - } - - public function __toString(): string - { - return $this->getContents(); - } - - public function getContents(): string - { - $buffer = $this->buffer; - $this->buffer = ''; - - return $buffer; - } - - public function close(): void - { - $this->buffer = ''; - } - - public function detach() - { - $this->close(); - - return null; - } - - public function getSize(): ?int - { - return strlen($this->buffer); - } - - public function isReadable(): bool - { - return true; - } - - public function isWritable(): bool - { - return true; - } - - public function isSeekable(): bool - { - return false; - } - - public function rewind(): void - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET): void - { - throw new \RuntimeException('Cannot seek a BufferStream'); - } - - public function eof(): bool - { - return strlen($this->buffer) === 0; - } - - public function tell(): int - { - throw new \RuntimeException('Cannot determine the position of a BufferStream'); - } - - /** - * Reads data from the buffer. - */ - public function read($length): string - { - $currentLength = strlen($this->buffer); - - if ($length >= $currentLength) { - // No need to slice the buffer because we don't have enough data. - $result = $this->buffer; - $this->buffer = ''; - } else { - // Slice up the result to provide a subset of the buffer. - $result = substr($this->buffer, 0, $length); - $this->buffer = substr($this->buffer, $length); - } - - return $result; - } - - /** - * Writes data to the buffer. - */ - public function write($string): int - { - $this->buffer .= $string; - - if (strlen($this->buffer) >= $this->hwm) { - return 0; - } - - return strlen($string); - } - - /** - * @return mixed - */ - public function getMetadata($key = null) - { - if ($key === 'hwm') { - return $this->hwm; - } - - return $key ? null : []; - } -} diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php deleted file mode 100644 index 7e4554d5..00000000 --- a/vendor/guzzlehttp/psr7/src/CachingStream.php +++ /dev/null @@ -1,153 +0,0 @@ -remoteStream = $stream; - $this->stream = $target ?: new Stream(Utils::tryFopen('php://temp', 'r+')); - } - - public function getSize(): ?int - { - $remoteSize = $this->remoteStream->getSize(); - - if (null === $remoteSize) { - return null; - } - - return max($this->stream->getSize(), $remoteSize); - } - - public function rewind(): void - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET): void - { - if ($whence === SEEK_SET) { - $byte = $offset; - } elseif ($whence === SEEK_CUR) { - $byte = $offset + $this->tell(); - } elseif ($whence === SEEK_END) { - $size = $this->remoteStream->getSize(); - if ($size === null) { - $size = $this->cacheEntireStream(); - } - $byte = $size + $offset; - } else { - throw new \InvalidArgumentException('Invalid whence'); - } - - $diff = $byte - $this->stream->getSize(); - - if ($diff > 0) { - // Read the remoteStream until we have read in at least the amount - // of bytes requested, or we reach the end of the file. - while ($diff > 0 && !$this->remoteStream->eof()) { - $this->read($diff); - $diff = $byte - $this->stream->getSize(); - } - } else { - // We can just do a normal seek since we've already seen this byte. - $this->stream->seek($byte); - } - } - - public function read($length): string - { - // Perform a regular read on any previously read data from the buffer - $data = $this->stream->read($length); - $remaining = $length - strlen($data); - - // More data was requested so read from the remote stream - if ($remaining) { - // If data was written to the buffer in a position that would have - // been filled from the remote stream, then we must skip bytes on - // the remote stream to emulate overwriting bytes from that - // position. This mimics the behavior of other PHP stream wrappers. - $remoteData = $this->remoteStream->read( - $remaining + $this->skipReadBytes - ); - - if ($this->skipReadBytes) { - $len = strlen($remoteData); - $remoteData = substr($remoteData, $this->skipReadBytes); - $this->skipReadBytes = max(0, $this->skipReadBytes - $len); - } - - $data .= $remoteData; - $this->stream->write($remoteData); - } - - return $data; - } - - public function write($string): int - { - // When appending to the end of the currently read stream, you'll want - // to skip bytes from being read from the remote stream to emulate - // other stream wrappers. Basically replacing bytes of data of a fixed - // length. - $overflow = (strlen($string) + $this->tell()) - $this->remoteStream->tell(); - if ($overflow > 0) { - $this->skipReadBytes += $overflow; - } - - return $this->stream->write($string); - } - - public function eof(): bool - { - return $this->stream->eof() && $this->remoteStream->eof(); - } - - /** - * Close both the remote stream and buffer stream - */ - public function close(): void - { - $this->remoteStream->close(); - $this->stream->close(); - } - - private function cacheEntireStream(): int - { - $target = new FnStream(['write' => 'strlen']); - Utils::copyToStream($this, $target); - - return $this->tell(); - } -} diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php deleted file mode 100644 index 6e3d209d..00000000 --- a/vendor/guzzlehttp/psr7/src/DroppingStream.php +++ /dev/null @@ -1,49 +0,0 @@ -stream = $stream; - $this->maxLength = $maxLength; - } - - public function write($string): int - { - $diff = $this->maxLength - $this->stream->getSize(); - - // Begin returning 0 when the underlying stream is too large. - if ($diff <= 0) { - return 0; - } - - // Write the stream or a subset of the stream if needed. - if (strlen($string) < $diff) { - return $this->stream->write($string); - } - - return $this->stream->write(substr($string, 0, $diff)); - } -} diff --git a/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php b/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php deleted file mode 100644 index 3a084779..00000000 --- a/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php +++ /dev/null @@ -1,14 +0,0 @@ - */ - private $methods; - - /** - * @param array $methods Hash of method name to a callable. - */ - public function __construct(array $methods) - { - $this->methods = $methods; - - // Create the functions on the class - foreach ($methods as $name => $fn) { - $this->{'_fn_'.$name} = $fn; - } - } - - /** - * Lazily determine which methods are not implemented. - * - * @throws \BadMethodCallException - */ - public function __get(string $name): void - { - throw new \BadMethodCallException(str_replace('_fn_', '', $name) - .'() is not implemented in the FnStream'); - } - - /** - * The close method is called on the underlying stream only if possible. - */ - public function __destruct() - { - if (isset($this->_fn_close)) { - ($this->_fn_close)(); - } - } - - /** - * An unserialize would allow the __destruct to run when the unserialized value goes out of scope. - * - * @throws \LogicException - */ - public function __wakeup(): void - { - throw new \LogicException('FnStream should never be unserialized'); - } - - /** - * Adds custom functionality to an underlying stream by intercepting - * specific method calls. - * - * @param StreamInterface $stream Stream to decorate - * @param array $methods Hash of method name to a closure - * - * @return FnStream - */ - public static function decorate(StreamInterface $stream, array $methods) - { - // If any of the required methods were not provided, then simply - // proxy to the decorated stream. - foreach (array_diff(self::SLOTS, array_keys($methods)) as $diff) { - /** @var callable $callable */ - $callable = [$stream, $diff]; - $methods[$diff] = $callable; - } - - return new self($methods); - } - - public function __toString(): string - { - try { - /** @var string */ - return ($this->_fn___toString)(); - } catch (\Throwable $e) { - if (\PHP_VERSION_ID >= 70400) { - throw $e; - } - trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR); - - return ''; - } - } - - public function close(): void - { - ($this->_fn_close)(); - } - - public function detach() - { - return ($this->_fn_detach)(); - } - - public function getSize(): ?int - { - return ($this->_fn_getSize)(); - } - - public function tell(): int - { - return ($this->_fn_tell)(); - } - - public function eof(): bool - { - return ($this->_fn_eof)(); - } - - public function isSeekable(): bool - { - return ($this->_fn_isSeekable)(); - } - - public function rewind(): void - { - ($this->_fn_rewind)(); - } - - public function seek($offset, $whence = SEEK_SET): void - { - ($this->_fn_seek)($offset, $whence); - } - - public function isWritable(): bool - { - return ($this->_fn_isWritable)(); - } - - public function write($string): int - { - return ($this->_fn_write)($string); - } - - public function isReadable(): bool - { - return ($this->_fn_isReadable)(); - } - - public function read($length): string - { - return ($this->_fn_read)($length); - } - - public function getContents(): string - { - return ($this->_fn_getContents)(); - } - - /** - * @return mixed - */ - public function getMetadata($key = null) - { - return ($this->_fn_getMetadata)($key); - } -} diff --git a/vendor/guzzlehttp/psr7/src/Header.php b/vendor/guzzlehttp/psr7/src/Header.php deleted file mode 100644 index bbce8b03..00000000 --- a/vendor/guzzlehttp/psr7/src/Header.php +++ /dev/null @@ -1,134 +0,0 @@ -]+>|[^=]+/', $kvp, $matches)) { - $m = $matches[0]; - if (isset($m[1])) { - $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed); - } else { - $part[] = trim($m[0], $trimmed); - } - } - } - if ($part) { - $params[] = $part; - } - } - } - - return $params; - } - - /** - * Converts an array of header values that may contain comma separated - * headers into an array of headers with no comma separated values. - * - * @param string|array $header Header to normalize. - * - * @deprecated Use self::splitList() instead. - */ - public static function normalize($header): array - { - $result = []; - foreach ((array) $header as $value) { - foreach (self::splitList($value) as $parsed) { - $result[] = $parsed; - } - } - - return $result; - } - - /** - * Splits a HTTP header defined to contain a comma-separated list into - * each individual value. Empty values will be removed. - * - * Example headers include 'accept', 'cache-control' and 'if-none-match'. - * - * This method must not be used to parse headers that are not defined as - * a list, such as 'user-agent' or 'set-cookie'. - * - * @param string|string[] $values Header value as returned by MessageInterface::getHeader() - * - * @return string[] - */ - public static function splitList($values): array - { - if (!\is_array($values)) { - $values = [$values]; - } - - $result = []; - foreach ($values as $value) { - if (!\is_string($value)) { - throw new \TypeError('$header must either be a string or an array containing strings.'); - } - - $v = ''; - $isQuoted = false; - $isEscaped = false; - for ($i = 0, $max = \strlen($value); $i < $max; ++$i) { - if ($isEscaped) { - $v .= $value[$i]; - $isEscaped = false; - - continue; - } - - if (!$isQuoted && $value[$i] === ',') { - $v = \trim($v); - if ($v !== '') { - $result[] = $v; - } - - $v = ''; - continue; - } - - if ($isQuoted && $value[$i] === '\\') { - $isEscaped = true; - $v .= $value[$i]; - - continue; - } - if ($value[$i] === '"') { - $isQuoted = !$isQuoted; - $v .= $value[$i]; - - continue; - } - - $v .= $value[$i]; - } - - $v = \trim($v); - if ($v !== '') { - $result[] = $v; - } - } - - return $result; - } -} diff --git a/vendor/guzzlehttp/psr7/src/HttpFactory.php b/vendor/guzzlehttp/psr7/src/HttpFactory.php deleted file mode 100644 index 3ef15103..00000000 --- a/vendor/guzzlehttp/psr7/src/HttpFactory.php +++ /dev/null @@ -1,94 +0,0 @@ -getSize(); - } - - return new UploadedFile($stream, $size, $error, $clientFilename, $clientMediaType); - } - - public function createStream(string $content = ''): StreamInterface - { - return Utils::streamFor($content); - } - - public function createStreamFromFile(string $file, string $mode = 'r'): StreamInterface - { - try { - $resource = Utils::tryFopen($file, $mode); - } catch (\RuntimeException $e) { - if ('' === $mode || false === \in_array($mode[0], ['r', 'w', 'a', 'x', 'c'], true)) { - throw new \InvalidArgumentException(sprintf('Invalid file opening mode "%s"', $mode), 0, $e); - } - - throw $e; - } - - return Utils::streamFor($resource); - } - - public function createStreamFromResource($resource): StreamInterface - { - return Utils::streamFor($resource); - } - - public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface - { - if (empty($method)) { - if (!empty($serverParams['REQUEST_METHOD'])) { - $method = $serverParams['REQUEST_METHOD']; - } else { - throw new \InvalidArgumentException('Cannot determine HTTP method'); - } - } - - return new ServerRequest($method, $uri, [], null, '1.1', $serverParams); - } - - public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface - { - return new Response($code, [], null, '1.1', $reasonPhrase); - } - - public function createRequest(string $method, $uri): RequestInterface - { - return new Request($method, $uri); - } - - public function createUri(string $uri = ''): UriInterface - { - return new Uri($uri); - } -} diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php deleted file mode 100644 index e674c9ab..00000000 --- a/vendor/guzzlehttp/psr7/src/InflateStream.php +++ /dev/null @@ -1,37 +0,0 @@ - 15 + 32]); - $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource)); - } -} diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php deleted file mode 100644 index f6c84904..00000000 --- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php +++ /dev/null @@ -1,49 +0,0 @@ -filename = $filename; - $this->mode = $mode; - - // unsetting the property forces the first access to go through - // __get(). - unset($this->stream); - } - - /** - * Creates the underlying stream lazily when required. - */ - protected function createStream(): StreamInterface - { - return Utils::streamFor(Utils::tryFopen($this->filename, $this->mode)); - } -} diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php deleted file mode 100644 index fb223255..00000000 --- a/vendor/guzzlehttp/psr7/src/LimitStream.php +++ /dev/null @@ -1,157 +0,0 @@ -stream = $stream; - $this->setLimit($limit); - $this->setOffset($offset); - } - - public function eof(): bool - { - // Always return true if the underlying stream is EOF - if ($this->stream->eof()) { - return true; - } - - // No limit and the underlying stream is not at EOF - if ($this->limit === -1) { - return false; - } - - return $this->stream->tell() >= $this->offset + $this->limit; - } - - /** - * Returns the size of the limited subset of data - */ - public function getSize(): ?int - { - if (null === ($length = $this->stream->getSize())) { - return null; - } elseif ($this->limit === -1) { - return $length - $this->offset; - } else { - return min($this->limit, $length - $this->offset); - } - } - - /** - * Allow for a bounded seek on the read limited stream - */ - public function seek($offset, $whence = SEEK_SET): void - { - if ($whence !== SEEK_SET || $offset < 0) { - throw new \RuntimeException(sprintf( - 'Cannot seek to offset %s with whence %s', - $offset, - $whence - )); - } - - $offset += $this->offset; - - if ($this->limit !== -1) { - if ($offset > $this->offset + $this->limit) { - $offset = $this->offset + $this->limit; - } - } - - $this->stream->seek($offset); - } - - /** - * Give a relative tell() - */ - public function tell(): int - { - return $this->stream->tell() - $this->offset; - } - - /** - * Set the offset to start limiting from - * - * @param int $offset Offset to seek to and begin byte limiting from - * - * @throws \RuntimeException if the stream cannot be seeked. - */ - public function setOffset(int $offset): void - { - $current = $this->stream->tell(); - - if ($current !== $offset) { - // If the stream cannot seek to the offset position, then read to it - if ($this->stream->isSeekable()) { - $this->stream->seek($offset); - } elseif ($current > $offset) { - throw new \RuntimeException("Could not seek to stream offset $offset"); - } else { - $this->stream->read($offset - $current); - } - } - - $this->offset = $offset; - } - - /** - * Set the limit of bytes that the decorator allows to be read from the - * stream. - * - * @param int $limit Number of bytes to allow to be read from the stream. - * Use -1 for no limit. - */ - public function setLimit(int $limit): void - { - $this->limit = $limit; - } - - public function read($length): string - { - if ($this->limit === -1) { - return $this->stream->read($length); - } - - // Check if the current position is less than the total allowed - // bytes + original offset - $remaining = ($this->offset + $this->limit) - $this->stream->tell(); - if ($remaining > 0) { - // Only return the amount of requested data, ensuring that the byte - // limit is not exceeded - return $this->stream->read(min($remaining, $length)); - } - - return ''; - } -} diff --git a/vendor/guzzlehttp/psr7/src/Message.php b/vendor/guzzlehttp/psr7/src/Message.php deleted file mode 100644 index 5561a513..00000000 --- a/vendor/guzzlehttp/psr7/src/Message.php +++ /dev/null @@ -1,246 +0,0 @@ -getMethod().' ' - .$message->getRequestTarget()) - .' HTTP/'.$message->getProtocolVersion(); - if (!$message->hasHeader('host')) { - $msg .= "\r\nHost: ".$message->getUri()->getHost(); - } - } elseif ($message instanceof ResponseInterface) { - $msg = 'HTTP/'.$message->getProtocolVersion().' ' - .$message->getStatusCode().' ' - .$message->getReasonPhrase(); - } else { - throw new \InvalidArgumentException('Unknown message type'); - } - - foreach ($message->getHeaders() as $name => $values) { - if (is_string($name) && strtolower($name) === 'set-cookie') { - foreach ($values as $value) { - $msg .= "\r\n{$name}: ".$value; - } - } else { - $msg .= "\r\n{$name}: ".implode(', ', $values); - } - } - - return "{$msg}\r\n\r\n".$message->getBody(); - } - - /** - * Get a short summary of the message body. - * - * Will return `null` if the response is not printable. - * - * @param MessageInterface $message The message to get the body summary - * @param int $truncateAt The maximum allowed size of the summary - */ - public static function bodySummary(MessageInterface $message, int $truncateAt = 120): ?string - { - $body = $message->getBody(); - - if (!$body->isSeekable() || !$body->isReadable()) { - return null; - } - - $size = $body->getSize(); - - if ($size === 0) { - return null; - } - - $body->rewind(); - $summary = $body->read($truncateAt); - $body->rewind(); - - if ($size > $truncateAt) { - $summary .= ' (truncated...)'; - } - - // Matches any printable character, including unicode characters: - // letters, marks, numbers, punctuation, spacing, and separators. - if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/u', $summary) !== 0) { - return null; - } - - return $summary; - } - - /** - * Attempts to rewind a message body and throws an exception on failure. - * - * The body of the message will only be rewound if a call to `tell()` - * returns a value other than `0`. - * - * @param MessageInterface $message Message to rewind - * - * @throws \RuntimeException - */ - public static function rewindBody(MessageInterface $message): void - { - $body = $message->getBody(); - - if ($body->tell()) { - $body->rewind(); - } - } - - /** - * Parses an HTTP message into an associative array. - * - * The array contains the "start-line" key containing the start line of - * the message, "headers" key containing an associative array of header - * array values, and a "body" key containing the body of the message. - * - * @param string $message HTTP request or response to parse. - */ - public static function parseMessage(string $message): array - { - if (!$message) { - throw new \InvalidArgumentException('Invalid message'); - } - - $message = ltrim($message, "\r\n"); - - $messageParts = preg_split("/\r?\n\r?\n/", $message, 2); - - if ($messageParts === false || count($messageParts) !== 2) { - throw new \InvalidArgumentException('Invalid message: Missing header delimiter'); - } - - [$rawHeaders, $body] = $messageParts; - $rawHeaders .= "\r\n"; // Put back the delimiter we split previously - $headerParts = preg_split("/\r?\n/", $rawHeaders, 2); - - if ($headerParts === false || count($headerParts) !== 2) { - throw new \InvalidArgumentException('Invalid message: Missing status line'); - } - - [$startLine, $rawHeaders] = $headerParts; - - if (preg_match("/(?:^HTTP\/|^[A-Z]+ \S+ HTTP\/)(\d+(?:\.\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') { - // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0 - $rawHeaders = preg_replace(Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders); - } - - /** @var array[] $headerLines */ - $count = preg_match_all(Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, PREG_SET_ORDER); - - // If these aren't the same, then one line didn't match and there's an invalid header. - if ($count !== substr_count($rawHeaders, "\n")) { - // Folding is deprecated, see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4 - if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) { - throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding'); - } - - throw new \InvalidArgumentException('Invalid header syntax'); - } - - $headers = []; - - foreach ($headerLines as $headerLine) { - $headers[$headerLine[1]][] = $headerLine[2]; - } - - return [ - 'start-line' => $startLine, - 'headers' => $headers, - 'body' => $body, - ]; - } - - /** - * Constructs a URI for an HTTP request message. - * - * @param string $path Path from the start-line - * @param array $headers Array of headers (each value an array). - */ - public static function parseRequestUri(string $path, array $headers): string - { - $hostKey = array_filter(array_keys($headers), function ($k) { - // Numeric array keys are converted to int by PHP. - $k = (string) $k; - - return strtolower($k) === 'host'; - }); - - // If no host is found, then a full URI cannot be constructed. - if (!$hostKey) { - return $path; - } - - $host = $headers[reset($hostKey)][0]; - $scheme = substr($host, -4) === ':443' ? 'https' : 'http'; - - return $scheme.'://'.$host.'/'.ltrim($path, '/'); - } - - /** - * Parses a request message string into a request object. - * - * @param string $message Request message string. - */ - public static function parseRequest(string $message): RequestInterface - { - $data = self::parseMessage($message); - $matches = []; - if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) { - throw new \InvalidArgumentException('Invalid request string'); - } - $parts = explode(' ', $data['start-line'], 3); - $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1'; - - $request = new Request( - $parts[0], - $matches[1] === '/' ? self::parseRequestUri($parts[1], $data['headers']) : $parts[1], - $data['headers'], - $data['body'], - $version - ); - - return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); - } - - /** - * Parses a response message string into a response object. - * - * @param string $message Response message string. - */ - public static function parseResponse(string $message): ResponseInterface - { - $data = self::parseMessage($message); - // According to https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2 - // the space between status-code and reason-phrase is required. But - // browsers accept responses without space and reason as well. - if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) { - throw new \InvalidArgumentException('Invalid response string: '.$data['start-line']); - } - $parts = explode(' ', $data['start-line'], 3); - - return new Response( - (int) $parts[1], - $data['headers'], - $data['body'], - explode('/', $parts[0])[1], - $parts[2] ?? null - ); - } -} diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php deleted file mode 100644 index c15ee63f..00000000 --- a/vendor/guzzlehttp/psr7/src/MessageTrait.php +++ /dev/null @@ -1,261 +0,0 @@ - array of values */ - private $headers = []; - - /** @var string[] Map of lowercase header name => original name at registration */ - private $headerNames = []; - - /** @var string */ - private $protocol = '1.1'; - - /** @var StreamInterface|null */ - private $stream; - - public function getProtocolVersion(): string - { - return $this->protocol; - } - - public function withProtocolVersion($version): MessageInterface - { - if ($this->protocol === $version) { - return $this; - } - - $new = clone $this; - $new->protocol = $version; - - return $new; - } - - public function getHeaders(): array - { - return $this->headers; - } - - public function hasHeader($header): bool - { - return isset($this->headerNames[strtolower($header)]); - } - - public function getHeader($header): array - { - $header = strtolower($header); - - if (!isset($this->headerNames[$header])) { - return []; - } - - $header = $this->headerNames[$header]; - - return $this->headers[$header]; - } - - public function getHeaderLine($header): string - { - return implode(', ', $this->getHeader($header)); - } - - public function withHeader($header, $value): MessageInterface - { - $this->assertHeader($header); - $value = $this->normalizeHeaderValue($value); - $normalized = strtolower($header); - - $new = clone $this; - if (isset($new->headerNames[$normalized])) { - unset($new->headers[$new->headerNames[$normalized]]); - } - $new->headerNames[$normalized] = $header; - $new->headers[$header] = $value; - - return $new; - } - - public function withAddedHeader($header, $value): MessageInterface - { - $this->assertHeader($header); - $value = $this->normalizeHeaderValue($value); - $normalized = strtolower($header); - - $new = clone $this; - if (isset($new->headerNames[$normalized])) { - $header = $this->headerNames[$normalized]; - $new->headers[$header] = array_merge($this->headers[$header], $value); - } else { - $new->headerNames[$normalized] = $header; - $new->headers[$header] = $value; - } - - return $new; - } - - public function withoutHeader($header): MessageInterface - { - $normalized = strtolower($header); - - if (!isset($this->headerNames[$normalized])) { - return $this; - } - - $header = $this->headerNames[$normalized]; - - $new = clone $this; - unset($new->headers[$header], $new->headerNames[$normalized]); - - return $new; - } - - public function getBody(): StreamInterface - { - if (!$this->stream) { - $this->stream = Utils::streamFor(''); - } - - return $this->stream; - } - - public function withBody(StreamInterface $body): MessageInterface - { - if ($body === $this->stream) { - return $this; - } - - $new = clone $this; - $new->stream = $body; - - return $new; - } - - /** - * @param (string|string[])[] $headers - */ - private function setHeaders(array $headers): void - { - $this->headerNames = $this->headers = []; - foreach ($headers as $header => $value) { - // Numeric array keys are converted to int by PHP. - $header = (string) $header; - - $this->assertHeader($header); - $value = $this->normalizeHeaderValue($value); - $normalized = strtolower($header); - if (isset($this->headerNames[$normalized])) { - $header = $this->headerNames[$normalized]; - $this->headers[$header] = array_merge($this->headers[$header], $value); - } else { - $this->headerNames[$normalized] = $header; - $this->headers[$header] = $value; - } - } - } - - /** - * @param mixed $value - * - * @return string[] - */ - private function normalizeHeaderValue($value): array - { - if (!is_array($value)) { - return $this->trimAndValidateHeaderValues([$value]); - } - - return $this->trimAndValidateHeaderValues($value); - } - - /** - * Trims whitespace from the header values. - * - * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field. - * - * header-field = field-name ":" OWS field-value OWS - * OWS = *( SP / HTAB ) - * - * @param mixed[] $values Header values - * - * @return string[] Trimmed header values - * - * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4 - */ - private function trimAndValidateHeaderValues(array $values): array - { - return array_map(function ($value) { - if (!is_scalar($value) && null !== $value) { - throw new \InvalidArgumentException(sprintf( - 'Header value must be scalar or null but %s provided.', - is_object($value) ? get_class($value) : gettype($value) - )); - } - - $trimmed = trim((string) $value, " \t"); - $this->assertValue($trimmed); - - return $trimmed; - }, array_values($values)); - } - - /** - * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2 - * - * @param mixed $header - */ - private function assertHeader($header): void - { - if (!is_string($header)) { - throw new \InvalidArgumentException(sprintf( - 'Header name must be a string but %s provided.', - is_object($header) ? get_class($header) : gettype($header) - )); - } - - if (!preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/D', $header)) { - throw new \InvalidArgumentException( - sprintf('"%s" is not valid header name.', $header) - ); - } - } - - /** - * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2 - * - * field-value = *( field-content / obs-fold ) - * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] - * field-vchar = VCHAR / obs-text - * VCHAR = %x21-7E - * obs-text = %x80-FF - * obs-fold = CRLF 1*( SP / HTAB ) - */ - private function assertValue(string $value): void - { - // The regular expression intentionally does not support the obs-fold production, because as - // per RFC 7230#3.2.4: - // - // A sender MUST NOT generate a message that includes - // line folding (i.e., that has any field-value that contains a match to - // the obs-fold rule) unless the message is intended for packaging - // within the message/http media type. - // - // Clients must not send a request with line folding and a server sending folded headers is - // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting - // folding is not likely to break any legitimate use case. - if (!preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/D', $value)) { - throw new \InvalidArgumentException( - sprintf('"%s" is not valid header value.', $value) - ); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/MimeType.php b/vendor/guzzlehttp/psr7/src/MimeType.php deleted file mode 100644 index b131bdbe..00000000 --- a/vendor/guzzlehttp/psr7/src/MimeType.php +++ /dev/null @@ -1,1259 +0,0 @@ - 'application/vnd.1000minds.decision-model+xml', - '3dml' => 'text/vnd.in3d.3dml', - '3ds' => 'image/x-3ds', - '3g2' => 'video/3gpp2', - '3gp' => 'video/3gp', - '3gpp' => 'video/3gpp', - '3mf' => 'model/3mf', - '7z' => 'application/x-7z-compressed', - '7zip' => 'application/x-7z-compressed', - '123' => 'application/vnd.lotus-1-2-3', - 'aab' => 'application/x-authorware-bin', - 'aac' => 'audio/aac', - 'aam' => 'application/x-authorware-map', - 'aas' => 'application/x-authorware-seg', - 'abw' => 'application/x-abiword', - 'ac' => 'application/vnd.nokia.n-gage.ac+xml', - 'ac3' => 'audio/ac3', - 'acc' => 'application/vnd.americandynamics.acc', - 'ace' => 'application/x-ace-compressed', - 'acu' => 'application/vnd.acucobol', - 'acutc' => 'application/vnd.acucorp', - 'adp' => 'audio/adpcm', - 'adts' => 'audio/aac', - 'aep' => 'application/vnd.audiograph', - 'afm' => 'application/x-font-type1', - 'afp' => 'application/vnd.ibm.modcap', - 'age' => 'application/vnd.age', - 'ahead' => 'application/vnd.ahead.space', - 'ai' => 'application/pdf', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'air' => 'application/vnd.adobe.air-application-installer-package+zip', - 'ait' => 'application/vnd.dvb.ait', - 'ami' => 'application/vnd.amiga.ami', - 'aml' => 'application/automationml-aml+xml', - 'amlx' => 'application/automationml-amlx+zip', - 'amr' => 'audio/amr', - 'apk' => 'application/vnd.android.package-archive', - 'apng' => 'image/apng', - 'appcache' => 'text/cache-manifest', - 'appinstaller' => 'application/appinstaller', - 'application' => 'application/x-ms-application', - 'appx' => 'application/appx', - 'appxbundle' => 'application/appxbundle', - 'apr' => 'application/vnd.lotus-approach', - 'arc' => 'application/x-freearc', - 'arj' => 'application/x-arj', - 'asc' => 'application/pgp-signature', - 'asf' => 'video/x-ms-asf', - 'asm' => 'text/x-asm', - 'aso' => 'application/vnd.accpac.simply.aso', - 'asx' => 'video/x-ms-asf', - 'atc' => 'application/vnd.acucorp', - 'atom' => 'application/atom+xml', - 'atomcat' => 'application/atomcat+xml', - 'atomdeleted' => 'application/atomdeleted+xml', - 'atomsvc' => 'application/atomsvc+xml', - 'atx' => 'application/vnd.antix.game-component', - 'au' => 'audio/x-au', - 'avci' => 'image/avci', - 'avcs' => 'image/avcs', - 'avi' => 'video/x-msvideo', - 'avif' => 'image/avif', - 'aw' => 'application/applixware', - 'azf' => 'application/vnd.airzip.filesecure.azf', - 'azs' => 'application/vnd.airzip.filesecure.azs', - 'azv' => 'image/vnd.airzip.accelerator.azv', - 'azw' => 'application/vnd.amazon.ebook', - 'b16' => 'image/vnd.pco.b16', - 'bat' => 'application/x-msdownload', - 'bcpio' => 'application/x-bcpio', - 'bdf' => 'application/x-font-bdf', - 'bdm' => 'application/vnd.syncml.dm+wbxml', - 'bdoc' => 'application/x-bdoc', - 'bed' => 'application/vnd.realvnc.bed', - 'bh2' => 'application/vnd.fujitsu.oasysprs', - 'bin' => 'application/octet-stream', - 'blb' => 'application/x-blorb', - 'blorb' => 'application/x-blorb', - 'bmi' => 'application/vnd.bmi', - 'bmml' => 'application/vnd.balsamiq.bmml+xml', - 'bmp' => 'image/bmp', - 'book' => 'application/vnd.framemaker', - 'box' => 'application/vnd.previewsystems.box', - 'boz' => 'application/x-bzip2', - 'bpk' => 'application/octet-stream', - 'bpmn' => 'application/octet-stream', - 'bsp' => 'model/vnd.valve.source.compiled-map', - 'btf' => 'image/prs.btif', - 'btif' => 'image/prs.btif', - 'buffer' => 'application/octet-stream', - 'bz' => 'application/x-bzip', - 'bz2' => 'application/x-bzip2', - 'c' => 'text/x-c', - 'c4d' => 'application/vnd.clonk.c4group', - 'c4f' => 'application/vnd.clonk.c4group', - 'c4g' => 'application/vnd.clonk.c4group', - 'c4p' => 'application/vnd.clonk.c4group', - 'c4u' => 'application/vnd.clonk.c4group', - 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', - 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', - 'cab' => 'application/vnd.ms-cab-compressed', - 'caf' => 'audio/x-caf', - 'cap' => 'application/vnd.tcpdump.pcap', - 'car' => 'application/vnd.curl.car', - 'cat' => 'application/vnd.ms-pki.seccat', - 'cb7' => 'application/x-cbr', - 'cba' => 'application/x-cbr', - 'cbr' => 'application/x-cbr', - 'cbt' => 'application/x-cbr', - 'cbz' => 'application/x-cbr', - 'cc' => 'text/x-c', - 'cco' => 'application/x-cocoa', - 'cct' => 'application/x-director', - 'ccxml' => 'application/ccxml+xml', - 'cdbcmsg' => 'application/vnd.contact.cmsg', - 'cdf' => 'application/x-netcdf', - 'cdfx' => 'application/cdfx+xml', - 'cdkey' => 'application/vnd.mediastation.cdkey', - 'cdmia' => 'application/cdmi-capability', - 'cdmic' => 'application/cdmi-container', - 'cdmid' => 'application/cdmi-domain', - 'cdmio' => 'application/cdmi-object', - 'cdmiq' => 'application/cdmi-queue', - 'cdr' => 'application/cdr', - 'cdx' => 'chemical/x-cdx', - 'cdxml' => 'application/vnd.chemdraw+xml', - 'cdy' => 'application/vnd.cinderella', - 'cer' => 'application/pkix-cert', - 'cfs' => 'application/x-cfs-compressed', - 'cgm' => 'image/cgm', - 'chat' => 'application/x-chat', - 'chm' => 'application/vnd.ms-htmlhelp', - 'chrt' => 'application/vnd.kde.kchart', - 'cif' => 'chemical/x-cif', - 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', - 'cil' => 'application/vnd.ms-artgalry', - 'cjs' => 'application/node', - 'cla' => 'application/vnd.claymore', - 'class' => 'application/octet-stream', - 'cld' => 'model/vnd.cld', - 'clkk' => 'application/vnd.crick.clicker.keyboard', - 'clkp' => 'application/vnd.crick.clicker.palette', - 'clkt' => 'application/vnd.crick.clicker.template', - 'clkw' => 'application/vnd.crick.clicker.wordbank', - 'clkx' => 'application/vnd.crick.clicker', - 'clp' => 'application/x-msclip', - 'cmc' => 'application/vnd.cosmocaller', - 'cmdf' => 'chemical/x-cmdf', - 'cml' => 'chemical/x-cml', - 'cmp' => 'application/vnd.yellowriver-custom-menu', - 'cmx' => 'image/x-cmx', - 'cod' => 'application/vnd.rim.cod', - 'coffee' => 'text/coffeescript', - 'com' => 'application/x-msdownload', - 'conf' => 'text/plain', - 'cpio' => 'application/x-cpio', - 'cpl' => 'application/cpl+xml', - 'cpp' => 'text/x-c', - 'cpt' => 'application/mac-compactpro', - 'crd' => 'application/x-mscardfile', - 'crl' => 'application/pkix-crl', - 'crt' => 'application/x-x509-ca-cert', - 'crx' => 'application/x-chrome-extension', - 'cryptonote' => 'application/vnd.rig.cryptonote', - 'csh' => 'application/x-csh', - 'csl' => 'application/vnd.citationstyles.style+xml', - 'csml' => 'chemical/x-csml', - 'csp' => 'application/vnd.commonspace', - 'csr' => 'application/octet-stream', - 'css' => 'text/css', - 'cst' => 'application/x-director', - 'csv' => 'text/csv', - 'cu' => 'application/cu-seeme', - 'curl' => 'text/vnd.curl', - 'cwl' => 'application/cwl', - 'cww' => 'application/prs.cww', - 'cxt' => 'application/x-director', - 'cxx' => 'text/x-c', - 'dae' => 'model/vnd.collada+xml', - 'daf' => 'application/vnd.mobius.daf', - 'dart' => 'application/vnd.dart', - 'dataless' => 'application/vnd.fdsn.seed', - 'davmount' => 'application/davmount+xml', - 'dbf' => 'application/vnd.dbf', - 'dbk' => 'application/docbook+xml', - 'dcr' => 'application/x-director', - 'dcurl' => 'text/vnd.curl.dcurl', - 'dd2' => 'application/vnd.oma.dd2+xml', - 'ddd' => 'application/vnd.fujixerox.ddd', - 'ddf' => 'application/vnd.syncml.dmddf+xml', - 'dds' => 'image/vnd.ms-dds', - 'deb' => 'application/x-debian-package', - 'def' => 'text/plain', - 'deploy' => 'application/octet-stream', - 'der' => 'application/x-x509-ca-cert', - 'dfac' => 'application/vnd.dreamfactory', - 'dgc' => 'application/x-dgc-compressed', - 'dib' => 'image/bmp', - 'dic' => 'text/x-c', - 'dir' => 'application/x-director', - 'dis' => 'application/vnd.mobius.dis', - 'disposition-notification' => 'message/disposition-notification', - 'dist' => 'application/octet-stream', - 'distz' => 'application/octet-stream', - 'djv' => 'image/vnd.djvu', - 'djvu' => 'image/vnd.djvu', - 'dll' => 'application/octet-stream', - 'dmg' => 'application/x-apple-diskimage', - 'dmn' => 'application/octet-stream', - 'dmp' => 'application/vnd.tcpdump.pcap', - 'dms' => 'application/octet-stream', - 'dna' => 'application/vnd.dna', - 'doc' => 'application/msword', - 'docm' => 'application/vnd.ms-word.template.macroEnabled.12', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dot' => 'application/msword', - 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', - 'dp' => 'application/vnd.osgi.dp', - 'dpg' => 'application/vnd.dpgraph', - 'dpx' => 'image/dpx', - 'dra' => 'audio/vnd.dra', - 'drle' => 'image/dicom-rle', - 'dsc' => 'text/prs.lines.tag', - 'dssc' => 'application/dssc+der', - 'dtb' => 'application/x-dtbook+xml', - 'dtd' => 'application/xml-dtd', - 'dts' => 'audio/vnd.dts', - 'dtshd' => 'audio/vnd.dts.hd', - 'dump' => 'application/octet-stream', - 'dvb' => 'video/vnd.dvb.file', - 'dvi' => 'application/x-dvi', - 'dwd' => 'application/atsc-dwd+xml', - 'dwf' => 'model/vnd.dwf', - 'dwg' => 'image/vnd.dwg', - 'dxf' => 'image/vnd.dxf', - 'dxp' => 'application/vnd.spotfire.dxp', - 'dxr' => 'application/x-director', - 'ear' => 'application/java-archive', - 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', - 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', - 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', - 'ecma' => 'application/ecmascript', - 'edm' => 'application/vnd.novadigm.edm', - 'edx' => 'application/vnd.novadigm.edx', - 'efif' => 'application/vnd.picsel', - 'ei6' => 'application/vnd.pg.osasli', - 'elc' => 'application/octet-stream', - 'emf' => 'image/emf', - 'eml' => 'message/rfc822', - 'emma' => 'application/emma+xml', - 'emotionml' => 'application/emotionml+xml', - 'emz' => 'application/x-msmetafile', - 'eol' => 'audio/vnd.digital-winds', - 'eot' => 'application/vnd.ms-fontobject', - 'eps' => 'application/postscript', - 'epub' => 'application/epub+zip', - 'es3' => 'application/vnd.eszigno3+xml', - 'esa' => 'application/vnd.osgi.subsystem', - 'esf' => 'application/vnd.epson.esf', - 'et3' => 'application/vnd.eszigno3+xml', - 'etx' => 'text/x-setext', - 'eva' => 'application/x-eva', - 'evy' => 'application/x-envoy', - 'exe' => 'application/octet-stream', - 'exi' => 'application/exi', - 'exp' => 'application/express', - 'exr' => 'image/aces', - 'ext' => 'application/vnd.novadigm.ext', - 'ez' => 'application/andrew-inset', - 'ez2' => 'application/vnd.ezpix-album', - 'ez3' => 'application/vnd.ezpix-package', - 'f' => 'text/x-fortran', - 'f4v' => 'video/mp4', - 'f77' => 'text/x-fortran', - 'f90' => 'text/x-fortran', - 'fbs' => 'image/vnd.fastbidsheet', - 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', - 'fcs' => 'application/vnd.isac.fcs', - 'fdf' => 'application/vnd.fdf', - 'fdt' => 'application/fdt+xml', - 'fe_launch' => 'application/vnd.denovo.fcselayout-link', - 'fg5' => 'application/vnd.fujitsu.oasysgp', - 'fgd' => 'application/x-director', - 'fh' => 'image/x-freehand', - 'fh4' => 'image/x-freehand', - 'fh5' => 'image/x-freehand', - 'fh7' => 'image/x-freehand', - 'fhc' => 'image/x-freehand', - 'fig' => 'application/x-xfig', - 'fits' => 'image/fits', - 'flac' => 'audio/x-flac', - 'fli' => 'video/x-fli', - 'flo' => 'application/vnd.micrografx.flo', - 'flv' => 'video/x-flv', - 'flw' => 'application/vnd.kde.kivio', - 'flx' => 'text/vnd.fmi.flexstor', - 'fly' => 'text/vnd.fly', - 'fm' => 'application/vnd.framemaker', - 'fnc' => 'application/vnd.frogans.fnc', - 'fo' => 'application/vnd.software602.filler.form+xml', - 'for' => 'text/x-fortran', - 'fpx' => 'image/vnd.fpx', - 'frame' => 'application/vnd.framemaker', - 'fsc' => 'application/vnd.fsc.weblaunch', - 'fst' => 'image/vnd.fst', - 'ftc' => 'application/vnd.fluxtime.clip', - 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', - 'fvt' => 'video/vnd.fvt', - 'fxp' => 'application/vnd.adobe.fxp', - 'fxpl' => 'application/vnd.adobe.fxp', - 'fzs' => 'application/vnd.fuzzysheet', - 'g2w' => 'application/vnd.geoplan', - 'g3' => 'image/g3fax', - 'g3w' => 'application/vnd.geospace', - 'gac' => 'application/vnd.groove-account', - 'gam' => 'application/x-tads', - 'gbr' => 'application/rpki-ghostbusters', - 'gca' => 'application/x-gca-compressed', - 'gdl' => 'model/vnd.gdl', - 'gdoc' => 'application/vnd.google-apps.document', - 'ged' => 'text/vnd.familysearch.gedcom', - 'geo' => 'application/vnd.dynageo', - 'geojson' => 'application/geo+json', - 'gex' => 'application/vnd.geometry-explorer', - 'ggb' => 'application/vnd.geogebra.file', - 'ggt' => 'application/vnd.geogebra.tool', - 'ghf' => 'application/vnd.groove-help', - 'gif' => 'image/gif', - 'gim' => 'application/vnd.groove-identity-message', - 'glb' => 'model/gltf-binary', - 'gltf' => 'model/gltf+json', - 'gml' => 'application/gml+xml', - 'gmx' => 'application/vnd.gmx', - 'gnumeric' => 'application/x-gnumeric', - 'gpg' => 'application/gpg-keys', - 'gph' => 'application/vnd.flographit', - 'gpx' => 'application/gpx+xml', - 'gqf' => 'application/vnd.grafeq', - 'gqs' => 'application/vnd.grafeq', - 'gram' => 'application/srgs', - 'gramps' => 'application/x-gramps-xml', - 'gre' => 'application/vnd.geometry-explorer', - 'grv' => 'application/vnd.groove-injector', - 'grxml' => 'application/srgs+xml', - 'gsf' => 'application/x-font-ghostscript', - 'gsheet' => 'application/vnd.google-apps.spreadsheet', - 'gslides' => 'application/vnd.google-apps.presentation', - 'gtar' => 'application/x-gtar', - 'gtm' => 'application/vnd.groove-tool-message', - 'gtw' => 'model/vnd.gtw', - 'gv' => 'text/vnd.graphviz', - 'gxf' => 'application/gxf', - 'gxt' => 'application/vnd.geonext', - 'gz' => 'application/gzip', - 'gzip' => 'application/gzip', - 'h' => 'text/x-c', - 'h261' => 'video/h261', - 'h263' => 'video/h263', - 'h264' => 'video/h264', - 'hal' => 'application/vnd.hal+xml', - 'hbci' => 'application/vnd.hbci', - 'hbs' => 'text/x-handlebars-template', - 'hdd' => 'application/x-virtualbox-hdd', - 'hdf' => 'application/x-hdf', - 'heic' => 'image/heic', - 'heics' => 'image/heic-sequence', - 'heif' => 'image/heif', - 'heifs' => 'image/heif-sequence', - 'hej2' => 'image/hej2k', - 'held' => 'application/atsc-held+xml', - 'hh' => 'text/x-c', - 'hjson' => 'application/hjson', - 'hlp' => 'application/winhlp', - 'hpgl' => 'application/vnd.hp-hpgl', - 'hpid' => 'application/vnd.hp-hpid', - 'hps' => 'application/vnd.hp-hps', - 'hqx' => 'application/mac-binhex40', - 'hsj2' => 'image/hsj2', - 'htc' => 'text/x-component', - 'htke' => 'application/vnd.kenameaapp', - 'htm' => 'text/html', - 'html' => 'text/html', - 'hvd' => 'application/vnd.yamaha.hv-dic', - 'hvp' => 'application/vnd.yamaha.hv-voice', - 'hvs' => 'application/vnd.yamaha.hv-script', - 'i2g' => 'application/vnd.intergeo', - 'icc' => 'application/vnd.iccprofile', - 'ice' => 'x-conference/x-cooltalk', - 'icm' => 'application/vnd.iccprofile', - 'ico' => 'image/x-icon', - 'ics' => 'text/calendar', - 'ief' => 'image/ief', - 'ifb' => 'text/calendar', - 'ifm' => 'application/vnd.shana.informed.formdata', - 'iges' => 'model/iges', - 'igl' => 'application/vnd.igloader', - 'igm' => 'application/vnd.insors.igm', - 'igs' => 'model/iges', - 'igx' => 'application/vnd.micrografx.igx', - 'iif' => 'application/vnd.shana.informed.interchange', - 'img' => 'application/octet-stream', - 'imp' => 'application/vnd.accpac.simply.imp', - 'ims' => 'application/vnd.ms-ims', - 'in' => 'text/plain', - 'ini' => 'text/plain', - 'ink' => 'application/inkml+xml', - 'inkml' => 'application/inkml+xml', - 'install' => 'application/x-install-instructions', - 'iota' => 'application/vnd.astraea-software.iota', - 'ipfix' => 'application/ipfix', - 'ipk' => 'application/vnd.shana.informed.package', - 'irm' => 'application/vnd.ibm.rights-management', - 'irp' => 'application/vnd.irepository.package+xml', - 'iso' => 'application/x-iso9660-image', - 'itp' => 'application/vnd.shana.informed.formtemplate', - 'its' => 'application/its+xml', - 'ivp' => 'application/vnd.immervision-ivp', - 'ivu' => 'application/vnd.immervision-ivu', - 'jad' => 'text/vnd.sun.j2me.app-descriptor', - 'jade' => 'text/jade', - 'jam' => 'application/vnd.jam', - 'jar' => 'application/java-archive', - 'jardiff' => 'application/x-java-archive-diff', - 'java' => 'text/x-java-source', - 'jhc' => 'image/jphc', - 'jisp' => 'application/vnd.jisp', - 'jls' => 'image/jls', - 'jlt' => 'application/vnd.hp-jlyt', - 'jng' => 'image/x-jng', - 'jnlp' => 'application/x-java-jnlp-file', - 'joda' => 'application/vnd.joost.joda-archive', - 'jp2' => 'image/jp2', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpf' => 'image/jpx', - 'jpg' => 'image/jpeg', - 'jpg2' => 'image/jp2', - 'jpgm' => 'video/jpm', - 'jpgv' => 'video/jpeg', - 'jph' => 'image/jph', - 'jpm' => 'video/jpm', - 'jpx' => 'image/jpx', - 'js' => 'application/javascript', - 'json' => 'application/json', - 'json5' => 'application/json5', - 'jsonld' => 'application/ld+json', - 'jsonml' => 'application/jsonml+json', - 'jsx' => 'text/jsx', - 'jt' => 'model/jt', - 'jxr' => 'image/jxr', - 'jxra' => 'image/jxra', - 'jxrs' => 'image/jxrs', - 'jxs' => 'image/jxs', - 'jxsc' => 'image/jxsc', - 'jxsi' => 'image/jxsi', - 'jxss' => 'image/jxss', - 'kar' => 'audio/midi', - 'karbon' => 'application/vnd.kde.karbon', - 'kdb' => 'application/octet-stream', - 'kdbx' => 'application/x-keepass2', - 'key' => 'application/x-iwork-keynote-sffkey', - 'kfo' => 'application/vnd.kde.kformula', - 'kia' => 'application/vnd.kidspiration', - 'kml' => 'application/vnd.google-earth.kml+xml', - 'kmz' => 'application/vnd.google-earth.kmz', - 'kne' => 'application/vnd.kinar', - 'knp' => 'application/vnd.kinar', - 'kon' => 'application/vnd.kde.kontour', - 'kpr' => 'application/vnd.kde.kpresenter', - 'kpt' => 'application/vnd.kde.kpresenter', - 'kpxx' => 'application/vnd.ds-keypoint', - 'ksp' => 'application/vnd.kde.kspread', - 'ktr' => 'application/vnd.kahootz', - 'ktx' => 'image/ktx', - 'ktx2' => 'image/ktx2', - 'ktz' => 'application/vnd.kahootz', - 'kwd' => 'application/vnd.kde.kword', - 'kwt' => 'application/vnd.kde.kword', - 'lasxml' => 'application/vnd.las.las+xml', - 'latex' => 'application/x-latex', - 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', - 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', - 'les' => 'application/vnd.hhe.lesson-player', - 'less' => 'text/less', - 'lgr' => 'application/lgr+xml', - 'lha' => 'application/octet-stream', - 'link66' => 'application/vnd.route66.link66+xml', - 'list' => 'text/plain', - 'list3820' => 'application/vnd.ibm.modcap', - 'listafp' => 'application/vnd.ibm.modcap', - 'litcoffee' => 'text/coffeescript', - 'lnk' => 'application/x-ms-shortcut', - 'log' => 'text/plain', - 'lostxml' => 'application/lost+xml', - 'lrf' => 'application/octet-stream', - 'lrm' => 'application/vnd.ms-lrm', - 'ltf' => 'application/vnd.frogans.ltf', - 'lua' => 'text/x-lua', - 'luac' => 'application/x-lua-bytecode', - 'lvp' => 'audio/vnd.lucent.voice', - 'lwp' => 'application/vnd.lotus-wordpro', - 'lzh' => 'application/octet-stream', - 'm1v' => 'video/mpeg', - 'm2a' => 'audio/mpeg', - 'm2v' => 'video/mpeg', - 'm3a' => 'audio/mpeg', - 'm3u' => 'text/plain', - 'm3u8' => 'application/vnd.apple.mpegurl', - 'm4a' => 'audio/x-m4a', - 'm4p' => 'application/mp4', - 'm4s' => 'video/iso.segment', - 'm4u' => 'application/vnd.mpegurl', - 'm4v' => 'video/x-m4v', - 'm13' => 'application/x-msmediaview', - 'm14' => 'application/x-msmediaview', - 'm21' => 'application/mp21', - 'ma' => 'application/mathematica', - 'mads' => 'application/mads+xml', - 'maei' => 'application/mmt-aei+xml', - 'mag' => 'application/vnd.ecowin.chart', - 'maker' => 'application/vnd.framemaker', - 'man' => 'text/troff', - 'manifest' => 'text/cache-manifest', - 'map' => 'application/json', - 'mar' => 'application/octet-stream', - 'markdown' => 'text/markdown', - 'mathml' => 'application/mathml+xml', - 'mb' => 'application/mathematica', - 'mbk' => 'application/vnd.mobius.mbk', - 'mbox' => 'application/mbox', - 'mc1' => 'application/vnd.medcalcdata', - 'mcd' => 'application/vnd.mcd', - 'mcurl' => 'text/vnd.curl.mcurl', - 'md' => 'text/markdown', - 'mdb' => 'application/x-msaccess', - 'mdi' => 'image/vnd.ms-modi', - 'mdx' => 'text/mdx', - 'me' => 'text/troff', - 'mesh' => 'model/mesh', - 'meta4' => 'application/metalink4+xml', - 'metalink' => 'application/metalink+xml', - 'mets' => 'application/mets+xml', - 'mfm' => 'application/vnd.mfmp', - 'mft' => 'application/rpki-manifest', - 'mgp' => 'application/vnd.osgeo.mapguide.package', - 'mgz' => 'application/vnd.proteus.magazine', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mie' => 'application/x-mie', - 'mif' => 'application/vnd.mif', - 'mime' => 'message/rfc822', - 'mj2' => 'video/mj2', - 'mjp2' => 'video/mj2', - 'mjs' => 'text/javascript', - 'mk3d' => 'video/x-matroska', - 'mka' => 'audio/x-matroska', - 'mkd' => 'text/x-markdown', - 'mks' => 'video/x-matroska', - 'mkv' => 'video/x-matroska', - 'mlp' => 'application/vnd.dolby.mlp', - 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', - 'mmf' => 'application/vnd.smaf', - 'mml' => 'text/mathml', - 'mmr' => 'image/vnd.fujixerox.edmics-mmr', - 'mng' => 'video/x-mng', - 'mny' => 'application/x-msmoney', - 'mobi' => 'application/x-mobipocket-ebook', - 'mods' => 'application/mods+xml', - 'mov' => 'video/quicktime', - 'movie' => 'video/x-sgi-movie', - 'mp2' => 'audio/mpeg', - 'mp2a' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mp4a' => 'audio/mp4', - 'mp4s' => 'application/mp4', - 'mp4v' => 'video/mp4', - 'mp21' => 'application/mp21', - 'mpc' => 'application/vnd.mophun.certificate', - 'mpd' => 'application/dash+xml', - 'mpe' => 'video/mpeg', - 'mpeg' => 'video/mpeg', - 'mpf' => 'application/media-policy-dataset+xml', - 'mpg' => 'video/mpeg', - 'mpg4' => 'video/mp4', - 'mpga' => 'audio/mpeg', - 'mpkg' => 'application/vnd.apple.installer+xml', - 'mpm' => 'application/vnd.blueice.multipass', - 'mpn' => 'application/vnd.mophun.application', - 'mpp' => 'application/vnd.ms-project', - 'mpt' => 'application/vnd.ms-project', - 'mpy' => 'application/vnd.ibm.minipay', - 'mqy' => 'application/vnd.mobius.mqy', - 'mrc' => 'application/marc', - 'mrcx' => 'application/marcxml+xml', - 'ms' => 'text/troff', - 'mscml' => 'application/mediaservercontrol+xml', - 'mseed' => 'application/vnd.fdsn.mseed', - 'mseq' => 'application/vnd.mseq', - 'msf' => 'application/vnd.epson.msf', - 'msg' => 'application/vnd.ms-outlook', - 'msh' => 'model/mesh', - 'msi' => 'application/x-msdownload', - 'msix' => 'application/msix', - 'msixbundle' => 'application/msixbundle', - 'msl' => 'application/vnd.mobius.msl', - 'msm' => 'application/octet-stream', - 'msp' => 'application/octet-stream', - 'msty' => 'application/vnd.muvee.style', - 'mtl' => 'model/mtl', - 'mts' => 'model/vnd.mts', - 'mus' => 'application/vnd.musician', - 'musd' => 'application/mmt-usd+xml', - 'musicxml' => 'application/vnd.recordare.musicxml+xml', - 'mvb' => 'application/x-msmediaview', - 'mvt' => 'application/vnd.mapbox-vector-tile', - 'mwf' => 'application/vnd.mfer', - 'mxf' => 'application/mxf', - 'mxl' => 'application/vnd.recordare.musicxml', - 'mxmf' => 'audio/mobile-xmf', - 'mxml' => 'application/xv+xml', - 'mxs' => 'application/vnd.triscape.mxs', - 'mxu' => 'video/vnd.mpegurl', - 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', - 'n3' => 'text/n3', - 'nb' => 'application/mathematica', - 'nbp' => 'application/vnd.wolfram.player', - 'nc' => 'application/x-netcdf', - 'ncx' => 'application/x-dtbncx+xml', - 'nfo' => 'text/x-nfo', - 'ngdat' => 'application/vnd.nokia.n-gage.data', - 'nitf' => 'application/vnd.nitf', - 'nlu' => 'application/vnd.neurolanguage.nlu', - 'nml' => 'application/vnd.enliven', - 'nnd' => 'application/vnd.noblenet-directory', - 'nns' => 'application/vnd.noblenet-sealer', - 'nnw' => 'application/vnd.noblenet-web', - 'npx' => 'image/vnd.net-fpx', - 'nq' => 'application/n-quads', - 'nsc' => 'application/x-conference', - 'nsf' => 'application/vnd.lotus-notes', - 'nt' => 'application/n-triples', - 'ntf' => 'application/vnd.nitf', - 'numbers' => 'application/x-iwork-numbers-sffnumbers', - 'nzb' => 'application/x-nzb', - 'oa2' => 'application/vnd.fujitsu.oasys2', - 'oa3' => 'application/vnd.fujitsu.oasys3', - 'oas' => 'application/vnd.fujitsu.oasys', - 'obd' => 'application/x-msbinder', - 'obgx' => 'application/vnd.openblox.game+xml', - 'obj' => 'model/obj', - 'oda' => 'application/oda', - 'odb' => 'application/vnd.oasis.opendocument.database', - 'odc' => 'application/vnd.oasis.opendocument.chart', - 'odf' => 'application/vnd.oasis.opendocument.formula', - 'odft' => 'application/vnd.oasis.opendocument.formula-template', - 'odg' => 'application/vnd.oasis.opendocument.graphics', - 'odi' => 'application/vnd.oasis.opendocument.image', - 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'odp' => 'application/vnd.oasis.opendocument.presentation', - 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', - 'odt' => 'application/vnd.oasis.opendocument.text', - 'oga' => 'audio/ogg', - 'ogex' => 'model/vnd.opengex', - 'ogg' => 'audio/ogg', - 'ogv' => 'video/ogg', - 'ogx' => 'application/ogg', - 'omdoc' => 'application/omdoc+xml', - 'onepkg' => 'application/onenote', - 'onetmp' => 'application/onenote', - 'onetoc' => 'application/onenote', - 'onetoc2' => 'application/onenote', - 'opf' => 'application/oebps-package+xml', - 'opml' => 'text/x-opml', - 'oprc' => 'application/vnd.palm', - 'opus' => 'audio/ogg', - 'org' => 'text/x-org', - 'osf' => 'application/vnd.yamaha.openscoreformat', - 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', - 'osm' => 'application/vnd.openstreetmap.data+xml', - 'otc' => 'application/vnd.oasis.opendocument.chart-template', - 'otf' => 'font/otf', - 'otg' => 'application/vnd.oasis.opendocument.graphics-template', - 'oth' => 'application/vnd.oasis.opendocument.text-web', - 'oti' => 'application/vnd.oasis.opendocument.image-template', - 'otp' => 'application/vnd.oasis.opendocument.presentation-template', - 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', - 'ott' => 'application/vnd.oasis.opendocument.text-template', - 'ova' => 'application/x-virtualbox-ova', - 'ovf' => 'application/x-virtualbox-ovf', - 'owl' => 'application/rdf+xml', - 'oxps' => 'application/oxps', - 'oxt' => 'application/vnd.openofficeorg.extension', - 'p' => 'text/x-pascal', - 'p7a' => 'application/x-pkcs7-signature', - 'p7b' => 'application/x-pkcs7-certificates', - 'p7c' => 'application/pkcs7-mime', - 'p7m' => 'application/pkcs7-mime', - 'p7r' => 'application/x-pkcs7-certreqresp', - 'p7s' => 'application/pkcs7-signature', - 'p8' => 'application/pkcs8', - 'p10' => 'application/x-pkcs10', - 'p12' => 'application/x-pkcs12', - 'pac' => 'application/x-ns-proxy-autoconfig', - 'pages' => 'application/x-iwork-pages-sffpages', - 'pas' => 'text/x-pascal', - 'paw' => 'application/vnd.pawaafile', - 'pbd' => 'application/vnd.powerbuilder6', - 'pbm' => 'image/x-portable-bitmap', - 'pcap' => 'application/vnd.tcpdump.pcap', - 'pcf' => 'application/x-font-pcf', - 'pcl' => 'application/vnd.hp-pcl', - 'pclxl' => 'application/vnd.hp-pclxl', - 'pct' => 'image/x-pict', - 'pcurl' => 'application/vnd.curl.pcurl', - 'pcx' => 'image/x-pcx', - 'pdb' => 'application/x-pilot', - 'pde' => 'text/x-processing', - 'pdf' => 'application/pdf', - 'pem' => 'application/x-x509-user-cert', - 'pfa' => 'application/x-font-type1', - 'pfb' => 'application/x-font-type1', - 'pfm' => 'application/x-font-type1', - 'pfr' => 'application/font-tdpfr', - 'pfx' => 'application/x-pkcs12', - 'pgm' => 'image/x-portable-graymap', - 'pgn' => 'application/x-chess-pgn', - 'pgp' => 'application/pgp', - 'phar' => 'application/octet-stream', - 'php' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'phtml' => 'application/x-httpd-php', - 'pic' => 'image/x-pict', - 'pkg' => 'application/octet-stream', - 'pki' => 'application/pkixcmp', - 'pkipath' => 'application/pkix-pkipath', - 'pkpass' => 'application/vnd.apple.pkpass', - 'pl' => 'application/x-perl', - 'plb' => 'application/vnd.3gpp.pic-bw-large', - 'plc' => 'application/vnd.mobius.plc', - 'plf' => 'application/vnd.pocketlearn', - 'pls' => 'application/pls+xml', - 'pm' => 'application/x-perl', - 'pml' => 'application/vnd.ctc-posml', - 'png' => 'image/png', - 'pnm' => 'image/x-portable-anymap', - 'portpkg' => 'application/vnd.macports.portpkg', - 'pot' => 'application/vnd.ms-powerpoint', - 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'ppa' => 'application/vnd.ms-powerpoint', - 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', - 'ppd' => 'application/vnd.cups-ppd', - 'ppm' => 'image/x-portable-pixmap', - 'pps' => 'application/vnd.ms-powerpoint', - 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'ppt' => 'application/powerpoint', - 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'pqa' => 'application/vnd.palm', - 'prc' => 'model/prc', - 'pre' => 'application/vnd.lotus-freelance', - 'prf' => 'application/pics-rules', - 'provx' => 'application/provenance+xml', - 'ps' => 'application/postscript', - 'psb' => 'application/vnd.3gpp.pic-bw-small', - 'psd' => 'application/x-photoshop', - 'psf' => 'application/x-font-linux-psf', - 'pskcxml' => 'application/pskc+xml', - 'pti' => 'image/prs.pti', - 'ptid' => 'application/vnd.pvi.ptid1', - 'pub' => 'application/x-mspublisher', - 'pvb' => 'application/vnd.3gpp.pic-bw-var', - 'pwn' => 'application/vnd.3m.post-it-notes', - 'pya' => 'audio/vnd.ms-playready.media.pya', - 'pyo' => 'model/vnd.pytha.pyox', - 'pyox' => 'model/vnd.pytha.pyox', - 'pyv' => 'video/vnd.ms-playready.media.pyv', - 'qam' => 'application/vnd.epson.quickanime', - 'qbo' => 'application/vnd.intu.qbo', - 'qfx' => 'application/vnd.intu.qfx', - 'qps' => 'application/vnd.publishare-delta-tree', - 'qt' => 'video/quicktime', - 'qwd' => 'application/vnd.quark.quarkxpress', - 'qwt' => 'application/vnd.quark.quarkxpress', - 'qxb' => 'application/vnd.quark.quarkxpress', - 'qxd' => 'application/vnd.quark.quarkxpress', - 'qxl' => 'application/vnd.quark.quarkxpress', - 'qxt' => 'application/vnd.quark.quarkxpress', - 'ra' => 'audio/x-realaudio', - 'ram' => 'audio/x-pn-realaudio', - 'raml' => 'application/raml+yaml', - 'rapd' => 'application/route-apd+xml', - 'rar' => 'application/x-rar', - 'ras' => 'image/x-cmu-raster', - 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', - 'rdf' => 'application/rdf+xml', - 'rdz' => 'application/vnd.data-vision.rdz', - 'relo' => 'application/p2p-overlay+xml', - 'rep' => 'application/vnd.businessobjects', - 'res' => 'application/x-dtbresource+xml', - 'rgb' => 'image/x-rgb', - 'rif' => 'application/reginfo+xml', - 'rip' => 'audio/vnd.rip', - 'ris' => 'application/x-research-info-systems', - 'rl' => 'application/resource-lists+xml', - 'rlc' => 'image/vnd.fujixerox.edmics-rlc', - 'rld' => 'application/resource-lists-diff+xml', - 'rm' => 'audio/x-pn-realaudio', - 'rmi' => 'audio/midi', - 'rmp' => 'audio/x-pn-realaudio-plugin', - 'rms' => 'application/vnd.jcp.javame.midlet-rms', - 'rmvb' => 'application/vnd.rn-realmedia-vbr', - 'rnc' => 'application/relax-ng-compact-syntax', - 'rng' => 'application/xml', - 'roa' => 'application/rpki-roa', - 'roff' => 'text/troff', - 'rp9' => 'application/vnd.cloanto.rp9', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'rpss' => 'application/vnd.nokia.radio-presets', - 'rpst' => 'application/vnd.nokia.radio-preset', - 'rq' => 'application/sparql-query', - 'rs' => 'application/rls-services+xml', - 'rsa' => 'application/x-pkcs7', - 'rsat' => 'application/atsc-rsat+xml', - 'rsd' => 'application/rsd+xml', - 'rsheet' => 'application/urc-ressheet+xml', - 'rss' => 'application/rss+xml', - 'rtf' => 'text/rtf', - 'rtx' => 'text/richtext', - 'run' => 'application/x-makeself', - 'rusd' => 'application/route-usd+xml', - 'rv' => 'video/vnd.rn-realvideo', - 's' => 'text/x-asm', - 's3m' => 'audio/s3m', - 'saf' => 'application/vnd.yamaha.smaf-audio', - 'sass' => 'text/x-sass', - 'sbml' => 'application/sbml+xml', - 'sc' => 'application/vnd.ibm.secure-container', - 'scd' => 'application/x-msschedule', - 'scm' => 'application/vnd.lotus-screencam', - 'scq' => 'application/scvp-cv-request', - 'scs' => 'application/scvp-cv-response', - 'scss' => 'text/x-scss', - 'scurl' => 'text/vnd.curl.scurl', - 'sda' => 'application/vnd.stardivision.draw', - 'sdc' => 'application/vnd.stardivision.calc', - 'sdd' => 'application/vnd.stardivision.impress', - 'sdkd' => 'application/vnd.solent.sdkm+xml', - 'sdkm' => 'application/vnd.solent.sdkm+xml', - 'sdp' => 'application/sdp', - 'sdw' => 'application/vnd.stardivision.writer', - 'sea' => 'application/octet-stream', - 'see' => 'application/vnd.seemail', - 'seed' => 'application/vnd.fdsn.seed', - 'sema' => 'application/vnd.sema', - 'semd' => 'application/vnd.semd', - 'semf' => 'application/vnd.semf', - 'senmlx' => 'application/senml+xml', - 'sensmlx' => 'application/sensml+xml', - 'ser' => 'application/java-serialized-object', - 'setpay' => 'application/set-payment-initiation', - 'setreg' => 'application/set-registration-initiation', - 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', - 'sfs' => 'application/vnd.spotfire.sfs', - 'sfv' => 'text/x-sfv', - 'sgi' => 'image/sgi', - 'sgl' => 'application/vnd.stardivision.writer-global', - 'sgm' => 'text/sgml', - 'sgml' => 'text/sgml', - 'sh' => 'application/x-sh', - 'shar' => 'application/x-shar', - 'shex' => 'text/shex', - 'shf' => 'application/shf+xml', - 'shtml' => 'text/html', - 'sid' => 'image/x-mrsid-image', - 'sieve' => 'application/sieve', - 'sig' => 'application/pgp-signature', - 'sil' => 'audio/silk', - 'silo' => 'model/mesh', - 'sis' => 'application/vnd.symbian.install', - 'sisx' => 'application/vnd.symbian.install', - 'sit' => 'application/x-stuffit', - 'sitx' => 'application/x-stuffitx', - 'siv' => 'application/sieve', - 'skd' => 'application/vnd.koan', - 'skm' => 'application/vnd.koan', - 'skp' => 'application/vnd.koan', - 'skt' => 'application/vnd.koan', - 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', - 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', - 'slim' => 'text/slim', - 'slm' => 'text/slim', - 'sls' => 'application/route-s-tsid+xml', - 'slt' => 'application/vnd.epson.salt', - 'sm' => 'application/vnd.stepmania.stepchart', - 'smf' => 'application/vnd.stardivision.math', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'smv' => 'video/x-smv', - 'smzip' => 'application/vnd.stepmania.package', - 'snd' => 'audio/basic', - 'snf' => 'application/x-font-snf', - 'so' => 'application/octet-stream', - 'spc' => 'application/x-pkcs7-certificates', - 'spdx' => 'text/spdx', - 'spf' => 'application/vnd.yamaha.smaf-phrase', - 'spl' => 'application/x-futuresplash', - 'spot' => 'text/vnd.in3d.spot', - 'spp' => 'application/scvp-vp-response', - 'spq' => 'application/scvp-vp-request', - 'spx' => 'audio/ogg', - 'sql' => 'application/x-sql', - 'src' => 'application/x-wais-source', - 'srt' => 'application/x-subrip', - 'sru' => 'application/sru+xml', - 'srx' => 'application/sparql-results+xml', - 'ssdl' => 'application/ssdl+xml', - 'sse' => 'application/vnd.kodak-descriptor', - 'ssf' => 'application/vnd.epson.ssf', - 'ssml' => 'application/ssml+xml', - 'sst' => 'application/octet-stream', - 'st' => 'application/vnd.sailingtracker.track', - 'stc' => 'application/vnd.sun.xml.calc.template', - 'std' => 'application/vnd.sun.xml.draw.template', - 'step' => 'application/STEP', - 'stf' => 'application/vnd.wt.stf', - 'sti' => 'application/vnd.sun.xml.impress.template', - 'stk' => 'application/hyperstudio', - 'stl' => 'model/stl', - 'stp' => 'application/STEP', - 'stpx' => 'model/step+xml', - 'stpxz' => 'model/step-xml+zip', - 'stpz' => 'model/step+zip', - 'str' => 'application/vnd.pg.format', - 'stw' => 'application/vnd.sun.xml.writer.template', - 'styl' => 'text/stylus', - 'stylus' => 'text/stylus', - 'sub' => 'text/vnd.dvb.subtitle', - 'sus' => 'application/vnd.sus-calendar', - 'susp' => 'application/vnd.sus-calendar', - 'sv4cpio' => 'application/x-sv4cpio', - 'sv4crc' => 'application/x-sv4crc', - 'svc' => 'application/vnd.dvb.service', - 'svd' => 'application/vnd.svd', - 'svg' => 'image/svg+xml', - 'svgz' => 'image/svg+xml', - 'swa' => 'application/x-director', - 'swf' => 'application/x-shockwave-flash', - 'swi' => 'application/vnd.aristanetworks.swi', - 'swidtag' => 'application/swid+xml', - 'sxc' => 'application/vnd.sun.xml.calc', - 'sxd' => 'application/vnd.sun.xml.draw', - 'sxg' => 'application/vnd.sun.xml.writer.global', - 'sxi' => 'application/vnd.sun.xml.impress', - 'sxm' => 'application/vnd.sun.xml.math', - 'sxw' => 'application/vnd.sun.xml.writer', - 't' => 'text/troff', - 't3' => 'application/x-t3vm-image', - 't38' => 'image/t38', - 'taglet' => 'application/vnd.mynfc', - 'tao' => 'application/vnd.tao.intent-module-archive', - 'tap' => 'image/vnd.tencent.tap', - 'tar' => 'application/x-tar', - 'tcap' => 'application/vnd.3gpp2.tcap', - 'tcl' => 'application/x-tcl', - 'td' => 'application/urc-targetdesc+xml', - 'teacher' => 'application/vnd.smart.teacher', - 'tei' => 'application/tei+xml', - 'teicorpus' => 'application/tei+xml', - 'tex' => 'application/x-tex', - 'texi' => 'application/x-texinfo', - 'texinfo' => 'application/x-texinfo', - 'text' => 'text/plain', - 'tfi' => 'application/thraud+xml', - 'tfm' => 'application/x-tex-tfm', - 'tfx' => 'image/tiff-fx', - 'tga' => 'image/x-tga', - 'tgz' => 'application/x-tar', - 'thmx' => 'application/vnd.ms-officetheme', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'tk' => 'application/x-tcl', - 'tmo' => 'application/vnd.tmobile-livetv', - 'toml' => 'application/toml', - 'torrent' => 'application/x-bittorrent', - 'tpl' => 'application/vnd.groove-tool-template', - 'tpt' => 'application/vnd.trid.tpt', - 'tr' => 'text/troff', - 'tra' => 'application/vnd.trueapp', - 'trig' => 'application/trig', - 'trm' => 'application/x-msterminal', - 'ts' => 'video/mp2t', - 'tsd' => 'application/timestamped-data', - 'tsv' => 'text/tab-separated-values', - 'ttc' => 'font/collection', - 'ttf' => 'font/ttf', - 'ttl' => 'text/turtle', - 'ttml' => 'application/ttml+xml', - 'twd' => 'application/vnd.simtech-mindmapper', - 'twds' => 'application/vnd.simtech-mindmapper', - 'txd' => 'application/vnd.genomatix.tuxedo', - 'txf' => 'application/vnd.mobius.txf', - 'txt' => 'text/plain', - 'u3d' => 'model/u3d', - 'u8dsn' => 'message/global-delivery-status', - 'u8hdr' => 'message/global-headers', - 'u8mdn' => 'message/global-disposition-notification', - 'u8msg' => 'message/global', - 'u32' => 'application/x-authorware-bin', - 'ubj' => 'application/ubjson', - 'udeb' => 'application/x-debian-package', - 'ufd' => 'application/vnd.ufdl', - 'ufdl' => 'application/vnd.ufdl', - 'ulx' => 'application/x-glulx', - 'umj' => 'application/vnd.umajin', - 'unityweb' => 'application/vnd.unity', - 'uo' => 'application/vnd.uoml+xml', - 'uoml' => 'application/vnd.uoml+xml', - 'uri' => 'text/uri-list', - 'uris' => 'text/uri-list', - 'urls' => 'text/uri-list', - 'usda' => 'model/vnd.usda', - 'usdz' => 'model/vnd.usdz+zip', - 'ustar' => 'application/x-ustar', - 'utz' => 'application/vnd.uiq.theme', - 'uu' => 'text/x-uuencode', - 'uva' => 'audio/vnd.dece.audio', - 'uvd' => 'application/vnd.dece.data', - 'uvf' => 'application/vnd.dece.data', - 'uvg' => 'image/vnd.dece.graphic', - 'uvh' => 'video/vnd.dece.hd', - 'uvi' => 'image/vnd.dece.graphic', - 'uvm' => 'video/vnd.dece.mobile', - 'uvp' => 'video/vnd.dece.pd', - 'uvs' => 'video/vnd.dece.sd', - 'uvt' => 'application/vnd.dece.ttml+xml', - 'uvu' => 'video/vnd.uvvu.mp4', - 'uvv' => 'video/vnd.dece.video', - 'uvva' => 'audio/vnd.dece.audio', - 'uvvd' => 'application/vnd.dece.data', - 'uvvf' => 'application/vnd.dece.data', - 'uvvg' => 'image/vnd.dece.graphic', - 'uvvh' => 'video/vnd.dece.hd', - 'uvvi' => 'image/vnd.dece.graphic', - 'uvvm' => 'video/vnd.dece.mobile', - 'uvvp' => 'video/vnd.dece.pd', - 'uvvs' => 'video/vnd.dece.sd', - 'uvvt' => 'application/vnd.dece.ttml+xml', - 'uvvu' => 'video/vnd.uvvu.mp4', - 'uvvv' => 'video/vnd.dece.video', - 'uvvx' => 'application/vnd.dece.unspecified', - 'uvvz' => 'application/vnd.dece.zip', - 'uvx' => 'application/vnd.dece.unspecified', - 'uvz' => 'application/vnd.dece.zip', - 'vbox' => 'application/x-virtualbox-vbox', - 'vbox-extpack' => 'application/x-virtualbox-vbox-extpack', - 'vcard' => 'text/vcard', - 'vcd' => 'application/x-cdlink', - 'vcf' => 'text/x-vcard', - 'vcg' => 'application/vnd.groove-vcard', - 'vcs' => 'text/x-vcalendar', - 'vcx' => 'application/vnd.vcx', - 'vdi' => 'application/x-virtualbox-vdi', - 'vds' => 'model/vnd.sap.vds', - 'vhd' => 'application/x-virtualbox-vhd', - 'vis' => 'application/vnd.visionary', - 'viv' => 'video/vnd.vivo', - 'vlc' => 'application/videolan', - 'vmdk' => 'application/x-virtualbox-vmdk', - 'vob' => 'video/x-ms-vob', - 'vor' => 'application/vnd.stardivision.writer', - 'vox' => 'application/x-authorware-bin', - 'vrml' => 'model/vrml', - 'vsd' => 'application/vnd.visio', - 'vsf' => 'application/vnd.vsf', - 'vss' => 'application/vnd.visio', - 'vst' => 'application/vnd.visio', - 'vsw' => 'application/vnd.visio', - 'vtf' => 'image/vnd.valve.source.texture', - 'vtt' => 'text/vtt', - 'vtu' => 'model/vnd.vtu', - 'vxml' => 'application/voicexml+xml', - 'w3d' => 'application/x-director', - 'wad' => 'application/x-doom', - 'wadl' => 'application/vnd.sun.wadl+xml', - 'war' => 'application/java-archive', - 'wasm' => 'application/wasm', - 'wav' => 'audio/x-wav', - 'wax' => 'audio/x-ms-wax', - 'wbmp' => 'image/vnd.wap.wbmp', - 'wbs' => 'application/vnd.criticaltools.wbs+xml', - 'wbxml' => 'application/wbxml', - 'wcm' => 'application/vnd.ms-works', - 'wdb' => 'application/vnd.ms-works', - 'wdp' => 'image/vnd.ms-photo', - 'weba' => 'audio/webm', - 'webapp' => 'application/x-web-app-manifest+json', - 'webm' => 'video/webm', - 'webmanifest' => 'application/manifest+json', - 'webp' => 'image/webp', - 'wg' => 'application/vnd.pmi.widget', - 'wgsl' => 'text/wgsl', - 'wgt' => 'application/widget', - 'wif' => 'application/watcherinfo+xml', - 'wks' => 'application/vnd.ms-works', - 'wm' => 'video/x-ms-wm', - 'wma' => 'audio/x-ms-wma', - 'wmd' => 'application/x-ms-wmd', - 'wmf' => 'image/wmf', - 'wml' => 'text/vnd.wap.wml', - 'wmlc' => 'application/wmlc', - 'wmls' => 'text/vnd.wap.wmlscript', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'wmv' => 'video/x-ms-wmv', - 'wmx' => 'video/x-ms-wmx', - 'wmz' => 'application/x-msmetafile', - 'woff' => 'font/woff', - 'woff2' => 'font/woff2', - 'word' => 'application/msword', - 'wpd' => 'application/vnd.wordperfect', - 'wpl' => 'application/vnd.ms-wpl', - 'wps' => 'application/vnd.ms-works', - 'wqd' => 'application/vnd.wqd', - 'wri' => 'application/x-mswrite', - 'wrl' => 'model/vrml', - 'wsc' => 'message/vnd.wfa.wsc', - 'wsdl' => 'application/wsdl+xml', - 'wspolicy' => 'application/wspolicy+xml', - 'wtb' => 'application/vnd.webturbo', - 'wvx' => 'video/x-ms-wvx', - 'x3d' => 'model/x3d+xml', - 'x3db' => 'model/x3d+fastinfoset', - 'x3dbz' => 'model/x3d+binary', - 'x3dv' => 'model/x3d-vrml', - 'x3dvz' => 'model/x3d+vrml', - 'x3dz' => 'model/x3d+xml', - 'x32' => 'application/x-authorware-bin', - 'x_b' => 'model/vnd.parasolid.transmit.binary', - 'x_t' => 'model/vnd.parasolid.transmit.text', - 'xaml' => 'application/xaml+xml', - 'xap' => 'application/x-silverlight-app', - 'xar' => 'application/vnd.xara', - 'xav' => 'application/xcap-att+xml', - 'xbap' => 'application/x-ms-xbap', - 'xbd' => 'application/vnd.fujixerox.docuworks.binder', - 'xbm' => 'image/x-xbitmap', - 'xca' => 'application/xcap-caps+xml', - 'xcs' => 'application/calendar+xml', - 'xdf' => 'application/xcap-diff+xml', - 'xdm' => 'application/vnd.syncml.dm+xml', - 'xdp' => 'application/vnd.adobe.xdp+xml', - 'xdssc' => 'application/dssc+xml', - 'xdw' => 'application/vnd.fujixerox.docuworks', - 'xel' => 'application/xcap-el+xml', - 'xenc' => 'application/xenc+xml', - 'xer' => 'application/patch-ops-error+xml', - 'xfdf' => 'application/xfdf', - 'xfdl' => 'application/vnd.xfdl', - 'xht' => 'application/xhtml+xml', - 'xhtm' => 'application/vnd.pwg-xhtml-print+xml', - 'xhtml' => 'application/xhtml+xml', - 'xhvml' => 'application/xv+xml', - 'xif' => 'image/vnd.xiff', - 'xl' => 'application/excel', - 'xla' => 'application/vnd.ms-excel', - 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', - 'xlc' => 'application/vnd.ms-excel', - 'xlf' => 'application/xliff+xml', - 'xlm' => 'application/vnd.ms-excel', - 'xls' => 'application/vnd.ms-excel', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', - 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xlt' => 'application/vnd.ms-excel', - 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', - 'xlw' => 'application/vnd.ms-excel', - 'xm' => 'audio/xm', - 'xml' => 'application/xml', - 'xns' => 'application/xcap-ns+xml', - 'xo' => 'application/vnd.olpc-sugar', - 'xop' => 'application/xop+xml', - 'xpi' => 'application/x-xpinstall', - 'xpl' => 'application/xproc+xml', - 'xpm' => 'image/x-xpixmap', - 'xpr' => 'application/vnd.is-xpr', - 'xps' => 'application/vnd.ms-xpsdocument', - 'xpw' => 'application/vnd.intercon.formnet', - 'xpx' => 'application/vnd.intercon.formnet', - 'xsd' => 'application/xml', - 'xsf' => 'application/prs.xsf+xml', - 'xsl' => 'application/xml', - 'xslt' => 'application/xslt+xml', - 'xsm' => 'application/vnd.syncml+xml', - 'xspf' => 'application/xspf+xml', - 'xul' => 'application/vnd.mozilla.xul+xml', - 'xvm' => 'application/xv+xml', - 'xvml' => 'application/xv+xml', - 'xwd' => 'image/x-xwindowdump', - 'xyz' => 'chemical/x-xyz', - 'xz' => 'application/x-xz', - 'yaml' => 'text/yaml', - 'yang' => 'application/yang', - 'yin' => 'application/yin+xml', - 'yml' => 'text/yaml', - 'ymp' => 'text/x-suse-ymp', - 'z' => 'application/x-compress', - 'z1' => 'application/x-zmachine', - 'z2' => 'application/x-zmachine', - 'z3' => 'application/x-zmachine', - 'z4' => 'application/x-zmachine', - 'z5' => 'application/x-zmachine', - 'z6' => 'application/x-zmachine', - 'z7' => 'application/x-zmachine', - 'z8' => 'application/x-zmachine', - 'zaz' => 'application/vnd.zzazz.deck+xml', - 'zip' => 'application/zip', - 'zir' => 'application/vnd.zul', - 'zirz' => 'application/vnd.zul', - 'zmm' => 'application/vnd.handheld-entertainment+xml', - 'zsh' => 'text/x-scriptzsh', - ]; - - /** - * Determines the mimetype of a file by looking at its extension. - * - * @see https://raw.githubusercontent.com/jshttp/mime-db/master/db.json - */ - public static function fromFilename(string $filename): ?string - { - return self::fromExtension(pathinfo($filename, PATHINFO_EXTENSION)); - } - - /** - * Maps a file extensions to a mimetype. - * - * @see https://raw.githubusercontent.com/jshttp/mime-db/master/db.json - */ - public static function fromExtension(string $extension): ?string - { - return self::MIME_TYPES[strtolower($extension)] ?? null; - } -} diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php deleted file mode 100644 index 43d718f6..00000000 --- a/vendor/guzzlehttp/psr7/src/MultipartStream.php +++ /dev/null @@ -1,165 +0,0 @@ -boundary = $boundary ?: bin2hex(random_bytes(20)); - $this->stream = $this->createStream($elements); - } - - public function getBoundary(): string - { - return $this->boundary; - } - - public function isWritable(): bool - { - return false; - } - - /** - * Get the headers needed before transferring the content of a POST file - * - * @param string[] $headers - */ - private function getHeaders(array $headers): string - { - $str = ''; - foreach ($headers as $key => $value) { - $str .= "{$key}: {$value}\r\n"; - } - - return "--{$this->boundary}\r\n".trim($str)."\r\n\r\n"; - } - - /** - * Create the aggregate stream that will be used to upload the POST data - */ - protected function createStream(array $elements = []): StreamInterface - { - $stream = new AppendStream(); - - foreach ($elements as $element) { - if (!is_array($element)) { - throw new \UnexpectedValueException('An array is expected'); - } - $this->addElement($stream, $element); - } - - // Add the trailing boundary with CRLF - $stream->addStream(Utils::streamFor("--{$this->boundary}--\r\n")); - - return $stream; - } - - private function addElement(AppendStream $stream, array $element): void - { - foreach (['contents', 'name'] as $key) { - if (!array_key_exists($key, $element)) { - throw new \InvalidArgumentException("A '{$key}' key is required"); - } - } - - $element['contents'] = Utils::streamFor($element['contents']); - - if (empty($element['filename'])) { - $uri = $element['contents']->getMetadata('uri'); - if ($uri && \is_string($uri) && \substr($uri, 0, 6) !== 'php://' && \substr($uri, 0, 7) !== 'data://') { - $element['filename'] = $uri; - } - } - - [$body, $headers] = $this->createElement( - $element['name'], - $element['contents'], - $element['filename'] ?? null, - $element['headers'] ?? [] - ); - - $stream->addStream(Utils::streamFor($this->getHeaders($headers))); - $stream->addStream($body); - $stream->addStream(Utils::streamFor("\r\n")); - } - - /** - * @param string[] $headers - * - * @return array{0: StreamInterface, 1: string[]} - */ - private function createElement(string $name, StreamInterface $stream, ?string $filename, array $headers): array - { - // Set a default content-disposition header if one was no provided - $disposition = self::getHeader($headers, 'content-disposition'); - if (!$disposition) { - $headers['Content-Disposition'] = ($filename === '0' || $filename) - ? sprintf( - 'form-data; name="%s"; filename="%s"', - $name, - basename($filename) - ) - : "form-data; name=\"{$name}\""; - } - - // Set a default content-length header if one was no provided - $length = self::getHeader($headers, 'content-length'); - if (!$length) { - if ($length = $stream->getSize()) { - $headers['Content-Length'] = (string) $length; - } - } - - // Set a default Content-Type if one was not supplied - $type = self::getHeader($headers, 'content-type'); - if (!$type && ($filename === '0' || $filename)) { - $headers['Content-Type'] = MimeType::fromFilename($filename) ?? 'application/octet-stream'; - } - - return [$stream, $headers]; - } - - /** - * @param string[] $headers - */ - private static function getHeader(array $headers, string $key): ?string - { - $lowercaseHeader = strtolower($key); - foreach ($headers as $k => $v) { - if (strtolower((string) $k) === $lowercaseHeader) { - return $v; - } - } - - return null; - } -} diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php deleted file mode 100644 index 161a224f..00000000 --- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php +++ /dev/null @@ -1,28 +0,0 @@ -source = $source; - $this->size = $options['size'] ?? null; - $this->metadata = $options['metadata'] ?? []; - $this->buffer = new BufferStream(); - } - - public function __toString(): string - { - try { - return Utils::copyToString($this); - } catch (\Throwable $e) { - if (\PHP_VERSION_ID >= 70400) { - throw $e; - } - trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR); - - return ''; - } - } - - public function close(): void - { - $this->detach(); - } - - public function detach() - { - $this->tellPos = 0; - $this->source = null; - - return null; - } - - public function getSize(): ?int - { - return $this->size; - } - - public function tell(): int - { - return $this->tellPos; - } - - public function eof(): bool - { - return $this->source === null; - } - - public function isSeekable(): bool - { - return false; - } - - public function rewind(): void - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET): void - { - throw new \RuntimeException('Cannot seek a PumpStream'); - } - - public function isWritable(): bool - { - return false; - } - - public function write($string): int - { - throw new \RuntimeException('Cannot write to a PumpStream'); - } - - public function isReadable(): bool - { - return true; - } - - public function read($length): string - { - $data = $this->buffer->read($length); - $readLen = strlen($data); - $this->tellPos += $readLen; - $remaining = $length - $readLen; - - if ($remaining) { - $this->pump($remaining); - $data .= $this->buffer->read($remaining); - $this->tellPos += strlen($data) - $readLen; - } - - return $data; - } - - public function getContents(): string - { - $result = ''; - while (!$this->eof()) { - $result .= $this->read(1000000); - } - - return $result; - } - - /** - * @return mixed - */ - public function getMetadata($key = null) - { - if (!$key) { - return $this->metadata; - } - - return $this->metadata[$key] ?? null; - } - - private function pump(int $length): void - { - if ($this->source !== null) { - do { - $data = ($this->source)($length); - if ($data === false || $data === null) { - $this->source = null; - - return; - } - $this->buffer->write($data); - $length -= strlen($data); - } while ($length > 0); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/Query.php b/vendor/guzzlehttp/psr7/src/Query.php deleted file mode 100644 index ccf867a0..00000000 --- a/vendor/guzzlehttp/psr7/src/Query.php +++ /dev/null @@ -1,118 +0,0 @@ - '1', 'foo[b]' => '2'])`. - * - * @param string $str Query string to parse - * @param int|bool $urlEncoding How the query string is encoded - */ - public static function parse(string $str, $urlEncoding = true): array - { - $result = []; - - if ($str === '') { - return $result; - } - - if ($urlEncoding === true) { - $decoder = function ($value) { - return rawurldecode(str_replace('+', ' ', (string) $value)); - }; - } elseif ($urlEncoding === PHP_QUERY_RFC3986) { - $decoder = 'rawurldecode'; - } elseif ($urlEncoding === PHP_QUERY_RFC1738) { - $decoder = 'urldecode'; - } else { - $decoder = function ($str) { - return $str; - }; - } - - foreach (explode('&', $str) as $kvp) { - $parts = explode('=', $kvp, 2); - $key = $decoder($parts[0]); - $value = isset($parts[1]) ? $decoder($parts[1]) : null; - if (!array_key_exists($key, $result)) { - $result[$key] = $value; - } else { - if (!is_array($result[$key])) { - $result[$key] = [$result[$key]]; - } - $result[$key][] = $value; - } - } - - return $result; - } - - /** - * Build a query string from an array of key value pairs. - * - * This function can use the return value of `parse()` to build a query - * string. This function does not modify the provided keys when an array is - * encountered (like `http_build_query()` would). - * - * @param array $params Query string parameters. - * @param int|false $encoding Set to false to not encode, - * PHP_QUERY_RFC3986 to encode using - * RFC3986, or PHP_QUERY_RFC1738 to - * encode using RFC1738. - * @param bool $treatBoolsAsInts Set to true to encode as 0/1, and - * false as false/true. - */ - public static function build(array $params, $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string - { - if (!$params) { - return ''; - } - - if ($encoding === false) { - $encoder = function (string $str): string { - return $str; - }; - } elseif ($encoding === PHP_QUERY_RFC3986) { - $encoder = 'rawurlencode'; - } elseif ($encoding === PHP_QUERY_RFC1738) { - $encoder = 'urlencode'; - } else { - throw new \InvalidArgumentException('Invalid type'); - } - - $castBool = $treatBoolsAsInts ? static function ($v) { return (int) $v; } : static function ($v) { return $v ? 'true' : 'false'; }; - - $qs = ''; - foreach ($params as $k => $v) { - $k = $encoder((string) $k); - if (!is_array($v)) { - $qs .= $k; - $v = is_bool($v) ? $castBool($v) : $v; - if ($v !== null) { - $qs .= '='.$encoder((string) $v); - } - $qs .= '&'; - } else { - foreach ($v as $vv) { - $qs .= $k; - $vv = is_bool($vv) ? $castBool($vv) : $vv; - if ($vv !== null) { - $qs .= '='.$encoder((string) $vv); - } - $qs .= '&'; - } - } - } - - return $qs ? (string) substr($qs, 0, -1) : ''; - } -} diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php deleted file mode 100644 index faafe1ad..00000000 --- a/vendor/guzzlehttp/psr7/src/Request.php +++ /dev/null @@ -1,159 +0,0 @@ -assertMethod($method); - if (!($uri instanceof UriInterface)) { - $uri = new Uri($uri); - } - - $this->method = strtoupper($method); - $this->uri = $uri; - $this->setHeaders($headers); - $this->protocol = $version; - - if (!isset($this->headerNames['host'])) { - $this->updateHostFromUri(); - } - - if ($body !== '' && $body !== null) { - $this->stream = Utils::streamFor($body); - } - } - - public function getRequestTarget(): string - { - if ($this->requestTarget !== null) { - return $this->requestTarget; - } - - $target = $this->uri->getPath(); - if ($target === '') { - $target = '/'; - } - if ($this->uri->getQuery() != '') { - $target .= '?'.$this->uri->getQuery(); - } - - return $target; - } - - public function withRequestTarget($requestTarget): RequestInterface - { - if (preg_match('#\s#', $requestTarget)) { - throw new InvalidArgumentException( - 'Invalid request target provided; cannot contain whitespace' - ); - } - - $new = clone $this; - $new->requestTarget = $requestTarget; - - return $new; - } - - public function getMethod(): string - { - return $this->method; - } - - public function withMethod($method): RequestInterface - { - $this->assertMethod($method); - $new = clone $this; - $new->method = strtoupper($method); - - return $new; - } - - public function getUri(): UriInterface - { - return $this->uri; - } - - public function withUri(UriInterface $uri, $preserveHost = false): RequestInterface - { - if ($uri === $this->uri) { - return $this; - } - - $new = clone $this; - $new->uri = $uri; - - if (!$preserveHost || !isset($this->headerNames['host'])) { - $new->updateHostFromUri(); - } - - return $new; - } - - private function updateHostFromUri(): void - { - $host = $this->uri->getHost(); - - if ($host == '') { - return; - } - - if (($port = $this->uri->getPort()) !== null) { - $host .= ':'.$port; - } - - if (isset($this->headerNames['host'])) { - $header = $this->headerNames['host']; - } else { - $header = 'Host'; - $this->headerNames['host'] = 'Host'; - } - // Ensure Host is the first header. - // See: https://datatracker.ietf.org/doc/html/rfc7230#section-5.4 - $this->headers = [$header => [$host]] + $this->headers; - } - - /** - * @param mixed $method - */ - private function assertMethod($method): void - { - if (!is_string($method) || $method === '') { - throw new InvalidArgumentException('Method must be a non-empty string.'); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php deleted file mode 100644 index 34e612fd..00000000 --- a/vendor/guzzlehttp/psr7/src/Response.php +++ /dev/null @@ -1,161 +0,0 @@ - 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-status', - 208 => 'Already Reported', - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 306 => 'Switch Proxy', - 307 => 'Temporary Redirect', - 308 => 'Permanent Redirect', - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Time-out', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Large', - 415 => 'Unsupported Media Type', - 416 => 'Requested range not satisfiable', - 417 => 'Expectation Failed', - 418 => 'I\'m a teapot', - 422 => 'Unprocessable Entity', - 423 => 'Locked', - 424 => 'Failed Dependency', - 425 => 'Unordered Collection', - 426 => 'Upgrade Required', - 428 => 'Precondition Required', - 429 => 'Too Many Requests', - 431 => 'Request Header Fields Too Large', - 451 => 'Unavailable For Legal Reasons', - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Time-out', - 505 => 'HTTP Version not supported', - 506 => 'Variant Also Negotiates', - 507 => 'Insufficient Storage', - 508 => 'Loop Detected', - 510 => 'Not Extended', - 511 => 'Network Authentication Required', - ]; - - /** @var string */ - private $reasonPhrase; - - /** @var int */ - private $statusCode; - - /** - * @param int $status Status code - * @param (string|string[])[] $headers Response headers - * @param string|resource|StreamInterface|null $body Response body - * @param string $version Protocol version - * @param string|null $reason Reason phrase (when empty a default will be used based on the status code) - */ - public function __construct( - int $status = 200, - array $headers = [], - $body = null, - string $version = '1.1', - ?string $reason = null - ) { - $this->assertStatusCodeRange($status); - - $this->statusCode = $status; - - if ($body !== '' && $body !== null) { - $this->stream = Utils::streamFor($body); - } - - $this->setHeaders($headers); - if ($reason == '' && isset(self::PHRASES[$this->statusCode])) { - $this->reasonPhrase = self::PHRASES[$this->statusCode]; - } else { - $this->reasonPhrase = (string) $reason; - } - - $this->protocol = $version; - } - - public function getStatusCode(): int - { - return $this->statusCode; - } - - public function getReasonPhrase(): string - { - return $this->reasonPhrase; - } - - public function withStatus($code, $reasonPhrase = ''): ResponseInterface - { - $this->assertStatusCodeIsInteger($code); - $code = (int) $code; - $this->assertStatusCodeRange($code); - - $new = clone $this; - $new->statusCode = $code; - if ($reasonPhrase == '' && isset(self::PHRASES[$new->statusCode])) { - $reasonPhrase = self::PHRASES[$new->statusCode]; - } - $new->reasonPhrase = (string) $reasonPhrase; - - return $new; - } - - /** - * @param mixed $statusCode - */ - private function assertStatusCodeIsInteger($statusCode): void - { - if (filter_var($statusCode, FILTER_VALIDATE_INT) === false) { - throw new \InvalidArgumentException('Status code must be an integer value.'); - } - } - - private function assertStatusCodeRange(int $statusCode): void - { - if ($statusCode < 100 || $statusCode >= 600) { - throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.'); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/Rfc7230.php b/vendor/guzzlehttp/psr7/src/Rfc7230.php deleted file mode 100644 index 8219dba4..00000000 --- a/vendor/guzzlehttp/psr7/src/Rfc7230.php +++ /dev/null @@ -1,23 +0,0 @@ -@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m"; - public const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)"; -} diff --git a/vendor/guzzlehttp/psr7/src/ServerRequest.php b/vendor/guzzlehttp/psr7/src/ServerRequest.php deleted file mode 100644 index 3cc95345..00000000 --- a/vendor/guzzlehttp/psr7/src/ServerRequest.php +++ /dev/null @@ -1,340 +0,0 @@ -serverParams = $serverParams; - - parent::__construct($method, $uri, $headers, $body, $version); - } - - /** - * Return an UploadedFile instance array. - * - * @param array $files An array which respect $_FILES structure - * - * @throws InvalidArgumentException for unrecognized values - */ - public static function normalizeFiles(array $files): array - { - $normalized = []; - - foreach ($files as $key => $value) { - if ($value instanceof UploadedFileInterface) { - $normalized[$key] = $value; - } elseif (is_array($value) && isset($value['tmp_name'])) { - $normalized[$key] = self::createUploadedFileFromSpec($value); - } elseif (is_array($value)) { - $normalized[$key] = self::normalizeFiles($value); - continue; - } else { - throw new InvalidArgumentException('Invalid value in files specification'); - } - } - - return $normalized; - } - - /** - * Create and return an UploadedFile instance from a $_FILES specification. - * - * If the specification represents an array of values, this method will - * delegate to normalizeNestedFileSpec() and return that return value. - * - * @param array $value $_FILES struct - * - * @return UploadedFileInterface|UploadedFileInterface[] - */ - private static function createUploadedFileFromSpec(array $value) - { - if (is_array($value['tmp_name'])) { - return self::normalizeNestedFileSpec($value); - } - - return new UploadedFile( - $value['tmp_name'], - (int) $value['size'], - (int) $value['error'], - $value['name'], - $value['type'] - ); - } - - /** - * Normalize an array of file specifications. - * - * Loops through all nested files and returns a normalized array of - * UploadedFileInterface instances. - * - * @return UploadedFileInterface[] - */ - private static function normalizeNestedFileSpec(array $files = []): array - { - $normalizedFiles = []; - - foreach (array_keys($files['tmp_name']) as $key) { - $spec = [ - 'tmp_name' => $files['tmp_name'][$key], - 'size' => $files['size'][$key] ?? null, - 'error' => $files['error'][$key] ?? null, - 'name' => $files['name'][$key] ?? null, - 'type' => $files['type'][$key] ?? null, - ]; - $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); - } - - return $normalizedFiles; - } - - /** - * Return a ServerRequest populated with superglobals: - * $_GET - * $_POST - * $_COOKIE - * $_FILES - * $_SERVER - */ - public static function fromGlobals(): ServerRequestInterface - { - $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; - $headers = getallheaders(); - $uri = self::getUriFromGlobals(); - $body = new CachingStream(new LazyOpenStream('php://input', 'r+')); - $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; - - $serverRequest = new ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); - - return $serverRequest - ->withCookieParams($_COOKIE) - ->withQueryParams($_GET) - ->withParsedBody($_POST) - ->withUploadedFiles(self::normalizeFiles($_FILES)); - } - - private static function extractHostAndPortFromAuthority(string $authority): array - { - $uri = 'http://'.$authority; - $parts = parse_url($uri); - if (false === $parts) { - return [null, null]; - } - - $host = $parts['host'] ?? null; - $port = $parts['port'] ?? null; - - return [$host, $port]; - } - - /** - * Get a Uri populated with values from $_SERVER. - */ - public static function getUriFromGlobals(): UriInterface - { - $uri = new Uri(''); - - $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http'); - - $hasPort = false; - if (isset($_SERVER['HTTP_HOST'])) { - [$host, $port] = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']); - if ($host !== null) { - $uri = $uri->withHost($host); - } - - if ($port !== null) { - $hasPort = true; - $uri = $uri->withPort($port); - } - } elseif (isset($_SERVER['SERVER_NAME'])) { - $uri = $uri->withHost($_SERVER['SERVER_NAME']); - } elseif (isset($_SERVER['SERVER_ADDR'])) { - $uri = $uri->withHost($_SERVER['SERVER_ADDR']); - } - - if (!$hasPort && isset($_SERVER['SERVER_PORT'])) { - $uri = $uri->withPort($_SERVER['SERVER_PORT']); - } - - $hasQuery = false; - if (isset($_SERVER['REQUEST_URI'])) { - $requestUriParts = explode('?', $_SERVER['REQUEST_URI'], 2); - $uri = $uri->withPath($requestUriParts[0]); - if (isset($requestUriParts[1])) { - $hasQuery = true; - $uri = $uri->withQuery($requestUriParts[1]); - } - } - - if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) { - $uri = $uri->withQuery($_SERVER['QUERY_STRING']); - } - - return $uri; - } - - public function getServerParams(): array - { - return $this->serverParams; - } - - public function getUploadedFiles(): array - { - return $this->uploadedFiles; - } - - public function withUploadedFiles(array $uploadedFiles): ServerRequestInterface - { - $new = clone $this; - $new->uploadedFiles = $uploadedFiles; - - return $new; - } - - public function getCookieParams(): array - { - return $this->cookieParams; - } - - public function withCookieParams(array $cookies): ServerRequestInterface - { - $new = clone $this; - $new->cookieParams = $cookies; - - return $new; - } - - public function getQueryParams(): array - { - return $this->queryParams; - } - - public function withQueryParams(array $query): ServerRequestInterface - { - $new = clone $this; - $new->queryParams = $query; - - return $new; - } - - /** - * @return array|object|null - */ - public function getParsedBody() - { - return $this->parsedBody; - } - - public function withParsedBody($data): ServerRequestInterface - { - $new = clone $this; - $new->parsedBody = $data; - - return $new; - } - - public function getAttributes(): array - { - return $this->attributes; - } - - /** - * @return mixed - */ - public function getAttribute($attribute, $default = null) - { - if (false === array_key_exists($attribute, $this->attributes)) { - return $default; - } - - return $this->attributes[$attribute]; - } - - public function withAttribute($attribute, $value): ServerRequestInterface - { - $new = clone $this; - $new->attributes[$attribute] = $value; - - return $new; - } - - public function withoutAttribute($attribute): ServerRequestInterface - { - if (false === array_key_exists($attribute, $this->attributes)) { - return $this; - } - - $new = clone $this; - unset($new->attributes[$attribute]); - - return $new; - } -} diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php deleted file mode 100644 index 0aff9b2b..00000000 --- a/vendor/guzzlehttp/psr7/src/Stream.php +++ /dev/null @@ -1,283 +0,0 @@ -size = $options['size']; - } - - $this->customMetadata = $options['metadata'] ?? []; - $this->stream = $stream; - $meta = stream_get_meta_data($this->stream); - $this->seekable = $meta['seekable']; - $this->readable = (bool) preg_match(self::READABLE_MODES, $meta['mode']); - $this->writable = (bool) preg_match(self::WRITABLE_MODES, $meta['mode']); - $this->uri = $this->getMetadata('uri'); - } - - /** - * Closes the stream when the destructed - */ - public function __destruct() - { - $this->close(); - } - - public function __toString(): string - { - try { - if ($this->isSeekable()) { - $this->seek(0); - } - - return $this->getContents(); - } catch (\Throwable $e) { - if (\PHP_VERSION_ID >= 70400) { - throw $e; - } - trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR); - - return ''; - } - } - - public function getContents(): string - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - if (!$this->readable) { - throw new \RuntimeException('Cannot read from non-readable stream'); - } - - return Utils::tryGetContents($this->stream); - } - - public function close(): void - { - if (isset($this->stream)) { - if (is_resource($this->stream)) { - fclose($this->stream); - } - $this->detach(); - } - } - - public function detach() - { - if (!isset($this->stream)) { - return null; - } - - $result = $this->stream; - unset($this->stream); - $this->size = $this->uri = null; - $this->readable = $this->writable = $this->seekable = false; - - return $result; - } - - public function getSize(): ?int - { - if ($this->size !== null) { - return $this->size; - } - - if (!isset($this->stream)) { - return null; - } - - // Clear the stat cache if the stream has a URI - if ($this->uri) { - clearstatcache(true, $this->uri); - } - - $stats = fstat($this->stream); - if (is_array($stats) && isset($stats['size'])) { - $this->size = $stats['size']; - - return $this->size; - } - - return null; - } - - public function isReadable(): bool - { - return $this->readable; - } - - public function isWritable(): bool - { - return $this->writable; - } - - public function isSeekable(): bool - { - return $this->seekable; - } - - public function eof(): bool - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - return feof($this->stream); - } - - public function tell(): int - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - $result = ftell($this->stream); - - if ($result === false) { - throw new \RuntimeException('Unable to determine stream position'); - } - - return $result; - } - - public function rewind(): void - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET): void - { - $whence = (int) $whence; - - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->seekable) { - throw new \RuntimeException('Stream is not seekable'); - } - if (fseek($this->stream, $offset, $whence) === -1) { - throw new \RuntimeException('Unable to seek to stream position ' - .$offset.' with whence '.var_export($whence, true)); - } - } - - public function read($length): string - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->readable) { - throw new \RuntimeException('Cannot read from non-readable stream'); - } - if ($length < 0) { - throw new \RuntimeException('Length parameter cannot be negative'); - } - - if (0 === $length) { - return ''; - } - - try { - $string = fread($this->stream, $length); - } catch (\Exception $e) { - throw new \RuntimeException('Unable to read from stream', 0, $e); - } - - if (false === $string) { - throw new \RuntimeException('Unable to read from stream'); - } - - return $string; - } - - public function write($string): int - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->writable) { - throw new \RuntimeException('Cannot write to a non-writable stream'); - } - - // We can't know the size after writing anything - $this->size = null; - $result = fwrite($this->stream, $string); - - if ($result === false) { - throw new \RuntimeException('Unable to write to stream'); - } - - return $result; - } - - /** - * @return mixed - */ - public function getMetadata($key = null) - { - if (!isset($this->stream)) { - return $key ? null : []; - } elseif (!$key) { - return $this->customMetadata + stream_get_meta_data($this->stream); - } elseif (isset($this->customMetadata[$key])) { - return $this->customMetadata[$key]; - } - - $meta = stream_get_meta_data($this->stream); - - return $meta[$key] ?? null; - } -} diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php deleted file mode 100644 index 601c13af..00000000 --- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php +++ /dev/null @@ -1,156 +0,0 @@ -stream = $stream; - } - - /** - * Magic method used to create a new stream if streams are not added in - * the constructor of a decorator (e.g., LazyOpenStream). - * - * @return StreamInterface - */ - public function __get(string $name) - { - if ($name === 'stream') { - $this->stream = $this->createStream(); - - return $this->stream; - } - - throw new \UnexpectedValueException("$name not found on class"); - } - - public function __toString(): string - { - try { - if ($this->isSeekable()) { - $this->seek(0); - } - - return $this->getContents(); - } catch (\Throwable $e) { - if (\PHP_VERSION_ID >= 70400) { - throw $e; - } - trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR); - - return ''; - } - } - - public function getContents(): string - { - return Utils::copyToString($this); - } - - /** - * Allow decorators to implement custom methods - * - * @return mixed - */ - public function __call(string $method, array $args) - { - /** @var callable $callable */ - $callable = [$this->stream, $method]; - $result = ($callable)(...$args); - - // Always return the wrapped object if the result is a return $this - return $result === $this->stream ? $this : $result; - } - - public function close(): void - { - $this->stream->close(); - } - - /** - * @return mixed - */ - public function getMetadata($key = null) - { - return $this->stream->getMetadata($key); - } - - public function detach() - { - return $this->stream->detach(); - } - - public function getSize(): ?int - { - return $this->stream->getSize(); - } - - public function eof(): bool - { - return $this->stream->eof(); - } - - public function tell(): int - { - return $this->stream->tell(); - } - - public function isReadable(): bool - { - return $this->stream->isReadable(); - } - - public function isWritable(): bool - { - return $this->stream->isWritable(); - } - - public function isSeekable(): bool - { - return $this->stream->isSeekable(); - } - - public function rewind(): void - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET): void - { - $this->stream->seek($offset, $whence); - } - - public function read($length): string - { - return $this->stream->read($length); - } - - public function write($string): int - { - return $this->stream->write($string); - } - - /** - * Implement in subclasses to dynamically create streams when requested. - * - * @throws \BadMethodCallException - */ - protected function createStream(): StreamInterface - { - throw new \BadMethodCallException('Not implemented'); - } -} diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php deleted file mode 100644 index 77b04d74..00000000 --- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php +++ /dev/null @@ -1,207 +0,0 @@ -isReadable()) { - $mode = $stream->isWritable() ? 'r+' : 'r'; - } elseif ($stream->isWritable()) { - $mode = 'w'; - } else { - throw new \InvalidArgumentException('The stream must be readable, ' - .'writable, or both.'); - } - - return fopen('guzzle://stream', $mode, false, self::createStreamContext($stream)); - } - - /** - * Creates a stream context that can be used to open a stream as a php stream resource. - * - * @return resource - */ - public static function createStreamContext(StreamInterface $stream) - { - return stream_context_create([ - 'guzzle' => ['stream' => $stream], - ]); - } - - /** - * Registers the stream wrapper if needed - */ - public static function register(): void - { - if (!in_array('guzzle', stream_get_wrappers())) { - stream_wrapper_register('guzzle', __CLASS__); - } - } - - public function stream_open(string $path, string $mode, int $options, ?string &$opened_path = null): bool - { - $options = stream_context_get_options($this->context); - - if (!isset($options['guzzle']['stream'])) { - return false; - } - - $this->mode = $mode; - $this->stream = $options['guzzle']['stream']; - - return true; - } - - public function stream_read(int $count): string - { - return $this->stream->read($count); - } - - public function stream_write(string $data): int - { - return $this->stream->write($data); - } - - public function stream_tell(): int - { - return $this->stream->tell(); - } - - public function stream_eof(): bool - { - return $this->stream->eof(); - } - - public function stream_seek(int $offset, int $whence): bool - { - $this->stream->seek($offset, $whence); - - return true; - } - - /** - * @return resource|false - */ - public function stream_cast(int $cast_as) - { - $stream = clone $this->stream; - $resource = $stream->detach(); - - return $resource ?? false; - } - - /** - * @return array{ - * dev: int, - * ino: int, - * mode: int, - * nlink: int, - * uid: int, - * gid: int, - * rdev: int, - * size: int, - * atime: int, - * mtime: int, - * ctime: int, - * blksize: int, - * blocks: int - * }|false - */ - public function stream_stat() - { - if ($this->stream->getSize() === null) { - return false; - } - - static $modeMap = [ - 'r' => 33060, - 'rb' => 33060, - 'r+' => 33206, - 'w' => 33188, - 'wb' => 33188, - ]; - - return [ - 'dev' => 0, - 'ino' => 0, - 'mode' => $modeMap[$this->mode], - 'nlink' => 0, - 'uid' => 0, - 'gid' => 0, - 'rdev' => 0, - 'size' => $this->stream->getSize() ?: 0, - 'atime' => 0, - 'mtime' => 0, - 'ctime' => 0, - 'blksize' => 0, - 'blocks' => 0, - ]; - } - - /** - * @return array{ - * dev: int, - * ino: int, - * mode: int, - * nlink: int, - * uid: int, - * gid: int, - * rdev: int, - * size: int, - * atime: int, - * mtime: int, - * ctime: int, - * blksize: int, - * blocks: int - * } - */ - public function url_stat(string $path, int $flags): array - { - return [ - 'dev' => 0, - 'ino' => 0, - 'mode' => 0, - 'nlink' => 0, - 'uid' => 0, - 'gid' => 0, - 'rdev' => 0, - 'size' => 0, - 'atime' => 0, - 'mtime' => 0, - 'ctime' => 0, - 'blksize' => 0, - 'blocks' => 0, - ]; - } -} diff --git a/vendor/guzzlehttp/psr7/src/UploadedFile.php b/vendor/guzzlehttp/psr7/src/UploadedFile.php deleted file mode 100644 index d9b779f1..00000000 --- a/vendor/guzzlehttp/psr7/src/UploadedFile.php +++ /dev/null @@ -1,211 +0,0 @@ - 'UPLOAD_ERR_OK', - UPLOAD_ERR_INI_SIZE => 'UPLOAD_ERR_INI_SIZE', - UPLOAD_ERR_FORM_SIZE => 'UPLOAD_ERR_FORM_SIZE', - UPLOAD_ERR_PARTIAL => 'UPLOAD_ERR_PARTIAL', - UPLOAD_ERR_NO_FILE => 'UPLOAD_ERR_NO_FILE', - UPLOAD_ERR_NO_TMP_DIR => 'UPLOAD_ERR_NO_TMP_DIR', - UPLOAD_ERR_CANT_WRITE => 'UPLOAD_ERR_CANT_WRITE', - UPLOAD_ERR_EXTENSION => 'UPLOAD_ERR_EXTENSION', - ]; - - /** - * @var string|null - */ - private $clientFilename; - - /** - * @var string|null - */ - private $clientMediaType; - - /** - * @var int - */ - private $error; - - /** - * @var string|null - */ - private $file; - - /** - * @var bool - */ - private $moved = false; - - /** - * @var int|null - */ - private $size; - - /** - * @var StreamInterface|null - */ - private $stream; - - /** - * @param StreamInterface|string|resource $streamOrFile - */ - public function __construct( - $streamOrFile, - ?int $size, - int $errorStatus, - ?string $clientFilename = null, - ?string $clientMediaType = null - ) { - $this->setError($errorStatus); - $this->size = $size; - $this->clientFilename = $clientFilename; - $this->clientMediaType = $clientMediaType; - - if ($this->isOk()) { - $this->setStreamOrFile($streamOrFile); - } - } - - /** - * Depending on the value set file or stream variable - * - * @param StreamInterface|string|resource $streamOrFile - * - * @throws InvalidArgumentException - */ - private function setStreamOrFile($streamOrFile): void - { - if (is_string($streamOrFile)) { - $this->file = $streamOrFile; - } elseif (is_resource($streamOrFile)) { - $this->stream = new Stream($streamOrFile); - } elseif ($streamOrFile instanceof StreamInterface) { - $this->stream = $streamOrFile; - } else { - throw new InvalidArgumentException( - 'Invalid stream or file provided for UploadedFile' - ); - } - } - - /** - * @throws InvalidArgumentException - */ - private function setError(int $error): void - { - if (!isset(UploadedFile::ERROR_MAP[$error])) { - throw new InvalidArgumentException( - 'Invalid error status for UploadedFile' - ); - } - - $this->error = $error; - } - - private static function isStringNotEmpty($param): bool - { - return is_string($param) && false === empty($param); - } - - /** - * Return true if there is no upload error - */ - private function isOk(): bool - { - return $this->error === UPLOAD_ERR_OK; - } - - public function isMoved(): bool - { - return $this->moved; - } - - /** - * @throws RuntimeException if is moved or not ok - */ - private function validateActive(): void - { - if (false === $this->isOk()) { - throw new RuntimeException(\sprintf('Cannot retrieve stream due to upload error (%s)', self::ERROR_MAP[$this->error])); - } - - if ($this->isMoved()) { - throw new RuntimeException('Cannot retrieve stream after it has already been moved'); - } - } - - public function getStream(): StreamInterface - { - $this->validateActive(); - - if ($this->stream instanceof StreamInterface) { - return $this->stream; - } - - /** @var string $file */ - $file = $this->file; - - return new LazyOpenStream($file, 'r+'); - } - - public function moveTo($targetPath): void - { - $this->validateActive(); - - if (false === self::isStringNotEmpty($targetPath)) { - throw new InvalidArgumentException( - 'Invalid path provided for move operation; must be a non-empty string' - ); - } - - if ($this->file) { - $this->moved = PHP_SAPI === 'cli' - ? rename($this->file, $targetPath) - : move_uploaded_file($this->file, $targetPath); - } else { - Utils::copyToStream( - $this->getStream(), - new LazyOpenStream($targetPath, 'w') - ); - - $this->moved = true; - } - - if (false === $this->moved) { - throw new RuntimeException( - sprintf('Uploaded file could not be moved to %s', $targetPath) - ); - } - } - - public function getSize(): ?int - { - return $this->size; - } - - public function getError(): int - { - return $this->error; - } - - public function getClientFilename(): ?string - { - return $this->clientFilename; - } - - public function getClientMediaType(): ?string - { - return $this->clientMediaType; - } -} diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php deleted file mode 100644 index a7cdfb00..00000000 --- a/vendor/guzzlehttp/psr7/src/Uri.php +++ /dev/null @@ -1,743 +0,0 @@ - 80, - 'https' => 443, - 'ftp' => 21, - 'gopher' => 70, - 'nntp' => 119, - 'news' => 119, - 'telnet' => 23, - 'tn3270' => 23, - 'imap' => 143, - 'pop' => 110, - 'ldap' => 389, - ]; - - /** - * Unreserved characters for use in a regex. - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-2.3 - */ - private const CHAR_UNRESERVED = 'a-zA-Z0-9_\-\.~'; - - /** - * Sub-delims for use in a regex. - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-2.2 - */ - private const CHAR_SUB_DELIMS = '!\$&\'\(\)\*\+,;='; - private const QUERY_SEPARATORS_REPLACEMENT = ['=' => '%3D', '&' => '%26']; - - /** @var string Uri scheme. */ - private $scheme = ''; - - /** @var string Uri user info. */ - private $userInfo = ''; - - /** @var string Uri host. */ - private $host = ''; - - /** @var int|null Uri port. */ - private $port; - - /** @var string Uri path. */ - private $path = ''; - - /** @var string Uri query string. */ - private $query = ''; - - /** @var string Uri fragment. */ - private $fragment = ''; - - /** @var string|null String representation */ - private $composedComponents; - - public function __construct(string $uri = '') - { - if ($uri !== '') { - $parts = self::parse($uri); - if ($parts === false) { - throw new MalformedUriException("Unable to parse URI: $uri"); - } - $this->applyParts($parts); - } - } - - /** - * UTF-8 aware \parse_url() replacement. - * - * The internal function produces broken output for non ASCII domain names - * (IDN) when used with locales other than "C". - * - * On the other hand, cURL understands IDN correctly only when UTF-8 locale - * is configured ("C.UTF-8", "en_US.UTF-8", etc.). - * - * @see https://bugs.php.net/bug.php?id=52923 - * @see https://www.php.net/manual/en/function.parse-url.php#114817 - * @see https://curl.haxx.se/libcurl/c/CURLOPT_URL.html#ENCODING - * - * @return array|false - */ - private static function parse(string $url) - { - // If IPv6 - $prefix = ''; - if (preg_match('%^(.*://\[[0-9:a-fA-F]+\])(.*?)$%', $url, $matches)) { - /** @var array{0:string, 1:string, 2:string} $matches */ - $prefix = $matches[1]; - $url = $matches[2]; - } - - /** @var string */ - $encodedUrl = preg_replace_callback( - '%[^:/@?&=#]+%usD', - static function ($matches) { - return urlencode($matches[0]); - }, - $url - ); - - $result = parse_url($prefix.$encodedUrl); - - if ($result === false) { - return false; - } - - return array_map('urldecode', $result); - } - - public function __toString(): string - { - if ($this->composedComponents === null) { - $this->composedComponents = self::composeComponents( - $this->scheme, - $this->getAuthority(), - $this->path, - $this->query, - $this->fragment - ); - } - - return $this->composedComponents; - } - - /** - * Composes a URI reference string from its various components. - * - * Usually this method does not need to be called manually but instead is used indirectly via - * `Psr\Http\Message\UriInterface::__toString`. - * - * PSR-7 UriInterface treats an empty component the same as a missing component as - * getQuery(), getFragment() etc. always return a string. This explains the slight - * difference to RFC 3986 Section 5.3. - * - * Another adjustment is that the authority separator is added even when the authority is missing/empty - * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with - * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But - * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to - * that format). - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.3 - */ - public static function composeComponents(?string $scheme, ?string $authority, string $path, ?string $query, ?string $fragment): string - { - $uri = ''; - - // weak type checks to also accept null until we can add scalar type hints - if ($scheme != '') { - $uri .= $scheme.':'; - } - - if ($authority != '' || $scheme === 'file') { - $uri .= '//'.$authority; - } - - if ($authority != '' && $path != '' && $path[0] != '/') { - $path = '/'.$path; - } - - $uri .= $path; - - if ($query != '') { - $uri .= '?'.$query; - } - - if ($fragment != '') { - $uri .= '#'.$fragment; - } - - return $uri; - } - - /** - * Whether the URI has the default port of the current scheme. - * - * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used - * independently of the implementation. - */ - public static function isDefaultPort(UriInterface $uri): bool - { - return $uri->getPort() === null - || (isset(self::DEFAULT_PORTS[$uri->getScheme()]) && $uri->getPort() === self::DEFAULT_PORTS[$uri->getScheme()]); - } - - /** - * Whether the URI is absolute, i.e. it has a scheme. - * - * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true - * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative - * to another URI, the base URI. Relative references can be divided into several forms: - * - network-path references, e.g. '//example.com/path' - * - absolute-path references, e.g. '/path' - * - relative-path references, e.g. 'subpath' - * - * @see Uri::isNetworkPathReference - * @see Uri::isAbsolutePathReference - * @see Uri::isRelativePathReference - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4 - */ - public static function isAbsolute(UriInterface $uri): bool - { - return $uri->getScheme() !== ''; - } - - /** - * Whether the URI is a network-path reference. - * - * A relative reference that begins with two slash characters is termed an network-path reference. - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2 - */ - public static function isNetworkPathReference(UriInterface $uri): bool - { - return $uri->getScheme() === '' && $uri->getAuthority() !== ''; - } - - /** - * Whether the URI is a absolute-path reference. - * - * A relative reference that begins with a single slash character is termed an absolute-path reference. - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2 - */ - public static function isAbsolutePathReference(UriInterface $uri): bool - { - return $uri->getScheme() === '' - && $uri->getAuthority() === '' - && isset($uri->getPath()[0]) - && $uri->getPath()[0] === '/'; - } - - /** - * Whether the URI is a relative-path reference. - * - * A relative reference that does not begin with a slash character is termed a relative-path reference. - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2 - */ - public static function isRelativePathReference(UriInterface $uri): bool - { - return $uri->getScheme() === '' - && $uri->getAuthority() === '' - && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/'); - } - - /** - * Whether the URI is a same-document reference. - * - * A same-document reference refers to a URI that is, aside from its fragment - * component, identical to the base URI. When no base URI is given, only an empty - * URI reference (apart from its fragment) is considered a same-document reference. - * - * @param UriInterface $uri The URI to check - * @param UriInterface|null $base An optional base URI to compare against - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.4 - */ - public static function isSameDocumentReference(UriInterface $uri, ?UriInterface $base = null): bool - { - if ($base !== null) { - $uri = UriResolver::resolve($base, $uri); - - return ($uri->getScheme() === $base->getScheme()) - && ($uri->getAuthority() === $base->getAuthority()) - && ($uri->getPath() === $base->getPath()) - && ($uri->getQuery() === $base->getQuery()); - } - - return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === ''; - } - - /** - * Creates a new URI with a specific query string value removed. - * - * Any existing query string values that exactly match the provided key are - * removed. - * - * @param UriInterface $uri URI to use as a base. - * @param string $key Query string key to remove. - */ - public static function withoutQueryValue(UriInterface $uri, string $key): UriInterface - { - $result = self::getFilteredQueryString($uri, [$key]); - - return $uri->withQuery(implode('&', $result)); - } - - /** - * Creates a new URI with a specific query string value. - * - * Any existing query string values that exactly match the provided key are - * removed and replaced with the given key value pair. - * - * A value of null will set the query string key without a value, e.g. "key" - * instead of "key=value". - * - * @param UriInterface $uri URI to use as a base. - * @param string $key Key to set. - * @param string|null $value Value to set - */ - public static function withQueryValue(UriInterface $uri, string $key, ?string $value): UriInterface - { - $result = self::getFilteredQueryString($uri, [$key]); - - $result[] = self::generateQueryString($key, $value); - - return $uri->withQuery(implode('&', $result)); - } - - /** - * Creates a new URI with multiple specific query string values. - * - * It has the same behavior as withQueryValue() but for an associative array of key => value. - * - * @param UriInterface $uri URI to use as a base. - * @param (string|null)[] $keyValueArray Associative array of key and values - */ - public static function withQueryValues(UriInterface $uri, array $keyValueArray): UriInterface - { - $result = self::getFilteredQueryString($uri, array_keys($keyValueArray)); - - foreach ($keyValueArray as $key => $value) { - $result[] = self::generateQueryString((string) $key, $value !== null ? (string) $value : null); - } - - return $uri->withQuery(implode('&', $result)); - } - - /** - * Creates a URI from a hash of `parse_url` components. - * - * @see https://www.php.net/manual/en/function.parse-url.php - * - * @throws MalformedUriException If the components do not form a valid URI. - */ - public static function fromParts(array $parts): UriInterface - { - $uri = new self(); - $uri->applyParts($parts); - $uri->validateState(); - - return $uri; - } - - public function getScheme(): string - { - return $this->scheme; - } - - public function getAuthority(): string - { - $authority = $this->host; - if ($this->userInfo !== '') { - $authority = $this->userInfo.'@'.$authority; - } - - if ($this->port !== null) { - $authority .= ':'.$this->port; - } - - return $authority; - } - - public function getUserInfo(): string - { - return $this->userInfo; - } - - public function getHost(): string - { - return $this->host; - } - - public function getPort(): ?int - { - return $this->port; - } - - public function getPath(): string - { - return $this->path; - } - - public function getQuery(): string - { - return $this->query; - } - - public function getFragment(): string - { - return $this->fragment; - } - - public function withScheme($scheme): UriInterface - { - $scheme = $this->filterScheme($scheme); - - if ($this->scheme === $scheme) { - return $this; - } - - $new = clone $this; - $new->scheme = $scheme; - $new->composedComponents = null; - $new->removeDefaultPort(); - $new->validateState(); - - return $new; - } - - public function withUserInfo($user, $password = null): UriInterface - { - $info = $this->filterUserInfoComponent($user); - if ($password !== null) { - $info .= ':'.$this->filterUserInfoComponent($password); - } - - if ($this->userInfo === $info) { - return $this; - } - - $new = clone $this; - $new->userInfo = $info; - $new->composedComponents = null; - $new->validateState(); - - return $new; - } - - public function withHost($host): UriInterface - { - $host = $this->filterHost($host); - - if ($this->host === $host) { - return $this; - } - - $new = clone $this; - $new->host = $host; - $new->composedComponents = null; - $new->validateState(); - - return $new; - } - - public function withPort($port): UriInterface - { - $port = $this->filterPort($port); - - if ($this->port === $port) { - return $this; - } - - $new = clone $this; - $new->port = $port; - $new->composedComponents = null; - $new->removeDefaultPort(); - $new->validateState(); - - return $new; - } - - public function withPath($path): UriInterface - { - $path = $this->filterPath($path); - - if ($this->path === $path) { - return $this; - } - - $new = clone $this; - $new->path = $path; - $new->composedComponents = null; - $new->validateState(); - - return $new; - } - - public function withQuery($query): UriInterface - { - $query = $this->filterQueryAndFragment($query); - - if ($this->query === $query) { - return $this; - } - - $new = clone $this; - $new->query = $query; - $new->composedComponents = null; - - return $new; - } - - public function withFragment($fragment): UriInterface - { - $fragment = $this->filterQueryAndFragment($fragment); - - if ($this->fragment === $fragment) { - return $this; - } - - $new = clone $this; - $new->fragment = $fragment; - $new->composedComponents = null; - - return $new; - } - - public function jsonSerialize(): string - { - return $this->__toString(); - } - - /** - * Apply parse_url parts to a URI. - * - * @param array $parts Array of parse_url parts to apply. - */ - private function applyParts(array $parts): void - { - $this->scheme = isset($parts['scheme']) - ? $this->filterScheme($parts['scheme']) - : ''; - $this->userInfo = isset($parts['user']) - ? $this->filterUserInfoComponent($parts['user']) - : ''; - $this->host = isset($parts['host']) - ? $this->filterHost($parts['host']) - : ''; - $this->port = isset($parts['port']) - ? $this->filterPort($parts['port']) - : null; - $this->path = isset($parts['path']) - ? $this->filterPath($parts['path']) - : ''; - $this->query = isset($parts['query']) - ? $this->filterQueryAndFragment($parts['query']) - : ''; - $this->fragment = isset($parts['fragment']) - ? $this->filterQueryAndFragment($parts['fragment']) - : ''; - if (isset($parts['pass'])) { - $this->userInfo .= ':'.$this->filterUserInfoComponent($parts['pass']); - } - - $this->removeDefaultPort(); - } - - /** - * @param mixed $scheme - * - * @throws \InvalidArgumentException If the scheme is invalid. - */ - private function filterScheme($scheme): string - { - if (!is_string($scheme)) { - throw new \InvalidArgumentException('Scheme must be a string'); - } - - return \strtr($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); - } - - /** - * @param mixed $component - * - * @throws \InvalidArgumentException If the user info is invalid. - */ - private function filterUserInfoComponent($component): string - { - if (!is_string($component)) { - throw new \InvalidArgumentException('User info must be a string'); - } - - return preg_replace_callback( - '/(?:[^%'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.']+|%(?![A-Fa-f0-9]{2}))/', - [$this, 'rawurlencodeMatchZero'], - $component - ); - } - - /** - * @param mixed $host - * - * @throws \InvalidArgumentException If the host is invalid. - */ - private function filterHost($host): string - { - if (!is_string($host)) { - throw new \InvalidArgumentException('Host must be a string'); - } - - return \strtr($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); - } - - /** - * @param mixed $port - * - * @throws \InvalidArgumentException If the port is invalid. - */ - private function filterPort($port): ?int - { - if ($port === null) { - return null; - } - - $port = (int) $port; - if (0 > $port || 0xFFFF < $port) { - throw new \InvalidArgumentException( - sprintf('Invalid port: %d. Must be between 0 and 65535', $port) - ); - } - - return $port; - } - - /** - * @param (string|int)[] $keys - * - * @return string[] - */ - private static function getFilteredQueryString(UriInterface $uri, array $keys): array - { - $current = $uri->getQuery(); - - if ($current === '') { - return []; - } - - $decodedKeys = array_map(function ($k): string { - return rawurldecode((string) $k); - }, $keys); - - return array_filter(explode('&', $current), function ($part) use ($decodedKeys) { - return !in_array(rawurldecode(explode('=', $part)[0]), $decodedKeys, true); - }); - } - - private static function generateQueryString(string $key, ?string $value): string - { - // Query string separators ("=", "&") within the key or value need to be encoded - // (while preventing double-encoding) before setting the query string. All other - // chars that need percent-encoding will be encoded by withQuery(). - $queryString = strtr($key, self::QUERY_SEPARATORS_REPLACEMENT); - - if ($value !== null) { - $queryString .= '='.strtr($value, self::QUERY_SEPARATORS_REPLACEMENT); - } - - return $queryString; - } - - private function removeDefaultPort(): void - { - if ($this->port !== null && self::isDefaultPort($this)) { - $this->port = null; - } - } - - /** - * Filters the path of a URI - * - * @param mixed $path - * - * @throws \InvalidArgumentException If the path is invalid. - */ - private function filterPath($path): string - { - if (!is_string($path)) { - throw new \InvalidArgumentException('Path must be a string'); - } - - return preg_replace_callback( - '/(?:[^'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.'%:@\/]++|%(?![A-Fa-f0-9]{2}))/', - [$this, 'rawurlencodeMatchZero'], - $path - ); - } - - /** - * Filters the query string or fragment of a URI. - * - * @param mixed $str - * - * @throws \InvalidArgumentException If the query or fragment is invalid. - */ - private function filterQueryAndFragment($str): string - { - if (!is_string($str)) { - throw new \InvalidArgumentException('Query and fragment must be a string'); - } - - return preg_replace_callback( - '/(?:[^'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.'%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/', - [$this, 'rawurlencodeMatchZero'], - $str - ); - } - - private function rawurlencodeMatchZero(array $match): string - { - return rawurlencode($match[0]); - } - - private function validateState(): void - { - if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) { - $this->host = self::HTTP_DEFAULT_HOST; - } - - if ($this->getAuthority() === '') { - if (0 === strpos($this->path, '//')) { - throw new MalformedUriException('The path of a URI without an authority must not start with two slashes "//"'); - } - if ($this->scheme === '' && false !== strpos(explode('/', $this->path, 2)[0], ':')) { - throw new MalformedUriException('A relative URI must not have a path beginning with a segment containing a colon'); - } - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/UriComparator.php b/vendor/guzzlehttp/psr7/src/UriComparator.php deleted file mode 100644 index 70c582aa..00000000 --- a/vendor/guzzlehttp/psr7/src/UriComparator.php +++ /dev/null @@ -1,52 +0,0 @@ -getHost(), $modified->getHost()) !== 0) { - return true; - } - - if ($original->getScheme() !== $modified->getScheme()) { - return true; - } - - if (self::computePort($original) !== self::computePort($modified)) { - return true; - } - - return false; - } - - private static function computePort(UriInterface $uri): int - { - $port = $uri->getPort(); - - if (null !== $port) { - return $port; - } - - return 'https' === $uri->getScheme() ? 443 : 80; - } - - private function __construct() - { - // cannot be instantiated - } -} diff --git a/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/vendor/guzzlehttp/psr7/src/UriNormalizer.php deleted file mode 100644 index e1745573..00000000 --- a/vendor/guzzlehttp/psr7/src/UriNormalizer.php +++ /dev/null @@ -1,220 +0,0 @@ -getPath() === '' - && ($uri->getScheme() === 'http' || $uri->getScheme() === 'https') - ) { - $uri = $uri->withPath('/'); - } - - if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') { - $uri = $uri->withHost(''); - } - - if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && Uri::isDefaultPort($uri)) { - $uri = $uri->withPort(null); - } - - if ($flags & self::REMOVE_DOT_SEGMENTS && !Uri::isRelativePathReference($uri)) { - $uri = $uri->withPath(UriResolver::removeDotSegments($uri->getPath())); - } - - if ($flags & self::REMOVE_DUPLICATE_SLASHES) { - $uri = $uri->withPath(preg_replace('#//++#', '/', $uri->getPath())); - } - - if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') { - $queryKeyValues = explode('&', $uri->getQuery()); - sort($queryKeyValues); - $uri = $uri->withQuery(implode('&', $queryKeyValues)); - } - - return $uri; - } - - /** - * Whether two URIs can be considered equivalent. - * - * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also - * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be - * resolved against the same base URI. If this is not the case, determination of equivalence or difference of - * relative references does not mean anything. - * - * @param UriInterface $uri1 An URI to compare - * @param UriInterface $uri2 An URI to compare - * @param int $normalizations A bitmask of normalizations to apply, see constants - * - * @see https://datatracker.ietf.org/doc/html/rfc3986#section-6.1 - */ - public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, int $normalizations = self::PRESERVING_NORMALIZATIONS): bool - { - return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations); - } - - private static function capitalizePercentEncoding(UriInterface $uri): UriInterface - { - $regex = '/(?:%[A-Fa-f0-9]{2})++/'; - - $callback = function (array $match): string { - return strtoupper($match[0]); - }; - - return - $uri->withPath( - preg_replace_callback($regex, $callback, $uri->getPath()) - )->withQuery( - preg_replace_callback($regex, $callback, $uri->getQuery()) - ); - } - - private static function decodeUnreservedCharacters(UriInterface $uri): UriInterface - { - $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i'; - - $callback = function (array $match): string { - return rawurldecode($match[0]); - }; - - return - $uri->withPath( - preg_replace_callback($regex, $callback, $uri->getPath()) - )->withQuery( - preg_replace_callback($regex, $callback, $uri->getQuery()) - ); - } - - private function __construct() - { - // cannot be instantiated - } -} diff --git a/vendor/guzzlehttp/psr7/src/UriResolver.php b/vendor/guzzlehttp/psr7/src/UriResolver.php deleted file mode 100644 index 3737be1e..00000000 --- a/vendor/guzzlehttp/psr7/src/UriResolver.php +++ /dev/null @@ -1,211 +0,0 @@ -getScheme() != '') { - return $rel->withPath(self::removeDotSegments($rel->getPath())); - } - - if ($rel->getAuthority() != '') { - $targetAuthority = $rel->getAuthority(); - $targetPath = self::removeDotSegments($rel->getPath()); - $targetQuery = $rel->getQuery(); - } else { - $targetAuthority = $base->getAuthority(); - if ($rel->getPath() === '') { - $targetPath = $base->getPath(); - $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery(); - } else { - if ($rel->getPath()[0] === '/') { - $targetPath = $rel->getPath(); - } else { - if ($targetAuthority != '' && $base->getPath() === '') { - $targetPath = '/'.$rel->getPath(); - } else { - $lastSlashPos = strrpos($base->getPath(), '/'); - if ($lastSlashPos === false) { - $targetPath = $rel->getPath(); - } else { - $targetPath = substr($base->getPath(), 0, $lastSlashPos + 1).$rel->getPath(); - } - } - } - $targetPath = self::removeDotSegments($targetPath); - $targetQuery = $rel->getQuery(); - } - } - - return new Uri(Uri::composeComponents( - $base->getScheme(), - $targetAuthority, - $targetPath, - $targetQuery, - $rel->getFragment() - )); - } - - /** - * Returns the target URI as a relative reference from the base URI. - * - * This method is the counterpart to resolve(): - * - * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) - * - * One use-case is to use the current request URI as base URI and then generate relative links in your documents - * to reduce the document size or offer self-contained downloadable document archives. - * - * $base = new Uri('http://example.com/a/b/'); - * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. - * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. - * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. - * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. - * - * This method also accepts a target that is already relative and will try to relativize it further. Only a - * relative-path reference will be returned as-is. - * - * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well - */ - public static function relativize(UriInterface $base, UriInterface $target): UriInterface - { - if ($target->getScheme() !== '' - && ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '') - ) { - return $target; - } - - if (Uri::isRelativePathReference($target)) { - // As the target is already highly relative we return it as-is. It would be possible to resolve - // the target with `$target = self::resolve($base, $target);` and then try make it more relative - // by removing a duplicate query. But let's not do that automatically. - return $target; - } - - if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) { - return $target->withScheme(''); - } - - // We must remove the path before removing the authority because if the path starts with two slashes, the URI - // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also - // invalid. - $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost(''); - - if ($base->getPath() !== $target->getPath()) { - return $emptyPathUri->withPath(self::getRelativePath($base, $target)); - } - - if ($base->getQuery() === $target->getQuery()) { - // Only the target fragment is left. And it must be returned even if base and target fragment are the same. - return $emptyPathUri->withQuery(''); - } - - // If the base URI has a query but the target has none, we cannot return an empty path reference as it would - // inherit the base query component when resolving. - if ($target->getQuery() === '') { - $segments = explode('/', $target->getPath()); - /** @var string $lastSegment */ - $lastSegment = end($segments); - - return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment); - } - - return $emptyPathUri; - } - - private static function getRelativePath(UriInterface $base, UriInterface $target): string - { - $sourceSegments = explode('/', $base->getPath()); - $targetSegments = explode('/', $target->getPath()); - array_pop($sourceSegments); - $targetLastSegment = array_pop($targetSegments); - foreach ($sourceSegments as $i => $segment) { - if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) { - unset($sourceSegments[$i], $targetSegments[$i]); - } else { - break; - } - } - $targetSegments[] = $targetLastSegment; - $relativePath = str_repeat('../', count($sourceSegments)).implode('/', $targetSegments); - - // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./". - // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used - // as the first segment of a relative-path reference, as it would be mistaken for a scheme name. - if ('' === $relativePath || false !== strpos(explode('/', $relativePath, 2)[0], ':')) { - $relativePath = "./$relativePath"; - } elseif ('/' === $relativePath[0]) { - if ($base->getAuthority() != '' && $base->getPath() === '') { - // In this case an extra slash is added by resolve() automatically. So we must not add one here. - $relativePath = ".$relativePath"; - } else { - $relativePath = "./$relativePath"; - } - } - - return $relativePath; - } - - private function __construct() - { - // cannot be instantiated - } -} diff --git a/vendor/guzzlehttp/psr7/src/Utils.php b/vendor/guzzlehttp/psr7/src/Utils.php deleted file mode 100644 index 5451e3dc..00000000 --- a/vendor/guzzlehttp/psr7/src/Utils.php +++ /dev/null @@ -1,477 +0,0 @@ - $v) { - if (!in_array(strtolower((string) $k), $keys)) { - $result[$k] = $v; - } - } - - return $result; - } - - /** - * Copy the contents of a stream into another stream until the given number - * of bytes have been read. - * - * @param StreamInterface $source Stream to read from - * @param StreamInterface $dest Stream to write to - * @param int $maxLen Maximum number of bytes to read. Pass -1 - * to read the entire stream. - * - * @throws \RuntimeException on error. - */ - public static function copyToStream(StreamInterface $source, StreamInterface $dest, int $maxLen = -1): void - { - $bufferSize = 8192; - - if ($maxLen === -1) { - while (!$source->eof()) { - if (!$dest->write($source->read($bufferSize))) { - break; - } - } - } else { - $remaining = $maxLen; - while ($remaining > 0 && !$source->eof()) { - $buf = $source->read(min($bufferSize, $remaining)); - $len = strlen($buf); - if (!$len) { - break; - } - $remaining -= $len; - $dest->write($buf); - } - } - } - - /** - * Copy the contents of a stream into a string until the given number of - * bytes have been read. - * - * @param StreamInterface $stream Stream to read - * @param int $maxLen Maximum number of bytes to read. Pass -1 - * to read the entire stream. - * - * @throws \RuntimeException on error. - */ - public static function copyToString(StreamInterface $stream, int $maxLen = -1): string - { - $buffer = ''; - - if ($maxLen === -1) { - while (!$stream->eof()) { - $buf = $stream->read(1048576); - if ($buf === '') { - break; - } - $buffer .= $buf; - } - - return $buffer; - } - - $len = 0; - while (!$stream->eof() && $len < $maxLen) { - $buf = $stream->read($maxLen - $len); - if ($buf === '') { - break; - } - $buffer .= $buf; - $len = strlen($buffer); - } - - return $buffer; - } - - /** - * Calculate a hash of a stream. - * - * This method reads the entire stream to calculate a rolling hash, based - * on PHP's `hash_init` functions. - * - * @param StreamInterface $stream Stream to calculate the hash for - * @param string $algo Hash algorithm (e.g. md5, crc32, etc) - * @param bool $rawOutput Whether or not to use raw output - * - * @throws \RuntimeException on error. - */ - public static function hash(StreamInterface $stream, string $algo, bool $rawOutput = false): string - { - $pos = $stream->tell(); - - if ($pos > 0) { - $stream->rewind(); - } - - $ctx = hash_init($algo); - while (!$stream->eof()) { - hash_update($ctx, $stream->read(1048576)); - } - - $out = hash_final($ctx, $rawOutput); - $stream->seek($pos); - - return $out; - } - - /** - * Clone and modify a request with the given changes. - * - * This method is useful for reducing the number of clones needed to mutate - * a message. - * - * The changes can be one of: - * - method: (string) Changes the HTTP method. - * - set_headers: (array) Sets the given headers. - * - remove_headers: (array) Remove the given headers. - * - body: (mixed) Sets the given body. - * - uri: (UriInterface) Set the URI. - * - query: (string) Set the query string value of the URI. - * - version: (string) Set the protocol version. - * - * @param RequestInterface $request Request to clone and modify. - * @param array $changes Changes to apply. - */ - public static function modifyRequest(RequestInterface $request, array $changes): RequestInterface - { - if (!$changes) { - return $request; - } - - $headers = $request->getHeaders(); - - if (!isset($changes['uri'])) { - $uri = $request->getUri(); - } else { - // Remove the host header if one is on the URI - if ($host = $changes['uri']->getHost()) { - $changes['set_headers']['Host'] = $host; - - if ($port = $changes['uri']->getPort()) { - $standardPorts = ['http' => 80, 'https' => 443]; - $scheme = $changes['uri']->getScheme(); - if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) { - $changes['set_headers']['Host'] .= ':'.$port; - } - } - } - $uri = $changes['uri']; - } - - if (!empty($changes['remove_headers'])) { - $headers = self::caselessRemove($changes['remove_headers'], $headers); - } - - if (!empty($changes['set_headers'])) { - $headers = self::caselessRemove(array_keys($changes['set_headers']), $headers); - $headers = $changes['set_headers'] + $headers; - } - - if (isset($changes['query'])) { - $uri = $uri->withQuery($changes['query']); - } - - if ($request instanceof ServerRequestInterface) { - $new = (new ServerRequest( - $changes['method'] ?? $request->getMethod(), - $uri, - $headers, - $changes['body'] ?? $request->getBody(), - $changes['version'] ?? $request->getProtocolVersion(), - $request->getServerParams() - )) - ->withParsedBody($request->getParsedBody()) - ->withQueryParams($request->getQueryParams()) - ->withCookieParams($request->getCookieParams()) - ->withUploadedFiles($request->getUploadedFiles()); - - foreach ($request->getAttributes() as $key => $value) { - $new = $new->withAttribute($key, $value); - } - - return $new; - } - - return new Request( - $changes['method'] ?? $request->getMethod(), - $uri, - $headers, - $changes['body'] ?? $request->getBody(), - $changes['version'] ?? $request->getProtocolVersion() - ); - } - - /** - * Read a line from the stream up to the maximum allowed buffer length. - * - * @param StreamInterface $stream Stream to read from - * @param int|null $maxLength Maximum buffer length - */ - public static function readLine(StreamInterface $stream, ?int $maxLength = null): string - { - $buffer = ''; - $size = 0; - - while (!$stream->eof()) { - if ('' === ($byte = $stream->read(1))) { - return $buffer; - } - $buffer .= $byte; - // Break when a new line is found or the max length - 1 is reached - if ($byte === "\n" || ++$size === $maxLength - 1) { - break; - } - } - - return $buffer; - } - - /** - * Redact the password in the user info part of a URI. - */ - public static function redactUserInfo(UriInterface $uri): UriInterface - { - $userInfo = $uri->getUserInfo(); - - if (false !== ($pos = \strpos($userInfo, ':'))) { - return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***'); - } - - return $uri; - } - - /** - * Create a new stream based on the input type. - * - * Options is an associative array that can contain the following keys: - * - metadata: Array of custom metadata. - * - size: Size of the stream. - * - * This method accepts the following `$resource` types: - * - `Psr\Http\Message\StreamInterface`: Returns the value as-is. - * - `string`: Creates a stream object that uses the given string as the contents. - * - `resource`: Creates a stream object that wraps the given PHP stream resource. - * - `Iterator`: If the provided value implements `Iterator`, then a read-only - * stream object will be created that wraps the given iterable. Each time the - * stream is read from, data from the iterator will fill a buffer and will be - * continuously called until the buffer is equal to the requested read size. - * Subsequent read calls will first read from the buffer and then call `next` - * on the underlying iterator until it is exhausted. - * - `object` with `__toString()`: If the object has the `__toString()` method, - * the object will be cast to a string and then a stream will be returned that - * uses the string value. - * - `NULL`: When `null` is passed, an empty stream object is returned. - * - `callable` When a callable is passed, a read-only stream object will be - * created that invokes the given callable. The callable is invoked with the - * number of suggested bytes to read. The callable can return any number of - * bytes, but MUST return `false` when there is no more data to return. The - * stream object that wraps the callable will invoke the callable until the - * number of requested bytes are available. Any additional bytes will be - * buffered and used in subsequent reads. - * - * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data - * @param array{size?: int, metadata?: array} $options Additional options - * - * @throws \InvalidArgumentException if the $resource arg is not valid. - */ - public static function streamFor($resource = '', array $options = []): StreamInterface - { - if (is_scalar($resource)) { - $stream = self::tryFopen('php://temp', 'r+'); - if ($resource !== '') { - fwrite($stream, (string) $resource); - fseek($stream, 0); - } - - return new Stream($stream, $options); - } - - switch (gettype($resource)) { - case 'resource': - /* - * The 'php://input' is a special stream with quirks and inconsistencies. - * We avoid using that stream by reading it into php://temp - */ - - /** @var resource $resource */ - if ((\stream_get_meta_data($resource)['uri'] ?? '') === 'php://input') { - $stream = self::tryFopen('php://temp', 'w+'); - stream_copy_to_stream($resource, $stream); - fseek($stream, 0); - $resource = $stream; - } - - return new Stream($resource, $options); - case 'object': - /** @var object $resource */ - if ($resource instanceof StreamInterface) { - return $resource; - } elseif ($resource instanceof \Iterator) { - return new PumpStream(function () use ($resource) { - if (!$resource->valid()) { - return false; - } - $result = $resource->current(); - $resource->next(); - - return $result; - }, $options); - } elseif (method_exists($resource, '__toString')) { - return self::streamFor((string) $resource, $options); - } - break; - case 'NULL': - return new Stream(self::tryFopen('php://temp', 'r+'), $options); - } - - if (is_callable($resource)) { - return new PumpStream($resource, $options); - } - - throw new \InvalidArgumentException('Invalid resource type: '.gettype($resource)); - } - - /** - * Safely opens a PHP stream resource using a filename. - * - * When fopen fails, PHP normally raises a warning. This function adds an - * error handler that checks for errors and throws an exception instead. - * - * @param string $filename File to open - * @param string $mode Mode used to open the file - * - * @return resource - * - * @throws \RuntimeException if the file cannot be opened - */ - public static function tryFopen(string $filename, string $mode) - { - $ex = null; - set_error_handler(static function (int $errno, string $errstr) use ($filename, $mode, &$ex): bool { - $ex = new \RuntimeException(sprintf( - 'Unable to open "%s" using mode "%s": %s', - $filename, - $mode, - $errstr - )); - - return true; - }); - - try { - /** @var resource $handle */ - $handle = fopen($filename, $mode); - } catch (\Throwable $e) { - $ex = new \RuntimeException(sprintf( - 'Unable to open "%s" using mode "%s": %s', - $filename, - $mode, - $e->getMessage() - ), 0, $e); - } - - restore_error_handler(); - - if ($ex) { - /** @var \RuntimeException $ex */ - throw $ex; - } - - return $handle; - } - - /** - * Safely gets the contents of a given stream. - * - * When stream_get_contents fails, PHP normally raises a warning. This - * function adds an error handler that checks for errors and throws an - * exception instead. - * - * @param resource $stream - * - * @throws \RuntimeException if the stream cannot be read - */ - public static function tryGetContents($stream): string - { - $ex = null; - set_error_handler(static function (int $errno, string $errstr) use (&$ex): bool { - $ex = new \RuntimeException(sprintf( - 'Unable to read stream contents: %s', - $errstr - )); - - return true; - }); - - try { - /** @var string|false $contents */ - $contents = stream_get_contents($stream); - - if ($contents === false) { - $ex = new \RuntimeException('Unable to read stream contents'); - } - } catch (\Throwable $e) { - $ex = new \RuntimeException(sprintf( - 'Unable to read stream contents: %s', - $e->getMessage() - ), 0, $e); - } - - restore_error_handler(); - - if ($ex) { - /** @var \RuntimeException $ex */ - throw $ex; - } - - return $contents; - } - - /** - * Returns a UriInterface for the given value. - * - * This function accepts a string or UriInterface and returns a - * UriInterface for the given value. If the value is already a - * UriInterface, it is returned as-is. - * - * @param string|UriInterface $uri - * - * @throws \InvalidArgumentException - */ - public static function uriFor($uri): UriInterface - { - if ($uri instanceof UriInterface) { - return $uri; - } - - if (is_string($uri)) { - return new Uri($uri); - } - - throw new \InvalidArgumentException('URI must be a string or UriInterface'); - } -} diff --git a/vendor/psr/http-client/CHANGELOG.md b/vendor/psr/http-client/CHANGELOG.md deleted file mode 100644 index babba7c7..00000000 --- a/vendor/psr/http-client/CHANGELOG.md +++ /dev/null @@ -1,31 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file, in reverse chronological order by release. - -## 1.0.3 - -Add `source` link in composer.json. No code changes. - -## 1.0.2 - -Allow PSR-7 (psr/http-message) 2.0. No code changes. - -## 1.0.1 - -Allow installation with PHP 8. No code changes. - -## 1.0.0 - -First stable release. No changes since 0.3.0. - -## 0.3.0 - -Added Interface suffix on exceptions - -## 0.2.0 - -All exceptions are in `Psr\Http\Client` namespace - -## 0.1.0 - -First release diff --git a/vendor/psr/http-client/LICENSE b/vendor/psr/http-client/LICENSE deleted file mode 100644 index cd5e0020..00000000 --- a/vendor/psr/http-client/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2017 PHP Framework Interoperability Group - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/psr/http-client/README.md b/vendor/psr/http-client/README.md deleted file mode 100644 index 84af5c55..00000000 --- a/vendor/psr/http-client/README.md +++ /dev/null @@ -1,12 +0,0 @@ -HTTP Client -=========== - -This repository holds all the common code related to [PSR-18 (HTTP Client)][psr-url]. - -Note that this is not a HTTP Client implementation of its own. It is merely abstractions that describe the components of a HTTP Client. - -The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist. - -[psr-url]: https://www.php-fig.org/psr/psr-18 -[package-url]: https://packagist.org/packages/psr/http-client -[implementation-url]: https://packagist.org/providers/psr/http-client-implementation diff --git a/vendor/psr/http-client/composer.json b/vendor/psr/http-client/composer.json deleted file mode 100644 index 6fed350b..00000000 --- a/vendor/psr/http-client/composer.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "psr/http-client", - "description": "Common interface for HTTP clients", - "keywords": ["psr", "psr-18", "http", "http-client"], - "homepage": "https://github.com/php-fig/http-client", - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "support": { - "source": "https://github.com/php-fig/http-client" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/http-client/src/ClientExceptionInterface.php b/vendor/psr/http-client/src/ClientExceptionInterface.php deleted file mode 100644 index aa0b9cf1..00000000 --- a/vendor/psr/http-client/src/ClientExceptionInterface.php +++ /dev/null @@ -1,10 +0,0 @@ -=7.1", - "psr/http-message": "^1.0 || ^2.0" - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/http-factory/src/RequestFactoryInterface.php b/vendor/psr/http-factory/src/RequestFactoryInterface.php deleted file mode 100644 index cb39a08b..00000000 --- a/vendor/psr/http-factory/src/RequestFactoryInterface.php +++ /dev/null @@ -1,18 +0,0 @@ - `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`. -> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered. - diff --git a/vendor/psr/http-message/docs/PSR7-Usage.md b/vendor/psr/http-message/docs/PSR7-Usage.md deleted file mode 100644 index b6d048a3..00000000 --- a/vendor/psr/http-message/docs/PSR7-Usage.md +++ /dev/null @@ -1,159 +0,0 @@ -### PSR-7 Usage - -All PSR-7 applications comply with these interfaces -They were created to establish a standard between middleware implementations. - -> `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`. -> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered. - - -The following examples will illustrate how basic operations are done in PSR-7. - -##### Examples - - -For this examples to work (at least) a PSR-7 implementation package is required. (eg: zendframework/zend-diactoros, guzzlehttp/psr7, slim/slim, etc) -All PSR-7 implementations should have the same behaviour. - -The following will be assumed: -`$request` is an object of `Psr\Http\Message\RequestInterface` and - -`$response` is an object implementing `Psr\Http\Message\RequestInterface` - - -### Working with HTTP Headers - -#### Adding headers to response: - -```php -$response->withHeader('My-Custom-Header', 'My Custom Message'); -``` - -#### Appending values to headers - -```php -$response->withAddedHeader('My-Custom-Header', 'The second message'); -``` - -#### Checking if header exists: - -```php -$request->hasHeader('My-Custom-Header'); // will return false -$response->hasHeader('My-Custom-Header'); // will return true -``` - -> Note: My-Custom-Header was only added in the Response - -#### Getting comma-separated values from a header (also applies to request) - -```php -// getting value from request headers -$request->getHeaderLine('Content-Type'); // will return: "text/html; charset=UTF-8" -// getting value from response headers -$response->getHeaderLine('My-Custom-Header'); // will return: "My Custom Message; The second message" -``` - -#### Getting array of value from a header (also applies to request) -```php -// getting value from request headers -$request->getHeader('Content-Type'); // will return: ["text/html", "charset=UTF-8"] -// getting value from response headers -$response->getHeader('My-Custom-Header'); // will return: ["My Custom Message", "The second message"] -``` - -#### Removing headers from HTTP Messages -```php -// removing a header from Request, removing deprecated "Content-MD5" header -$request->withoutHeader('Content-MD5'); - -// removing a header from Response -// effect: the browser won't know the size of the stream -// the browser will download the stream till it ends -$response->withoutHeader('Content-Length'); -``` - -### Working with HTTP Message Body - -When working with the PSR-7 there are two methods of implementation: -#### 1. Getting the body separately - -> This method makes the body handling easier to understand and is useful when repeatedly calling body methods. (You only call `getBody()` once). Using this method mistakes like `$response->write()` are also prevented. - -```php -$body = $response->getBody(); -// operations on body, eg. read, write, seek -// ... -// replacing the old body -$response->withBody($body); -// this last statement is optional as we working with objects -// in this case the "new" body is same with the "old" one -// the $body variable has the same value as the one in $request, only the reference is passed -``` - -#### 2. Working directly on response - -> This method is useful when only performing few operations as the `$request->getBody()` statement fragment is required - -```php -$response->getBody()->write('hello'); -``` - -### Getting the body contents - -The following snippet gets the contents of a stream contents. -> Note: Streams must be rewinded, if content was written into streams, it will be ignored when calling `getContents()` because the stream pointer is set to the last character, which is `\0` - meaning end of stream. -```php -$body = $response->getBody(); -$body->rewind(); // or $body->seek(0); -$bodyText = $body->getContents(); -``` -> Note: If `$body->seek(1)` is called before `$body->getContents()`, the first character will be ommited as the starting pointer is set to `1`, not `0`. This is why using `$body->rewind()` is recommended. - -### Append to body - -```php -$response->getBody()->write('Hello'); // writing directly -$body = $request->getBody(); // which is a `StreamInterface` -$body->write('xxxxx'); -``` - -### Prepend to body -Prepending is different when it comes to streams. The content must be copied before writing the content to be prepended. -The following example will explain the behaviour of streams. - -```php -// assuming our response is initially empty -$body = $repsonse->getBody(); -// writing the string "abcd" -$body->write('abcd'); - -// seeking to start of stream -$body->seek(0); -// writing 'ef' -$body->write('ef'); // at this point the stream contains "efcd" -``` - -#### Prepending by rewriting separately - -```php -// assuming our response body stream only contains: "abcd" -$body = $response->getBody(); -$body->rewind(); -$contents = $body->getContents(); // abcd -// seeking the stream to beginning -$body->rewind(); -$body->write('ef'); // stream contains "efcd" -$body->write($contents); // stream contains "efabcd" -``` - -> Note: `getContents()` seeks the stream while reading it, therefore if the second `rewind()` method call was not present the stream would have resulted in `abcdefabcd` because the `write()` method appends to stream if not preceeded by `rewind()` or `seek(0)`. - -#### Prepending by using contents as a string -```php -$body = $response->getBody(); -$body->rewind(); -$contents = $body->getContents(); // efabcd -$contents = 'ef'.$contents; -$body->rewind(); -$body->write($contents); -``` diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php deleted file mode 100644 index a83c9851..00000000 --- a/vendor/psr/http-message/src/MessageInterface.php +++ /dev/null @@ -1,187 +0,0 @@ -getHeaders() as $name => $values) { - * echo $name . ": " . implode(", ", $values); - * } - * - * // Emit headers iteratively: - * foreach ($message->getHeaders() as $name => $values) { - * foreach ($values as $value) { - * header(sprintf('%s: %s', $name, $value), false); - * } - * } - * - * While header names are not case-sensitive, getHeaders() will preserve the - * exact case in which headers were originally specified. - * - * @return string[][] Returns an associative array of the message's headers. Each - * key MUST be a header name, and each value MUST be an array of strings - * for that header. - */ - public function getHeaders(): array; - - /** - * Checks if a header exists by the given case-insensitive name. - * - * @param string $name Case-insensitive header field name. - * @return bool Returns true if any header names match the given header - * name using a case-insensitive string comparison. Returns false if - * no matching header name is found in the message. - */ - public function hasHeader(string $name): bool; - - /** - * Retrieves a message header value by the given case-insensitive name. - * - * This method returns an array of all the header values of the given - * case-insensitive header name. - * - * If the header does not appear in the message, this method MUST return an - * empty array. - * - * @param string $name Case-insensitive header field name. - * @return string[] An array of string values as provided for the given - * header. If the header does not appear in the message, this method MUST - * return an empty array. - */ - public function getHeader(string $name): array; - - /** - * Retrieves a comma-separated string of the values for a single header. - * - * This method returns all of the header values of the given - * case-insensitive header name as a string concatenated together using - * a comma. - * - * NOTE: Not all header values may be appropriately represented using - * comma concatenation. For such headers, use getHeader() instead - * and supply your own delimiter when concatenating. - * - * If the header does not appear in the message, this method MUST return - * an empty string. - * - * @param string $name Case-insensitive header field name. - * @return string A string of values as provided for the given header - * concatenated together using a comma. If the header does not appear in - * the message, this method MUST return an empty string. - */ - public function getHeaderLine(string $name): string; - - /** - * Return an instance with the provided value replacing the specified header. - * - * While header names are case-insensitive, the casing of the header will - * be preserved by this function, and returned from getHeaders(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new and/or updated header and value. - * - * @param string $name Case-insensitive header field name. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withHeader(string $name, $value): MessageInterface; - - /** - * Return an instance with the specified header appended with the given value. - * - * Existing values for the specified header will be maintained. The new - * value(s) will be appended to the existing list. If the header did not - * exist previously, it will be added. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new header and/or value. - * - * @param string $name Case-insensitive header field name to add. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withAddedHeader(string $name, $value): MessageInterface; - - /** - * Return an instance without the specified header. - * - * Header resolution MUST be done without case-sensitivity. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the named header. - * - * @param string $name Case-insensitive header field name to remove. - * @return static - */ - public function withoutHeader(string $name): MessageInterface; - - /** - * Gets the body of the message. - * - * @return StreamInterface Returns the body as a stream. - */ - public function getBody(): StreamInterface; - - /** - * Return an instance with the specified message body. - * - * The body MUST be a StreamInterface object. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return a new instance that has the - * new body stream. - * - * @param StreamInterface $body Body. - * @return static - * @throws \InvalidArgumentException When the body is not valid. - */ - public function withBody(StreamInterface $body): MessageInterface; -} diff --git a/vendor/psr/http-message/src/RequestInterface.php b/vendor/psr/http-message/src/RequestInterface.php deleted file mode 100644 index 33f85e55..00000000 --- a/vendor/psr/http-message/src/RequestInterface.php +++ /dev/null @@ -1,130 +0,0 @@ -getQuery()` - * or from the `QUERY_STRING` server param. - * - * @return array - */ - public function getQueryParams(): array; - - /** - * Return an instance with the specified query string arguments. - * - * These values SHOULD remain immutable over the course of the incoming - * request. They MAY be injected during instantiation, such as from PHP's - * $_GET superglobal, or MAY be derived from some other value such as the - * URI. In cases where the arguments are parsed from the URI, the data - * MUST be compatible with what PHP's parse_str() would return for - * purposes of how duplicate query parameters are handled, and how nested - * sets are handled. - * - * Setting query string arguments MUST NOT change the URI stored by the - * request, nor the values in the server params. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated query string arguments. - * - * @param array $query Array of query string arguments, typically from - * $_GET. - * @return static - */ - public function withQueryParams(array $query): ServerRequestInterface; - - /** - * Retrieve normalized file upload data. - * - * This method returns upload metadata in a normalized tree, with each leaf - * an instance of Psr\Http\Message\UploadedFileInterface. - * - * These values MAY be prepared from $_FILES or the message body during - * instantiation, or MAY be injected via withUploadedFiles(). - * - * @return array An array tree of UploadedFileInterface instances; an empty - * array MUST be returned if no data is present. - */ - public function getUploadedFiles(): array; - - /** - * Create a new instance with the specified uploaded files. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param array $uploadedFiles An array tree of UploadedFileInterface instances. - * @return static - * @throws \InvalidArgumentException if an invalid structure is provided. - */ - public function withUploadedFiles(array $uploadedFiles): ServerRequestInterface; - - /** - * Retrieve any parameters provided in the request body. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, this method MUST - * return the contents of $_POST. - * - * Otherwise, this method may return any results of deserializing - * the request body content; as parsing returns structured content, the - * potential types MUST be arrays or objects only. A null value indicates - * the absence of body content. - * - * @return null|array|object The deserialized body parameters, if any. - * These will typically be an array or object. - */ - public function getParsedBody(); - - /** - * Return an instance with the specified body parameters. - * - * These MAY be injected during instantiation. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, use this method - * ONLY to inject the contents of $_POST. - * - * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of - * deserializing the request body content. Deserialization/parsing returns - * structured data, and, as such, this method ONLY accepts arrays or objects, - * or a null value if nothing was available to parse. - * - * As an example, if content negotiation determines that the request data - * is a JSON payload, this method could be used to create a request - * instance with the deserialized parameters. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param null|array|object $data The deserialized body data. This will - * typically be in an array or object. - * @return static - * @throws \InvalidArgumentException if an unsupported argument type is - * provided. - */ - public function withParsedBody($data): ServerRequestInterface; - - /** - * Retrieve attributes derived from the request. - * - * The request "attributes" may be used to allow injection of any - * parameters derived from the request: e.g., the results of path - * match operations; the results of decrypting cookies; the results of - * deserializing non-form-encoded message bodies; etc. Attributes - * will be application and request specific, and CAN be mutable. - * - * @return array Attributes derived from the request. - */ - public function getAttributes(): array; - - /** - * Retrieve a single derived request attribute. - * - * Retrieves a single derived request attribute as described in - * getAttributes(). If the attribute has not been previously set, returns - * the default value as provided. - * - * This method obviates the need for a hasAttribute() method, as it allows - * specifying a default value to return if the attribute is not found. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $default Default value to return if the attribute does not exist. - * @return mixed - */ - public function getAttribute(string $name, $default = null); - - /** - * Return an instance with the specified derived request attribute. - * - * This method allows setting a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $value The value of the attribute. - * @return static - */ - public function withAttribute(string $name, $value): ServerRequestInterface; - - /** - * Return an instance that removes the specified derived request attribute. - * - * This method allows removing a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @return static - */ - public function withoutAttribute(string $name): ServerRequestInterface; -} diff --git a/vendor/psr/http-message/src/StreamInterface.php b/vendor/psr/http-message/src/StreamInterface.php deleted file mode 100644 index a62aabb8..00000000 --- a/vendor/psr/http-message/src/StreamInterface.php +++ /dev/null @@ -1,158 +0,0 @@ - - * [user-info@]host[:port] - * - * - * If the port component is not set or is the standard port for the current - * scheme, it SHOULD NOT be included. - * - * @see https://tools.ietf.org/html/rfc3986#section-3.2 - * @return string The URI authority, in "[user-info@]host[:port]" format. - */ - public function getAuthority(): string; - - /** - * Retrieve the user information component of the URI. - * - * If no user information is present, this method MUST return an empty - * string. - * - * If a user is present in the URI, this will return that value; - * additionally, if the password is also present, it will be appended to the - * user value, with a colon (":") separating the values. - * - * The trailing "@" character is not part of the user information and MUST - * NOT be added. - * - * @return string The URI user information, in "username[:password]" format. - */ - public function getUserInfo(): string; - - /** - * Retrieve the host component of the URI. - * - * If no host is present, this method MUST return an empty string. - * - * The value returned MUST be normalized to lowercase, per RFC 3986 - * Section 3.2.2. - * - * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 - * @return string The URI host. - */ - public function getHost(): string; - - /** - * Retrieve the port component of the URI. - * - * If a port is present, and it is non-standard for the current scheme, - * this method MUST return it as an integer. If the port is the standard port - * used with the current scheme, this method SHOULD return null. - * - * If no port is present, and no scheme is present, this method MUST return - * a null value. - * - * If no port is present, but a scheme is present, this method MAY return - * the standard port for that scheme, but SHOULD return null. - * - * @return null|int The URI port. - */ - public function getPort(): ?int; - - /** - * Retrieve the path component of the URI. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * Normally, the empty path "" and absolute path "/" are considered equal as - * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically - * do this normalization because in contexts with a trimmed base path, e.g. - * the front controller, this difference becomes significant. It's the task - * of the user to handle both "" and "/". - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.3. - * - * As an example, if the value should include a slash ("/") not intended as - * delimiter between path segments, that value MUST be passed in encoded - * form (e.g., "%2F") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.3 - * @return string The URI path. - */ - public function getPath(): string; - - /** - * Retrieve the query string of the URI. - * - * If no query string is present, this method MUST return an empty string. - * - * The leading "?" character is not part of the query and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.4. - * - * As an example, if a value in a key/value pair of the query string should - * include an ampersand ("&") not intended as a delimiter between values, - * that value MUST be passed in encoded form (e.g., "%26") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.4 - * @return string The URI query string. - */ - public function getQuery(): string; - - /** - * Retrieve the fragment component of the URI. - * - * If no fragment is present, this method MUST return an empty string. - * - * The leading "#" character is not part of the fragment and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.5. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.5 - * @return string The URI fragment. - */ - public function getFragment(): string; - - /** - * Return an instance with the specified scheme. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified scheme. - * - * Implementations MUST support the schemes "http" and "https" case - * insensitively, and MAY accommodate other schemes if required. - * - * An empty scheme is equivalent to removing the scheme. - * - * @param string $scheme The scheme to use with the new instance. - * @return static A new instance with the specified scheme. - * @throws \InvalidArgumentException for invalid or unsupported schemes. - */ - public function withScheme(string $scheme): UriInterface; - - /** - * Return an instance with the specified user information. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified user information. - * - * Password is optional, but the user information MUST include the - * user; an empty string for the user is equivalent to removing user - * information. - * - * @param string $user The user name to use for authority. - * @param null|string $password The password associated with $user. - * @return static A new instance with the specified user information. - */ - public function withUserInfo(string $user, ?string $password = null): UriInterface; - - /** - * Return an instance with the specified host. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified host. - * - * An empty host value is equivalent to removing the host. - * - * @param string $host The hostname to use with the new instance. - * @return static A new instance with the specified host. - * @throws \InvalidArgumentException for invalid hostnames. - */ - public function withHost(string $host): UriInterface; - - /** - * Return an instance with the specified port. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified port. - * - * Implementations MUST raise an exception for ports outside the - * established TCP and UDP port ranges. - * - * A null value provided for the port is equivalent to removing the port - * information. - * - * @param null|int $port The port to use with the new instance; a null value - * removes the port information. - * @return static A new instance with the specified port. - * @throws \InvalidArgumentException for invalid ports. - */ - public function withPort(?int $port): UriInterface; - - /** - * Return an instance with the specified path. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified path. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * If the path is intended to be domain-relative rather than path relative then - * it must begin with a slash ("/"). Paths not starting with a slash ("/") - * are assumed to be relative to some base path known to the application or - * consumer. - * - * Users can provide both encoded and decoded path characters. - * Implementations ensure the correct encoding as outlined in getPath(). - * - * @param string $path The path to use with the new instance. - * @return static A new instance with the specified path. - * @throws \InvalidArgumentException for invalid paths. - */ - public function withPath(string $path): UriInterface; - - /** - * Return an instance with the specified query string. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified query string. - * - * Users can provide both encoded and decoded query characters. - * Implementations ensure the correct encoding as outlined in getQuery(). - * - * An empty query string value is equivalent to removing the query string. - * - * @param string $query The query string to use with the new instance. - * @return static A new instance with the specified query string. - * @throws \InvalidArgumentException for invalid query strings. - */ - public function withQuery(string $query): UriInterface; - - /** - * Return an instance with the specified URI fragment. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified URI fragment. - * - * Users can provide both encoded and decoded fragment characters. - * Implementations ensure the correct encoding as outlined in getFragment(). - * - * An empty fragment value is equivalent to removing the fragment. - * - * @param string $fragment The fragment to use with the new instance. - * @return static A new instance with the specified fragment. - */ - public function withFragment(string $fragment): UriInterface; - - /** - * Return the string representation as a URI reference. - * - * Depending on which components of the URI are present, the resulting - * string is either a full URI or relative reference according to RFC 3986, - * Section 4.1. The method concatenates the various components of the URI, - * using the appropriate delimiters: - * - * - If a scheme is present, it MUST be suffixed by ":". - * - If an authority is present, it MUST be prefixed by "//". - * - The path can be concatenated without delimiters. But there are two - * cases where the path has to be adjusted to make the URI reference - * valid as PHP does not allow to throw an exception in __toString(): - * - If the path is rootless and an authority is present, the path MUST - * be prefixed by "/". - * - If the path is starting with more than one "/" and no authority is - * present, the starting slashes MUST be reduced to one. - * - If a query is present, it MUST be prefixed by "?". - * - If a fragment is present, it MUST be prefixed by "#". - * - * @see http://tools.ietf.org/html/rfc3986#section-4.1 - * @return string - */ - public function __toString(): string; -} diff --git a/vendor/ralouphie/getallheaders/LICENSE b/vendor/ralouphie/getallheaders/LICENSE deleted file mode 100644 index be5540c2..00000000 --- a/vendor/ralouphie/getallheaders/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Ralph Khattar - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/ralouphie/getallheaders/README.md b/vendor/ralouphie/getallheaders/README.md deleted file mode 100644 index 9430d76b..00000000 --- a/vendor/ralouphie/getallheaders/README.md +++ /dev/null @@ -1,27 +0,0 @@ -getallheaders -============= - -PHP `getallheaders()` polyfill. Compatible with PHP >= 5.3. - -[![Build Status](https://travis-ci.org/ralouphie/getallheaders.svg?branch=master)](https://travis-ci.org/ralouphie/getallheaders) -[![Coverage Status](https://coveralls.io/repos/ralouphie/getallheaders/badge.png?branch=master)](https://coveralls.io/r/ralouphie/getallheaders?branch=master) -[![Latest Stable Version](https://poser.pugx.org/ralouphie/getallheaders/v/stable.png)](https://packagist.org/packages/ralouphie/getallheaders) -[![Latest Unstable Version](https://poser.pugx.org/ralouphie/getallheaders/v/unstable.png)](https://packagist.org/packages/ralouphie/getallheaders) -[![License](https://poser.pugx.org/ralouphie/getallheaders/license.png)](https://packagist.org/packages/ralouphie/getallheaders) - - -This is a simple polyfill for [`getallheaders()`](http://www.php.net/manual/en/function.getallheaders.php). - -## Install - -For PHP version **`>= 5.6`**: - -``` -composer require ralouphie/getallheaders -``` - -For PHP version **`< 5.6`**: - -``` -composer require ralouphie/getallheaders "^2" -``` diff --git a/vendor/ralouphie/getallheaders/composer.json b/vendor/ralouphie/getallheaders/composer.json deleted file mode 100644 index de8ce62e..00000000 --- a/vendor/ralouphie/getallheaders/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "ralouphie/getallheaders", - "description": "A polyfill for getallheaders.", - "license": "MIT", - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "require": { - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "^5 || ^6.5", - "php-coveralls/php-coveralls": "^2.1" - }, - "autoload": { - "files": ["src/getallheaders.php"] - }, - "autoload-dev": { - "psr-4": { - "getallheaders\\Tests\\": "tests/" - } - } -} diff --git a/vendor/ralouphie/getallheaders/src/getallheaders.php b/vendor/ralouphie/getallheaders/src/getallheaders.php deleted file mode 100644 index c7285a5b..00000000 --- a/vendor/ralouphie/getallheaders/src/getallheaders.php +++ /dev/null @@ -1,46 +0,0 @@ - 'Content-Type', - 'CONTENT_LENGTH' => 'Content-Length', - 'CONTENT_MD5' => 'Content-Md5', - ); - - foreach ($_SERVER as $key => $value) { - if (substr($key, 0, 5) === 'HTTP_') { - $key = substr($key, 5); - if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) { - $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key)))); - $headers[$key] = $value; - } - } elseif (isset($copy_server[$key])) { - $headers[$copy_server[$key]] = $value; - } - } - - if (!isset($headers['Authorization'])) { - if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { - $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; - } elseif (isset($_SERVER['PHP_AUTH_USER'])) { - $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; - $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass); - } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) { - $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST']; - } - } - - return $headers; - } - -} diff --git a/vendor/symfony/deprecation-contracts/CHANGELOG.md b/vendor/symfony/deprecation-contracts/CHANGELOG.md deleted file mode 100644 index 7932e261..00000000 --- a/vendor/symfony/deprecation-contracts/CHANGELOG.md +++ /dev/null @@ -1,5 +0,0 @@ -CHANGELOG -========= - -The changelog is maintained for all Symfony contracts at the following URL: -https://github.com/symfony/contracts/blob/main/CHANGELOG.md diff --git a/vendor/symfony/deprecation-contracts/LICENSE b/vendor/symfony/deprecation-contracts/LICENSE deleted file mode 100644 index 0ed3a246..00000000 --- a/vendor/symfony/deprecation-contracts/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2020-present Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/deprecation-contracts/README.md b/vendor/symfony/deprecation-contracts/README.md deleted file mode 100644 index 9814864c..00000000 --- a/vendor/symfony/deprecation-contracts/README.md +++ /dev/null @@ -1,26 +0,0 @@ -Symfony Deprecation Contracts -============================= - -A generic function and convention to trigger deprecation notices. - -This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices. - -By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component, -the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments. - -The function requires at least 3 arguments: - - the name of the Composer package that is triggering the deprecation - - the version of the package that introduced the deprecation - - the message of the deprecation - - more arguments can be provided: they will be inserted in the message using `printf()` formatting - -Example: -```php -trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin'); -``` - -This will generate the following message: -`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.` - -While not recommended, the deprecation notices can be completely ignored by declaring an empty -`function trigger_deprecation() {}` in your application. diff --git a/vendor/symfony/deprecation-contracts/composer.json b/vendor/symfony/deprecation-contracts/composer.json deleted file mode 100644 index 5533b5c3..00000000 --- a/vendor/symfony/deprecation-contracts/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "symfony/deprecation-contracts", - "type": "library", - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1" - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-main": "3.6-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - } -} diff --git a/vendor/symfony/deprecation-contracts/function.php b/vendor/symfony/deprecation-contracts/function.php deleted file mode 100644 index 2d56512b..00000000 --- a/vendor/symfony/deprecation-contracts/function.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -if (!function_exists('trigger_deprecation')) { - /** - * Triggers a silenced deprecation notice. - * - * @param string $package The name of the Composer package that is triggering the deprecation - * @param string $version The version of the package that introduced the deprecation - * @param string $message The message of the deprecation - * @param mixed ...$args Values to insert in the message using printf() formatting - * - * @author Nicolas Grekas - */ - function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void - { - @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED); - } -} diff --git a/woo-alipay.php b/woo-alipay.php index 8c74a2d6..ba121032 100755 --- a/woo-alipay.php +++ b/woo-alipay.php @@ -39,6 +39,15 @@ if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'enable-gateways.php' ) ) { require_once WOO_ALIPAY_PLUGIN_PATH . 'enable-gateways.php'; } +// Load agreement manager (subscriptions auto-renew support) +if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-agreement.php' ) ) { + require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-agreement.php'; +} +// Load subscription UI helpers +if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-subscription-ui.php' ) ) { + require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-subscription-ui.php'; +} + add_action( 'before_woocommerce_init', function() { if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); @@ -62,14 +71,8 @@ function woo_alipay_run() { require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-alipay-sdk-helper.php'; } - // Load new payment gateways - if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-installment.php' ) ) { - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-installment.php'; - } - - if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-facetopay.php' ) ) { - require_once WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-facetopay.php'; - } + // Extension gateways are now fully owned and loaded by their respective extensions. + // The core plugin no longer requires Huabei or Face-to-Face classes here. // Load enhanced payment features if ( file_exists( WOO_ALIPAY_PLUGIN_PATH . 'inc/class-wc-alipay-order-query.php' ) ) {

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%0DaY7nD%|lj`q$5n) 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�x0PNlcta5M!$c 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Ν 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%0DaY7nD%|lj`q$5n) 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�x0PNlcta5M!$c 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Ν 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%0DaY7nD%|lj`q$5n) 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�x0PNlcta5M!$c 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Ν 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