一、接口申请开通
本代码是基于天聚人合的话费充值API实现的话费充值功能,使用前需要:
- 通过https://www.tianjurenhe.com/docs/api/?id=2申请开通话费接口服务。
- 你可以在个人中心 ➡️ 数据中心 ➡️ 我的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()
//4.状态回调配置
Request4()
//5.检测手机号码是否能充值
Request5()
//6.根据手机号和面值查询商品信息
Request6()
//7.手机直充接口
Request7()
}
2.3、订单状态查询
func Request2(){
//请求地址
juheURL :="http://op.tianjurenhe.com/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"])
}
}
}
2.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"])
}
}
}
2.5、检测手机号码是否能充值
func Request5(){
//请求地址
juheURL :=" http://op.tianjurenhe.com/ofpay/mobile/telcheck"
//初始化参数
param:=url.Values{}
//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
param.Set("phoneno","") //手机号码
param.Set("cardnum","") //充值金额,目前可选:1、2、5、10、20、30、50、100、200、300、500
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.6、根据手机号和面值查询商品信息
func Request6(){
//请求地址
juheURL :="http://op.tianjurenhe.com/ofpay/mobile/telquery"
//初始化参数
param:=url.Values{}
//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
param.Set("phoneno","") //手机号码
param.Set("cardnum","") //充值金额,目前可选:1、2、5、10、20、30、50、100、200、300、500
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.7、手机直充接口
func Request7(){
//请求地址
juheURL :="http://op.tianjurenhe.com/ofpay/mobile/onlineorder"
//初始化参数
param:=url.Values{}
//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
param.Set("phoneno","") //手机号码
param.Set("cardnum","") //充值金额,目前可选:1、2、5、10、20、30、50、100、200、300、500
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)
}