微信支付后台服务器返回的接口通知notify_url(回调接口设计)-C/S框架网
![]() ![]() 一、线上支付开发资料网址大全 1.1 支付宝 支付宝商家中心 https://mrchportalweb.alipay.com 支付宝服务商中心 https://p.alipay.com 支付宝开放平台 https://openhome.alipay.com 支付宝开放平台文档中心:https://opendocs.alipay.com/open/00a0ut 支付宝JSAPI H5开发文档介绍:https://myjsapi.alipay.com/alipayjsapi/index.html 1.2 微信支付 二、前端、后端开发技术支持服务 ![]() C/S框架网提供微信、支付宝线上支付整体解决方案!!! ![]() 2.1 详细开发文档 ![]() 2.2 微信、支付宝支付开发教程: 2.3 微信、支付宝Web支付演示: 三、成功案例 3.1 Web/网站集成在线支付: ![]() 3.2 Winform桌面系统集成在线支付: ![]() 四、WebApi后端接口样参考 ![]() 案例代码参考1: XML Code: <xml> <appid><![CDATA[wx44495463a43b7c]]></appid> <bank_type><![CDATA[CMB_CREDIT]]></bank_type> <cash_fee><![CDATA[20]]></cash_fee> <fee_type><![CDATA[CNY]]></fee_type> <is_subscribe><![CDATA[N]]></is_subscribe> <mch_id><![CDATA[1527472222]]></mch_id> <nonce_str><![CDATA[6OQ37L7i6JN1PRLD]]></nonce_str> <openid><![CDATA[oCohp1HF7xLcx-o5QdA-hLc2ios8]]></openid> <out_trade_no><![CDATA[15557331433589231953]]></out_trade_no> <result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code> <sign><![CDATA[6C6A7CB3F3C742D0AE56687A10F4EA31]]></sign> <time_end><![CDATA[20190415203040]]></time_end> <total_fee>20</total_fee><trade_type> <![CDATA[APP]]></trade_type> <transaction_id><![CDATA[4200000290201904150837155038]]></transaction_id> </xml> //来源:C/S框架网(www.csframework.com) QQ:23404761 微信回调接口设计要求: 1,notify_url:回调通知接口HTTP地址,POST请求,不能是IP地址(必须是域名)不能带端口,预设80端口。 参考: http://www.xxxx.com/notify_url.aspx 2,必须是外网能访问HTTP地址,POST方式,微信服务器POST XML数据过来,请使用PostMan工具调试。 3,微信回调的接口中完成更改商户数据库的订单状态,操作成功给微信返回xml数据,这样微信后台就认为这笔订单交易成功,不会再次回调接口。 详情参考微信API接口说明: 更改商户数据库的订单状态: ![]() DBHelper类,引用多数据库底层接口IDatabase。 ![]() 参考:C#多数据库组件包支持MSSQL+Oracle+MySQL+用户操作手册 C# Code: using CSFramework.DB; using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// DBHelper数据层 /// </summary> public static class DBHelper { //日志数据库 private static IDatabase CreateLogDB() { string conn_log = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["Simidata_LogDB"].ToString(); return DatabaseFactory.CreateDatabase(DatabaseType.SqlServer, conn_log); } //业务数据库 private static IDatabase CreateSimidataDB() { string conn_log = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["Simidata"].ToString(); return DatabaseFactory.CreateDatabase(DatabaseType.SqlServer, conn_log); } /// <summary> /// 写日志 /// </summary> /// <param name="logType">日志类型</param> /// <param name="content">内容</param> /// <param name="ip">IP</param> public static void WriteLog(string logType, string content, string ip) { string sql = "INSERT INTO dbo.sys_Log(TS,IP,LogType,LogContent) SELECT GETDATE(),@IP,@LogType,@LogContent"; IDatabase db = CreateLogDB(); CommandHelper cmd = db.CreateCommand(sql); cmd.AddParam("@IP", ip); cmd.AddParam("@LogType", logType); cmd.AddParam("@LogContent", content); db.ExecuteCommand(cmd.Command); } /// <summary> /// 更新本地数据库订单状态 /// </summary> /// <param name="orderID">订单编号</param> /// <param name="success">true/false</param> /// <param name="WxTransactionID">微信交易号</param> /// <param name="amount">金额(分)</param> /// <returns></returns> public static bool UpdateOrderState(string orderID, bool success, string WxTransactionID, int amount) { string sql = "UPDATE dbo.tb_PayTransList SET FlagTrans=2,WxCallbackTime=GETDATE(),WxTransactionID=@WxTransactionID WHERE MerID=@MerID AND Amount*100=@Amount"; IDatabase db = CreateSimidataDB (); CommandHelper cmd = db.CreateCommand(sql); cmd.AddParam("@WxTransactionID", WxTransactionID); cmd.AddParam("@MerID", orderID); cmd.AddParam("@Amount", amount); int i = db.ExecuteCommand(cmd.Command); return i == 1; } } //来源:C/S框架网(www.csframework.com) QQ:23404761 使用PostMan测试notify_url地址: ![]() 必须返回XML格式的数据给微信服务器: C# Code: <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml> 商户本地数据库的日志信息: ![]() ![]() C#微信支付完成前端回调通知notify_url完整版源码 .NET WebApi开发框架|微信小程序后端开发框架-标准版V1.0![]() ![]() ![]() ![]()
|