第一步:创建应用
要在您的应用中使用支付宝开放产品的接口能力:
1. 您需要先去蚂蚁金服开放平台(open.alipay.com),在开发者中心创建登记您的应用,此时您将获得应用唯一标识(APPID);
2. 请在【功能信息】中点击【添加功能】,选择【电脑网站支付】;
3. 提交审核,等待审核通过,该应用正式可以使用。
第二步:配置密钥
开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台管理中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详情请参考《配置应用环境》。
第三步:搭建和配置开发环境
1.下载服务端SDK
为了帮助开发者调用开放接口,我们提供了开放平台服务端SDK,包含JAVA、PHP和.NET三个语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。
各语言版本服务端SDK详细使用说明,请参考《服务端SDK使用说明》
2.接口调用配置
在SDK调用前需要进行初始化,代码如下:
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", APPID, APP_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, "utf-8", false);
3、SDK接入
统一收单下单并支付页面接口alipay.trade.page.pay:
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//支付宝服务器主动通知商户服务器里指定的页面http/https路径
request.SetNotifyUrl(buySend.BgUrl);
//同步返回地址,HTTP/HTTPS开头字符串
request.SetReturnUrl(buySend.ShowUrl);
request.BizContent = "{" +
//商户订单号
" \"out_trade_no\":\"" + buySend.OrderId + "\"," +
//销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
//订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
" \"total_amount\":" + buySend.OrderAmount + "," +
//订单标题
" \"subject\":\"" + buySend.ProductName + "\"," +
//订单描述
" \"body\":\"" + buySend.ProductName + "\"" +
" }";
//开放平台SDK封装了签名实现,只需在创建DefaultAlipayClient对象时,设置请求网关(gateway),应用id(app_id),应用私钥(private_key),编码格式(charset),支付宝公钥(alipay_public_key),签名类型(sign_type)即可,报文请求时会自动进行签名。
AlipayTradePagePayResponse response = client.pageExecute(request);
string form = response.Body;
yd.hbyy.Common.Log.Response(buySend.OrderId, form);
Response.Write(form);
异步通知验签:
获取异步通知参数
Dictionary<string, string> sArray = GetRequestPost();
……
调用SDK,将参数传入即可
bool flag = AlipaySignature.RSACheckV1(sArray, ALIPAY_PUBLIC_KEY, CHARSET, SignType, false);
特别注意:
1、IIS站点程序池中的 进程模型-加载用户配置文件 改为true,不然验签会出现异常“系统找不到指定的文件”
2、公钥使用的是支付宝公钥,不是应用公钥。配置的应用私钥、应用公钥是支付宝用来验证我们发送的缴费信息,支付宝公钥是我们用来验证支付宝异步通知的信息!!!