请教关于支付宝API的问题。。。。。。。。 本帖最后由 a346729576 于 2011-12-22 10:21:33 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不管是支付宝还是财务通。它都有两种支付的方式get和post。而官方给你的demo。就是属于post提交。你可以不用拼凑成表单。可以直接通过get过去。只要拼凑成对象的url就可以了。 //业务参数赋值; string gateway = "https://www.alipay.com/cooperate/gateway.do?"; //支付接口 string service = "create_direct_pay_by_user"; //服务名称,这个是识别是何接口实现何功能的标识,请勿修改 string seller_email = ConfigHandler.AlipaySellerEmail; //商家签约时的支付宝帐号,即收款的支付宝帐号 string sign_type = "MD5"; //加密类型,签名方式“不用改” string key = ConfigHandler.AlipayKey; //安全校验码,与partner是一组,获取方式是:用签约时支付宝帐号登陆支付宝网站www.alipay.com,在商家服务我的商家里即可查到。 string partner = ConfigHandler.AlipayPartner; //商户ID,合作身份者ID,合作伙伴ID string _input_charset = "gb2312"; //编码类型,完全根据客户自身的项目的编码格式而定,千万不要填错。否则极其容易造成MD5加密错误。 string show_url = "http://fdc.soufun.com/"; //展示地址,即在支付页面时,商品名称旁边的“详情”的链接地址。 string out_trade_no = orderID; //客户自己的订单号,订单号必须在自身订单系统中保持唯一性 string subject = ""; //商品名称,也可称为订单名称,该接口并不是单一的只能买一样东西,可把一次支付当作一次下订单 string body = ""; //商品描述,即备注 string total_fee = cash.ToString("F2"); //商品价格,也可称为订单的总金额 //服务器通知url(Alipay_Notify.aspx文件所在路经),必须是完整的路径地址 string notify_url = ConfigHandler.AlipayNotify; //服务器返回url(Alipay_Return.aspx文件所在路经),必须是完整的路径地址 string return_url = ConfigHandler.AlipayReturn; //构造数组; //以下数组即是参与加密的参数,若参数的值不允许为空,若该参数为空,则不要成为该数组的元素 string[] para ={ "service="+service, "partner=" + partner, "seller_email=" + seller_email, "out_trade_no=" + out_trade_no, "subject=" + subject, "body=" + body, "total_fee=" + total_fee, "show_url=" + show_url, "payment_type=1", "notify_url=" + notify_url, "return_url=" + return_url }; //支付URL生成 string aliay_url = AliPay.CreatUrl( gateway,//GET方式传递参数时请去掉注释 para, _input_charset, sign_type, key ); //以下是GET方式传递参数 Response.Redirect(aliay_url); //以下是POST方式传递参数 //Response.Write("<form name='alipaysubmit' method='post' action='https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8'>"); //Response.Write("<input type='hidden' name='service' value=" + service + ">"); //Response.Write("<input type='hidden' name='partner' value=" + partner + ">"); //Response.Write("<input type='hidden' name='seller_email' value=" + seller_email + ">"); //Response.Write("<input type='hidden' name='out_trade_no' value=" + out_trade_no + ">"); //Response.Write("<input type='hidden' name='subject' value=" + subject + ">"); //Response.Write("<input type='hidden' name='body' value=" + body + ">"); //Response.Write("<input type='hidden' name='total_fee' value=" + total_fee + ">"); //Response.Write("<input type='hidden' name='show_url' value=" + show_url + ">"); //Response.Write("<input type='hidden' name='return_url' value=" + return_url + ">"); //Response.Write("<input type='hidden' name='notify_url' value=" + notify_url + ">"); //Response.Write("<input type='hidden' name='payment_type' value=1>"); //Response.Write("<input type='hidden' name='sign' value=" + aliay_url + ">"); //Response.Write("<input type='hidden' name='sign_type' value=" + sign_type + ">"); //Response.Write("</form>"); //Response.Write("<script>"); //Response.Write("document.alipaysubmit.submit()"); //Response.Write("</script>"); 其实还是给支付宝传递几个参数过去,然后他再给你返回一些东西。。我发的那段代码是post方式,我只用get提交过去就行了。。是吗大哥 最好还是post提交 安全性高一点 支付宝也是这样建议的 谁能大概的讲一下支付宝的流程... 首先把参数都加密传过去 然后支付宝返回回来一个SortedDictionary 记录着信息 大概是这样吧??? 把需要的参数设置下,必要的参数post过去然后设置下return_url页面,确定支付状态后的跳转页面.接口集成到你的网站 先是参数中有一个return_url。还有一个Notify_url 。你提交到他/她的页面去了。成功之后会自动跳转到你的retur_url页面。同时支付宝会异步的访问Notify_url通知页面。大约是30分钟6次还是几次来着。如果到通知页面成功后得返回一个success失败就返回一个fail。当支付接受到success就不会再返回你这个通知页面了。如果接受到的是fail。那它会通过30分钟6次左右的频率访问你的通知页面。直到成功为止。 return_url.aspx、、notify_url.aspx、、default.aspx 这三个页面都要吗? 首先把参数都加密传过去,最主要的是价钱,还有本地数据库中的订单号,还有返回地址,比如http://www.aaa.com/notify_url.aspx。提交的时候一般使用Post方式,比较安全。当然pid和key这两个参数是必须的,少不了的,否则都进不了支付宝。当支付宝处理完成后,会把处理结果返回给notify_url.aspx,return_url.aspx。之前你传过去的所有东西,他会一成不变的传回来,接收到你之前传过去的数据库中的订单号,在这个页面notify_url.aspx判断一下结果,如果成功就更新自己的数据库对应的订单,失败就做其他处理。 我现在有一已在alipay支付了的订单的ID,当然也有合作的key,我想查询订单的完整信息,有那个接口可以调用。在网上找了老半天都没找到接口文档,alipay.com上边给的文档真是太烂了(好吧,我承认是我自己的问题,看不懂)。楼主要是搞定了自己的问题,顺便帮我解答一下吧。。 .net 怎么比较日期时间的大小,差值在24小时之内 帮忙解析一下这段代码 page_load事件和response.write的问题,急急急 求一个上传带条度条源码(vb.net)........ 水晶报表不能显示图片 JS判断Datalist模板列中checkbox是否有被选中!问题 如何通过客户机应用程序控制某个特定的浏览器页面的关闭? .NET高手往这边看看!!怎样在用户退出WEB系统或关闭IE时将用户的信息写到数据库中? 登录页面的问题 ztree 数据以填充进去,但页面显示undefined 请高手帮我看下这代码是什么意思 该字符串未被识别为有效的 DateTime。
你可以不用拼凑成表单。可以直接通过get过去。只要拼凑成对象的url就可以了。
//业务参数赋值;
string gateway = "https://www.alipay.com/cooperate/gateway.do?"; //支付接口
string service = "create_direct_pay_by_user"; //服务名称,这个是识别是何接口实现何功能的标识,请勿修改
string seller_email = ConfigHandler.AlipaySellerEmail; //商家签约时的支付宝帐号,即收款的支付宝帐号
string sign_type = "MD5"; //加密类型,签名方式“不用改”
string key = ConfigHandler.AlipayKey; //安全校验码,与partner是一组,获取方式是:用签约时支付宝帐号登陆支付宝网站www.alipay.com,在商家服务我的商家里即可查到。
string partner = ConfigHandler.AlipayPartner; //商户ID,合作身份者ID,合作伙伴ID
string _input_charset = "gb2312"; //编码类型,完全根据客户自身的项目的编码格式而定,千万不要填错。否则极其容易造成MD5加密错误。 string show_url = "http://fdc.soufun.com/"; //展示地址,即在支付页面时,商品名称旁边的“详情”的链接地址。
string out_trade_no = orderID; //客户自己的订单号,订单号必须在自身订单系统中保持唯一性
string subject = ""; //商品名称,也可称为订单名称,该接口并不是单一的只能买一样东西,可把一次支付当作一次下订单
string body = ""; //商品描述,即备注
string total_fee = cash.ToString("F2"); //商品价格,也可称为订单的总金额 //服务器通知url(Alipay_Notify.aspx文件所在路经),必须是完整的路径地址
string notify_url = ConfigHandler.AlipayNotify;
//服务器返回url(Alipay_Return.aspx文件所在路经),必须是完整的路径地址
string return_url = ConfigHandler.AlipayReturn;
//构造数组;
//以下数组即是参与加密的参数,若参数的值不允许为空,若该参数为空,则不要成为该数组的元素
string[] para ={
"service="+service,
"partner=" + partner,
"seller_email=" + seller_email,
"out_trade_no=" + out_trade_no,
"subject=" + subject,
"body=" + body,
"total_fee=" + total_fee,
"show_url=" + show_url,
"payment_type=1",
"notify_url=" + notify_url,
"return_url=" + return_url
};
//支付URL生成
string aliay_url = AliPay.CreatUrl(
gateway,//GET方式传递参数时请去掉注释
para,
_input_charset,
sign_type,
key
); //以下是GET方式传递参数
Response.Redirect(aliay_url);
//以下是POST方式传递参数
//Response.Write("<form name='alipaysubmit' method='post' action='https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8'>");
//Response.Write("<input type='hidden' name='service' value=" + service + ">");
//Response.Write("<input type='hidden' name='partner' value=" + partner + ">");
//Response.Write("<input type='hidden' name='seller_email' value=" + seller_email + ">");
//Response.Write("<input type='hidden' name='out_trade_no' value=" + out_trade_no + ">");
//Response.Write("<input type='hidden' name='subject' value=" + subject + ">");
//Response.Write("<input type='hidden' name='body' value=" + body + ">");
//Response.Write("<input type='hidden' name='total_fee' value=" + total_fee + ">");
//Response.Write("<input type='hidden' name='show_url' value=" + show_url + ">");
//Response.Write("<input type='hidden' name='return_url' value=" + return_url + ">");
//Response.Write("<input type='hidden' name='notify_url' value=" + notify_url + ">");
//Response.Write("<input type='hidden' name='payment_type' value=1>");
//Response.Write("<input type='hidden' name='sign' value=" + aliay_url + ">");
//Response.Write("<input type='hidden' name='sign_type' value=" + sign_type + ">");
//Response.Write("</form>");
//Response.Write("<script>");
//Response.Write("document.alipaysubmit.submit()");
//Response.Write("</script>");
然后设置下return_url页面,确定支付状态后的跳转页面.
接口集成到你的网站
先是参数中有一个return_url。还有一个Notify_url 。你提交到他/她的页面去了。成功之后会自动跳转到你的retur_url页面。同时支付宝会异步的访问Notify_url通知页面。大约是30分钟6次还是几次来着。如果到通知页面成功后得返回一个success失败就返回一个fail。当支付接受到success就不会再返回你这个通知页面了。如果接受到的是fail。那它会通过30分钟6次左右的频率访问你的通知页面。直到成功为止。
首先把参数都加密传过去,最主要的是价钱,还有本地数据库中的订单号,还有返回地址,比如http://www.aaa.com/notify_url.aspx。提交的时候一般使用Post方式,比较安全。当然pid和key这两个参数是必须的,少不了的,否则都进不了支付宝。当支付宝处理完成后,会把处理结果返回给notify_url.aspx,return_url.aspx。之前你传过去的所有东西,他会一成不变的传回来,接收到你之前传过去的数据库中的订单号,在这个页面notify_url.aspx判断一下结果,如果成功就更新自己的数据库对应的订单,失败就做其他处理。
在网上找了老半天都没找到接口文档,alipay.com上边给的文档真是太烂了(好吧,我承认是我自己的问题,看不懂)。
楼主要是搞定了自己的问题,顺便帮我解答一下吧。。