package tonglianpayapi // //import ( // "crypto/md5" // "fmt" // "git.rosy.net.cn/baseapi/platformapi" // "git.rosy.net.cn/baseapi/utils" // "net/http" // "strings" //) // //const ( // TongLianMisPay = "https://cloudmiscash.allinpay.com/cloudMis-transaction" // 通联mis支付(基础收款用于一般无特殊支付业务需求的标准行业,如零售、餐饮类商户及场景) // MisPayAction = "api/v2/process" //) // //const ( // BusinessTypeBUSIORDERTRANS = "100000003" // 订单支付收款(不含查询流程) // BusinessTypeBUSIORDERTRANSBANK = "100100003" // 订单支付银行卡收款(不含查询) // BusinessTypeBUSIORDERTRANSQR = "100300003" // 订单支付扫码收款(不含查询) // BusinessTypeBUSIORDERSALE = "100000002" // 订单支付收款(含查询流程) // BusinessTypeBUSIORDERSALEBANK = "100100002" // 订单支付银行卡收款(含查询流程) // BusinessTypeBUSIORDERSALEQR = "100300002" // 订单支付扫码收款(含查询流程) //) // //func (a *API) signMisParam(businessID, licence string, custData *CustDataDetail) (sig string) { // var signBuffer = new(strings.Builder) // //signBuffer.Write([]byte(a.appID)) // signBuffer.Write([]byte("app_id_001")) // signBuffer.Write([]byte(businessID)) // signBuffer.Write([]byte(fmt.Sprintf(`{"BUSINESS_ID":"%s","AMOUNT":"%s","ORDER_NO":"%s"}`, custData.BusinessId, custData.Amount, custData.OrderNo))) // signBuffer.Write([]byte(licence)) // fmt.Println(signBuffer.String()) // binSig := md5.Sum([]byte(signBuffer.String())) // sig = fmt.Sprintf("%x", binSig) // return sig //} // //func (a *API) AccessMisAPI(action string, bizParams map[string]interface{}) (retVal map[string]interface{}, err error) { // //params := make(map[string]interface{}) // //params["APP_ID"] = a.appID // ////params["randomstr"] = utils.GetUUID() // ////params["version"] = "12" // //params = utils.MergeMaps(params, bizParams) // //signStr := a.signParam(params) // //params["SIGN_DATA"] = signStr // fullURL := utils.GenerateGetURL(TongLianMisPay, action, nil) // err = platformapi.AccessPlatformAPIWithRetry(a.client, // func() *http.Request { // request, _ := http.NewRequest(http.MethodPost, fullURL, strings.NewReader(utils.Map2URLValues(bizParams).Encode())) // request.Header.Set("charset", "UTF-8") // request.Header.Set("Content-Type", "application/x-www-form-urlencoded") // return request // }, // a.config, // func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) { // if jsonResult1 == nil { // return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil") // } // if err == nil { // returnCode := utils.Interface2String(jsonResult1["RSP_CODE"]) // if returnCode != MisStatusSuccess { // errLevel = platformapi.ErrLevelGeneralFail // err = utils.NewErrorCode(utils.Interface2String(jsonResult1["errmsg"])+utils.Interface2String(jsonResult1["retmsg"]), returnCode) // } // retVal = jsonResult1 // } // return errLevel, err // }) // return retVal, err //} // //// CreateMisPayOrder 创建订单(扫码枪,扫二维码支付) //func (a *API) CreateMisPayOrder(param *OnMisPayReq, custData *CustDataDetail) (err error) { // param.AppId = a.appID // param.SignData = a.signMisParam(param.BusinessId, "", custData) // params := utils.Struct2MapByJson(param) // result, err := a.AccessMisAPI(MisPayAction, params) // fmt.Println(result) // return //} // //type OnMisPayReq struct { // AppId string `json:"APP_ID"` // 必填 应用分配ID // BusinessId string `json:"BUSINESS_ID"` // 必填 业务类型 // CustData string `json:"CUST_DATA"` // 必填 具体的支付请求数据,JSON格式字符串 // CashId string `json:"CASH_ID"` // 必填 收银机款台号 // StoreId string `json:"STORE_ID"` // 必填 商户分店号 // SignData string `json:"SIGN_DATA"` // 必填 计算方法参照附录1 // AppPackageNm string `json:"APP_PACKAGE_NM"` // 非必填 指定APP包名 // AppClassNm string `json:"APP_CLASS_NM"` // 非必填 指定类名 // BusExtpara string `json:"BUS_EXTPARA"` // 非必填 业务扩展字段,用于特定功能,详见附录2 //} //type CustDataDetail struct { // BusinessId string `json:"BUSINESS_ID"` // 必填 业务类型 // Amount string `json:"AMOUNT"` // 必填 支付金额,十二位长度(单位:分,不足左补零) // OrderNo string `json:"ORDER_NO"` // 必填 订单编号 // Memo string `json:"MEMO"` // 非必填 订单编号 // QrCode string `json:"QRCODE"` // 非必填 订单编号 // TramsCheck string `json:"TRANS_CHECK"` // 非必填 订单编号 // PageAppendContent string `json:"PAGE_APPEND_CONTENT"` // 非必填 订单编号 // ValidateInfo string `json:"VALIDATE_INFO"` // 非必填 订单编号 // BusInfo string `json:"BUS_INFO"` // 非必填 订单编号 //} // //type MisPayResp struct { // RspCode string `json:"RSP_CODE"` // 云MIS系统服务调用返回码, 支付返回代码请参考RSP_DATA里支付结果字段 // RspData string `json:"RSP_DATA"` // 透传支付产品给云MIS的响应JSON字符串 // RspDesc string `json:"RSP_DESC"` // 交易级返回描述 // CloudMisTrxSsn string `json:"ClOUD_MIS_TRX_SSN"` // 交易成功返回,云MIS系统唯一流水号,用于查询或对账 //} // //type MisPayRspData struct { // BusinessId string `json:"BUSINESS_ID"` // 必填 业务类型 // RejCode string `json:"REJCODE"` // 交易返回码 // RejCodeCn string `json:"REJCODE_CN"` // 交易返回码注释 // Cups string `json:"CUPS"` // 卡组织,银行卡为空 (ALP:支付宝 WXP:微信支付) // MerchID string `json:"MERCH_ID"` // 商户编号 // TerID string `json:"TER_ID"` // 终端编号 // MerchName string `json:"MERCH_NAME"` // 商户名称 // BatchNo string `json:"BATCH_NO"` // 批次号 // TraceNo string `json:"TRACE_NO"` // 凭证号 // TransTicketNo string `json:"TRANS_TICKET_NO"` // 交易单号 // OrderNo string `json:"order_no"` // 订单编号 // Amount string `json:"AMOUNT"` // 支付金额,十二位长度(单位:分) // RefNo string `json:"REF_NO"` // 系统参考号 // CarDno string `json:"CARDNO"` // 银行卡交易时返回卡号;扫码交易返回OPENID或USERID // CardTypeIdenty string `json:"CARD_TYPE_IDENTY"` // 借贷记卡标识(银行卡) 0:借记 1:贷记 // WildCardSign string `json:"WILD_CARD_SIGN"` //内外卡标识(银行卡) 0:内卡 1:外卡 // ExpDate string `json:"EXP_DATE"` // 有效期 // Date string `json:"DATE"` // 支付日期 // Time string `json:"TIME"` // 支付时间 // PrintFlag string `json:"PRINT_FLAG"` // 是否打印小票(1:打印,0:未打印) // CardFee string `json:"CARD_FEE"` // 手续费,十二位长度(单位:分) // TransCheck string `json:"TRANS_CHECK"` // 交易唯一标识 // AuthNo string `json:"AUTH_NO"` // 授权码 // Sign string `json:"SIGN"` // 签名 // CardType string `json:"CARDTYPE"` // 卡类型 // TransChannel string `json:"TRANS_CHANNEL"` // 交易渠道 // IssNo string `json:"ISS_NO"` // 发卡行行号 // IssName string `json:"ISS_NAME"` // 发卡行名称 // Memo string `json:"MEMO"` // 备注信息 // PrtCommon string `json:"PRT_COMMON"` // 打印内容公共部分(仅用于简易终端版) // PrtCardholder string `json:"PRT_CARDHOLDER"` // 打印内容持卡人联部分(仅用于简易终端版) // PrtMerchant string `json:"PRT_MERCHANT"` // 打印内容商户联部分(仅用于简易终端版) // DiscAmount string `json:"DISC_AMOUNT"` // 优惠金额 // ActuallyAmount string `json:"ACTUALLY_AMOUNT"` // 实付金额 //}