这两天写支付宝接口, 这个话题不新了, 因为很多人都 做过了, 在这里我说说我的看法吧, 先说一下实现
其实支付宝公司已经给我们做的很好了, 只要少量的改动就OK了,只是有的程序员不太明天他们的动作流程而以,我就以及时到帐为例子来说了,呵呵
在这之前就大家先下载一下c#版的及时到帐代码 这里是下载地址
http://club.alipay.com/read-htm-tid-9976972.html
先看一下程序的结构吧
<ignore_js_op>
支付宝有一个类文件叫 AliPay 是一些加密算法之类的东西,包括构造URL
要吧看一下这个类的全部内容
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
|
而我们一般不用管这个类,只要保证能调用 的到就行了,不用管他
我们要做的很少,他是怎么工作的呢,
<ignore_js_op>
这是开发文档里的工作图
其实我们要处理的只有三个Aspx的文件,
先看第一个吧 Default.aspx
这是一个请求的界面
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
|
代码里的key和 partner的获取方法
<ignore_js_op>
现在我们只要按代码里的信息填写一样就可以了,
然后远行网页
点提交
就会进入
<ignore_js_op>
下面的操作就是在支付平台的完成了, 跟咱的程序没有关系了
现在我们应该想,那付完钱之后呢?
我们有两个界面来处理这个问题一个是
Alipay_Return.aspx
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
|
这个是当交易成功后要调用 的界面 在这里只要改动一下就行了, 其实我们要做的只是改一下这里,只要在这里更新一下你的数据库就行了
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 |
|
大家现在会问我为什么会把他们注释了呢?
我测试过,,这个界面呢是只到成功的时候 调用 一次以后就再不会调用 了,
所以这样有一个不好的地方 ,就是有些客户他们对转帐操作的很老手,当交易成功之后不等调用这个界面就关闭了浏览器,这个时候会出现什么问题呢?
那支付宝就再也不会调用这个界面 了,只能等下次交易,钱是打上了,我们也收到了,但是就是没有给客户充上钱,这个时候客户就会打电话到公司,怎么回事啊, 钱打过去了, 可是我这边还没有上帐,我们上支付宝一看有啊,但就是没有上帐 ,怎么办,最后只能手动给客户上了,但又怕他程序再自动上一把,呵呵
所以在这里不我建议使用这个页面,如果你只是修改自己的订单状态的话当然是可以的
修改余额就不要在这里写了,而是写在这个Alipay_Notify.aspx页面里,这个界面是当交易状态 发生变化时就会调用 ,在没有收到成功的消息前就会一直调用,
时效是24小时,这样的话我们就不用管他是不是转到了成功页面了,只要把这个页面挂在网上等通知就行了,
当交易成功的时候上帐 就OK了
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
|
最好是记录一下日志文件,这样一但出了问题还可以有个参考的地方
我的代码写的有点乱大家可以适当的改一下,呵呵
短短两年的时间,我公司也写过不少接口方面的东东了,在这里和大家分享我的心得和体会,一般人一说到和什么接口对接可能会感觉 到很难,或是感觉很利害的样子,如果是和银行的接口对接,那首先想到的就是安全问题,再就是技术含量,其实不然,接口的产生是为了方便双方的合作,基本没有听说过有那两家公司因为程序对接 不上而放弃合作的,基本没有,都是其它方面的原因,接口是为了方便对接和不同公司和程序之间的交互和通信的,都是为了方便,不是我们想像的那样难,高技术含量,要说技术含量吧也是有一些
我根据自己的开发心得总结一下吧
这种方式的做法是,服务方提供一个方法,但是一般会在第一个参数或是最后一个参数验证一下加密串,这个加密串一般是用所传的参数组合加密而来,最常见的就是MD5加密了,像支付宝的就是。我把这一类型的看做是最低级的一种,因为这种是最不安全的,只要我知道了你的加密算法和后就可以自己改动参数了
对于Http的方法最重要的只有一个方法
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
只要我们把要传的参数和URL对接后传给这 个方法就算是完事了,另外在MD5加密是时间注意对方是否要区分大小写,最好是把加密串一下子全转成小写或是大写的
加密的方法一般如下
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 |
|
在做这样的接口的时候一定要注意一定要验证的地方有三点:第一点就是验证加密串了
这里就是把所需要的参数在本地加一下密然后和服务端发来的对比
第二点就是控制页面只在首次加载时执行这个我们可以通过下面的方式来实现
[C#] 纯文本查看 复制代码
01 02 03 04 |
|
我们只要在IF块里面写我们的代码就可以了
第三点也是最关键的一点那就是验证一下请求过来的DNS或是IP
就是说你要验证一下发过来请求的来源电脑是不是你的服务商的DNS或是IP,如果不是就可以不执行程序或是提示为非法操作,这样可以防止有人知道了你的加密算法后自己生成一些代码来高乱你的程序给公司带来损失,特别是即使到账的接口,这一点一定要验证好,而且在IIS服务器最好是绑定一下IP,只接收授权的IP发来的消息。这样基本可以保证安全问题了。
好了对于 这种方法我来用一个Http的例子来演示一下吧
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
|
Http的方法有的接口还是要带证书才能实现的