100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 手机版支付宝html页面 支付宝手机网页支付代码

手机版支付宝html页面 支付宝手机网页支付代码

时间:2023-11-03 01:01:43

相关推荐

手机版支付宝html页面 支付宝手机网页支付代码

支付宝手机页面支付功能的代码详解:

页面一:发起支付

using System;

using System.Collections.Generic;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using mon;

using DTcms.DBUtility;

using mon.Data.SQLServer;

using mon.Request;

using DTcms.API.Payment.alipaymb;

namespace DTcms.Web.dev

{

///

/// 用户绑定类

///

//alipay1 这个类可以自定义 必须和上面保持一致

public class alipaymb : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

//业务逻辑放在这里

//业务逻辑放在这里

//发起支付s

//读取站点配置信息

Model.siteconfig siteConfig = new BLL.siteconfig().loadConfig();

//===============================建立请求==================================

string GATEWAY_NEW = "/service/rest.htm?"; //支付宝网关地址

string format = "xml"; //返回格式,必填,不需要修改

string v = "2.0"; //必填,不需要修改

string req_id = DateTime.Now.ToString("yyyyMMddHHmmss"); //必填,须保证每次请求都是唯一

string order_no = "C" + req_id;

string Notify_url = "/dev/alipaymb_notify_url.ashx";//业务逻辑地址

string Return_url = "/dev/alipaymb_return_url.ashx";//成功通知地址

string subject = "";//标题

string order_amount = context.Request["order_amount"];//金额

//请求业务参数详细,必填

string req_dataToken = "" + Notify_url + ""

+ Return_url + "" + Config.Seller_email + ""

+ order_no + "" + siteConfig.webname + "-" + subject + "" + order_amount.ToString()

+ "";

//把请求参数打包成数组

Dictionary sParaTempToken = new Dictionary();

sParaTempToken.Add("partner", Config.Partner);

sParaTempToken.Add("_input_charset", Config.Input_charset.ToLower());

sParaTempToken.Add("sec_id", Config.Sign_type.ToUpper());

sParaTempToken.Add("service", "alipay.wap.trade.create.direct");

sParaTempToken.Add("format", format);

sParaTempToken.Add("v", v);

sParaTempToken.Add("req_id", req_id);

sParaTempToken.Add("req_data", req_dataToken);

//建立请求

string sHtmlTextToken = Submit.BuildRequest(GATEWAY_NEW, sParaTempToken);

//URLDECODE返回的信息

System.Text.Encoding code = System.Text.Encoding.GetEncoding(Config.Input_charset);

sHtmlTextToken = HttpUtility.UrlDecode(sHtmlTextToken, code);

//解析远程模拟提交后返回的信息

Dictionary dicHtmlTextToken = Submit.ParseResponse(sHtmlTextToken);

//获取token

string request_token = dicHtmlTextToken["request_token"];

//业务详细,必填

string req_data = "" + request_token + "";

//把请求参数打包成数组

Dictionary sParaTemp = new Dictionary();

sParaTemp.Add("partner", Config.Partner);

sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());

sParaTemp.Add("sec_id", Config.Sign_type.ToUpper());

sParaTemp.Add("service", "alipay.wap.auth.authAndExecute");

sParaTemp.Add("format", format);

sParaTemp.Add("v", v);

sParaTemp.Add("req_data", req_data);

//建立请求

string sHtmlText = Submit.BuildRequest(GATEWAY_NEW, sParaTemp, "get", "确认");

context.Response.Write(sHtmlText);

//发起支付e

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

页面二:通知页面

//上面这个wxnetpaysend 可以自定义

using System;

using System.Collections;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.Web;

using System.Web.SessionState;

using System.IO;

using System.Xml;

using System.Text;

using System.Data;

using System.Data.Sql;

using System.Data.SqlClient;

using mon;

using DTcms.DBUtility;

using mon.Data.SQLServer;

using mon.Request;

using DTcms.API.Payment.alipaymb;

namespace DTcms.Web.dev

