这个项目初衷是适配公司多个不同支付渠道下(支付宝/微信支付)的支付组件,目前支持的支付渠道如下
| 渠道 | 渠道编号 | 进度 |
|---|---|---|
| 官方 | 5 | (已完成) |
| 随行付 | 10 | (已完成) |
| 移动杭研 | 15 | (已完成) |
| IPay88 Pay | 9 | (已完成) |
| Hi Pay | 13 | (已完成) |
| Stripe Pay | 14 | (已完成) |
| Gkash Pay | 16 | (已完成) |
| MayBank Pay | 17 | (已完成) |
| Nets Pay | 18 | (已完成) |
| Mango Pay | 19 | (已完成) |
| 嘉联支付 | 20 | (已完成) |
| 渠道 | 渠道编号 | 进度 |
|---|---|---|
| 联付通 | 1 | (已完成,停止更新) |
| 付呗 | 4 | (已完成,停止更新) |
| 收钱吧 | 6 | (已完成,停止更新) |
| 乐刷 | 7 | (已完成,停止更新) |
| 云闪付 | 8 | (已完成,停止更新) |
| 乐天成 | 11 | (已完成,停止更新) |
可以通过继承Base类后实现更多的支付渠道
参看examples文件夹
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| channel | M | int | 1 | 支付渠道 1-联付通,4-付呗,5-官方直连,6-收钱吧,7-乐刷,8-云闪付,10-随行付,11-乐天成 |
| payType | M | int | 1 | 支付通道。1-支付宝,2-微信,3-银联,暂未支持银联,只是预留拓展 |
| charset | C | string | UTF-8 | 请求和返回编码,目前都是UTF-8 |
| tradeNo | M | string | SB202012261548555 | 商户订单号 |
| refundTradeNo | O | string | SBTK202012261548555 | 商户退款订单号 |
| totalAmount | O | float | 1.23 | 订单总金额/退款总金额,可多次退款的渠道可能需要同时传入订单金额和退款金额,目前不支持传入不同值,即只能全退 |
| notifyUrl | O | string | https://www.abc.com/pay/notify | 支付结果异步通知地址,网页/小程序支付必填 |
| subject | C | string | FPX.Doinb | 订单标题 |
| authCode | O | string | 12331231321 | B扫C时读取到的条码内容 |
| appid | O | string | wx5ccf1abe464a2215 | 微信支付时发起支付的公众号/小程序的APP ID |
| isMiniProgram | O | int | 1 | webPay是不是由小程序发起,1-小程序,0-公众号/服务窗/js支付 |
| userId | O | string | oDdgAwTnZ2z4ov8p-VDAb-0GeBIU | 用户在微信/支付宝中的id,即微信的openid,支付宝的buyer_id .etc |
| userIP | O | string | 192.168.1.1 | 用户发起请求的IP地址,目前只有微信直连支付和随行付支付需要传入 |
| optional | O | array | ['a'=>1] | 用于更多未添加的参数,当前只写了最小需求的参数,如果有更多需传给第三方的参数,可以通过该数组传入,具体参数请查阅第三方文档 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| appAuthToken | O | string | Sf***** | ISV服务商模式下的授权token,不填写就是商户直连,填写就是走服务商支付 |
| merchantPrivateKey | M | string | MII**** | 应用私钥 |
| alipayCertPath | O | string | /foo/alipayCertPublicKey_RSA2.crt | 支付宝公钥证书文件路径 |
| alipayRootCertPath | O | string | /foo/alipayRootCert.crt | 支付宝根证书文件路径 |
| merchantCertPath | O | string | /foo/appCertPublicKey_2019051064521003.crt | 应用公钥证书文件路径 |
| alipayPublicKey | O | string | MII***** | 支付宝公钥,非证书模式填入这个,此时不需要上面三个证书 |
| encryptKey | C | string | MII***** | AES密钥,调用AES加解密相关接口时需要,非必填 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| mchId | M | string | 85555555 | 商户号 |
| subAppId | O | string | wx***** | 子商户的公众号/小程序的APP ID |
| subMchId | O | string | 85555555 | 子商户号,填写代表上面的商户号是服务商 |
| apiV2Key | M | string | vdZV*** | 商户API v2密钥 |
| clientApiV2KeyFilePath | O | string | /foo/api_client_key.pem | 商户API v2证书密钥地址,退款等接口需要证书 |
| clientApiV2CertFilePath | O | string | /foo/api_client_cert.pem | 商户API v2证书地址,退款等接口需要证书 |
| attach | C | string | 'a:1' | 附加数据,不建议使用 |
| expireTime | C | int | 123131 | 订单有效截止10位(秒级)时间戳 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| orgIdSxf | M | string | 85555555 | 服务商编号 |
| merchantNoSxf | M | string | 85555555 | 商户编号 |
| orgPrivateRSAKeySxf | M | string | MIB*** | 服务商RSA私钥内容 |
| orgPublicRSAKeySxf | M | string | MIB*** | 平台RSA公钥内容 |
| outFrontUrlSxf | O | string | https://www.abc.com/pay/redirect | web支付后跳转网页地址 |
| wechatFoodOrderSxf | C | string | FoodOrder | 微信扫码点餐标识,目前仅有FoodOrder可上传 |
| refundReasonSxf | C | string | 商家与消费者协商一致 | 退款原因。默认值:商家与消费者协商一致 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| userNameLT | O | string | 85555555 | 商户后台登录账号,用于auth方法获取商户的支付信息 |
| userPwdLt | O | string | 85555555 | 商户后台登录密码,用于auth方法获取商户的支付信息 |
| appIdLt | M | string | EW_*** | 合作方ID,通过auth方法获得 |
| appKeyLt | M | string | 8cc*** | 签名密钥,通过auth方法获得 |
| merchantCodeLt | M | string | EW_*** | 商户编号,通过auth方法获得 |
| refundReasonLt | C | string | 商家与消费者协商一致 | 退款原因。默认值:商家与消费者协商一致 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| merchantIdFb | M | string | 2021*** | 商户ID |
| merchantKeyFb | M | string | 3b2*** | 商户密码 |
| storeIdFb | M | string | 11*** | 商户门店ID |
| wxOpenIDFb | O | string | wx*** | 付呗微信网页支付下需要的openid,获取方法见付呗文档 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| serviceProviderIDSqb | O | string | 2021*** | 服务商ID,用于激活获取终端码 |
| activateCodeSqb | O | string | 2311*** | 激活码,用于激活获取终端码 |
| activateDeviceIDSqb | O | string | 123*** | 激活设备ID,用于激活获取终端码 |
| terminalSNSqb | M | string | xx*** | 终端码,通过activate接口激活获取 |
| terminalKeySqb | M | string | xx*** | 终端密钥,通过activate接口激活获取或者checkin接口刷新 |
| returnUrlSqb | C | string | https://www.abc.com/pay/redirect | web支付后跳转网页地址 |
| reflectSqb | C | string | 'a:1' | web支付后的反射参数 |
| operatorSqb | C | string | Obama*** | 操作员,好像没啥用 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| merchantIdLS | M | string | 2021*** | 商户ID |
| serviceProviderKeyLS | M | string | 2311*** | 服务商密码 |
| jumpUrlLS | O | string | https://www.abc.com/pay/redirect | 使用乐刷收银台支付后跳回地址 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| appKeyLtc | M | string | zzxx*** | 商户在乐天成的支付PayCode |
| privateSecretLtc | M | string | MB**** | 商户在乐天成的私钥 |
| publicSecretLtc | M | string | MB***** | 乐天成的公钥 |
| requestDomainLtc | M | string | https://www.abc.com/pay/redirect | 乐天成的支付请求地址 |
| jumpUrlLtc | O | string | https://www.abc.com/pay/redirect | 使用乐天成收银台支付后跳回地址 |
| accessSecretLtc | C | string | MB*** | 商户在乐天成的内容密钥 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| domainHY | M | string | https://xxxx | 移动杭研支付请求域名 |
| originIdHY | M | string | 2021*** | 移动杭研的交易来源Id |
| merchantCodeHY | M | string | 189****1234 | 商户在移动杭研的商户code |
| merchantIdHY | M | int | 123 | 商户在移动杭研的商户id |
| productIdHY | M | int | 123 | 移动杭研的产品id |
| privateKeyHY | M | string | MB*** | 商户在移动杭研的密钥 |
| publicKeyHY | M | string | MB*** | 移动杭研的公钥 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| isSandboxJL | M | boolean | true | 是否使用了UAT环境 |
| orgCodeJL | M | string | 2021*** | 机构号 |
| merchantIdJL | M | string | 123 | 商户在嘉联的商户号 |
| termNoJL | M | string | MB*** | 商户在嘉联的终端号 |
| privateKeyJL | M | string | MB*** | 商户在嘉联的密钥 |
| publicKeyJL | M | string | MB*** | 嘉联的公钥 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| channel | M | int | 1 | 支付渠道 1-KBZ Pay |
| charset | C | string | UTF-8 | 请求和返回编码,目前都是UTF-8 |
| tradeNo | M | string | SB202012261548555 | 商户订单号 |
| refundTradeNo | O | string | SBTK202012261548555 | 商户退款订单号 |
| totalAmount | O | float | 1.23 | 订单总金额/退款总金额,可多次退款的渠道可能需要同时传入订单金额和退款金额,目前不支持传入不同值,即只能全退 |
| notifyUrl | O | string | https://www.abc.com/pay/notify | 支付结果异步通知地址 |
| subject | O | string | FPX.Doinb | 订单标题 |
| authCode | O | string | 12331231321 | B扫C时读取到的条码内容 |
| optional | C | array | ['a'=>1] | 用于更多未添加的参数,当前只写了最小需求的参数,如果有更多需传给第三方的参数,可以通过该数组传入,具体参数请查阅第三方文档 |
| isSandbox | C | bool | false | 是否使用了UAT环境 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| kbzAppId | M | string | Sf***** | 应用ID |
| kbzMerchantCode | M | string | MII**** | 商户编码 |
| kbzMerchantKey | M | string | MII**** | 商户私钥 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| hiPayAppId | M | string | Sf***** | 应用ID |
| hiPayPrivateKey | M | string | MII**** | 商户私钥 |
| hiPayPublicKey | M | string | MII**** | 应用公钥 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| iPay88MerchantKey | M | string | Sf***** | 商户key |
| iPay88MerchantCode | M | string | Sf***** | 商户编码 |
| iPay88MerchantName | M | string | Sf***** | 商户名称 |
| iPay88MerchantContact | M | string | Sf***** | 商户手机号 |
| iPay88MerchantEmail | M | string | Sf***** | 商户邮箱 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| gKashMerchantKey | M | string | Sf***** | 商户key |
| gKashMerchantCID | M | string | Sf***** | 商户id |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| mayBankMerchantCode | M | string | Sf***** | 商户Code |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| stripePublicKey | M | string | Sf***** | 应用公钥 |
| stripePrivateKey | M | string | Sf***** | 应用私钥 |
| stripeEndKey | M | string | Sf***** | 平台公钥 |
| stripeAccount | M | string | Sf***** | 商户账号 |
| stripePaymentMethod | O | string | xxx | 支付方式id, 网页支付需要 |
| stripePaymentMethodType | O | string | card | 支付方式, 网页支付需要 |
| stripePaymentIntentId | O | string | xxx | 支付id,刷卡支付需要 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| netsKeyId | M | string | b027dacd-**** | 应用key id |
| netsKey | M | string | 21296dd3-**** | 应用key |
| netsMID | M | string | 11137066800 | 应用MID |
| netsTID | M | string | 37066801 | 应用TID |
| netsSTAN | M | string | 000001 | 商户unique number |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| result | M | bool | true | 支付请求结果,true-请求成功,false-请求失败 |
| errMsgNo | C | mixed | 1001 | 支付请求失败的失败错误码,用于特定场景的特殊处理 |
| errMsg | C | string | 缺失参数xxx | 支付请求失败的失败原因 |
| data | C | mixed | https://xxx/xx | 请求成功时,一些额外信息返回,各接口的返回必需参数参看Base类的注释 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| mangoMerchantNo | M | string | b027dacd-**** | 商户号 |
| mangoMerchantSalt | M | string | 21296dd3-**** | 商户加密盐值 |
| mangoMerchantKey | M | string | 11137066800 | 商户密钥 |
| mangoPlatformSalt | M | string | 21296dd3-**** | 平台加密盐值 |
| mangoPlatformKey | M | string | 11137066800 | 平台公钥 |
| 名称 | 是否必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
| result | M | bool | true | 支付请求结果,true-请求成功,false-请求失败 |
| errMsgNo | C | mixed | 1001 | 支付请求失败的失败错误码,用于特定场景的特殊处理 |
| errMsg | C | string | 缺失参数xxx | 支付请求失败的失败原因 |
| data | C | mixed | https://xxx/xx | 请求成功时,一些额外信息返回,各接口的返回必需参数参看Base类的注释 |
M-必填,C-可以不填写,O-部分场景下必填