微信扫码支付.net SDK DEMO,运行出错

zks1071 2016-12-12 09:32:50
在微信官方下载的DEMO,在进入扫码支付页就报错,根据错误行号是扫码支付方式二出错的

//生成扫码支付模式二url
string url2 = nativePay.GetPayUrl("123456789");

下面是出错提示页面:

未将对象引用设置到对象的实例。

行 52: WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
行 53: string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接


上面这个方法的全代码
public string GetPayUrl(string productId)
{
Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");

WxPayData data = new WxPayData();
data.SetValue("body", "订单号:201612071432280");//商品描述
data.SetValue("attach", "edf");//附加数据
data.SetValue("out_trade_no", "123341000220161210134649910");//随机字符串
data.SetValue("total_fee", 1);//总金额
data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
data.SetValue("goods_tag", "jjj");//商品标记
data.SetValue("trade_type", "NATIVE");//交易类型
data.SetValue("product_id", "201612071432280");//商品ID

WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接

Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url);
return url;
}

public static WxPayData UnifiedOrder(WxPayData inputObj, int timeOut = 6)
{
string url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
//检测必填参数
if (!inputObj.IsSet("out_trade_no"))
{
throw new WxPayException("缺少统一支付接口必填参数out_trade_no!");
}
else if (!inputObj.IsSet("body"))
{
throw new WxPayException("缺少统一支付接口必填参数body!");
}
else if (!inputObj.IsSet("total_fee"))
{
throw new WxPayException("缺少统一支付接口必填参数total_fee!");
}
else if (!inputObj.IsSet("trade_type"))
{
throw new WxPayException("缺少统一支付接口必填参数trade_type!");
}

//关联参数
if (inputObj.GetValue("trade_type").ToString() == "JSAPI" && !inputObj.IsSet("openid"))
{
throw new WxPayException("统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!");
}
if (inputObj.GetValue("trade_type").ToString() == "NATIVE" && !inputObj.IsSet("product_id"))
{
throw new WxPayException("统一支付接口中,缺少必填参数product_id!trade_type为JSAPI时,product_id为必填参数!");
}

//异步通知url未设置,则使用配置文件中的url
if (!inputObj.IsSet("notify_url"))
{
inputObj.SetValue("notify_url", WxPayConfig.NOTIFY_URL);//异步通知url
}

inputObj.SetValue("appid", WxPayConfig.APPID);//公众账号ID
inputObj.SetValue("mch_id", WxPayConfig.MCHID);//商户号
inputObj.SetValue("spbill_create_ip", WxPayConfig.IP);//终端ip
inputObj.SetValue("nonce_str", GenerateNonceStr());//随机字符串

//签名
inputObj.SetValue("sign", inputObj.MakeSign());
string xml = inputObj.ToXml();

var start = DateTime.Now;

Log.Debug("WxPayApi", "UnfiedOrder request : " + xml);
string response = HttpService.Post(xml, url, false, timeOut);
Log.Debug("WxPayApi", "UnfiedOrder response : " + response);

var end = DateTime.Now;
int timeCost = (int)((end - start).TotalMilliseconds);

WxPayData result = new WxPayData();
result.FromXml(response);

ReportCostTime(url, timeCost, result);//测速上报

return result;
}


...全文
467 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43292584 2020-11-03
  • 打赏
  • 举报
回复
这问题最后怎么解决的,求问
weixin_43292584 2020-11-03
  • 打赏
  • 举报
回复
我也是,死在了这一步
qq_38013699 2017-08-10
  • 打赏
  • 举报
回复
我来取经来了
qq_38013699 2017-08-10
  • 打赏
  • 举报
回复
问题解决了吗?

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