.Net在线付款---Paydollar在线付款开发过程
原文:.Net在线付款---Paydollar在线付款开发过程
最近在做一个Web订单项目,项目有一个需求就是集成Paypal与Paydollar在线付款,一开始看到这个需求也是傻了眼,因为以前从来没有做过在线付款的功能,于是打开百度,google 狂搜一通,发现.net下的paydollar付款開發介绍很不全面,没有找到我心中想要的答案,没有办法,只要老老实实的跟着网站上提供的文文件来做,在项目快完成时,于是想将现在做的一些心得和步骤记录下来,以备以后有用!
你可以进入http://www.paydollar.com/ 了解Paydollar的更多内容.
你在做asp.net集成Paydollar在线付款需要以下的条件:
1. 需要有.net开发基础(废话).
2. 需要有一个在外网可以访问到的网址.
3. 需要仔细阅读PayDollar集成文檔,以备参考.
4. 需要注册Paydollar的正式账号与测试账号(本文以测试账号为例).
假定我们现在的系统叫Order系统,需要集成在线付款,本文按照如下的流程来讲述PayDollar的开发过程:
1. 获得Paydollar的测试账号.
2. 编写一个HTML Form 将订单的一些相关信息POST到Paydollar的页面上去.
3. 提供一个页面用于让Paydollar更新我们的Order系统.
4. 返回到Order系统的提示页面.
一 获得Paydollar的测试账号
Paydollar为我们提供一个可以测试的虚拟付款的付款网站:
https://test.paydollar.com/b2cDemo/eng/merchant/index.html

界面上要求你用merchantID,loginName,Password来登录,据我所知Paydollar是没有提供注册测试账号的页面(如果哪一个高手知道Paydollar提供了注册測試的账号頁面,请你提醒我,谢谢),你可以向Paydollar的客服询问注册的事项, 我相信Paydollar的客服人员一定会执情的给你帮助,你相信Paydollar客服人员会热情的给你帮助吗?反正我信了
!我的测试账号也是由公司和Paydollar联系我才获得的.
二. 编写一个HTML Form 将订单的一些相关信息POST到Paydollar的页面上去.

2
3 <input type='hidden' name='merchantId' value='XXXXXXXX'/>
4
5 <input type='hidden' name='amount' value='450.00' />
6
7 <input type='hidden' name='orderRef' value='OP0000049'/>
8
9 <input type='hidden' name='currCode' value='344'/>
10
11 <input type='hidden' name='mpsMode' value='NIL'/>
12
13 <input type='hidden' name='successUrl' value='http://test.yourdomain.com/hk/onlineorder/payResult.aspx?result=success'/>
14
15 <input type='hidden' name='failUrl' value='http://test. yourdomain.com/hk/onlineorder/payResult.aspx?result=fail'/>
16
17 <input type='hidden' name='cancelUrl' value='http://test.yourdomain.com/hk/onlineorder/payResult.aspx?result=cancel'/>
18
19 <input type='hidden' name='payType' value='N'/>
20
21 <input type='hidden' name='lang' value='C'/>
22
23 <input type='hidden' name='payMethod' value='CC'/>
24
25 </form>
学习过HTML的同学都会知道上面是什么意思,以下是我对上面的一些参数含义的解释,如果你需要更多的帮助,你可以阅读PayDollar集成指南的相关章节:
1. 请将form的method设置成POST 将action设置成https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp,
如果要变成正式付款请将它设置成:
https://www.paydollar.com/b2c2/eng/payment/payForm.jsp
2. merchantId设置成Paydollar提供给你的账号,如果是正式环境发布,就需要用正式的账号
3. amout设置成你要付款的金额
4. orderref设置成你要付款的订单号
5. successUrl:设置成付款成功后跳转到Order系统的网页地址
6. failUrl:设置成付款失败后跳转到Order系统的网页地址
7. cancelUrl:设置成取消付款后跳转到Order系统的网页地址
8. payMethod设置你的付款方式,CC为信用卡付款
(如果你要更详细的参数设置介绍,你可以查看Paydollar集成文档的第十二页[集成页中参数的定义])
在这里我并不贴出Order系统的其它的代码,我们只要将这个Form的代码生成好,动态替换里面要改变的参数(比如amout,orderref等)提交上去就好了,就比如说,一个页面上可以放两个Form,一个Form用于显示购物车里面的信息,另一个Form就可以放以上的代码,只要保证第二个Form提交了就OK了,悄悄的告诉你,我就是用StringBuilder这样一条一条append上去的,遇到要替换的参数我就Replace一下,我相信你一定知道我是怎么做的,哈哈,你信不信不要紧,反正我相信了!
当你将该Form提交后,你可以看到Order系统已跳转到test.paydollar的测试付款页面了

