简单集成支付宝在线支付功能的关键代码
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、参数的排序,生产签名需要排序。