GetPayHandle.asp
上传用户:btntkt
上传日期:2021-04-16
资源大小:5296k
文件大小:4k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

DOS

  1. <!-- #include file="MD5.asp" -->
  2. <%
  3. '*******************************************
  4. '文件名:GetPayHandle.asp
  5. '主要功能:该示范程序主要完成接收云网支付网关支付通知信息,验证信息有效性,给用户显示支付结果和相关订单信息等。
  6. '版本:v1.6(Build2005-05-24)
  7. '说明:
  8. ' 1.本页面请不要使用诸如response.redirect等页面转向的语句
  9. ' 2.商户可根据支付结果和订单号查询出本次订单信息或发货信息显示给用户
  10. ' 3.本页面如果含有图片、样式或链接,请将路径或地址包括域名,比如<img src="http://www.yoursitename.com/imagers/aaa.gif">
  11. '版权所有:北京云网无限网络技术有限公司
  12. '技术支持联系方式:86-010-84853768/69 转技术部
  13. '*******************************************
  14. '---获取云网支付网关向商户发送的支付通知信息(以下简称为通知信息)
  15. c_mid = request("c_mid") '商户编号,在申请商户成功后即可获得,可以在申请商户成功的邮件中获取该编号
  16. c_order = request("c_order") '商户提供的订单号
  17. c_orderamount = request("c_orderamount") '商户提供的订单总金额,以元为单位,小数点后保留两位,如:13.05
  18. c_ymd = request("c_ymd") '商户传输过来的订单产生日期,格式为"yyyymmdd",如20050102
  19. c_transnum = request("c_transnum") '云网支付网关提供的该笔订单的交易流水号,供日后查询、核对使用;
  20. c_succmark = request("c_succmark") '交易成功标志,Y-成功 N-失败
  21. c_moneytype = request("c_moneytype") '支付币种,0为人民币
  22. c_cause = request("c_cause") '如果订单支付失败,则该值代表失败原因
  23. c_memo1 = request("c_memo1") '商户提供的需要在支付结果通知中转发的商户参数一
  24. c_memo2 = request("c_memo2") '商户提供的需要在支付结果通知中转发的商户参数二
  25. c_signstr = request("c_signstr") '云网支付网关对已上信息进行MD5加密后的字符串
  26. '---校验信息完整性---
  27. IF c_mid="" or c_order="" or c_orderamount="" or c_ymd="" or c_moneytype="" or c_transnum="" or c_succmark="" or c_signstr="" THEN
  28. response.write "支付信息有误"
  29. response.end
  30. END IF
  31. '---将获得的通知信息拼成字符串,作为准备进行MD5加密的源串,需要注意的是,在拼串时,先后顺序不能改变
  32. Dim c_pass '商户的支付密钥,登录商户管理后台(https://www.cncard.net/admin/),在管理首页可找到该值
  33. c_pass = "Test"
  34. srcStr = c_mid & c_order & c_orderamount & c_ymd & c_transnum & c_succmark & c_moneytype & c_memo1 & c_memo2 & c_pass
  35. '---对支付通知信息进行MD5加密
  36. r_signstr = MD5(srcStr)
  37. '---校验商户网站对通知信息的MD5加密的结果和云网支付网关提供的MD5加密结果是否一致
  38. IF r_signstr<>c_signstr THEN
  39. response.write "签名验证失败"
  40. response.end
  41. END IF
  42. '---校验商户编号
  43. Dim MerchantID '商户自己的编号
  44. IF MerchantID<>c_mid THEN
  45. response.write "提交的商户编号有误"
  46. response.end
  47. END IF
  48. '---校验商户订单系统中是否有通知信息返回的订单信息
  49. Dim conn '商户系统的数据链接
  50. sql="select top 1 数据列 from 商户的订单表 where 商户订单号="& c_order
  51. set rs=server.CreateObject("adodb.recordset")
  52. rs.open sql,conn
  53. IF rs.eof THEN
  54. response.write "未找到该订单信息"
  55. response.end
  56. END IF
  57. '---校验商户订单系统中记录的订单金额和云网支付网关通知信息中的金额是否一致
  58. Dim r_orderamount '商户自己系统记录的订单金额
  59. r_orderamount=rs("订单金额") '商户从自己订单系统获取该值
  60. IF ccur(r_orderamount)<>ccur(c_orderamount) THEN
  61. response.write "支付金额有误"
  62. response.end
  63. END IF
  64. '---校验商户订单系统中记录的订单生成日期和云网支付网关通知信息中的订单生成日期是否一致
  65. Dim r_ymd '商户自己系统记录的订单生成日期
  66. r_ymd=rs("订单生成日期") '商户从自己订单系统获取该值
  67. IF r_ymd<>c_ymd THEN
  68. response.write "订单时间有误"
  69. response.end
  70. END IF
  71. '---校验商户系统中记录的需要在支付结果通知中转发的参数和云网支付网关通知信息中提供的参数是否一致
  72. Dim r_memo1 '商户自己系统记录的需要在支付结果通知中转发的参数一
  73. r_memo1 = rs("转发参数一")
  74. Dim r_memo2 '商户自己系统记录的需要在支付结果通知中转发的参二
  75. r_memo2 = rs("转发参数二")
  76. IF r_memo1<>c_memo1 or r_memo2<>c_memo2 THEN
  77. response.write "参数提交有误"
  78. response.end
  79. END IF
  80. '---校验返回的支付结果的格式是否正确
  81. IF c_succmark<>"Y" and c_succmark<>"N" THEN
  82. response.write "参数提交有误"
  83. response.end
  84. END IF
  85. '---根据返回的支付结果,商户网站可自行给用户显示说明
  86. IF c_succmark="Y" THEN
  87. 由于在GetPayNotify.asp中已进行了实际发货操作,所以在此处只要系统中查询出本订单的结果,然后给用户显示购买成功的提示信息即可。
  88. ELSE IF c_succmark="N" THEN
  89. END IF
  90. %>
  91. <html>
  92. <head>
  93. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  94. <title>云网@网-在线支付结果</title>
  95. </head>
  96. <body>
  97. 支付完成后,给用户显示此次在线支付的结果和订单信息或提货信息。
  98. </body>
  99. </html>