手机话费充值接口调用示例

package main
import (
    "io/ioutil"
    "net/http"
    "net/url"
    "fmt"
    "encoding/json"
)

//----------------------------------
// 手机话费充值调用示例代码 - 聚合数据
// 在线接口文档:http://www.juhe.cn/docs/85
//----------------------------------

const APPKEY = "*******************" //您申请的APPKEY

func main(){

    //1.账户余额查询
    Request1()

    //2.订单状态查询
    Request2()


    //4.状态回调配置
    Request4()

    //5.检测手机号码是否能充值
    Request5()

    //6.根据手机号和面值查询商品信息
    Request6()

    //7.手机直充接口
    Request7()

}

//1.账户余额查询
func Request1(){
    //请求地址
    juheURL :="http://op.juhe.cn/ofpay/mobile/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"])
        }
    }
}

//2.订单状态查询
func Request2(){
    //请求地址
    juheURL :="http://op.juhe.cn/ofpay/mobile/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"])
        }
    }
}


//4.状态回调配置
func Request4(){
    //请求地址
    juheURL :="充值接口测试完毕,联系在线客服进行回调配置"

    //初始化参数
    param:=url.Values{}

    //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参


    //发送请求
    data,err:=Post(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"])
        }
    }
}

//5.检测手机号码是否能充值
func Request5(){
    //请求地址
    juheURL :="http://op.juhe.cn/ofpay/mobile/telcheck"

    //初始化参数
    param:=url.Values{}

    //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
    param.Set("phoneno","") //手机号码
    param.Set("cardnum","") //充值金额,目前可选:5、10、20、30、50、100、300
    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"])
        }
    }
}

//6.根据手机号和面值查询商品信息
func Request6(){
    //请求地址
    juheURL :="http://op.juhe.cn/ofpay/mobile/telquery"

    //初始化参数
    param:=url.Values{}

    //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
    param.Set("phoneno","") //手机号码
    param.Set("cardnum","") //充值金额,目前可选:5、10、20、30、50、100、300
    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"])
        }
    }
}

//7.手机直充接口
func Request7(){
    //请求地址
    juheURL :="http://op.juhe.cn/ofpay/mobile/onlineorder"

    //初始化参数
    param:=url.Values{}

    //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
    param.Set("phoneno","") //手机号码
    param.Set("cardnum","") //充值金额,目前可选:5、10、20、30、50、100、300
    param.Set("orderid","") //商家订单号,8-32位字母数字组合
    param.Set("key",APPKEY) //应用APPKEY(应用详细页查询)
    param.Set("sign","") //校验值,md5(OpenID+key+phoneno+cardnum+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)
}

登录 后可发表评论

    最新发布
    聚合数据©版权所有