|
@@ -15,6 +15,7 @@ import (
|
15
|
15
|
"log"
|
16
|
16
|
"math/rand"
|
17
|
17
|
"mime/multipart"
|
|
18
|
+ "net"
|
18
|
19
|
"net/http"
|
19
|
20
|
"os"
|
20
|
21
|
"os/exec"
|
|
@@ -3275,6 +3276,45 @@ func SetInputMessage(nonce string, timestamp int64, org_name string, doctor stri
|
3275
|
3276
|
return inputMessage
|
3276
|
3277
|
}
|
3277
|
3278
|
|
|
3279
|
+func SetInputMessageTwo(nonce string, timestamp int64, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, sign_no string) map[string]interface{} {
|
|
3280
|
+ // 生成签名
|
|
3281
|
+ tempTime := time.Unix(timestamp, 0)
|
|
3282
|
+ //timeFormat := tempTime.Format("20060102150405")
|
|
3283
|
+ timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
|
|
3284
|
+ //randNum := rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)
|
|
3285
|
+
|
|
3286
|
+ month := time.Unix(1557042972, 0).Format("1")
|
|
3287
|
+ year := time.Now().Format("2006")
|
|
3288
|
+ month = time.Now().Format("01")
|
|
3289
|
+ day := time.Now().Format("02")
|
|
3290
|
+
|
|
3291
|
+ hour := time.Now().Format("15")
|
|
3292
|
+ min := time.Now().Format("04")
|
|
3293
|
+ sec := time.Now().Format("05")
|
|
3294
|
+
|
|
3295
|
+ msec := time.Now().Format("000")
|
|
3296
|
+
|
|
3297
|
+ // 生成输入报文
|
|
3298
|
+ inputMessage := make(map[string]interface{})
|
|
3299
|
+ inputMessage["msgid"] = fixmedins_code + year + month + day + hour + min + sec + msec + "0" // 发送方报文 ID
|
|
3300
|
+ inputMessage["mdtrtarea_admvs"] = mdtrtarea_admvs // 就医地医保区划
|
|
3301
|
+ inputMessage["insuplc_admdvs"] = insuplc_admdvs // 参保地医保区划
|
|
3302
|
+ inputMessage["recer_sys_code"] = "1" // 接收方系统代码
|
|
3303
|
+ inputMessage["dev_no"] = "" // 设备编号
|
|
3304
|
+ inputMessage["dev_safe_info"] = "" // 设备安全信息
|
|
3305
|
+ inputMessage["cainfo"] = "" // 数字签名信息
|
|
3306
|
+ inputMessage["signtype"] = "SM3" // 签名类型
|
|
3307
|
+ inputMessage["infver"] = "V1.0" // 接收方系统代码
|
|
3308
|
+ inputMessage["opter_type"] = "1" // 经办人类别
|
|
3309
|
+ inputMessage["opter"] = doctor // 经办人
|
|
3310
|
+ inputMessage["opter_name"] = doctor // 经办人姓名
|
|
3311
|
+ inputMessage["inf_time"] = timeFormatOne // 交易时间
|
|
3312
|
+ inputMessage["fixmedins_code"] = fixmedins_code // 定点医药机构编号
|
|
3313
|
+ inputMessage["fixmedins_name"] = org_name //定点医药机构名称
|
|
3314
|
+ inputMessage["sign_no"] = sign //交易签到流水号
|
|
3315
|
+ return inputMessage
|
|
3316
|
+}
|
|
3317
|
+
|
3278
|
3318
|
func postFile(filename string, target_url string) (*http.Response, error) {
|
3279
|
3319
|
body_buf := bytes.NewBufferString("")
|
3280
|
3320
|
body_writer := multipart.NewWriter(body_buf)
|
|
@@ -3788,13 +3828,13 @@ func Gdyb90100(psn_no string, org_name string, doctor string, fixmedins_code str
|
3788
|
3828
|
return str
|
3789
|
3829
|
}
|
3790
|
3830
|
|
3791
|
|
-func Gdyb3260(org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, year string, month string) (string, string) {
|
|
3831
|
+func Gdyb3260(org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, year string, month string, sign string) (string, string) {
|
3792
|
3832
|
//生成签名
|
3793
|
3833
|
nonce := GetRandomString(32)
|
3794
|
3834
|
timestamp := time.Now().Unix()
|
3795
|
3835
|
signature := setSignature(timestamp, nonce, secret_key)
|
3796
|
3836
|
//生成输入报文
|
3797
|
|
- inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
|
|
3837
|
+ inputMessage := SetInputMessageTwo(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, sign)
|
3798
|
3838
|
input := make(map[string]interface{})
|
3799
|
3839
|
inputData := make(map[string]interface{})
|
3800
|
3840
|
inputMessage["infno"] = "3260" // 交易编码
|
|
@@ -4034,3 +4074,113 @@ func Gdyb3262(org_name string, doctor string, fixmedins_code string, insuplc_adm
|
4034
|
4074
|
}
|
4035
|
4075
|
|
4036
|
4076
|
}
|
|
4077
|
+func Gdyb9001(org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, admin_user_id int64) (string, string) {
|
|
4078
|
+ //生成签名
|
|
4079
|
+ nonce := GetRandomString(32)
|
|
4080
|
+ timestamp := time.Now().Unix()
|
|
4081
|
+ signature := setSignature(timestamp, nonce, secret_key)
|
|
4082
|
+ //生成输入报文
|
|
4083
|
+ inputMessage := SetInputMessage(nonce, timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
|
|
4084
|
+ input := make(map[string]interface{})
|
|
4085
|
+ inputData := make(map[string]interface{})
|
|
4086
|
+ inputMessage["infno"] = "9001" // 交易编码
|
|
4087
|
+ inputData["opter_no"] = admin_user_id // 就诊凭证编号
|
|
4088
|
+ inputData["mac"] = GetMac() // 开始时间
|
|
4089
|
+ inputData["ip"] = GetLocalIp()
|
|
4090
|
+
|
|
4091
|
+ input["data"] = inputData
|
|
4092
|
+ inputMessage["input"] = input //交易输入
|
|
4093
|
+ var inputLog string
|
|
4094
|
+ bytesData, err := json.Marshal(inputMessage)
|
|
4095
|
+ inputLog = string(bytesData)
|
|
4096
|
+ fmt.Println(string(bytesData))
|
|
4097
|
+ if err != nil {
|
|
4098
|
+ fmt.Println(err.Error())
|
|
4099
|
+ return err.Error(), ""
|
|
4100
|
+ }
|
|
4101
|
+ reader := bytes.NewReader(bytesData)
|
|
4102
|
+ gdyb_url := beego.AppConfig.String("gdyb_url")
|
|
4103
|
+ gdyb_paasid := beego.AppConfig.String("gdyb_paasid")
|
|
4104
|
+
|
|
4105
|
+ var url string
|
|
4106
|
+ if fixmedins_code == "H15049901371" {
|
|
4107
|
+ url = gdyb_url
|
|
4108
|
+ } else {
|
|
4109
|
+ url = gdyb_url + "3261"
|
|
4110
|
+ }
|
|
4111
|
+
|
|
4112
|
+ if insuplc_admdvs == "421300" {
|
|
4113
|
+ var json2 string
|
|
4114
|
+ cmd := exec.Command("java", "-jar", "yh_hb_fat.jar", "1101", string(bytesData), json2)
|
|
4115
|
+ out, err := cmd.Output()
|
|
4116
|
+ if err != nil {
|
|
4117
|
+ fmt.Println("error:", err.Error())
|
|
4118
|
+ }
|
|
4119
|
+ fmt.Println(string(out))
|
|
4120
|
+ return hex.EncodeToString(out), inputLog
|
|
4121
|
+ } else {
|
|
4122
|
+
|
|
4123
|
+ //url := "http://igb.hsa.gdgov.cn/ebus/gdyb_inf/poc/hsa/hgs/1101"
|
|
4124
|
+ request, err := http.NewRequest("POST", url, reader)
|
|
4125
|
+ if err != nil {
|
|
4126
|
+ fmt.Println(err.Error())
|
|
4127
|
+ return err.Error(), ""
|
|
4128
|
+ }
|
|
4129
|
+
|
|
4130
|
+ request.Header.Set("Content-Type", "application/json;charset=UTF-8")
|
|
4131
|
+ request.Header.Set("x-tif-paasid", gdyb_paasid)
|
|
4132
|
+ request.Header.Set("x-tif-signature", signature)
|
|
4133
|
+ request.Header.Set("x-tif-timestamp", strconv.FormatInt(timestamp, 10))
|
|
4134
|
+ request.Header.Set("x-tif-nonce", nonce)
|
|
4135
|
+
|
|
4136
|
+ client := http.Client{}
|
|
4137
|
+ resp, err := client.Do(request)
|
|
4138
|
+ if err != nil {
|
|
4139
|
+ fmt.Println(err.Error())
|
|
4140
|
+ return err.Error(), ""
|
|
4141
|
+ }
|
|
4142
|
+ respBytes, err := ioutil.ReadAll(resp.Body)
|
|
4143
|
+ if err != nil {
|
|
4144
|
+ fmt.Println(err.Error())
|
|
4145
|
+ return err.Error(), ""
|
|
4146
|
+ }
|
|
4147
|
+ fmt.Println(string(respBytes))
|
|
4148
|
+ str := string(respBytes)
|
|
4149
|
+ return str, inputLog
|
|
4150
|
+
|
|
4151
|
+ }
|
|
4152
|
+
|
|
4153
|
+}
|
|
4154
|
+
|
|
4155
|
+//获取本机ip
|
|
4156
|
+func GetLocalIp() string {
|
|
4157
|
+ addrs, err := net.InterfaceAddrs()
|
|
4158
|
+ if err != nil {
|
|
4159
|
+ fmt.Println("get local ip failed")
|
|
4160
|
+ }
|
|
4161
|
+ for _, address := range addrs {
|
|
4162
|
+ if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
|
|
4163
|
+ if ipnet.IP.To4() != nil {
|
|
4164
|
+ return ipnet.IP.String()
|
|
4165
|
+ }
|
|
4166
|
+ }
|
|
4167
|
+ }
|
|
4168
|
+ return ""
|
|
4169
|
+}
|
|
4170
|
+
|
|
4171
|
+//获取本机Mac
|
|
4172
|
+func GetMac() string {
|
|
4173
|
+ interfaces, err := net.Interfaces()
|
|
4174
|
+ if err != nil {
|
|
4175
|
+ fmt.Println("Get loacl Mac failed")
|
|
4176
|
+ }
|
|
4177
|
+ for _, inter := range interfaces {
|
|
4178
|
+ mac := inter.HardwareAddr
|
|
4179
|
+ fmt.Println("+======" + mac.String())
|
|
4180
|
+ if mac.String() != "" {
|
|
4181
|
+ return mac.String()
|
|
4182
|
+ }
|
|
4183
|
+
|
|
4184
|
+ }
|
|
4185
|
+ return ""
|
|
4186
|
+}
|