[其他]代码库
package main
import (
"io/ioutil"
"net/http"
"net/url"
"fmt"
"encoding/json"
)
//----------------------------------
// 加油卡充值调用示例代码 - 聚合数据
// 在线接口文档:http://www.juhe.cn/docs/87
//----------------------------------
const APPKEY = "*******************" //您申请的APPKEY
func main(){
//1.订单状态查询
Request1()
//2.账户余额查询
Request2()
//3.加油卡充值
Request3()
}
//1.订单状态查询
func Request1(){
//请求地址
juheURL :="http://op.juhe.cn/ofpay/sinopec/ordersta"
//初始化参数
param:=url.Values{}
//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
param.Set("orderid","") //商家订单号,8-32位字母数字组合
param.Set("key",APPKEY) //应用APPKEY(应用详细页查询)
//发送请求
data,err:=Get(juheURL,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"])
}
}
}
//2.账户余额查询
func Request2(){
//请求地址
juheURL :="http://op.juhe.cn/ofpay/sinopec/yue"
//初始化参数
param:=url.Values{}
//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
param.Set("timestamp","") //当前时间戳,如:1432788379
param.Set("key",APPKEY) //应用APPKEY(应用详细页查询)
param.Set("sign","") //校验值,md5(OpenID+key+timestamp),OpenID在个人中心查询
//发送请求
data,err:=Get(juheURL,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"])
}
}
}
//3.加油卡充值
func Request3(){
//请求地址
juheURL :="http://op.juhe.cn/ofpay/sinopec/onlineorder"
//初始化参数
param:=url.Values{}
//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
param.Set("proid","") //产品id:10000(中石化50元加油卡)、10001(中石化100元加油卡)、10003(中石化500元加油卡)、10004(中石化1000元加油卡)、10007(中石化任意金额充值)、10008(中石油任意金额充值)
param.Set("cardnum","") //充值数量 任意充 (整数(元)),其余面值固定值为1
param.Set("orderid","") //商家订单号,8-32位字母数字组合
param.Set("game_userid","") //加油卡卡号,中石化:以100011开头的卡号、中石油:以9开头的卡号
param.Set("gasCardTel","") //持卡人手机号码
param.Set("gasCardName","") //持卡人姓名
param.Set("chargeType","") //加油卡类型 (1:中石化、2:中石油;默认为1)
param.Set("key",APPKEY) //应用APPKEY(应用详细页查询)
param.Set("sign","") //校验值,md5(OpenID+key+proid+cardnum+game_userid+orderid),OpenID在个人中心查询
//发送请求
data,err:=Get(juheURL,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"])
}
}
}
// get 网络请求
func Get(apiURL string,params url.Values)(rs[]byte ,err error){
var Url *url.URL
Url,err=url.Parse(apiURL)
if err!=nil{
fmt.Printf("解析url错误:\r\n%v",err)
return nil,err
}
//如果参数中有中文参数,这个方法会进行URLEncode
Url.RawQuery=params.Encode()
resp,err:=http.Get(Url.String())
if err!=nil{
fmt.Println("err:",err)
return nil,err
}
defer resp.Body.Close()
return ioutil.ReadAll(resp.Body)
}
// post 网络请求 ,params 是url.Values类型
func Post(apiURL string, params url.Values)(rs[]byte,err error){
resp,err:=http.PostForm(apiURL, params)
if err!=nil{
return nil ,err
}
defer resp.Body.Close()
return ioutil.ReadAll(resp.Body)
}