コード例 #1
0
    public static object paymentProcess(string TradeAmount, string payment)
    {
        DateTime TradeDate = DateTime.Now;

        #region 執行ECPay的Apple Pay授權API

        //設定訂單交易參數
        string _MerchantID        = "2000132";                                 //綠界提供給您的特店編號
        string _MerchantTradeNo   = TradeDate.ToString("yyyyMMddHHmmssfff");   //您此筆訂單交易編號
        string _MerchantTradeDate = TradeDate.ToString("yyyy/MM/dd HH:mm:ss"); //您此筆訂單的交易時間
        string _TradeAmount       = TradeAmount;                               //您此筆訂單的交易總金額
        string _CurrencyCode      = "TWD";
        string _ItemName          = "手機20元X2#隨身碟60元X1";                        //您該筆商品的描述
        string _PlatformID        = string.Empty;
        string _TradeDesc         = "ecpay商城購物";                               //您該筆訂單的描述
        string _TradeType         = "1";                                       //您該筆訂單的交易來源 1:In App 2:On the Web

        #region 產生檢查碼
        string RealMerchantID = (string.IsNullOrEmpty(_PlatformID) ? _MerchantID : _PlatformID);

        string HashKey = ConfigurationManager.AppSettings[string.Format("{0}_HashKey", RealMerchantID)].ToString(); //綠界提供給您的Hash Key
        string HashIV  = ConfigurationManager.AppSettings[string.Format("{0}_HashIV", RealMerchantID)].ToString();  //綠界提供給您的Hash IV

        Dictionary <string, string> postData = new Dictionary <string, string>();
        postData.Add("MerchantID", _MerchantID);
        postData.Add("MerchantTradeNo", _MerchantTradeNo);
        postData.Add("MerchantTradeDate", _MerchantTradeDate);
        postData.Add("TotalAmount", _TradeAmount);
        postData.Add("currencyCode", _CurrencyCode);
        postData.Add("ItemName", _ItemName);
        postData.Add("PlatformID", _PlatformID);
        postData.Add("TradeDesc", _TradeDesc);
        postData.Add("TradeType", _TradeType);
        string _CheckMacValue = Common.GetCheckMacValue(postData, HashKey, HashIV);

        postData.Add("CheckMacValue", _CheckMacValue);
        #endregion

        #region 送出授權
        //PaymentToken進行AES加密,此欄位不加入檢查碼計算
        string _PaymentToken = Common.AES_Encrypt(payment, HashKey, HashIV);
        _PaymentToken = HttpUtility.UrlEncode(_PaymentToken);
        postData.Add("PaymentToken", _PaymentToken);

        //DoRequest
        string strPost = string.Empty, receiveData = string.Empty, requestUrl = string.Empty, ReturnData = string.Empty;

        foreach (KeyValuePair <string, string> kvp in postData)
        {
            if (strPost.Equals(string.Empty))
            {
                strPost = string.Format("{0}={1}", kvp.Key, kvp.Value);
            }
            else
            {
                strPost += string.Format("&{0}={1}", kvp.Key, kvp.Value);
            }
        }

        requestUrl = "https://Payment-stage.ecpay.com.tw/ApplePay/CreateServerOrder/V2"; //您要呼叫的服務位址

        try
        {
            receiveData = Common.SendRequest(requestUrl, strPost, "application/x-www-form-urlencoded", 0);
        }
        catch (Exception ex)
        {
            receiveData = string.Format(@"{{ ""RtnCode"":""0"",""RtnMsg"":""{0}"" }}", ex.Message);
        }
        finally
        {
            ReturnData = string.Format(@"{{ ""ReturnData"":{0} }}", receiveData);
        }


        #endregion

        #endregion

        /* 將授權結果回應至Client端 */
        return(new JavaScriptSerializer().DeserializeObject(ReturnData));
    }