1
2
3
4
5
6
7
8
9
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using JumbotCms.API.Tenpay;
using CY.Config;
using CY.Infrastructure.Common;
 
namespace DealMvc.Pay.Tenpay
{
    public class TenPay 
    {
        HttpContext context;
        public TenPay(HttpContext context)
        {
            this.context = context;
        }
        public string RequestPay(string ordernum,string return_url,double? PayMoney,string ProductName,string Remark)
        {
 
 
        //创建PayRequestHandler实例
        PayRequestHandler reqHandler = new PayRequestHandler(context);
        
        //商户号
        string bargainor_id = WebInfo.Instance.Tenpay_account.ToString2();
        //设置密钥
        reqHandler.setKey(WebInfo.Instance.Tenpay_key.ToString2());
 
        //初始化
        reqHandler.init();
 
        //当前时间 yyyyMMdd
        string date = DateTime.Now.ToString("yyyyMMdd");
 
        //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
        string strReq = DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4);
 
 
        //财付通订单号,10位商户号+8位日期+10位序列号,需保证全局唯一
        string transaction_id = bargainor_id + date + strReq;
 
 
        //-----------------------------
        //设置支付参数
        //-----------------------------
        reqHandler.setParameter("bargainor_id", bargainor_id);            //商户号
        reqHandler.setParameter("sp_billno", ordernum);                //商家订单号
        reqHandler.setParameter("transaction_id", transaction_id);        //财付通交易单号
        reqHandler.setParameter("return_url", return_url);                //支付通知url
        reqHandler.setParameter("desc", ProductName);    //商品名称
        reqHandler.setParameter("attach", Remark==null?"":Remark);    //会员ID
        reqHandler.setParameter("total_fee", ((int)(PayMoney*100)).ToString());                        //商品金额,以分为单位
 
 
        //用户ip,测试环境时不要加这个ip参数,正式环境再加此参数
        reqHandler.setParameter("spbill_create_ip",DNTRequest.GetIP());
 
        //获取请求带参数的url
        string requestUrl = reqHandler.getRequestURL();
        return requestUrl;
        //FinalMessage("正在进入财付通网站...", requestUrl, 0, 4);
        }
 
        public bool ReturnPay()
        {
            //密钥
            String key = WebInfo.Instance.Tenpay_key.ToString2();
 
 
            PayResponseHandler resHandler = new PayResponseHandler(context);
 
            resHandler.setKey(key);
 
            //判断签名
            if (resHandler.isTenpaySign())
            {
                //交易单号
                string transaction_id = resHandler.getParameter("transaction_id");
 
                //金额金额,以分为单位
                string total_fee = resHandler.getParameter("total_fee");
 
                //支付结果
                string pay_result = resHandler.getParameter("pay_result");
 
                //会员ID
                string userid = resHandler.getParameter("attach");
 
                if ("0".Equals(pay_result))
                {
 
                    return true;
                }
                else
                {
                    return false;
                }
 
            }
            else
            {
                return false; 
            }
        }
    }
}