这两天一直在忙支付的事情,如果说简单,无非是调用几个国外的网关接口罢了,这个方面可以看我转载的国外的技术文章:
http://blog.csdn.net/hliq5399/article/details/7301874,个人感觉还是不错的.给了我一些启发.
而真正的支付中心,我这里是用一张支付队列的表来储存的,我自己单独建了一个支付的后台.在windows 定时任务定时跑就可以了.
我碰到的问题也就在这里了:
假如支付队列如下:
id,name,payway, status
1 test bank new
1 test creditcard new
1 test creditcard new
1 test bank new
后台就是每次取一条,提交支付网关,如果成功,修改状态为success,否则为fail.
public void ProcessQueue()
{
while (CCHelper.GetQueueCount() > 0)
{
for (int i = 0; i < iMaxThreads; i++)
{
WaitCallback a = new WaitCallback(ProcessOneQueue);
ThreadPool.QueueUserWorkItem(a, null);
Thread.Sleep(5000);
}
}
}
public void ProcessOneQueue()
{
//处理队列,提交网关.
}
红色的部分是让我郁闷的地方,如果不加这句话,那么后台的队列就不能处理.
思考了半天,也参考不少资料,感觉有人说的有道理:
http://blog.csdn.net/hliq5399/article/details/7345345
说实在的,这样解决问题,心里还是感觉有些问题,后续会继续跟进,有建议的不妨指点下了