简单集成支付宝在线支付功能的关键代码

1、首先把DEMO中APP_CODE的5个类加入到项目中。可根据实际情况自己修改。

AlipayConfig.cs
AlipayCore.cs
AlipayNotify.cs
AlipaySubmit.cs
MD5.cs
 
2、如无其他需求,只需修改AlipayConfig.cs中的两个参数。
partner  //合作身份者ID
key  //交易安全检验码 ,这个必须填写。刚开始做DEMO里没有以为不用填,总是报签名错误。
sign_type //签名方式,一般默认MD5。有需求自行修改
input_charset //字符编码,一般是UTF8或GBK。会影响生成签名,如果提示签名错误,可从这里入手查找问题。
 
3、生成签名的方法文档里都有。
 
4、添加商品信息之类的DEMO中都有,这里记录下添加的参数。
 
 1 //把请求参数打包成数组
 2 SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>();
 3 sParaTemp.Add("partner", Com.Alipay.Config.Partner);
 4 sParaTemp.Add("_input_charset", Com.Alipay.Config.Input_charset.ToLower());
 5 sParaTemp.Add("service", "create_direct_pay_by_user");
 6 sParaTemp.Add("payment_type", payment_type);
 7 sParaTemp.Add("notify_url", notify_url);
 8 sParaTemp.Add("return_url", return_url);
 9 sParaTemp.Add("seller_email", seller_email);
10 sParaTemp.Add("out_trade_no", out_trade_no);
11 sParaTemp.Add("subject", subject);
12 sParaTemp.Add("total_fee", total_fee);
13 sParaTemp.Add("body", body);
14 sParaTemp.Add("show_url", show_url);
15 sParaTemp.Add("anti_phishing_key", anti_phishing_key);
16 sParaTemp.Add("exter_invoke_ip", exter_invoke_ip);
17 
18 //建立请求
19 string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "确认");
20 Response.Write(sHtmlText);

 

这里需要注意的是使用了SortedDictionary,这个可以自动排序。如果使用Dictionary需要在生产签名的代码处自己排下序。会导致生成签名无效。
 
总体来说,即时到帐的集成比较简单。大问题没有。主要是生成签名无效的问题,总结一下,可以从几点去查找原因:1、Key是否正确,是由数字和字母组成的32位字符串;2、input_charset 主要看一下当前网站的编码;3、参数的排序,生产签名需要排序。
posted @ 2015-03-14 14:58  我知道你的存在  阅读(674)  评论(0编辑  收藏  举报