123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package service
-
- import (
- "crypto/hmac"
- "crypto/sha1"
- "encoding/base64"
- "encoding/json"
- "fmt"
- "gdyb/utils/csbhttp"
- "strconv"
- "time"
- )
-
- // 人员基本信息
- func Jsyb1101(certNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, id_card_type int64, card_sn string, certificates string, request_url string, access_key string) (string, string) {
- //生成签名
- nonce := GetRandomString(32)
- timestamp := time.Now().Unix()
- //signature := setSignature(timestamp, nonce, secret_key)
- //生成输入报文
- inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
-
- input := make(map[string]interface{})
- inputData := make(map[string]interface{})
- inputMessage["infno"] = "1101" // 交易编码
-
- if certificates == "3" {
- inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
- inputData["certno"] = certNo // 证件号码
- inputData["psn_cert_type"] = "99" // 人员证件类型
-
- } else {
- if id_card_type == 1 {
- inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
- inputData["card_sn"] = card_sn // 卡识别码
- inputData["certno"] = certNo // 证件号码
- inputData["psn_cert_type"] = "01" // 人员证件类型
-
- } else {
- inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
- inputData["card_sn"] = "" // 卡识别码
- inputData["certno"] = certNo // 证件号码
- inputData["psn_cert_type"] = "01" // 人员证件类型
- }
- }
-
- inputData["mdtrt_cert_no"] = certNo // 就诊凭证编号
- inputData["begntime"] = "" // 开始时间
- inputData["psn_name"] = "" // 人员姓名
- input["data"] = inputData
- inputMessage["input"] = input //交易输入
-
- //var inputLog string
- bytesData, _ := json.Marshal(inputMessage)
- //inputLog = string(bytesData)
- //fmt.Println(string(bytesData))
- //if err != nil {
- // fmt.Println(err.Error())
- // return err.Error(), ""
- //}
- //reader := bytes.NewReader(bytesData)
- //
- //request, err := http.NewRequest("POST", "http://10.72.3.87:8086/CSB/1101", reader)
- //if err != nil {
- // fmt.Println(err.Error())
- // return err.Error(), ""
- //}
- //key := "_api_access_key=" + access_key + "&_api_name=" + "hssServives" + "&_api_timestamp=" + strconv.FormatInt(timestamp, 10) + "&_api_version=" + "1.0.0"
- //
- //request.Header.Set("Content-Type", "application/json;charset=UTF-8")
- //request.Header.Set("_api_timestamp", strconv.FormatInt(timestamp, 10))
- //request.Header.Set("_api_name", "hssServives")
- //request.Header.Set("_api_version", "1.0.0")
- //request.Header.Set("_api_access_key", access_key)
- //request.Header.Set("_api_signature", hmacsha1(key, secret_key))
- //
- //client := http.Client{}
- //resp, err := client.Do(request)
- //if err != nil {
- // fmt.Println(err.Error())
- // return err.Error(), ""
- //}
- //respBytes, err := ioutil.ReadAll(resp.Body)
- //if err != nil {
- // fmt.Println(err.Error())
- // return err.Error(), ""
- //}
- //fmt.Println(string(respBytes))
- //str := string(respBytes)
- //return str, ""
- return HttpRequest(request_url, access_key, secret_key, timestamp, bytesData, string(bytesData)), ""
- }
- func HttpRequest(url string, ak string, sk string, timestamp int64, requestByte []byte, json string) string {
- fmt.Println(url)
- //step 1. 设置请求参数
- csbHP := csbhttp.NewHttpParams("http://10.72.3.87:8086/CSB/1101") //设置请求地址及url参数
- //设置调用方式 get 或者 post
- csbHP.SetMethod("post")
- //csbHP.AddParam("input", "")
- //设置 调用的服务名和版本
- csbHP.SetApi("hssServives")
- csbHP.SetVersion("1.0.0")
-
- //添加附加的http请求头 (可以定义多条)
- //key := "_api_access_key=" + ak + "&_api_name=" + "hssServives" + "&_api_timestamp=" + strconv.FormatInt(timestamp, 10) + "&_api_version=" + "1.0.0"
- csbHP.AddHeader("_api_timestamp", strconv.FormatInt(timestamp, 10))
- csbHP.AddHeader("_api_name", "hssServives")
- csbHP.AddHeader("_api_version", "1.0.0")
- csbHP.AddHeader("_api_access_key", ak)
- csbHP.AddHeader("Content-Type", "application/json;charset=UTF-8")
-
- //request.Header.Set("Content-Type", "application/json;charset=UTF-8")
-
- //还可以,设置附加的byte[]或者json请求体
-
- csbHP.SetContentBody(json, nil)
- //设置请求的ak和sk
- csbHP.SetAK(ak)
- csbHP.SetSK(sk)
- //打印请求参数信息
- csbHP.Print()
- //进行调用, 返回的第二项为resonse http headers (map[string][]string类型)
- res, _, err := csbhttp.Invoke(*csbHP, requestByte)
- //是否发成错误
- if err != nil {
- fmt.Println(err)
- return ""
- }
- return res
- }
- func hmacsha1(keyStr, value string) string {
-
- key := []byte(keyStr)
- mac := hmac.New(sha1.New, key)
- mac.Write([]byte(value))
- //进行base64编码
- res := base64.StdEncoding.EncodeToString(mac.Sum(nil))
-
- return res
- }
|