Example #1
0
        public Order Query(Order order)
        {
            PayAndQueryFulu pay1 = new PayAndQueryFulu();

            string result = pay1.QueryOrder(order);

            // 直充商品:
            //{
            //    "code": 0,
            //    "message": "接口调用成功",
            //    "result": "{\"area\":\"电信一区\",\"buy_num\":1,\"cards\":null,\"charge_account\":\"888888\",\"create_time\":\"2019-07-01 17:53:32\",\"customer_order_no\":\"201906281030191013526\",\"finish_time\":\"2019-07-01 17:53:41\",\"operator_serial_number\":\"--\",\"order_id\":\"19070134869845421753\",\"order_price\":40.0,\"order_state\":\"success\",\"order_type\":4,\"product_id\":10000373,\"product_name\":\"qb5测试代充账号功能\",\"server\":\"逐鹿中原\",\"type\":\"Q币\"}",
            //    "sign": "06f351b34d9b02bc13bc62e66bdab2c8"
            //}
            //卡密商品:
            //{
            //    "code": 0,
            //    "message": "接口调用成功",
            //    "result": "{\"area\":null,\"buy_num\":2,\"cards\":[{\"CardNumber\":\"12nCp6X/nALmrvr1erxK+D4L8n/kqz/RItKWUfvZrCU=\",\"CardPwd\":\"9HeOgdv+NpLihh2+5Gm0Mj4L8n/kqz/RItKWUfvZrCU=\",\"CardDeadline\":\"2019-06-30 11:15:32\"},{\"CardNumber\":\"12nCp6X/nALmrvr1erxK+BzfvN8D1qbXOYunJrydEWA\",\"CardPwd\":\"9HeOgdv+NpLihh2+5Gm0MhzfvN8D1qbXOYunJrydEWA=\",\"CardDeadline\":\"2019-06-30 11:15:32\"}],\"charge_account\":null,\"create_time\":\"2019-07-01 17:55:38\",\"customer_order_no\":\"201906281230191013521\",\"finish_time\":\"2019-07-01 17:55:41\",\"operator_serial_number\":\"\",\"order_id\":\"19070116656844081755\",\"order_price\":8.9999,\"order_state\":\"success\",\"order_type\":3,\"product_id\":10000481,\"product_name\":\"入库出库专用卡密库存不要随便使用-jfs\",\"server\":null,\"type\":null}",
            //    "sign": "d440344a46479d3fa61883bcc2f1d983"
            //}
            JavaScriptObject jsonObj = (JavaScriptObject)JavaScriptConvert.DeserializeObject(result);

            string code    = jsonObj["code"].ToString();
            string message = jsonObj["message"].ToString();

            string resultJson = jsonObj["result"].ToString();

            JavaScriptObject jsonObj2    = (JavaScriptObject)JavaScriptConvert.DeserializeObject(resultJson);
            string           order_id    = jsonObj2["order_id"].ToString();
            string           order_state = jsonObj2["order_state"].ToString();

            //订单状态: (success:成功,processing:处理中,failed:失败,untreated:未处理)

            switch (order_state)
            {
            case "success":
                order.RechargeStatus = (int)OrderRechargeStatus.successful;
                order.RechargeMsg    = EnumService.GetDescription(OrderRechargeStatus.successful) + "-" + order_state;
                return(order);

            case "failed":

                order.RechargeStatus = (int)OrderRechargeStatus.failure;

                order.RechargeMsg = EnumService.GetDescription(OrderRechargeStatus.failure) + "-" + order_state;
                return(order);

            case "processing":
            case "untreated":
            default:
                break;
            }

            return(order);
        }
