[转载]微信公众号支付开发遇到的几个问题 – 南山北缘 – 博客园

来源: [转载]微信公众号支付开发遇到的几个问题 – 南山北缘 – 博客园

1.调用统一下单接口验签失败

https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_1

开始的时候是string Format格式填写参数,错。后来翻看其他博客和微信demo,才得知应该这样写:

复制代码
//将数据添加到字典中
SortedDictionary<string, string> m_values = new SortedDictionary<string, string>();
            m_values.Add("appid", appID);
            m_values.Add("body", bodymsg);
            m_values.Add("mch_id", mch_id);
            m_values.Add("nonce_str", nonce_str);
            m_values.Add("notify_url", notify_url);
            m_values.Add("openid", openID);
            m_values.Add("out_trade_no", orderId);
            m_values.Add("spbill_create_ip", spbill_create_ip);
            m_values.Add("total_fee", total_fee.ToString());
            m_values.Add("trade_type", "JSAPI");
            string signkey = WXDes.TotUrl(m_values); //拼接数据
复制代码
复制代码
//拼接字符串key=value
  public static string TotUrl(SortedDictionary<string, string> m_values)
        {
            int i = 0;
            StringBuilder sb = new StringBuilder();
            foreach (KeyValuePair<string, string> temp in m_values)
            {
                if (temp.Value == "" || temp.Value == null || temp.Key.ToLower() == "sign")
                {
                    continue;
                }
                i++;
                sb.Append(temp.Key.Trim() + "=" + temp.Value.Trim() + "&");
            }
            sb.Append("key=" + ConfigHelp.APISign);
            string signkey = sb.ToString();
            return signkey;
        }
复制代码

2.调用统一下单 body编码问题

刚开始编写是直接body=”你好”直接赋值的,但是微信返回码说没有UTF-8编码,然后又HttpUtility.UrlEncode(“会员 充值”, Encoding.GetEncoding(“UTF-8”)),结果支付页面显示编码后的文字,然后看到帖子说直接赋值就ok,又一直,果真!!!!

body=”直接赋值”

3.API输入密码框页面无法显示

拿到微信返回的prepay_id,访问API接口,是将生成的json返回到前端,alert(json字符串)没有任何问题,传入微信就报缺少参数,几经周折

如此将返回json转换一下 JSON.parse(json)

分享到: 更多 (0)