{

///

/// 用户绑定类

///

//wxnetpaysend 这个类可以自定义 必须和上面保持一致

public class alipaymb_notify_url : IHttpHandler, IRequiresSessionState

{

public void ProcessRequest(HttpContext context)

{

Dictionary sPara = GetRequestPost(context);

if (sPara.Count > 0)//判断是否有带返回参数

{

Notify aliNotify = new Notify();

bool verifyResult = aliNotify.VerifyNotify(sPara, context.Request.Form["sign"]);

if (verifyResult)//验证成功

{

try

{

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.LoadXml(sPara["notify_data"]);

string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText; //支付宝交易号

string order_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText; //商户订单号

string total_fee = xmlDoc.SelectSingleNode("/notify/total_fee").InnerText; //获取总金额

string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText; //交易状态

if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS" || trade_status == "success")

{

//业务逻辑写在这里s

System.IO.File.AppendAllText(Utils.GetMapPath("alipaymblog.txt"), "接口类型:支付宝手机wap支付,支付宝交易订单号:"+trade_no+"商户订单号:"+order_no+"总金额:"+total_fee+"支付状态:"+trade_status+"\n", System.Text.Encoding.UTF8);

//业务逻辑写在这里e

//context.Response.Write("success"); //请不要修改或删除

return;

}

else

{

context.Response.Write(trade_status);

}

}

catch (Exception ex)

{

context.Response.Write(ex.ToString());

}

}

else //验证失败

{

context.Response.Write("fail");

}

}

else

{

context.Response.Write("无通知参数");

}

}

///

/// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组

///

/// request回来的信息组成的数组

public Dictionary GetRequestPost(HttpContext context)

{

int i = 0;

Dictionary sArray = new Dictionary();

NameValueCollection coll;

coll = context.Request.Form;

String[] requestItem = coll.AllKeys;

for (i = 0; i < requestItem.Length; i++)

{

sArray.Add(requestItem[i], context.Request.Form[requestItem[i]]);

}

return sArray;

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

页面三:逻辑业务处理页面

//上面这个wxnetpaysend 可以自定义

using System;

using System.Collections;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.Web;

using System.Web.SessionState;

using System.IO;

using System.Text;

using System.Data;

using System.Data.Sql;

using System.Data.SqlClient;

using mon;

using DTcms.DBUtility;

using mon.Data.SQLServer;

using mon.Request;

using DTcms.API.Payment.alipaymb;

namespace DTcms.Web.dev

{

///

/// 用户绑定类

///

//wxnetpaysend 这个类可以自定义 必须和上面保持一致

public class alipaymb_return_url : IHttpHandler, IRequiresSessionState

{

public void ProcessRequest(HttpContext context)

{

//读取站点配置信息

Model.siteconfig siteConfig = new BLL.siteconfig().loadConfig();

Dictionary sPara = GetRequestGet(context);

if (sPara.Count > 0)//判断是否有带返回参数

{

Notify aliNotify = new Notify();

bool verifyResult = aliNotify.VerifyReturn(sPara, context.Request.QueryString["sign"]);

if (verifyResult)//验证成功

{

//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——

//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

string trade_no = DTRequest.GetString("trade_no"); //支付宝交易号

string order_no = DTRequest.GetString("out_trade_no"); //获取订单号

string result = DTRequest.GetString("result");//交易状态

if (result == "TRADE_FINISHED" || result == "TRADE_SUCCESS" || result=="success")

{

//成功状态

context.Response.Write("

支付成功!订单号:" + order_no + "

");

return;

}

}

}

//失败状态

context.Response.Write("

支付失败!

");

return;

}

///

/// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组

///

/// request回来的信息组成的数组

public Dictionary GetRequestGet(HttpContext context)

{

int i = 0;

Dictionary sArray = new Dictionary();

NameValueCollection coll;

coll = context.Request.QueryString;

String[] requestItem = coll.AllKeys;

for (i = 0; i < requestItem.Length; i++)

{

sArray.Add(requestItem[i], context.Request.QueryString[requestItem[i]]);

}

return sArray;

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。