首页新闻找找看学习计划

微信支付成功后如何回调参数?

0
悬赏园豆:40 [已解决问题] 解决于 2016-01-16 08:36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WxPayAPI;

namespace UI
{
    public partial class NativeNotifyPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            NativeNotify nativeNatify = new NativeNotify(this);
            nativeNatify.ProcessNotify();
        }
    }
}

这是支付成功结果页的后台代码,如何能回调参数呢,求赐教!!

dkh的主页 dkh | 初学一级 | 园豆:108
提问于:2016-01-15 10:30
< >
分享
最佳答案
0

回调参数?是指获取微信支付成功后回调给你的参数么?支付成功后微信会带参数调用notify_url,可以使用HttpContext.Current.Request获取,具体参数可以参考微信文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7

收获园豆:25
webaspx | 小虾三级 |园豆:1993 | 2016-01-15 10:56
            string return_code = HttpContext.Current.Request["return_code"];

是这样获取吗?

dkh | 园豆:108 (初学一级) | 2016-01-15 11:30

@dkh: 是的

webaspx | 园豆:1993 (小虾三级) | 2016-01-15 11:35

@webaspx: 能直接这样获取参数?

微信返回的是这样的格式

<xml>
  <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
  <attach><![CDATA[支付测试]]></attach>
  <bank_type><![CDATA[CFT]]></bank_type>
  <fee_type><![CDATA[CNY]]></fee_type>
  <is_subscribe><![CDATA[Y]]></is_subscribe>
  <mch_id><![CDATA[10000100]]></mch_id>
  <nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>
  <openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>
  <out_trade_no><![CDATA[1409811653]]></out_trade_no>
  <result_code><![CDATA[SUCCESS]]></result_code>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>
  <sub_mch_id><![CDATA[10000100]]></sub_mch_id>
  <time_end><![CDATA[20140903131540]]></time_end>
  <total_fee>1</total_fee>
  <trade_type><![CDATA[JSAPI]]></trade_type>
  <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
</xml>
dkh | 园豆:108 (初学一级) | 2016-01-15 15:57

@dkh: 你可以下个Senparc.Weixin.mp 这个来用,获取回调值已经封装好了的。

public ResponseHandler(HttpContext httpContext)
        {
            Parameters = new Hashtable();
            XmlMap = new Hashtable();

            this.HttpContext = httpContext ?? HttpContext.Current;
            NameValueCollection collection;
            //post data
            if (this.HttpContext.Request.HttpMethod == "POST")
            {
                collection = this.HttpContext.Request.Form;
                foreach (string k in collection)
                {
                    string v = (string)collection[k];
                    this.SetParameter(k, v);
                }
            }
            //query string
            collection = this.HttpContext.Request.QueryString;
            foreach (string k in collection)
            {
                string v = (string)collection[k];
                this.SetParameter(k, v);
            }
            if (this.HttpContext.Request.InputStream.Length > 0)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(this.HttpContext.Request.InputStream);
                XmlNode root = xmlDoc.SelectSingleNode("xml");
                XmlNodeList xnl = root.ChildNodes;

                foreach (XmlNode xnf in xnl)
                {
                    XmlMap.Add(xnf.Name, xnf.InnerText);
                    this.SetParameter(xnf.Name, xnf.InnerText);
                }
            }
        }

 

webaspx | 园豆:1993 (小虾三级) | 2016-01-15 17:14
其他回答(1)
0

xmlMap["attach"]  ,这个就是商家数据包原样返回的。可以把参数放在这个里。这样就能在回调的时候拿到了。

收获园豆:15
贫民窟大侠 | 园豆:4270 (老鸟四级) | 2016-01-15 16:26

怎么能放在xmlMap里呢?我没做过这样的数据操作,详细说明一下吧,谢谢

支持(0) 反对(0) dkh | 园豆:108 (初学一级) | 2016-01-15 16:33

@dkh: 你应该先做好这个,支付接口创建并请求成功,用户打开付款操作之后,转到你的回调页面。在你创建支付接口的时候构建好你的参数。

RequestHandler paySignReqHandler = new RequestHandler(); //我们现在用到的是这个

paySignReqHandler.init();
//设置package订单参数
paySignReqHandler.setParameter("appid", app.InterfaceAppId); //appid 这个你得自己去构建。

在这里的时候可以设置attach参数

Hashtable  xmlMap=new Hashtable();这个由你的判断签名的方法里out出来。

也就是你的回调页面。你可以在这里取得回调参数。

支持(0) 反对(0) 贫民窟大侠 | 园豆:4270 (老鸟四级) | 2016-01-15 16:48

@贫民窟大侠: Hashtable  xmlMap=new Hashtable(); 这个还是没有明白,有具体的例子吗?

支持(0) 反对(0) dkh | 园豆:108 (初学一级) | 2016-01-15 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册