C#支付寶支付接口H5版(手機網頁支付)


接口官方文檔 https://docs.open.alipay.com/203/107090/

 

首先在Nuget 安裝 Alipay

     /// <summary>
        /// 支付寶支付
        /// </summary>
        /// <param name="model"></param>
        /// <param name="configPath"></param>
        /// <returns></returns>
        public static string Alipay()
        {
            string OrderNumber = "alipay" + DateTime.Now.ToString("yyyyMMddHHmmss");
            string app_id = "你的app_id";
            string merchant_private_key = "你的應用私鑰";
            string alipay_public_key = "你的支付寶公鑰";
            string timeout_express = "30m";//訂單有效時間(分鍾)
            string postUrl = "https://openapi.alipay.com/gateway.do";
            string sign_type = "RSA2";//加簽方式 有兩種RSA和RSA2 我這里使用的RSA2(支付寶推薦的)
            string version = "1.0";//固定值 不用改
            string format = "json";//固定值
            string Amount = "0.01";//訂單金額
            string method = "QUICK_WAP_WAY";//調用接口 固定值 不用改
            IAopClient client = new DefaultAopClient(postUrl, app_id, merchant_private_key, format, version, sign_type, alipay_public_key, "UTF-8", false);
            AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
            request.SetNotifyUrl("支付寶后台通知的地址");
            request.SetReturnUrl("支付寶前台回跳的地址");
            request.BizContent = "{" +
            "    \"body\":\"對一筆交易的具體描述信息。如果是多種商品,請將商品描述字符串累加傳給body。\"," +
            "    \"subject\":\"商品描述\"," +
            "    \"out_trade_no\":\"商家唯一訂單,填寫你項目里生成的唯一訂單號\"," +
            "    \"timeout_express\":\"" + timeout_express + "\"," +
            "    \"total_amount\":" + Amount + "," +
            "    \"product_code\":\""+ method + "\"" +
            "  }";
            AlipayTradeWapPayResponse response = client.pageExecute(request);
            string form = response.Body.Substring(0, response.Body.IndexOf("<script>"));
            return form;
        }
 
         

<!DOCTYPE html>


<html lang="zh-cn">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width" />
<title></title>
<script type="text/javascript">
function submit(){
document.forms['alipaysubmit'].submit();
}
</script>
</head>
<body>
<div>
<button onclick="submit()">支付寶支付</button>
<div id="formDiv" style="display:none;">
<!--form-->

</div>

</div>
</body>
</html>

 

 

        /// <summary>
        /// 支付寶異步回調專用(修改請參考相關文檔)
        /// </summary>
        /// <param name="notify_time">通知時間</param>
        /// <param name="app_id">開發者的app_id</param>
        /// <param name="charset">編碼格式</param>
        /// <param name="version">接口版本</param>
        /// <param name="sign_type">簽名類型</param>
        /// <param name="sign">簽名</param>
        /// <param name="trade_no">支付寶交易號</param>
        /// <param name="out_trade_no">商戶訂單號</param>
        /// <param name="buyer_id">買家支付寶用戶號</param>
        /// <param name="buyer_logon_id">買家支付寶賬號</param>
        /// <param name="seller_id">賣家支付寶用戶號</param>
        /// <param name="seller_email">賣家支付寶賬號</param>
        /// <param name="trade_status">交易狀態</param>
        /// <param name="total_amount">訂單金額</param>
        /// <param name="receipt_amount">實收金額</param>
        /// <param name="invoice_amount">開票金額</param>
        /// <param name="buyer_pay_amount">付款金額</param>
        /// <param name="subject">訂單標題</param>
        /// <param name="body">商品描述</param>
        /// <returns></returns>
        public ActionResult AlipayAsynchronousReception(DateTime notify_time, string app_id = "", string charset = "", string version = "", string sign_type = "", string sign = "", string trade_no = "",
            string out_trade_no = "", string buyer_id = "", string buyer_logon_id = "", string seller_id = "", string seller_email = "", string trade_status = "", double total_amount = 0,
            double receipt_amount = 0, double invoice_amount = 0, double buyer_pay_amount = 0, string subject = "", string body = "")
        {
            var msgStr = $@"AlipayAsynchronousReception:  out_trade_no={out_trade_no},trade_no={trade_no},trade_status={trade_status},notify_time={notify_time},DateTimeNow={DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}";
            new LogEntity().SetLogMessage(msgStr);
            var model = new PaymentRecordModel();
            model.Trade_no = trade_no;
            model.Out_trade_no = out_trade_no;
            model.Buyer_login_id = buyer_logon_id;
            model.Seller_email = seller_email;
            model.State = (int)Enum.Parse(typeof(PaymentRecordStateEnum), trade_status);
            var facade = new TrainingFacade();
            var result = facade.OpreationPaymentRecord(model);
            if (result.IsSuccess)
            {
                return Json("success", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("fail", JsonRequestBehavior.AllowGet);
            }
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM