/// <summary> /// 刷卡支付 /// </summary> /// <param name="authCode">扫码设备获取到的微信用户刷卡授权码</param> /// <returns></returns> public ActionResult MicroPay(string authCode) { RequestHandler payHandler = new RequestHandler(null); var sp_billno = SystemTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28); var nonceStr = TenPayV3Util.GetNoncestr(); payHandler.SetParameter("auth_code", authCode); //授权码 payHandler.SetParameter("body", "test"); //商品描述 payHandler.SetParameter("total_fee", "1"); //总金额 payHandler.SetParameter("out_trade_no", sp_billno); //产生随机的商户订单号 payHandler.SetParameter("spbill_create_ip", HttpContext.UserHostAddress()?.ToString()); //终端ip payHandler.SetParameter("appid", TenPayV3Info.AppId); //公众账号ID payHandler.SetParameter("mch_id", TenPayV3Info.MchId); //商户号 payHandler.SetParameter("nonce_str", nonceStr); //随机字符串 string sign = payHandler.CreateMd5Sign("key", TenPayV3Info.Key); payHandler.SetParameter("sign", sign);//签名 var result = TenPayV3.MicroPay(payHandler.ParseXML()); //此处只是完成最简单的支付功能,实际情况还需要考虑各种出错的情况,并处理错误,最后返回结果通知用户。 return(Content(result)); }
private void MicroPayTest(string sandBoxKey, string nonceStr) { var deviceInfo = "Senparc POS 1"; var body = "Senparc.Weixin SDK"; var totalFee = 1;//金额必须符合用例要求 var outTradeNo = SystemTime.Now.Ticks.ToString(); string detail = @"{ ""cost_price"": 1137600, ""receipt_id"": ""wx123"", ""goods_detail"": [ { ""goods_id"": ""商品编码"", ""wxpay_goods_id"": ""1001"", ""goods_name"": """", ""quantity"": 1, ""price"": 528800 }, { ""goods_id"": ""商品编码"", ""wxpay_goods_id"": ""1002"", ""goods_name"": ""iPhone6s 32G"", ""quantity"": 1, ""price"": 608800 } ] }".Replace("\r", "").Replace("\n", ""); var dataInfo = new TenPayV3MicroPayRequestData(base._appId, base._mchId, sandBoxKey, nonceStr, deviceInfo, body, detail, null, outTradeNo, totalFee.ToString(), "CNY", "127.0.0.1", null, null); var result = TenPayV3.MicroPay(dataInfo); Console.WriteLine(result.ResultXml); Assert.IsTrue(result.IsReturnCodeSuccess()); //订单查询 OrderQueryTest(sandBoxKey, nonceStr, result.transaction_id, result.out_trade_no); }