Pay


>i 本文档的最新修订日期是: > **2020-12-27** # Pay ## 声明 下述的「支付宝支付」、「微信公众平台」、「微信支付」等产品和产品名称的相关权利归其法定权利人所有。 ## 模块简述 通过第三方支付平台提供的接口,实现在线支付。目前支持支付宝支付和微信支付。 ## 依赖 本模块依赖于基础模块 `Send` 。 ## 模块配置 配置文件位于 `/Config/Pay.php` 。 * **`Timeout`** `(Int)` `15`: 用以指定超时时间。 值的单位为秒(s)。 * **`AliPid`** `(String)` `''` : 在支付宝商家平台所获得的合作伙伴ID。 * **`AliKey`** `(String)` `''` : 在支付宝商家平台所获得的产品使用秘钥。 * **`AliNotifyUrl`** `(String)` `''` : 指定支付宝支付的异步回调地址。 * **`AliReturnUrl`** `(String)` `''` : 指定支付宝支付的跳转页面。 * **`WxAppid`** `(String)` `''` : 在微信公众平台所获得的APPID。 * **`WxMchId`** `(String)` `''` : 在微信支付平台所获得的商家编号。 * **`WxKey`** `(String)` `''` : 在微信支付平台所获得的产品使用秘钥。 * **`WxNotifyUrl`** `(String)` `''` : 指定微信支付的异步回调地址。 * **`WxSceneInfo`** `(Array)` `...` : 指定微信支付中H5支付的场景信息,有关此配置项的详细信息,请查阅微信支付提供的 `开发文档` 。 ## 公共参数 * **`id(编号)`** `(String)` `默认值见方法参数`: 用以指定本次交易在您的应用中的订单号。 >w 详情请查阅第三方支付服务商提供的开发文档。 * **`title(标题)`** `(String)` `默认值见方法参数`: 用以指定本次交易的名称。 >w 详情请查阅第三方支付服务商提供的开发文档。 * **`total(金额)`** `(Int)` `默认值见方法参数`: 用以指定本次交易的金额,单位为人民币 `分` 。 ## :: Alipay()方法 ### 语法 **Pay :: Alipay ( 传参数组 )** ### 说明 通过支付宝支付提供的接口,实现在线支付。 此方法 `支持` 中文参数名。 ### 参数 * **`id(编号)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`title(标题)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`total(金额)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`qr(二维码)`** `(Bool)` `FALSE`: 当值为 `TRUE` 时,您可以将返回的URL以 `iframe` 框架的形式内嵌于网页中,此URL对应的页面是一个由支付宝支付提供的支付二维码,详情请查阅支付宝支付提供的 `开发文档` 。 * **`qr_width(二维码宽度)`** `(Int)` `NULL`: 用以指定支付二维码的大小。 值的单位为 `像素`(px),详情请查阅支付宝支付提供的 `开发文档` 。 ### 返回 `(String)` 类型。 返回的字符串是一个URL。如果参数 `qr` 的值为 `FALSE` 时,可以将页面跳转至该URL,让用户开始支付操作。 ## :: Wxpay()方法 ### 语法 **Pay :: Wxpay ( 传参数组 )** ### 说明 通过微信支付提供的接口,实现在线支付。 此方法 `支持` 中文参数名。 ### 参数 * **`id(编号)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`title(标题)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`total(金额)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`mode(模式)`** `(String)` `'NATIVE'`: 用以指定支付模式。 当值为 `NATIVE` 时,场景为扫码支付;当值为 `JSAPI` 时,场景为微信内网页支付,前端通过JSAPI唤起客户端的支付界面;当值为 `MWEB` 时,场景为H5支付。 详情请查阅微信支付提供的 `开发文档` 。 * **`ip(ip地址)`** `(String)` `NULL`: 用以指定支付者的IP地址。 当值为 `NULL` 时,模块将使用 `$_SERVER['REMOTE_ADDR']` 获取IP地址。 详情请查阅微信支付提供的 `开发文档` 。 * **`openid(openid)`** `(String)` `NULL`: 用以指定支付者的OpenID。 当参数 `mode` 的值为 `JSAPI` 时,您必须传入此参数。 详情请查阅微信支付提供的 `开发文档` 。 ### 返回 `(String)` 类型。 当参数Mode的值为 `NATIVE` 时,您需要将返回的字符串生成二维码展示给用户。 当参数Mode的值为 `MWEB` 时,返回的字符串是一个URL。可以将页面跳转至该URL,让用户开始支付操作。 当参数Mode的值为 `JSAPI` 时,返回的字符串是微信支付规定的 `PREPAY_ID` 数据。可以通过前端JSAPI进一步操作后,让用户开始支付操作。 ## :: AlipayVerify()方法 ### 语法 **Pay :: AlipayVerify ( )** ### 说明 对收到的回调请求按照支付宝支付的验签规则验签。 ### 参数 无。 ### 返回 `(Bool)` 类型。 返回值为 `TRUE` 时代表验签成功、`FALSE` 代表验签失败。 ## :: WxpayVerify()方法 ### 语法 **Pay :: WxpayVerify ( 传参数组 )** ### 说明 对收到的回调请求按照微信支付的验签规则验签。 此方法 `支持` 中文参数名。 ### 参数 * **`string(字符串)`** `(String)` `<必须>`: 用以指定验签时使用的Xml,通常通过 `php://input` 获得。 详情请查阅微信支付提供的 `开发文档` 。 ### 返回 `(Array | Bool)` 类型。 当返回值为一个非空数组时,表示验签成功,此数组由传入的Xml解析得来。 当返回值为 `FALSE` 时,表示验签失败。