登录
原创

基于GO的天聚人合加油卡充值接口调用代码实例

专栏天聚人合TIANJURENHE.COM
发布于 2020-12-18 阅读 366
  • API
  • Go
原创

一、接口申请开通

本代码是基于天聚人合的话费充值API实现的话费充值功能,使用前需要:

  • 通过https://www.tianjurenhe.com/docs/api/?id=1申请开通话费接口服务。
  • 你可以在个人中心 ➡️ 数据中心 ➡️ 我的API 模块看到此接口的调用凭证请求key
  • 与人合签订相关服务合同后,才能正式使用。前期您也可以申请开通测试环境,进行对接测试。
  • 详细的接口说明,可参考聚合官方文档。

二、接口使用

2.1、引入项目需要的包

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

2.2、配置appkey与主函数

const APPKEY = "*******************" //您申请的APPKEY
 
func main(){
 
    //1.订单状态查询
    Request1()

    //2.加油卡充值
    Request2()
 
}

2.3、订单状态查询

func Request1(){
    //请求地址
    juheURL :="http://op.tianjurenhe.com/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.4、加油卡充值

func Request2(){
    //请求地址
    juheURL :="http://op.tianjurenhe.com/ofpay/sinopec/onlineorder"
 
    //初始化参数
    param:=url.Values{}
 
    //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
    param.Set("proid","") //产品id:10000(中石化50元加油卡)[暂不支持]、10001(中石化100元加油卡)、10003(中石化500元加油卡)、10004(中石化1000元加油卡)、10007(中石化任意金额充值)[暂不支持]、10008(中石油任意金额充值)
    param.Set("cardnum","") //充值数量(产品id为10007、10008时为具体充值金额(整数),其余产品id请传固定值1);注:中石油任意冲(产品id:10008)暂时只支持100\200\500\1000
    param.Set("orderid","") //商家订单号,8-32位字母数字组合
    param.Set("game_userid","") //加油卡卡号,中石化:以100011开头的卡号、中石油:以9开头的卡号
    param.Set("gasCardTel","") //持卡人手机号码,可以填写一个固定格式的手机号码,如:18900000000
    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"])
        }
    }
}

2.5、配置Get与Post请求方法

// 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)
}

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0

举报