diff --git a/platformapi/ebaiapi/shop_sku_test.go b/platformapi/ebaiapi/shop_sku_test.go index 0a577425..0b2e89ba 100644 --- a/platformapi/ebaiapi/shop_sku_test.go +++ b/platformapi/ebaiapi/shop_sku_test.go @@ -86,7 +86,7 @@ func TestSkuListDelete(t *testing.T) { Page: page, PageSize: 100, } - foodList, err := api.SkuList(utils.Int2Str(102778), param) + foodList, err := api.SkuList(utils.Int2Str(667247), param) if err != nil { break } @@ -94,7 +94,7 @@ func TestSkuListDelete(t *testing.T) { for k, v := range foodList.List { if v.CustomSkuID == "" { api.AccessAPI2("sku.delete", map[string]interface{}{ - "shop_id": "102778", + "shop_id": "667247", "sku_id": v.SkuId, }, utils.GetUUID()) globals.SugarLogger.Debugf("---k := %d,delete_name:= %s", k, v.Name) @@ -328,7 +328,7 @@ func TestDeleteStoreSku(t *testing.T) { } func TestDeleteSku(t *testing.T) { - shopId := "804627" + shopId := "667247" param1 := &SkuListParams{ Page: 1, PageSize: 100, diff --git a/platformapi/lakala/lakala_callback_model.go b/platformapi/lakala/lakala_callback_model.go index 31f2f9f7..f3a024e7 100644 --- a/platformapi/lakala/lakala_callback_model.go +++ b/platformapi/lakala/lakala_callback_model.go @@ -1,5 +1,21 @@ package lakala +// ApplyContractCallBack 合同生气回调 +type ApplyContractCallBack struct { + Code string `json:"code"` + Msg string `json:"msg"` + RespData struct { + Version string `json:"version"` + OrderNo string `json:"order_no"` + OrgId int `json:"org_id"` + EcApplyId int64 `json:"ec_apply_id"` + AuditStatus string `json:"audit_status"` + AuditDesc string `json:"audit_desc"` + SignH5Url string `json:"sign_h5_url"` + SignH5UrlExpTm string `json:"sign_h5_url_exp_tm"` + } `json:"resp_data"` +} + // SeparateCallback 商户分账创建/修改回调 type SeparateCallback struct { ApplyId string `json:"applyId"` diff --git a/platformapi/lakala/lakala_order.go b/platformapi/lakala/lakala_order.go index 7b995b91..cc13185c 100644 --- a/platformapi/lakala/lakala_order.go +++ b/platformapi/lakala/lakala_order.go @@ -148,5 +148,78 @@ func (a *API) RefundOrderQuery(param *RefundOrderQueryReq) ([]*RefundOrderQueryR } return resp, nil - +} + +// ApplyElectronicContract 电子合同签约 +func (a *API) ApplyElectronicContract(param *ApplyContractParam) (*ApplyContractResp, error) { + reqParameter := map[string]interface{}{ + "req_data": utils.Struct2Map(param, "", false), + "version": Version3, + "req_time": utils.Time2TimeStrByFormat(time.Now(), TimeFormat), + } + result, err := a.AccessAPISign(OrderProdUrl, OrderEcApplyActive, http.MethodPost, "", reqParameter) + if err != nil { + return nil, err + } + + if result["code"].(string) != Success { + return nil, fmt.Errorf(result["msg"].(string)) + } + + bodyResult, err := json.Marshal(result["resp_data"].(map[string]interface{})) + if err != nil { + return nil, err + } + + resp := &ApplyContractResp{} + if err = json.Unmarshal(bodyResult, resp); err != nil { + return nil, err + } + + return resp, nil +} + +// QueryElectronicContract 电子合同签约审核结果查询 +func (a *API) QueryElectronicContract(orderNo string, orgId int, ecApplyId string) (*ElectronicContractStatus, error) { + reqParameter := map[string]interface{}{ + "req_data": map[string]interface{}{ + "version": "1.0", + "order_no": orderNo, + "org_id": orgId, + "ec_apply_id": ecApplyId, + }, + "version": Version, + "req_time": utils.Time2TimeStrByFormat(time.Now(), TimeFormat), + } + result, err := a.AccessAPISign(OrderProdUrl, OrderEcApplyStatusActive, http.MethodPost, "", reqParameter) + if err != nil { + return nil, err + } + + if result["code"].(string) != Success { + return nil, fmt.Errorf(result["msg"].(string)) + } + + bodyResult, err := json.Marshal(result["resp_data"].(map[string]interface{})) + if err != nil { + return nil, err + } + + resp := &ElectronicContractStatus{} + if err = json.Unmarshal(bodyResult, resp); err != nil { + return nil, err + } + + return resp, nil +} + +type ElectronicContractStatus struct { + Version string `json:"version"` + OrderNo string `json:"order_no"` + OrgId int `json:"org_id"` + EcApplyId int64 `json:"ec_apply_id"` // ec_apply_id + AuditStatus string `json:"audit_status"` // 人工审核状态 + AuditDesc string `json:"audit_desc"` // 人工审核结果说明 + SignH5Url string `json:"sign_h5_url"` // 签约H5地址 + SignH5UrlExpTm string `json:"sign_h5_url_exp_tm"` // 签约H5地址过期时间 } diff --git a/platformapi/lakala/lakala_order_model.go b/platformapi/lakala/lakala_order_model.go index ae3f09fe..45f053b6 100644 --- a/platformapi/lakala/lakala_order_model.go +++ b/platformapi/lakala/lakala_order_model.go @@ -4,11 +4,13 @@ const ( OrderTestUrl = "https://test.wsmsd.cn/sit/api/v3/" // 收银订单创建测试地址 OrderProdUrl = "https://s2.lakala.com/api/v3" // 收银订单创建正式地址 - CrateOrderActive = "ccss/counter/order/special_create" // 创建订单 - CloseOrderActive = "ccss/counter/order/close" // 订单关单 - QueryOrderActive = "ccss/counter/order/query" // 订单查询 - OrderRefundActive = "lams/trade/trade_refund" // 订单统一退货 - OrderRefundQueryActive = "lams/trade/trade_refund_query" // 订单统一退货查询 + CrateOrderActive = "ccss/counter/order/special_create" // 创建订单 + CloseOrderActive = "ccss/counter/order/close" // 订单关单 + QueryOrderActive = "ccss/counter/order/query" // 订单查询 + OrderRefundActive = "lams/trade/trade_refund" // 订单统一退货 + OrderRefundQueryActive = "lams/trade/trade_refund_query" // 订单统一退货查询 + OrderEcApplyActive = "mms/open_api/ec/apply" // 电子合同申请 + OrderEcApplyStatusActive = "mms/open_api/ec/qma_status" // 电子合同状态查询 ) const ( @@ -221,3 +223,36 @@ type RefundOrderQueryResp struct { AccMdiscountAmount string `json:"acc_mdiscount_amount"` // 商户侧优惠金额(账户端) AccDiscountAmount string `json:"acc_discount_amount"` // 账户端优惠金额 } + +// ApplyContractParam 合同申请参数 +type ApplyContractParam struct { + OrderNo string `json:"order_no"` // 四方机构自定义订单编号 M String(32) 建议:平台编号+14位年月日时(24小时制)分秒+8位的随机数(同一接入机构不重复) + OrgId int `json:"org_id"` // 机构号 M Integer 签约方所属拉卡拉机构 + EcTypeCode string `json:"ec_type_code"` // 合同类别 M String(12) EC001 : 特约商户支付服务合作协议V3.1(商户入网) PASSPORT(护照);HK_MACAO_PASS(港澳居民往来内地通行证);TAIWAN_PASS(台湾居民来往大陆通行证); + CertName string `json:"cert_name"` // 法人/经营者姓名 M String(32) + CertNo string `json:"cert_no"` // 法人/经营者证件号码 M String(32) + Mobile string `json:"mobile"` // 签约手机号 M String(16) 1.小微个人商户(无营业执照),签约手机号必须填写商户经营者本人手机号;2.个体工商户或企业商户(有营业执照),签约手机号必须填写法人手机号或者经办人手机号 合同签署人手机号,请慎重填写,不可修改 + BusinessLicenseMo string `json:"business_license_no"` // 营业执照号 C String(32) 个体工商户或企业商户 必传 + BusinessLicenseMame string `json:"business_license_name"` // 营业执照名称 C String(32) 个体工商户或企业商户 必传 + OpenningBankCode string `json:"openning_bank_code"` // 企业/经营者结算开户行号 M String(32) + OpenningBankName string `json:"openning_bank_name"` // 企业/经营者结算开户行名称 M String(128) + AcctTypeCode string `json:"acct_type_code"` // 企业/经营者结算卡性质 M String(2) 57 对公、 58 对私 + AcctNo string `json:"acct_no"` // 企业/经营者结算卡号 M String(32) + AcctName string `json:"acct_name"` // 企业/经营者结算卡名称 M String(64) 企业/经营者结算卡名称 + EcContentParameters string `json:"ec_content_parameters"` // 电子合同内容参数集合 M JSONString 按合同类型(ecTypeCode)传递不同的参数集合, + AgentTag int `json:"agent_tag"` // 是否经办签约 C Integer(1) 0 不启用 1启用 ; 缺省 0 + AgentName string `json:"agent_name"` // 经办人名称 C String(32) 经办人名称(要与证件号对应)agentTag 为1时 必传 + AgentCertType string `json:"agent_cert_type"` // 经办人证件类型 C String(32) RESIDENT_ID(身份证);PASSPORT(护照);HK_MACAO_PASS(港澳居民往来内地通行证);TAIWAN_PASS(台湾居民来往大陆通行证); + AgentCertNo string `json:"agent_cert_no"` // 经办人证件号 C String(32) agentTag 为1时 必传 + AgentFileName string `json:"agent_file_name"` // 经办签约授权委托书文件名 C String(32) agentTag 为1时 必传 + AgentFilePath string `json:"agent_file_path"` // 经办授权委托书文件路径 C String(128) agentTag 为1时 必传 + Remark string `json:"remark"` // 备注说明 C String(128) 备注说明 + RetUrl string `json:"ret_url"` // 电子合同签约结果回调通知 C String(128) 成功签约才通知 +} + +// ApplyContractResp 签约响应参数 +type ApplyContractResp struct { + OrderNo string `json:"order_no"` + EcApplyId int64 `json:"ec_apply_id"` + ResultUrl string `json:"result_url"` +} diff --git a/platformapi/lakala/lakala_token_model.go b/platformapi/lakala/lakala_token_model.go index aeb9f22d..6e7febe7 100644 --- a/platformapi/lakala/lakala_token_model.go +++ b/platformapi/lakala/lakala_token_model.go @@ -91,6 +91,7 @@ const ( //BillProdCallbackUrl = "http://callback.jxc4.com/lakalaCallback/ewalletWithdrawD1" // 账户D1提现回调 //OrderStatusCallback = "http://callback.jxc4.com/lakalaCallback/orderStatus" // 收银台订单通知(订单状态) //PayStatusCallback = "http://callback.jxc4.com/lakalaCallback/payStatus" // 主扫支付状态通知 + //ApplyContractCallback = "http://callback.jxc4.com/lakalaCallback/applyContract" // 合同申请回到 CallbackLaKaLaShopUrl = "http://callback.test.jxc4.com/lakalaCallback/separateMsg" // 消息通知地址(商户开通) CallbackLaKaLaSeparateBindUrl = "http://callback.test.jxc4.com/lakalaCallback/separateBind" // 消息通知地址(分账关系绑定回调,解绑回调) @@ -98,4 +99,5 @@ const ( BillProdCallbackUrl = "http://callback.test.jxc4.com/lakalaCallback/ewalletWithdrawD1" // 账户D1提现回调 OrderStatusCallback = "http://callback.test.jxc4.com/lakalaCallback/orderStatus" // 收银台订单通知(订单状态) PayStatusCallback = "http://callback.test.jxc4.com/lakalaCallback/payStatus" // 主扫支付状态通知 + ApplyContractCallback = "http://callback.test.jxc4.com/lakalaCallback/applyContract" // 合同申请回到 )