选择Visa或者是MasterCard
然后在页面上输入获取Paydollar账号时Paydollar提供给你的测试卡号信息

当你点击提交按钮时,Paydollar就会开始给你做付款操作了.
三 提供一个页面(PaydollarDataFeed.aspx)用于让Paydollar更新我们的Order系统
当Paydollar在做付款操作时,paydollar会将本次付款的信息(如交易号,付款状态等)Post回Order系统,以便Order系统更新自己的系统,比如说更新订单的交易号与交易日期, 所以我们要提供一个页面来接收这一些数据,这个页面在Paydollar里面叫DataFeed页面,(这个页面我们取名为PayDollarDataFeed.aspx)如果你想了解更多DataFeed的知识,请阅读Paydollar的集成文檔第35页
DataFeed页面是需要设置的,具体设置如下:
PayDollar管理页面的接收地址更改
进入管理页面后,选择ProfileàPayment Options

将进入如下页面

将Return value Link(DataFeed)改成你外网上可以接收的地址
可以点击test按钮查看可否接收DataFeed

如果Result为Success表示该页面可以用来接收DataFeed
根据PayDollar集成文檔上的提示:
返回链接页面必须符合下面要求:
- 当数据的预授权完成时,在HTML中打印“OK”(ACK信息)
- 一定先打印“OK”对我方系统进行确认,然后,再进行贵方其它的系统处理, 如果系统处理出错(即下载照片、手机铃声), 可向我方系统发送一个撤销请求,详细内容请参考P.42或联系我们的技术人员。
请注意:对于返回链接页面的网址,系统只支持端口80 (HTTP)或443(HTTPS)。并确保从外部可进入返回链接页面的网址,这样我们的服务器才能调用返回链接页面。
*因为系统从返回链接页面读取“OK”两字来测定是否(返回链接)信息已被交付,如果这两个字没有成功返回,系统将假定返回链接已丢失。
我的PayDollarDataFeed.aspx的后台代码如下:
1 OrderService service=new OrderService(); 2 3 private void Page_Load(object sender, System.EventArgs e) 4 5 { 6 7 Response.Write("OK"); 8 9 string successCode=Request.Form["successcode"].ToString();10 11 string payRef=Request.Form["PayRef"].ToString();12 13 string orderID=Request.Form["Ref"].ToString();14 15 //Request.Form的取值,可以阅读payDollar集成文檔16 17 if(!Page.IsPostBack)18 19 {20 21 if(successCode=="0")22 23 {24 25 service.SetOrderIsPay(payRef,orderID);//更新Order系统26 27 }28 29 }30 31 }
个人体会:
1.我个人认为,payDollar要求我们提供的DataFeed页面只能用于更新Order系统,不应该用于显示界面(包括付款结果),一开始我错误的将上一步Form里面设置的successUrl,failUrl,cancelUrl和DataFeed页面混在一起,错误的以为DataFeed和这一些URL可以放在同一个页面,更新完自己的系统就可以将付款结果显示出来,结果老是取不到PayDollar返回回来的参数.
2.Order系统提供的DataFeed页面,是一定要有外网上可以访问的,要不然会造成返回参数接收不成功!我曾经在这个地方卡住很久,后来换成外网地址后就可以接收返回参数.
四 返回到Order系统的提示页面
当paydollar付款成功后,点击按钮,Paydollar就会返回回Order系统,
如果是付款成功就会跳转到Form里设置的successUrl的网址上.
如果是付款失败就会跳转到Form里设置的failUrl的网址上.
如果是取消付款就会跳转到Form里设置的cancelUrl的网址上.
当系统开发完成后,你的公司可能会向Paydollar申请正式的账号,这时你需要将Form的一些测试信息更改成正式信息(比如说action地址,merchantID等).
.Net在线付款---Paydollar在线付款开发过程的更多相关文章
- .Net在线付款---Paypal在线付款开发过程
原文:.Net在线付款---Paypal在线付款开发过程 最近在做一个Web订单项目,项目有一个需求就是集成Paypal与Paydollar在线付款,一开始看到这个需求也是傻了眼,因为以前从来没有做过 ...
- 判断ecshop未付款添加去付款按钮
判断ecshop未付款添加去付款按钮,打开ecshop模板目录下user_transaction.dwt找到{$item.handler} 这个变量 给它下面添加以下代码 {if $item.pay_ ...
- 在线学习和在线凸优化(online learning and online convex optimization)—基础介绍1
开启一个在线学习和在线凸优化框架专题学习: 1.首先介绍在线学习的相关概念 在线学习是在一系列连续的回合(rounds)中进行的: 在回合,学习机(learner)被给一个question:(一个向量 ...
- .NET在线培训 | C#在线培训 | .NET培训 | 最课程培训
最课程(www.zuikc.com) 软件开发培训,在线软件培训的创新者!我们的创新在于: 1:一次购买,终身服务.每个最课程学员都会分配一位专职教师及一位监管教师,点对点跟进课程进度,直到您学会课程 ...
- Redis命令大全&中文解释&在线测试命令工具&在线中文文档
在线测试命令地址:http://try.redis.io/ 官方文档:http://redis.io/commands http://redis.io/documentation Redis 命令参考 ...
- 在线学习和在线凸优化(online learning and online convex optimization)—FTL算法5
最自然的学习规则是使用任何在过去回合中损失最小的向量. 这与Consistent算法的精神相同,它在在线凸优化中通常被称为Follow-The-Leader,最小化累积损失. 对于任何t: 我们谈到了 ...
- 在线学习和在线凸优化(online learning and online convex optimization)—凸化方法4
一些在线预测问题可以转化到在线凸优化框架中.下面介绍两种凸化技术: 一些在线预测问题似乎不适合在线凸优化框架.例如,在线分类问题中,预测域(predictions domain)或损失函数不是凸的.我 ...
- 在线学习和在线凸优化(online learning and online convex optimization)—在线凸优化框架3
近年来,许多有效的在线学习算法的设计受到凸优化工具的影响. 此外,据观察,大多数先前提出的有效算法可以基于以下优雅模型联合分析: 凸集的定义: 一个向量 的Regret定义为: 如前所述,算法相对于竞 ...
- 在线学习和在线凸优化(online learning and online convex optimization)—在线分类问题2
紧接上文,我们讲述在线分类问题 令,为0-1损失,我们做出如下的简化假设: 学习者的目标是相对于hypotheses set: H具有low regret,其中H中的每个函数是从到{0,1}的映射,并 ...
随机推荐
- ExtJS4 表格的嵌套 rowExpander
今天做一个grid,里面的数据须要带明细,思来想去还是搞个表格嵌套吧!看下图 对于grid中每一条记录点击左边的+号能展开一个明细的子表格 全部数据包含列名均从后台获得,子表格的数据临时在本地以做測试 ...
- linux下getsockopt和setsockopt具体解释及測试
linux下getsockopt和setsockopt具体解释及測试 NAME 名字 getsockopt, setsockopt - get and set options on sockets 获 ...
- Unity3d C# Socket 下载文件 (同步到)
续篇 Unity3d C# HttpWebRequest 异步下载文件 ,由于project编译为IL2CPP的情况下仍然无效.提示HttpWebrequest 在当前版本号不支持.所以还是寻求其他的 ...
- android详情请务必保持手机屏幕不锁屏
今天做这个项目采用了非常有趣的东西,互联网搜索下一个轮廓,需求就是点击一个按钮来锁定屏幕让屏幕不亮. 几个测试.我们发现以下措辞如此简单, getWindow().addFlags(WindowMan ...
- 如何识别SQL Server中的CPU瓶颈
原文:如何识别SQL Server中的CPU瓶颈 原文出自: http://www.mssqltips.com/sqlservertip/2316/how-to-identify-sql-server ...
- php学习之路:WSDL详细解释(两)
3.定义服务使用的逻辑消息 当服务的操作被调用时.服务被定义为消息交换.在wsdl文档中,这些消息被定义message元素. 这些消息由称之为part元素的部分组成. 一个服务的操作,通过指定逻辑消息 ...
- “采用VS2010至MFC4.2发育”最后溶液
我层2010年这方面的研究进行了简单(http://blog.csdn.net/boweirrking/article/details/5477062),那时候没有深入思考过这当中的原理,最终给出的方 ...
- row_number()、rank()、dense_rank()、ntile()
原文:row_number().rank().dense_rank().ntile() SQL2005中row_number()等函数的用法 2005比2000新增了几个函数,分别是row_numbe ...
- Gradle 2.0用户手册——总览(译)(转)
2.1 特性 本章将介绍一系列Gradle的特性. 申明式构建和基于约定的构建 Gradle的核心是基于Groovy呈现了一种丰富的针对特定领域的语言,称之为Domain Specific Langu ...
- 海哥:T2C时代的到来了,那么什么叫T2C?
昨天写了一篇文章叫做<我为什么选择家具行业,以及T2C概念的创办>,地址:http://user.qzone.qq.com/198819880/blog/1414399801 ,里面提到了 ...