今天在开发一个支付功能,由于第三方注册的是 双向功能接口(即时交易,担保交易)两种方式的支付方法
其实这个接口也是跟 即时交易和担保交易的接口差不多,只是这边特别注意一点的就是,商户的密钥不能有任何的空格
废话不说,贴上代码
////////////////////////////////////////////请求参数//////////////////////////////////////////// //支付类型 string payment_type = "1"; //这个是代表买家付款 //必填,不能修改 //服务器异步通知页面路径 string notify_url = “”; // 异步通知的接收页面,(因为有时候万一用户在跳转到支付宝那边支付完毕后,遇到一些特殊情况没有返回到制定的商家页面) //需http://格式的完整路径,不能加?id=123这类自定义参数 //页面跳转同步通知页面路径 string return_url = “”; //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ //卖家支付宝帐户 string seller_email = “**************”; //必填 //商户订单号 string out_trade_no = “2013145201314”; //商户网站订单系统中唯一订单号,必填 //订单名称 string subject = “这是来自一个第三方商城的订单”; //必填 //付款金额 string price =“0.01”;// string.Format("{0:f2}", ****); //必填 //商品数量 string quantity = "1"; //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品 //物流费用 string logistics_fee = "0.00"; //必填,即运费 //物流类型 string logistics_type = "EXPRESS"; //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) //物流支付方式 string logistics_payment = "SELLER_PAY"; //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费) //订单描述 string body = code + "|" + type + "|" + num + "|" + md5sign; //商品展示地址 string show_url ="http://www.****.com"; //需以http://开头的完整路径,如:http://www.商户网站.com/myorder.html //收货人姓名 string receive_name = "测试"; //如:张三 //收货人地址 string receive_address = "测试"; //如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号 //收货人邮编 string receive_zip = "510555"; //如:123456 //收货人电话号码 string receive_phone = ""; //如:0571-88158090 //收货人手机号码 string receive_mobile = ""; //如:13312341234 //////////////////////////////////////////////////////////////////////////////////////////////// //把请求参数打包成数组 SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>(); sParaTemp.Add("partner", entity.payID); sParaTemp.Add("_input_charset", Config.Input_charset.ToLower()); sParaTemp.Add("service", "trade_create_by_buyer"); sParaTemp.Add("payment_type", payment_type); sParaTemp.Add("notify_url", notify_url); sParaTemp.Add("return_url", return_url); sParaTemp.Add("seller_email", seller_email); sParaTemp.Add("out_trade_no", out_trade_no); sParaTemp.Add("subject", subject); sParaTemp.Add("price", price); sParaTemp.Add("quantity", quantity); sParaTemp.Add("logistics_fee", logistics_fee); sParaTemp.Add("logistics_type", logistics_type); sParaTemp.Add("logistics_payment", logistics_payment); sParaTemp.Add("body", body); sParaTemp.Add("show_url", show_url); sParaTemp.Add("receive_name", receive_name); sParaTemp.Add("receive_address", receive_address); sParaTemp.Add("receive_zip", receive_zip); sParaTemp.Add("receive_phone", receive_phone); sParaTemp.Add("receive_mobile", receive_mobile); //建立请求 string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "确认"); //这个拼接提交的form的方法里面,组成一个sign Response.Write(sHtmlText); #endregion
配置sign的类,支付宝这边生成form的元素的时候会把这个key的值通过md5加密,然后加到form的表单元素上去。
static Config()
{
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者ID,以2088开头由16位纯数字组成的字符串
partner = "";
//交易安全检验码,由数字和字母组成的32位字符串
key = "";
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//字符编码格式 目前支持 gbk 或 utf-8
input_charset = "utf-8";
//签名方式,选择项:RSA、DSA、MD5
sign_type = "MD5";
}
最后贴上一个示例的url
https://mapi.alipay.com/gateway.do?_input_charset=utf-8&
body=test&
logistics_fee=0.00&
logistics_payment=SELLER_PAY&
logistics_type=EXPRESS&
notify_url={网站地址}&
out_trade_no={订单号}&
partner={商家号}&
payment_type=1&
price=1&
quantity=1&
receive_address=测试&
receive_name=测试&
receive_zip=510555&
return_url={url}&
seller_email={商家号(邮箱)}&
service=trade_create_by_buyer&
show_url=http://www.xxxx.com&
subject=标题&
sign=key的md5加密&
sign_type=MD5
支付宝双接口的文件链接地址 点击下载