Example #2
0
        public Order Charge(Order order)
        {
            try
            {
                PayAndQueryFulu pay1 = new PayAndQueryFulu();

                string result = pay1.SubmitOrder(order);

                //{
                //    "code": 0,
                //    "message": "接口调用成功",
                //    "result": "{\"area\":\"电信一区\",\"buy_num\":1,\"charge_account\":\"888888\",\"create_time\":null,\"customer_order_no\":\"201906281030191013526\",\"finish_time\":null,\"operator_serial_number\":\"\",\"order_id\":\"19062837751058701652\",\"order_price\":1.1,\"order_state\":\"untreated\",\"order_type\":4,\"product_id\":10000001,\"product_name\":\"腾讯Q币直充一元\",\"server\":\"逐鹿中原\",\"type\":\"Q币\"}",
                //    "sign": "1d158f0089b7a091fba0b5df23cd80d5"
                //}

                if (!result.Contains("{"))
                {
                    order.RechargeStatus = (int)OrderRechargeStatus.suspicious;
                    order.RechargeMsg    = result;
                    return(order);
                }

                JavaScriptObject jsonObj = (JavaScriptObject)JavaScriptConvert.DeserializeObject(result);

                string code    = jsonObj["code"].ToString();
                string message = jsonObj["message"].ToString();


                if (code == "0")
                {
                    order.RechargeStatus = (int)OrderRechargeStatus.Submit;
                }
                else if (code == "1000" || code == "1001" || code == "1002" || code == "1003" || code == "1004" ||
                         code == "1006" || code == "1007" || code == "1008" || code == "1009" || code == "1010" ||
                         code == "1012" || code == "1013" || code == "1014" || code == "1015" || code == "1016" ||
                         code == "1017" || code == "1018" || code == "1019" || code == "2002" || code == "2003" ||
                         code == "3000" || code == "3001" || code == "3002" || code == "3003" || code == "3004" ||
                         code == "3005" || code == "3008" || code == "4000" || code == "4001" || code == "4002" || code == "4004")
                {
                    order.RechargeStatus = (int)OrderRechargeStatus.failure;
                    order.RechargeMsg    = message;
                }
                else
                {
                    order.RechargeStatus = (int)OrderRechargeStatus.suspicious;
                    order.RechargeMsg    = message;

                    new GetAndNotifySUPOrders().notigyOrderToSUP(order);
                }


                #region code
                //0	接口调用成功	接口调用成功,按正常流程处理;下单接口中,接口调用成功表示下单成功,但是下单成功不表示订单充值成功,要想获得订单的充值结果,需要调用查单接口来获得订单充值状态。
                //1000	必须传入API接口名称	method参数不能为空,必须传入API接口名称参数。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1001	无效的API接口名称	method接口方法名称错误,请检查。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1002	必须传入时间戳	timestamp参数不能为空,必须传入时间戳参数。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1003	时间戳格式错误	时间戳格式为:yyyy-MM-dd HH:mm:ss,请按要求传入参数。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1004	时间戳已超过有效期	接口请求服务器时间如果小于当前时间10分钟,则时间戳会超过接口请求有效期,请同步接口请求服务器时间。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1005	必须传入app_key	app_key参数不能为空,必须传入app_key参数。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1006	无效的app_key	app_key参数错误,请在福禄商户控制台->充值API2->应用配置->秘钥管理中的app_key项仔细核对。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1007	必须传入版本号	version参数不能为空,必须传入版本号,目前的版本号参数值为:2.0。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1008	版本号错误	传入的版本号参数值错误,目前的版本号参数值为:2.0。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1009	必须传入format格式	format参数不能为空,必须传入format格式参数;目前的format格式仅支持json。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1010	format格式错误	format格式参数值错误,目前的format格式仅支持json。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1011	必须传入编码格式	charset参数为空,必须传入编码格式参数。目前的charset编码格式仅支持utf-8。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1012	编码格式错误	charset编码格式参数值错误,目前的charset编码格式仅支持utf-8。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1013	必须传入签名加密类型	sign_type参数为空,必须传入签名加密类型。目前的sign_type签名加密类型仅支持md5。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1014	签名加密类型错误	sign_type签名加密类型参数值错误,目前的sign_type签名加密类型仅支持md5。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1015	必须传入签名	sign参数为空,必须传入签名。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1016	签名错误	传入的签名sign值与签名规则计算出的值比对不上。对于下单接口,调整参数后,可重新下单,也可失败订单。入参签名规则为: 1、将所有公共参数包装成对象object; 2、将object序列化为json字符串objectJson; 3、将objectJson转化为字符数组charObjectArray,然后将charObjectArray进行Array.Sort()排序; 4、将排序后的charObjectArray转化为字符串objectStr,然后在objectStr后直接拼接应用秘钥; 5、将第4步拼接了应用秘钥的字符串进行md5,最后将得到的值转化为小写字符串即得到sign签名值。
                //1017	必须传入请求参数集合	biz_content参数为空,必须传入请求参数集合。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1018	缺少必要参数	接口请求参数缺少必要参数,请仔细检查。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //1019	访问IP不在IP白名单内	接口请求服务器的外网IPv4格式IP地址没有添加到福禄商户控制台->应用配置->IP白名单中,请将接口响应信息中的IP地址添加进去(目前各接口没有校验IP白名单,可不必配置IP白名单)。对于下单接口,调整参数后,可重新下单,也可失败订单。
                //2002	无效的商户或应用	用户接口中,根据传入参数,找到了商户信息,但该商户的审核状态或认证状态不正常;下单接口中,可能存在该商户不存在、商户未认证、商户未审核、商户应用被禁用这几种情况。请联系运营处理。对于下单接口,可失败订单。
                //2003	商户或应用配置异常	福禄商户控制台->应用配置->秘钥配置中的配置信息异常,导致在各接口中没有找到商户编号信息,或下单和查单接口中没有获取到充值API2应用配置的应用编号信息。请联系运营处理。对于下单接口,可重试下单,也可失败订单。
                //3000	必须传入商品编号	获得商品信息接口中,缺少请求参数商品编号product_id。
                //3001	商品不存在或无法购买	获得商品信息接口中,根据传入参数,内部请求流程Code非0或没有找到商品信息或商品信息被标记为了删除;直充下单和卡密下单接口中,请求参数商品编号product_id值小于0;下单接口和商品接口中商品没有设置密价组或被删除;请联系运营处理。对于下单接口,可失败订单。
                //3002	商品已下架	下单接口中,商品已下架。请联系运营处理。订单可以失败处理。
                //3003	商品维护中	下单接口中,商品维护中。请联系运营处理。订单可以失败处理。
                //3004	商品在维护期内	下单接口中,商品在维护期内。请联系运营处理。订单可以失败处理。
                //3005	商品库存不足	下单接口中,商品库存不足。请联系运营处理。订单可以失败处理。
                //3008	商品类型错误	直充下单接口或卡密下单接口中,用直充下单接口下了卡密商品,或用卡密下单接口下了直充商品,就会返回商品类型错误,请使用正确类型的商品下单。订单可以失败处理。
                //4000	必须传入外部订单号	下单或查单接口中,外部订单号customer_order_no参数为空,必须传入外部订单号;对于下单接口,可重试下单,也可失败订单。
                //4001	购买数量必须大于0	直充下单接口或卡密下单接口中,购买数量buy_num参数小于0,购买数量必须大于0。对于这两个下单接口,参数调整后,可重试下单,也可失败订单。
                //4002	必须传入充值账号	非卡密下单接口中,充值账号charge_account参数为空,必须传入充值账号;对于这些接口,可重试下单,也可失败订单。
                //4004	充值账号在黑名单中	非卡密下单接口中,充值账号在黑名单中。请联系运营处理。订单可失败处理。
                //4008	添加订单失败	下单接口中,下单发生异常。请调用查单接口持续查询订单状态。如果查单返回4011(订单不存在),并且10分钟后,还是返回4011状态,则订单可以失败。注意:不要轻易失败订单,请一定要查单来确认订单状态。
                //4009	执行下单超时,请查单确认下单结果	下单接口中,下单发生异常。请调用查单接口持续查询订单状态。如果查单返回4011(订单不存在),并且10分钟后,还是返回4011状态,则订单可以失败。注意:不要轻易失败订单,请一定要查单来确认订单状态。
                //4010	外部订单号已存在	下单接口中,已正常下单成功,请不要重复提交订单下单。请调用查单接口持续查询订单状态,直到订单有最终充值结果。
                //4012	查询异常,请重试	用户接口、获得商品信息接口、获得商品模板接口、查单接口中,查询出现异常。请联系运营处理。查单接口中,请持续查询订单状态。如果查单返回4011(订单不存在)或4012(查询异常,请重试),并且10分钟后,还是返回这两个状态,则订单可以失败。注意:不要轻易失败订单,请一定要查单来确认订单状态。
                //5000	系统异常	系统异常,联系运营处理。对于下单接口,请调用查单接口持续查询订单状态。如果查单返回4011(订单不存在),并且10分钟后,还是返回4011状态,则订单可以失败。注意:不要轻易失败订单,请一定要查单来确认订单状态。
                #endregion
            }
            catch (Exception ex)
            {
                WriteLog.Write("方法:Charge,订单号:" + order.OrderInsideID + " Fulu 提交异常:" + ex.Message, LogPathFile.Exception.ToString());
            }
            return(order);
        }