Pay

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