你的位置:首页 > ASP.net教程

[ASP.net教程]支付宝即时到账接口的集成和使用


支付宝即时到账接口的集成和使用

如果商户想在自己的网站上,集成支付宝的即时到账接口,首先要申请该服务,申请地址:https://b.alipay.com/order/productDetail.htm?productId=2012051600355662

商户系统请求-支付宝响应交互模式,即支付宝接口集成及使用的工作原理:

 

根据这个原理图,我们可以把集成支付宝接口的步骤划分如下:

产品参考:http://www.jinhusns.com/Products/Download/?type=xcj

一.    请求

1. 构造请求数据

商户根据支付宝提供的接口规则,通过程序生成得到签名结果及要传输给支付宝的数据集合。

Ø  选定参数

Ø  排序生成待签名字符串

对参数数组里的每一个值从a到z的顺序排序,若遇到相同首字母,则看第二个字母,以此类推。排序完成之后,再把所有数组值以“&”字符连接起来,

如:

_input_charset=gbk&out_trade_no=6741334835157966&partner=2088101568338364

&payment_type=1&return_url=http://www.test.com/alipay/return_url.asp&sell

er_email=alipay-test01@alipay.com&service=create_direct_pay_by_user&subje

ct=贝尔金护腕式&total_fee=100

需要注意的是,在请求参数列表中,除去sign、sign_type两个参数外,其他需要使用到的参皆是要签名的参数。(个别接口中参数sign_type也需要参与签名。)

(1)使用冒泡排序对参数数组进行排序:

(2)用“&”字符连接参数组合成待签名的字符串:


Ø  加密生成签名

有三种签名方式:MD5签名、DSA签名和RSA签名。

MD5签名: 需要把私钥直接拼接到待签名字符串后面,形成新的字符串,利用MD5的签名函数对这个新的字符串进行签名运算,从而得到32位签名结果字符串。

DSA、 RSA签名:把待签名字符串与客户的私钥一同放入DSA或RSA的签名函数中进行签名运算,从而得到签名结果字符串。

下面是用MD5签名的代码:


2. 发送请求数据

向支付宝发送请求数据有post和get两种方式,建议使用post 方式,相对比较安全。

 

二.    通知

支付宝对商户的请求数据处理完成后,会通过两种方式通知商户处理结果,一种是页面跳转同步通知(return_url),另一种是服务器异步通知(notify_url) 。

服务器异步通知(notify_url)是支付宝服务器主动向商户发送的通知,只有当订单的交易状态改变时才会触发,可以防止因网络等原因引起的丢单问题。对同步通知和异步通知结果的处理步骤大致相同,只是处理完成后的返回值不同。

1.      验证签名

在通知返回参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是要签名的参数,具体的签名步骤与请求时相同。

如果新得到的签名与支付宝返回的签名相同,则签名验证成功。

2.      判断是否是支付宝服务器发来的处理结果

为了防止某些人伪造支付宝发来的处理消息,还要验证消息的合法性,有以下三个方法:

 

3.      判断订单的交易状态及数据处理

当订单的交易状态为“TRADE_FINISHED”或者“TRADE_SUCCESS” ,即为交易成功,接下来就可以根据自己网站的实际情况,进行自己的处理了。在处理数据前一定要先判断订单状态,是否已经处理过,防止重复操作。

4.      返回数据

同步通知(return_url):对返回值没有要求,可以做任意操作。

异步通知(notify_url):程序处理成功后,该页面不能执行页面跳转,且页面上不能有任何字符,要返回“success”7个字符。否则,支付宝会重发处理结果的通知。