public void handleRefundResultTest() { BCRefund refund = new BCRefund("10000000", "20000000", 100); string respString = "{\"result_msg\":\"OK\",\"resultCode\":0,\"errMsg\":\"OK:\",\"err_detail\":\"\",\"result_code\":0,\"id\":\"c6bb96d8-f610-48a0-bd72-451886ed3ce9\",\"url\":\"https://mapi.alipay.com/gateway.do?_input_charset=UTF-8&app_id=c37d661d-7e61-49ea-96a5-68c34e83db3b&batch_no=20151222888bb713&batch_num=1&detail_data=2015122221001004460089671321%5E0.01%5E%E5%8D%8F%E8%AE%AE%E9%80%80%E6%AC%BE¬ify_url=http%3A%2F%2Fpayservice.beecloud.cn%2Fbcpay%2FaliRefundDynamic%2Fc37d661d-7e61-49ea-96a5-68c34e83db3b_c6bb96d8-f610-48a0-bd72-451886ed3ce9.php&partner=2088711322600312&refund_date=2015-12-22+06%3A53%3A11&seller_user_id=2088711322600312&service=refund_fastpay_by_platform_pwd&sign=fYf7CmvKF4OqLIsyPcGakgck6uGNz9FIZLrywyc5lbYN6GnXu5zdBvLyIBnbjVPi2Vkz0CD9m2Lbrj%2B%2Fdvr5OznzXrpTSQu481rkLIfSobxNLWNZZG3oZaaEYmwFTHJ%2BGDRInDxAE1hQNcDyrZRDco5pzQ9P7pwRusZnrB8QgJg%3D&sign_type=RSA\",\"out_refund_no_ali_ex\":\"20151222888bb7132088711322600312\"}"; BCRefund actual = BCPay.handleRefundResult(respString, refund); Assert.IsNotNull(actual.url); }
public void prepareRefundParametersTest() { BCRefund refund = new BCRefund("10000000", "20000000", 100); refund.channel = "WX"; refund.optional = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } }; string paraString = "\"channel\":\"WX\",\"refund_no\":\"20000000\",\"bill_no\":\"10000000\",\"refund_fee\":100,\"refund_account\":0,\"optional\":{\"key1\":\"value1\",\"key2\":\"value2\"},\"need_approval\":false}"; BeeCloud.registerApp("c5d1cba1-5e3f-4ba0-941d-9b0a371fe719", "39a7a518-9ac8-4a9e-87bc-7885f33cf18c", "e14ae2db-608c-4f8b-b863-c8c18953eef2", null); string actual = BCPay.prepareRefundParameters(refund); Assert.IsTrue(actual.Contains(paraString)); }
/// <summary> /// 退款订单查询 /// </summary> /// <param name="channel">渠道类型 /// 根据不同场景选择不同的支付方式 /// 必填 /// 可以通过enum BCPay.QueryChannel获取 /// channel的参数值含义: /// WX: 微信所有类型支付 /// WX_APP: 微信手机APP支付 /// WX_NATIVE: 微信公众号二维码支付 /// WX_JSAPI: 微信公众号支付 /// ALI: 支付宝所有类型支付 /// ALI_APP: 支付宝APP支付 /// ALI_WEB: 支付宝网页支付 /// ALI_QRCODE: 支付宝内嵌二维码支付 /// UN: 银联所有类型支付 /// UN_APP: 银联APP支付 /// UN_WEB: 银联网页支付</param> /// <param name="billNo">商户订单号 /// </param> /// <param name="refundNo">商户退款单号 /// </param> /// <param name="startTime">起始时间 /// 毫秒时间戳, 13位, 可以使用BCUtil.GetTimeStamp()方法获取 /// 选填</param> /// <param name="endTime">结束时间 /// 毫秒时间戳, 13位, 可以使用BCUtil.GetTimeStamp()方法获取 /// 选填</param> /// <param name="skip">查询起始位置 /// 默认为0。设置为10表示忽略满足条件的前10条数据 /// 选填 /// </param> /// <param name="limit">查询的条数 /// 默认为10,最大为50。设置为10表示只返回满足条件的10条数据 /// 选填 /// </param> /// <returns> /// BCRefundQuerytResult /// </returns> public static BCRefundQuerytResult BCRefundQueryByCondition(string channel, string billNo, string refundNo, long?startTime, long?endTime, int?skip, int?limit) { Random random = new Random(); string payQueryUrl = BCPrivateUtil.mLocalDefaultHosts[random.Next(0, 4)] + BCConstants.version + BCConstants.refundsURL; long timestamp = BCUtil.GetTimeStamp(DateTime.Now); JsonData data = new JsonData(); data["app_id"] = BCCache.Instance.appId; data["app_sign"] = BCPrivateUtil.getAppSignature(BCCache.Instance.appId, BCCache.Instance.appSecret, timestamp.ToString()); data["timestamp"] = timestamp; data["channel"] = channel; data["bill_no"] = billNo; data["refund_no"] = refundNo; data["start_time"] = startTime; data["end_time"] = endTime; data["skip"] = skip; data["limit"] = limit; string paraString = data.ToJson(); try { string url = payQueryUrl + "?para=" + HttpUtility.UrlEncode(paraString, Encoding.UTF8); HttpWebResponse response = BCPrivateUtil.CreateGetHttpResponse(url, BCCache.Instance.networkTimeout, null, null); string respString = BCPrivateUtil.GetResponseString(response); JsonData responseData = JsonMapper.ToObject(respString); BCRefundQuerytResult result = new BCRefundQuerytResult(); result.resultCode = int.Parse(responseData["result_code"].ToString()); result.resultMsg = responseData["result_msg"].ToString(); if (result.resultCode == 0) { result.count = int.Parse(responseData["count"].ToString()); if (responseData["refunds"].IsArray) { List <BCRefund> refunds = new List <BCRefund>(); foreach (JsonData refundData in responseData["refunds"]) { BCRefund refund = new BCRefund(); refund.title = refundData["title"].ToString(); refund.billNo = refundData["bill_no"].ToString(); refund.refundNo = refundData["refund_no"].ToString(); refund.totalFee = int.Parse(refundData["total_fee"].ToString()); refund.refundFee = int.Parse(refundData["refund_fee"].ToString()); refund.channel = refundData["channel"].ToString(); refund.finish = (bool)refundData["finish"]; refund.result = (bool)refundData["result"]; refund.createdTime = BCUtil.GetDateTime((long)refundData["created_time"]); refunds.Add(refund); } result.refunds = refunds; } } else { result.errDetail = responseData["err_detail"].ToString(); } return(result); } catch (Exception e) { BCRefundQuerytResult result = new BCRefundQuerytResult(); result.resultCode = 99; result.resultMsg = e.Message; return(result); } }
protected void QueryGridView_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "refund") { int rowIndex = Convert.ToInt32(e.CommandArgument); string billNo = bills[rowIndex].billNo; int totalFee = bills[rowIndex].totalFee; if (typeChannel == "Ali") { BCRefund refund = new BCRefund(billNo, DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), totalFee); refund.channel = BCPay.RefundChannel.ALI.ToString(); try { refund = BCPay.BCRefundByChannel(refund); Response.Redirect(refund.url); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } if (typeChannel == "WX") { BCRefund refund = new BCRefund(billNo, DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), totalFee); refund.channel = BCPay.RefundChannel.WX.ToString(); try { refund = BCPay.BCRefundByChannel(refund); Response.Write("<script>alert('退款成功!')</script>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } if (typeChannel == "UN") { BCRefund refund = new BCRefund(billNo, DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), totalFee); refund.channel = BCPay.RefundChannel.UN.ToString(); try { refund = BCPay.BCRefundByChannel(refund); Response.Write("<script>alert('退款成功!')</script>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } if (typeChannel == "JD") { BCRefund refund = new BCRefund(billNo, DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), totalFee); refund.channel = BCPay.RefundChannel.JD.ToString(); try { refund = BCPay.BCRefundByChannel(refund); Response.Write("<script>alert('退款成功!')</script>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } if (typeChannel == "YEE") { BCRefund refund = new BCRefund(billNo, DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), totalFee); refund.channel = BCPay.RefundChannel.YEE.ToString(); try { refund = BCPay.BCRefundByChannel(refund); Response.Write("<script>alert('退款成功!')</script>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } if (typeChannel == "KUAIQIAN") { BCRefund refund = new BCRefund(billNo, DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), totalFee); refund.channel = BCPay.RefundChannel.KUAIQIAN.ToString(); try { refund = BCPay.BCRefundByChannel(refund); Response.Write("<script>alert('退款成功!')</script>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } if (typeChannel == "BC_GATEWAY") { BCRefund refund = new BCRefund(billNo, DateTime.Today.ToString("yyyyMMdd") + BCUtil.GetUUID().Substring(0, 8), totalFee); refund.channel = BCPay.RefundChannel.BC.ToString(); try { refund = BCPay.BCRefundByChannel(refund); Response.Write("<script>alert('退款成功!')</script>"); } catch (Exception excption) { Response.Write("<span style='color:#00CD00;font-size:20px'>" + excption.Message + "</span><br/>"); } } } }