微信开发之第三方支付 - 微信
白羽 2019-01-23 来源 :网络 阅读 1234 评论 0

摘要:本文将带你了解微信开发第三方支付 - 微信,希望本文对大家学微信有所帮助。

    本文将带你了解微信开发第三方支付 - 微信,希望本文对大家学微信有所帮助。



微信支付流程[支付模式二]

首先需要生成一系列键值对,   代表要提交给支付宝的业务和非业务参数

var   param = new Dictionary();param.Add("appid",                "商户ID");param.Add("body",                 "商品描述");param.Add("detail",               "商品详情");param.Add("mch_id",               "商户号");param.Add("nonce_str",          "随机码");param.Add("notify_url",           "微信异步通知地址");param.Add("out_trade_no",         "商户唯一订单号");param.Add("spbill_create_ip",     "提交请求的IP地址");param.Add("total_fee",            "价格");param.Add("trade_type",         "支付方式");

 

之后需要对这些键值对按照 key 的 ASCII   码值排序

然后重新编码成   key1=value1&key2=value2 的形式 (不包含 sign, sign_type,   以及空值的参数)

var str =   StringHelper.ConcatParamToUrl(param);

 

之后在这串新编码之后链接上 key=md5key

str = str + "key=" +   md5key;

 

并用MD5加密成一个字符串

var md5 =   StringHelper.MD5Encrypt(str);

 

最后添加到参数中

param.Add("sign",           "签名");

 

将整个参数集合并成 XML

var   xml = StringHelper.ParseXML(param);/*  商户ID商品描述     .........*/

 

提交到支付宝并接受返回值

var url =   "https://api.mch.weixin.qq.com/pay/unifiedorder";var result =   NetHelper.PostXmlToUrl(url, xml);

 

解析返回值为 XML

var xDoc = XDocument.Parse(result);var   returnCode =   xDoc.Element("xml").Element("return_code").Value;var   returnMsg =   xDoc.Element("xml").Element("return_msg").Value;var   resultCode =   xDoc.Element("xml").Element("result_code").Value;string   codeUrl =   xDoc.Element("xml").Element("code_url").Value;

 

如果都成功, 则获取 codeUrl 作为二维码,   生成到网页上

可以用 qrcode   等第三方库, 在前端后端生成都可

用户扫码支付完毕后,   微信将异步通知 notify_url 设定的地址

该函数需要用 Request.InputStream 来接受参数

之后在 notify_url 上处理业务, 并将结果编码成 xml 返回给   微信

[HttpPost]public   ActionResult WeChatNotifyUrlAsyn(){      StreamReader reader = new StreamReader(Request.InputStream);     string xmlData = reader.ReadToEnd();    string curTxt =   HttpUtility.UrlDecode(xmlData);    var   xDoc = XDocument.Parse(curTxt);    var   returnCode = xDoc.Element("xml").Element("return_code").Value;    var resultCode =   xDoc.Element("xml").Element("result_code").Value;    var outTradeNo = xDoc.Element("xml").Element("out_trade_no").Value;    var errCode =   xDoc.Element("xml").Element("err_code").Value;    var errCodeDes = xDoc.Element("xml").Element("err_code_des").Value;    xml =   string.Format("");    return Content(xml,   "text/xml");}

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程