主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
这次给大家带来的是微信支付退款功能的开发。微信支付退款功能开发中有哪些注意事项?以下是实际案例。让我们来看看。
先吐槽一下微信的文档和demo。重要的步骤信息没有强调清楚。net从来没有成功过。
1.微信扫码登录
2.微信PC支付
花了好几次才打通这个退款功能。下面介绍微信支付退款功能的开发步骤:
首先,下载证书并将其导入系统。
微信要求退款要有凭证。这个证书不是官方演示中的证书,而是你需要从微信商家平台的api安全栏下载的证书。在官方证书使用示例的一个word文档中,可以看到以下几个字:C#有一点需要注意的是,除了在代码中使用apiclient_cert.p12之外,还需要将证书导入到操作系统中才能使用。1.在代码中使用它;2.导入操作系统,两者缺一不可。我不知道这两个步骤。NET版本需要大于2.0,浪费了太多时间。所以先下载证书:
下载时需要手机验证和登录密码。下载后找到证书apiclient_cert.p12,双击导入,导入时会提示输入密码。这个密码就是商家ID,而且必须是自己商家平台下载的证书。否则,将出现密码错误提示:
导入正确的提示:
第二,退码
这个地方可以直接用官方demo里的代码下载,demo。
您需要修改WxPayConfig中的几个参数:
公共常量字符串APPID = wxf 6 DD 794 bcex XXX ;;公共常量字符串MCHID = xxxx ;公共常量字符串KEY = xxxxx 849 ba 56 ab b5 6 e 05 xxxx ;;公共常量字符串APPSECRET = --- ;;//= = = = = =【证书路径设置】= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = *证书路径,请注意填写绝对路径(仅订单退款和取消需要/WxPayAPI/cert/API client _ cert . p12 ;;公共常量字符串SSLCERT _ PASSWORD = 131xxxx ;上面的SSLCERT_PASSWORD就是MCHID,也就是商家ID。如果SSLCERT_PASSWORD错误,将提示您指定的网络密码不正确:
接下来在控制器中添加退款方式,包括微信订单号、商家订单号、总金额、退款金额。从商家订单号和微信订单号中选择一个。详细参数
public action result dore fund(){ string result =退款。运行( ", 131667780120trade _ no , 1 , 1 );返回内容(结果);}退款类的运行方法:
/* * * *申请退款完整业务流程逻辑* @param transaction_id微信订单号(首选)* @param out_trade_no商家订单号* @param total_fee订单总金额* @param refund_fee退款金额* @退货退款结果(xml格式)*/public静态string run (string transaction _ id,string out _ trade _ no,string total_fee,string refund_fee) { Logger。信息( 退款正在处理中...");wx paydata data = new wx paydata();如果(!string . isnullorempty(transaction _ id))//如果存在微信订单号,则以微信订单号为准{data。SetValue( ;交易标识 ,transaction _ id);} else//微信订单号不存在,所以退款{data。SetValue( ;out _ trade _ no ,out _ trade _ no);}数据。SetValue( ;总费用 ,int。parse(total _ fee));//订单总金额数据。SetValue( ;退款_费用 ,int。Parse(退款_费用));//退款金额数据。SetValue( ;out _ refund _ no ,out _ trade _ no);//随机生成商家退款号码数据。SetValue( ;op _用户id ,WxPayConfig。MC hid);//运算符,默认为商户号wxpaydataresult = wxpayapi . refund(data);//向API提交退款申请,接收返回的数据记录器。信息( 退款过程完成,结果: +结果。to XML());返回结果。ToPrintStr();}退款:方式
/* * * *请求退款* @param WxPayData inputObj参数提交给请求退款API * @ param int time out time out * @ throws WxPayException *当@return成功时,返回接口调用结果,其他异常抛出*/public static wxpaydatarefund(wxpaydatainputobj,int time out = 6){ string URL = " https://api.mch.weixin.qq.com/secapi/pay/refund&;;//检测所需的参数,如果(!inputObj。IsSet( ;out _ trade _ no ) !inputObj。IsSet( ;交易标识 )){ throw new WxPayException( ;退款申请界面中out_trade_no和transaction_id至少要填写一项!");} else if(!inputObj。IsSet( ;out _ refund _ no )){ throw new WxPayException( ;必需参数out_refund_no!退款界面中缺失。");} else if(!inputObj。IsSet( ;总费用 )){ throw new WxPayException( ;必需参数total_fee!退款申请界面中缺失。");} else if(!inputObj。IsSet( ;退款_费用 )){ throw new WxPayException( ;必需的参数退款_费用!退款申请界面中缺失。");} else if(!inputObj。IsSet( ;op _用户id )){ throw new WxPayException( ;退款接口缺少必需的参数op_user_id!");} inputObj。SetValue( ;appid ,WxPayConfig。APPID);//公共帐户ID inputObj。SetValue( ;mch _ id ,WxPayConfig。MC hid);//商户号inputObj。SetValue( ;nonce _ str ,Guid。NewGuid()。ToString()。替换(- ;, "));//随机字符串inputObj。SetValue( ;签名 ,inputObj。MakeSign());//签名字符串xml = inputObj。to XML();变量开始=日期时间。现在;日志。调试(WxPayApi , 退款请求: +XML);字符串响应= HttpService。Post(xml,url,true,超时);//调用HTTP通信接口向API日志提交数据。调试(WxPayApi , 退款回应: +回应);var end =日期时间。现在;int timeCost = (int)((end - start)。total毫秒);//获取接口需要时间//将xml格式的结果转换成对象返回WxPayData result = new WxPayData();结果。FromXml(响应);ReportCostTime(url,timeCost,result);//测量速度并上报返回结果;}记得在生产环境中修改成自己的参数。如果所有参数都正确,它将返回:
而且,微信马上收回了退款通知:
总结:至此,退款功能已过。其实如果参数和流程正确的话,这个地方还是很简单的。微信的规定是一年内可以申请交易退款。
相信你看完这个案例已经掌握了方法。更多精彩请关注主机参考其他相关文章!
推荐阅读:
如何使用ss3的渐变
jQuery,Angular和node中的Promise的详细解释
H5视频播放库video.js详解以上是微信支付退款功能开发的详细内容。请多关注主机参考其他相关文章!
这几篇文章你可能也喜欢:
- 最适合Android开发的Linux发行版是什么?(linux android开发)
- 哪个Linux系统最适合Android开发?
- linux在嵌入式系统开发领域的广泛应用(嵌入式Linux应用场景)
- 微信官方账号开发详细介绍(微信官方账号开发方法)
- 传智和黑马微信公众平台开展视频资料共享(传智黑马培训学校怎么样)
本文由主机参考刊发,转载请注明:微信支付退款功能开发(微信支付退款api) https://zhujicankao.com/80870.html
评论前必须登录!
注册