421 lines
12 KiB
Go
421 lines
12 KiB
Go
package lakala
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"fmt"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"net/http"
|
|
)
|
|
|
|
// MerchantIncoming 商户进件接口
|
|
func (a *API) MerchantIncoming(incoming *MerchantIncomingReq) (string, string, error) {
|
|
data := utils.Struct2Map(incoming, "", false)
|
|
result, err := a.AccessAPI2(BaseProdUrl, IncomingAction, http.MethodPost, "", data)
|
|
if err != nil {
|
|
return "", "", err
|
|
}
|
|
|
|
return result["merchantNo"].(string), result["status"].(string), nil
|
|
}
|
|
|
|
// GetMerchantInfo 获取商户详细信息
|
|
func (a *API) GetMerchantInfo(customerNo string) (*MerchantObj, error) {
|
|
parameters, _ := json.Marshal(map[string]string{"customerNo": customerNo})
|
|
encryptParam, err := EncryptByPrivateKey(parameters, PrivateKeyBegin)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, GetMerchantInfo, http.MethodPost, "", map[string]interface{}{"data": encryptParam})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if result["code"].(string) != Success {
|
|
return nil, fmt.Errorf(result["message"].(string))
|
|
}
|
|
|
|
decryptData := result["data"].(string)
|
|
base64DecryData, _ := base64.StdEncoding.DecodeString(decryptData)
|
|
resultData, err := DecryptByPublicKey(base64DecryData, PublicKeyBegin)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
merchant := &MerchantObj{}
|
|
if err = json.Unmarshal(resultData, merchant); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return merchant, nil
|
|
}
|
|
|
|
// GetTerminalInfo 获取终端信息
|
|
func (a *API) GetTerminalInfo(posSn string) (*TerminalInfo, error) {
|
|
parameters, _ := json.Marshal(map[string]string{"posSn": posSn})
|
|
encryptParam, err := EncryptByPrivateKey(parameters, PrivateKeyBegin)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, GetTerminalInfo, http.MethodPost, "", map[string]interface{}{"data": encryptParam})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if result["code"].(string) != Success {
|
|
return nil, fmt.Errorf(result["message"].(string))
|
|
}
|
|
|
|
decryptData := result["data"].(string)
|
|
base64DecryData, _ := base64.StdEncoding.DecodeString(decryptData)
|
|
resultData, err := DecryptByPublicKey(base64DecryData, PublicKeyBegin)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
merchant := &TerminalInfo{}
|
|
if err = json.Unmarshal(resultData, merchant); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return merchant, nil
|
|
}
|
|
|
|
// GetOrganizationCode 获取城市组织代码 parentCode = 1 查所有,城市code看看和我们系统一致不
|
|
func (a *API) GetOrganizationCode(parentCode string) ([]*OrganizationList, error) {
|
|
result, err := a.AccessAPI(BaseProdUrl, OrganizationAction, http.MethodGet, parentCode, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if result[ResultKey] != nil {
|
|
byteBank, err := json.Marshal(result[ResultKey])
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
bankList := make([]*OrganizationList, 0, 0)
|
|
if err = json.Unmarshal(byteBank, &bankList); err != nil {
|
|
return nil, err
|
|
}
|
|
return bankList, err
|
|
}
|
|
|
|
return nil, fmt.Errorf("接口[%s],未查询到数据", OrganizationAction)
|
|
}
|
|
|
|
// GetBankList 银行列表查询
|
|
func (a *API) GetBankList(areaCode, bankName string) ([]*BankListResult, error) {
|
|
param := map[string]interface{}{
|
|
"areaCode": areaCode,
|
|
}
|
|
if bankName != "" {
|
|
param["bankName"] = bankName
|
|
}
|
|
result, err := a.AccessAPI(BaseProdUrl, BankList, http.MethodGet, "", param)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if result[ResultKey] != nil {
|
|
byteBank, err := json.Marshal(result[ResultKey])
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
bankList := make([]*BankListResult, 0, 0)
|
|
if err = json.Unmarshal(byteBank, &bankList); err != nil {
|
|
return nil, err
|
|
}
|
|
return bankList, err
|
|
}
|
|
|
|
return nil, fmt.Errorf("接口[%s],未查询到数据", BankList)
|
|
}
|
|
|
|
// GetMerchantMcc 商户类别查询(获取小类)
|
|
func (a *API) GetMerchantMcc(businessScene string, parentCode string) (data []*BusinessResult, err error) {
|
|
result := make([]*BusinessResult, 0, 0)
|
|
retVal := map[string]interface{}{}
|
|
|
|
if parentCode != "" { // 获取小类
|
|
retVal, err = a.AccessAPI(BaseProdUrl, MerchantMcc, http.MethodGet, parentCode, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
} else {
|
|
retVal, err = a.AccessAPI(BaseProdUrl, MerchantMcc, http.MethodGet, "", map[string]interface{}{"businessScene": businessScene})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
if retVal[ResultKey] != nil {
|
|
byteBank, err := json.Marshal(retVal[ResultKey])
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err = json.Unmarshal(byteBank, &result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, err
|
|
}
|
|
|
|
return nil, err
|
|
}
|
|
|
|
// MerchantFeeQuery 商户变更-商户费率查询 customerNo内部商户编号
|
|
func (a *API) MerchantFeeQuery(customerNo string, productCode string) (*MerchantFeeResp, error) {
|
|
if customerNo == "" {
|
|
return nil, fmt.Errorf("customerNo 不能为空")
|
|
}
|
|
param := map[string]interface{}{}
|
|
if productCode != "" {
|
|
param["productCode"] = productCode
|
|
}
|
|
result, err := a.AccessAPI(BaseProdChangeUrl, UpdateFeeQuery, http.MethodGet, customerNo, param)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
data := &MerchantFeeResp{}
|
|
if err = utils.Map2StructByJson(result, data, false); err != nil {
|
|
return nil, err
|
|
}
|
|
return data, err
|
|
}
|
|
|
|
// MerchantFeeChange 商户费率信息变更
|
|
func (a *API) MerchantFeeChange(param *FeeChangeReq, customerNo string) (int64, string, error) {
|
|
if customerNo == "" {
|
|
return 0, "", fmt.Errorf("商户ID不能为空")
|
|
}
|
|
mapParam := utils.Struct2Map(param, "", false)
|
|
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, UpdateFeeQuery, http.MethodPost, customerNo, mapParam)
|
|
|
|
if err != nil {
|
|
return 0, "", err
|
|
}
|
|
|
|
data := &CahngePublic{}
|
|
if err = utils.Map2StructByJson(result, data, false); err != nil {
|
|
return 0, "", err
|
|
}
|
|
|
|
return data.ReviewRelatedId, data.Message, nil
|
|
}
|
|
|
|
// UpdateSettleInfo 修改用户结算信息(当param为空时,是查询,不为空时是变更)
|
|
func (a *API) UpdateSettleInfo(customerNo string, param *UpdateSettleInfoReq) (*CahngePublic, *UpdateSettleInfoReq, error) {
|
|
if customerNo == "" {
|
|
return nil, nil, fmt.Errorf("商户ID不能为空")
|
|
}
|
|
var mapParam map[string]interface{}
|
|
if param != nil {
|
|
mapParam = utils.Struct2Map(param, "", false)
|
|
}
|
|
|
|
if param != nil { // 变更
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, UpdateSettleChange, http.MethodPost, customerNo, mapParam)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
data := &CahngePublic{}
|
|
if err = utils.Map2StructByJson(result, data, false); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
return data, nil, err
|
|
} else { // 查询
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, UpdateSettleChange, http.MethodGet, customerNo, mapParam)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
data := &UpdateSettleInfoReq{}
|
|
if err = utils.Map2StructByJson(result, data, false); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
return nil, data, err
|
|
}
|
|
}
|
|
|
|
// UpdateBaseInfo 商户基本信息变更
|
|
func (a *API) UpdateBaseInfo(customerNo string, changeBaseMap *UpdateBaseInfoReq) (*CahngePublic, error) {
|
|
if customerNo == "" {
|
|
return nil, fmt.Errorf("商户ID不能为空")
|
|
}
|
|
|
|
newMap := utils.Struct2Map(changeBaseMap, "'", false)
|
|
base := utils.MergeMaps(newMap, map[string]interface{}{"customerNo": customerNo})
|
|
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, UpdateBaseChange, http.MethodPost, "", base)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
data := &CahngePublic{}
|
|
if err = utils.Map2StructByJson(result, data, false); err != nil {
|
|
return nil, err
|
|
}
|
|
return data, err
|
|
}
|
|
|
|
// QueryMerchantReviewStatus 查询变更门店审核状态
|
|
func (a *API) QueryMerchantReviewStatus(reviewRelatedId string) (string, string, error) {
|
|
result, err := a.AccessAPI(BaseProdQueryReviewStatus, QueryChangeReviewStatus, http.MethodGet, "", map[string]interface{}{"reviewRelatedId": reviewRelatedId})
|
|
if err != nil {
|
|
return "", "", err
|
|
}
|
|
reviewPass := ""
|
|
reviewResult := ""
|
|
if result["reviewPass"] != nil {
|
|
reviewPass = result["reviewPass"].(string)
|
|
}
|
|
if result["reviewResult"] != nil {
|
|
reviewResult = result["reviewResult"].(string)
|
|
}
|
|
|
|
return reviewPass, reviewResult, err
|
|
}
|
|
|
|
// CheckImgIsSupplement 查看是否补充照片
|
|
func (a *API) CheckImgIsSupplement(externalCustomerNo string) (*OpenCustomerExtImgVo, error) {
|
|
result, err := a.AccessAPI(BaseProdChangeUrl, CheckImgIsSupplement, http.MethodGet, externalCustomerNo, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
imgSupplementResp := &ImgSupplementResp{}
|
|
if err = utils.Map2StructByJson(result, imgSupplementResp, false); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if imgSupplementResp.Code != Success {
|
|
return nil, fmt.Errorf(imgSupplementResp.Message)
|
|
}
|
|
|
|
base64DecryData, _ := base64.StdEncoding.DecodeString(result["data"].(string))
|
|
resultData, err := DecryptByPublicKey(base64DecryData, PublicKeyBegin)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
openCustomerExtImgVo := &OpenCustomerExtImgVo{}
|
|
if err = json.Unmarshal(resultData, openCustomerExtImgVo); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return openCustomerExtImgVo, nil
|
|
}
|
|
|
|
// ImgSupplement 照片补充
|
|
func (a *API) ImgSupplement(param *ImgSupplementReq) error {
|
|
result, err := a.AccessAPI(BaseProdChangeUrl, ImgIsSupplement, http.MethodPost, "", utils.Struct2Map(param, "", false))
|
|
imgSupplementResp := &ImgSupplementResp{}
|
|
if err = utils.Map2StructByJson(result, imgSupplementResp, false); err != nil {
|
|
return err
|
|
}
|
|
if imgSupplementResp.Code != "200" {
|
|
return fmt.Errorf(imgSupplementResp.Message)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetMerchantReportStatus 查看银联报备状态
|
|
func (a *API) GetMerchantReportStatus(orgCode, agentNo, externalCustomerNo string) (*OpenUnionpayMerchantVo, error) {
|
|
param := map[string]interface{}{
|
|
"orgCode": orgCode,
|
|
"agentNo": agentNo,
|
|
"externalCustomerNo": externalCustomerNo,
|
|
}
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, ReportStatus, http.MethodPost, "", param)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
imgSupplementResp := &ImgSupplementResp{}
|
|
if err = utils.Map2StructByJson(result, imgSupplementResp, false); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if imgSupplementResp.Code != Success {
|
|
return nil, fmt.Errorf(imgSupplementResp.Message)
|
|
}
|
|
|
|
base64DecryData, _ := base64.StdEncoding.DecodeString(imgSupplementResp.Data)
|
|
resultData, err := DecryptByPublicKey(base64DecryData, PublicKeyBegin)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
openUnionpayMerchantVo := &OpenUnionpayMerchantVo{}
|
|
if err = json.Unmarshal(resultData, openUnionpayMerchantVo); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return openUnionpayMerchantVo, err
|
|
}
|
|
|
|
// GetMerchantTerminal 获取终端报备信息
|
|
func (a *API) GetMerchantTerminal(orgCode, agentNo, externalCustomerNo, posSn string) (*OpenUnionpayTermVo, error) {
|
|
param := map[string]interface{}{
|
|
"orgCode": orgCode,
|
|
"agentNo": agentNo,
|
|
"externalCustomerNo": externalCustomerNo,
|
|
"posSn": posSn,
|
|
}
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, TerminalStatus, http.MethodPost, "", param)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
imgSupplementResp := &ImgSupplementResp{}
|
|
if err = utils.Map2StructByJson(result, imgSupplementResp, false); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if imgSupplementResp.Code != "200" {
|
|
return nil, fmt.Errorf(imgSupplementResp.Message)
|
|
}
|
|
|
|
openUnionpayTermVo := &OpenUnionpayTermVo{}
|
|
if err = json.Unmarshal([]byte(imgSupplementResp.Data), openUnionpayTermVo); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return openUnionpayTermVo, err
|
|
}
|
|
|
|
// SupplementBusinessLicense 变更营业执照
|
|
func (a *API) SupplementBusinessLicense(param *BusinessLicenseReq) (string, string, error) {
|
|
req := utils.Struct2Map(param, "", false)
|
|
result, err := a.AccessAPI2(BaseProdChangeUrl, SupplementBusinessLicense, http.MethodPost, "", req)
|
|
if err != nil {
|
|
return "", "", err
|
|
}
|
|
|
|
data := &FeeChangeResp{}
|
|
if err = utils.Map2StructByJson(result, data, false); err != nil {
|
|
return "", "", err
|
|
}
|
|
if data.StatusCodeValue != utils.Str2Int(BaseSuccess) {
|
|
return "", "", fmt.Errorf(data.StatusCode)
|
|
}
|
|
|
|
return utils.Int2Str(data.Body.ReviewRelatedId), data.Body.Message, err
|
|
}
|
|
|
|
// UnionPayMerInfo 银联商户信息共享联防机制查询
|
|
func (a *API) UnionPayMerInfo(larName, larIdcard string) (*DishonestPerson, error) {
|
|
result, err := a.AccessAPI(BaseProdChangeUrl, UnionPayMerInfo, http.MethodPost, "", map[string]interface{}{
|
|
"larName": larName,
|
|
"larIdcard": larIdcard,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
person := &DishonestPerson{}
|
|
if err = utils.Map2StructByJson(result, person, false); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return person, nil
|
|
}
|