基于C#的加油卡接口调用代码实例

发布时间:2016-05-30 17:42:35   来源:文档文库   
字号:

基于C#的加油卡接口调用代码实例

代码描述:基于C#的加油卡接口调用代码实例

代码平台:聚合数据

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net;

using System.IO;

using Xfrog.Net;

using System.Diagnostics;

using System.Web;

 

//----------------------------------

// 加油卡充值调用示例代码 - 聚合数据

// 在线接口文档:http://www.juhe.cn/docs/87

// 代码中JsonObject类下载地址:http://download.csdn.net/download/gcm3206021155665/7458439

//----------------------------------

 

namespace ConsoleAPI

{

    class Program

    {

        static void Main(string[] args)

        {

            string appkey = "*******************"//配置您申请的appkey

 

             

            //1.订单状态查询

            string url1 = "http://op.juhe.cn/ofpay/sinopec/ordersta";

 

            var parameters1 = new Dictionary<stringstring>();

 

            parameters1.Add("orderid" ""); //商家订单号,8-32位字母数字组合

            parameters1.Add("key", appkey);//你申请的key

 

            string result1 = sendPost(url1, parameters1, "get");

 

            JsonObject newObj1 = new JsonObject(result1);

            String errorCode1 = newObj1["error_code"].Value;

 

            if (errorCode1 == "0")

            {

                Debug.WriteLine("成功");

                Debug.WriteLine(newObj1);

            }

            else

            {

                //Debug.WriteLine("失败");

                Debug.WriteLine(newObj1["error_code"].Value+":"+newObj1["reason"].Value);

            }

 

 

            //2.账户余额查询

            string url2 = "http://op.juhe.cn/ofpay/sinopec/yue";

 

            var parameters2 = new Dictionary<stringstring>();

 

            parameters2.Add("timestamp" ""); //当前时间戳,如:1432788379

            parameters2.Add("key", appkey);//你申请的key

            parameters2.Add("sign" ""); //校验值,md5(OpenID+key+timestamp),OpenID在个人中心查询

 

            string result2 = sendPost(url2, parameters2, "get");

 

            JsonObject newObj2 = new JsonObject(result2);

            String errorCode2 = newObj2["error_code"].Value;

 

            if (errorCode2 == "0")

            {

                Debug.WriteLine("成功");

                Debug.WriteLine(newObj2);

            }

            else

            {

                //Debug.WriteLine("失败");

                Debug.WriteLine(newObj2["error_code"].Value+":"+newObj2["reason"].Value);

            }

 

 

            //3.加油卡充值

            string url3 = "http://op.juhe.cn/ofpay/sinopec/onlineorder";

 

            var parameters3 = new Dictionary<stringstring>();

 

            parameters3.Add("cardid" ""); //产品id:10000(中石化50元加油卡)、10001(中石化100元加油卡)、10003(中石化500元加油卡)、10004(中石化1000元加油卡)、10007(中石化任意金额充值)、10008(中石油任意金额充值)

            parameters3.Add("cardnum" ""); //充值数量 任意充 (整数(元)),其余面值固定值为1

            parameters3.Add("orderid" ""); //商家订单号,8-32位字母数字组合

            parameters3.Add("game_userid" ""); //加油卡卡号,中石化:以100011开头的卡号、中石油:以9开头的卡号

            parameters3.Add("gasCardTel" ""); //持卡人手机号码

            parameters3.Add("gasCardName" ""); //持卡人姓名

            parameters3.Add("chargeType" ""); //加油卡类型 (1:中石化、2:中石油;默认为1)

            parameters3.Add("key", appkey);//你申请的key

            parameters3.Add("sign" ""); //校验值,md5(OpenID+key+proid+cardnum+game_userid+orderid),OpenID在个人中心查询

 

            string result3 = sendPost(url3, parameters3, "get");

 

            JsonObject newObj3 = new JsonObject(result3);

            String errorCode3 = newObj3["error_code"].Value;

 

            if (errorCode3 == "0")

            {

                Debug.WriteLine("成功");

                Debug.WriteLine(newObj3);

            }

            else

            {

                //Debug.WriteLine("失败");

                Debug.WriteLine(newObj3["error_code"].Value+":"+newObj3["reason"].Value);

            }

 

 

        }

 

        /// 

        /// Http (GET/POST)

        /// 

        /// 请求URL

        /// 请求参数

        /// 请求方法

        /// 响应内容

        static string sendPost(string url, IDictionary<stringstring> parameters, string method)

        {

            if (method.ToLower() == "post")

            {

                HttpWebRequest req = null;

                HttpWebResponse rsp = null;

                System.IO.Stream reqStream = null;

                try

                {

                    req = (HttpWebRequest)WebRequest.Create(url);

                    req.Method = method;

                    req.KeepAlive = false;

                    req.ProtocolVersion = HttpVersion.Version10;

                    req.Timeout = 5000;

                    req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

                    byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));

                    reqStream = req.GetRequestStream();

                    reqStream.Write(postData, 0, postData.Length);

                    rsp = (HttpWebResponse)req.GetResponse();

                    Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);

                    return GetResponseAsString(rsp, encoding);

                }

                catch (Exception ex)

                {

                    return ex.Message;

                }

                finally

                {

                    if (reqStream != null) reqStream.Close();

                    if (rsp != null) rsp.Close();

                }

            }

            else

            {

                //创建请求

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));

 

                //GET请求

                request.Method = "GET";

                request.ReadWriteTimeout = 5000;

                request.ContentType = "text/html;charset=UTF-8";

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                Stream myResponseStream = response.GetResponseStream();

                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

 

                //返回内容

                string retString = myStreamReader.ReadToEnd();

                return retString;

            }

        }

 

        /// 

        /// 组装普通文本请求参数。

        /// 

        /// Key-Value形式请求参数字典

        /// URL编码后的请求数据

        static string BuildQuery(IDictionary<stringstring> parameters, string encode)

        {

            StringBuilder postData = new StringBuilder();

            bool hasParam = false;

            IEnumeratorstringstring>> dem = parameters.GetEnumerator();

            while (dem.MoveNext())

            {

                string name = dem.Current.Key;

                string value = dem.Current.Value;

                // 忽略参数名或参数值为空的参数

                if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)

                {

                    if (hasParam)

                    {

                        postData.Append("&");

                    }

                    postData.Append(name);

                    postData.Append("=");

                    if (encode == "gb2312")

                    {

                        postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));

                    }

                    else if (encode == "utf8")

                    {

                        postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));

                    }

                    else

                    {

                        postData.Append(value);

                    }

                    hasParam = true;

                }

            }

            return postData.ToString();

        }

 

        /// 

        /// 把响应流转换为文本。

        /// 

        /// 响应流对象

        /// 编码方式

        /// 响应文本

        static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)

        {

            System.IO.Stream stream = null;

            StreamReader reader = null;

            try

            {

                // 以字符流的方式读取HTTP响应

                stream = rsp.GetResponseStream();

                reader = new StreamReader(stream, encoding);

                return reader.ReadToEnd();

            }

            finally

            {

                // 释放资源

                if (reader != null) reader.Close();

                if (stream != null) stream.Close();

                if (rsp != null) rsp.Close();

            }

        }

    }

}

本文来源:https://www.2haoxitong.net/k/doc/97c10052bceb19e8b8f6baee.html

《基于C#的加油卡接口调用代码实例.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式