确实我也不知道问题出在哪,我把调用的代码贴出来,请高手帮忙看看
PayRequestHandler.cs
程序代码:
/// <summary>
/// PayRequestHandler 的摘要说明。
/// </summary>
/**
* 即时到帐请求类
* ============================================================================
* api说明:
* init(),初始化函数,默认给一些参数赋值,如cmdno,date等。
* getGateURL()/setGateURL(),获取/设置入口地址,不包含参数值
* getKey()/setKey(),获取/设置密钥
* getParameter()/setParameter(),获取/设置参数值
* getAllParameters(),获取所有参数
* getRequestURL(),获取带参数的请求URL
* doSend(),重定向到财付通支付
* getDebugInfo(),获取debug信息
*
* ============================================================================
*
*/
public class PayRequestHandler:RequestHandler
{
public PayRequestHandler(HttpContext httpContext) : base(httpContext)
{
this.setGateUrl("http://service.");
}
/**
* @Override
* 初始化函数,默认给一些参数赋值,如cmdno,date等。
*/
public override void init()
{
//任务代码
this.setParameter("cmdno", "1");
//日期
this.setParameter("date",DateTime.Now.ToString("yyyyMMdd"));
//商户号
this.setParameter("bargainor_id", "");
//财付通交易单号
this.setParameter("transaction_id", "");
//商家订单号
this.setParameter("sp_billno", "");
//商品价格,以分为单位
this.setParameter("total_fee", "");
//货币类型
this.setParameter("fee_type", "1");
//返回url
this.setParameter("return_url", "");
//自定义参数
this.setParameter("attach", "");
//用户ip
this.setParameter("spbill_create_ip", "");
//商品名称
this.setParameter("desc", "");
//银行编码
this.setParameter("bank_type", "0");
//字符集编码
this.setParameter("cs","gb2312");
//摘要
this.setParameter("sign", "");
}
/**
* @Override
* 创建签名
*/
protected override void createSign()
{
//获取参数
string cmdno = getParameter("cmdno");
string date = getParameter("date");
string bargainor_id = getParameter("bargainor_id");
string transaction_id = getParameter("transaction_id");
string sp_billno = getParameter("sp_billno");
string total_fee = getParameter("total_fee");
string fee_type = getParameter("fee_type");
string return_url = getParameter("return_url");
string attach = getParameter("attach");
string spbill_create_ip = getParameter("spbill_create_ip");
string key = getParameter("key");
//组织签名
StringBuilder sb = new StringBuilder();
sb.Append("cmdno=" + cmdno + "&");
sb.Append("date=" + date + "&");
sb.Append("bargainor_id=" + bargainor_id + "&");
sb.Append("transaction_id=" + transaction_id + "&");
sb.Append("sp_billno=" + sp_billno + "&");
sb.Append("total_fee=" + total_fee + "&");
sb.Append("fee_type=" + fee_type + "&");
sb.Append("return_url=" + return_url + "&");
sb.Append("attach=" + attach + "&");
if( !"".Equals(spbill_create_ip) )
{
sb.Append("spbill_create_ip=" + spbill_create_ip + "&");
}
sb.Append("key=" + getKey());
//算出摘要
string sign = MD5Util.GetMD5(sb.ToString(),getCharset());
setParameter("sign", sign);
//debug信息
setDebugInfo(sb.ToString() + " => sign:" + sign);
}
}
index.aspx
程序代码:
//生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
string strReq = "" + DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4);
//商户订单号,不超过32位,财付通只做记录,不保证唯一性
string sp_billno = strReq;
//汇款金额
string totalfee =TextBox1.Text;
//财付通订单号,10位商户号+8位日期+10位序列号,需保证全局唯一
string transaction_id = bargainor_id + date + strReq;
string return_url = "http://localhost/tenpayApp/return_url.aspx";
//创建PayRequestHandler实例
PayRequestHandler reqHandler = new PayRequestHandler(Context);
//设置密钥
reqHandler.setKey(key);
//初始化
reqHandler.init();
//-----------------------------
//设置支付参数
//-----------------------------
reqHandler.setParameter("bargainor_id", bargainor_id); //商户号
reqHandler.setParameter("sp_billno", sp_billno); //商家订单号
reqHandler.setParameter("transaction_id", transaction_id); //财付通交易单号
reqHandler.setParameter("return_url", return_url); //支付通知url
reqHandler.setParameter("desc", "订单号:" + transaction_id); //商品名称
reqHandler.setParameter("total_fee", totalfee); //商品金额,以分为单位
//获取请求带参数的url
string requestUrl = reqHandler.getRequestURL();
string a_link = "<a target=\"_blank\" href=\"" + requestUrl + "\">" + "财付通支付" + "</a>";
Response.Write(a_link);