$customId, 'order_id' => $orderId, 'order_date' => $orderDate, 'bank_id' => $bankId, 'card_num' => $cardNo, 'card_type' => $cardType, 'default_cash_flag' => $cashFlag ]; if($cardType == Constant::CARD_TYPE_COMPANY) { if(empty($bankId)) { throw new ParamsException('对公账户需要填写银行代码'); } } if(!empty($branchName)) { $params['branch_name'] = $branchName; } if(!empty($cardProv)) { $params['card_prov'] = $cardProv; } if(!empty($cardArea)) { $params['card_area'] = $cardArea; } if(!empty($attach)) { $params['mer_priv'] = $attach; } if(!empty($extension)) { $params['extension'] = $extension; } if(!empty($bgRetUrl)) { $params['bg_ret_url'] = $bgRetUrl; } $result = $this->post('/api/acou/bind08', $params); if(!$result->isSuccess()) { return null; } return BindCashCard::make($result->getBody()); } /** * 银行卡解绑 * * @param string $customId * @param string $orderId * @param string $orderDate * @param string $bindCardId * @param string $cardType * @param string $bgRetUrl * @param string $attach * @param string $extension * @param string $devInfoJson * * @return UnBindCard|null * * @see https://hfpay.cloudpnr.com/customers/nft/#/manage/unbindCard */ public function unBindCard(string $customId, string $orderId, string $orderDate, string $bindCardId, string $cardType, string $bgRetUrl, string $attach = '', string $extension = '', string $devInfoJson = '' ): ?UnBindCard { $params = [ 'user_cust_id' => $customId, 'order_id' => $orderId, 'order_date' => $orderDate, 'bind_card_id' => $bindCardId, 'card_buss_type' => $cardType, 'bg_ret_url' => $bgRetUrl, ]; if(!empty($attach)) { $params['mer_priv'] = $attach; } if(!empty($extension)) { $params['extension'] = $extension; } if(!empty($devInfoJson)) { $params['dev_info_json'] = $devInfoJson; } $result = $this->post('/api/acou/unbd01', $params); if(!$result->isSuccess()) { return null; } return UnBindCard::make($result->getBody()); } /** * 文件下载 * * @param string $fileDate * @param string $fileType * * @return DownloadFiles * * @see https://hfpay.cloudpnr.com/customers/nft/#/manage/fileDownload */ function fileDownload(string $fileDate, string $fileType = Constant::FILE_TYPE_CHARGE): ?DownloadFiles { $params = [ 'file_date' => $fileDate, 'file_type' => $fileType ]; $result = $this->post('/api/alse/file02', $params); if(!$result->isSuccess()) { return null; } return DownloadFiles::make($result->getBody()); } /** * 电子凭证下载 * * 后台返回(异步) * * @param string $customId * @param string $orderId * @param string $orderDate * @param string $originalOrderDate * @param string $bgRetUrl * @param array $originalOrderId * @param string $stage * @param string $attach * @param string $extension * * @return ?CertificateInfo * * https://hfpay.cloudpnr.com/customers/nft/#/manage/electronicCertificate */ function eCertificate( string $customId, string $orderId, string $orderDate, string $originalOrderDate, string $bgRetUrl, array $originalOrderId = [], string $stage = Constant::GUARANTEE_STAGE_IN, string $attach = '', string $extension = '' ): ?CertificateInfo { $params = [ 'user_cust_id' => $customId, 'order_id' => $orderId, 'order_date' => $orderDate, 'bg_ret_url' => $bgRetUrl, 'org_order_date' => $originalOrderDate, 'guarantee_stage' => $stage, ]; if(!empty($attach)) { $params['mer_priv'] = $attach; } if(!empty($extension)) { $params['extension'] = $extension; } if(!empty($originalOrderId)) { $params['org_order_id'] = join(',', $originalOrderId); } $result = $this->post('/api/alse/file05', $params); if(!$result->isSuccess()) { return null; } return CertificateInfo::make($result->getBody()); } }