第三方支付 - 支付寶


支付寶支付流程

首先需要生成一系列鍵值對, 代表要提交給支付寶的業務和非業務參數

var param = new Dictionary<string, string>();
param.Add("_input_charset", "編碼,如:utf-8");
param.Add("body",             "商品描述");
param.Add("notify_url",     "支付寶異步返回的通知鏈接");
param.Add("out_trade_no",     "商戶的唯一訂單號");
param.Add("partner",         "商戶號");
param.Add("payment_type",     "支付類型, 默認1");
param.Add("qr_pay_mode",     "支付模式");
param.Add("return_url",     "支付寶同步跳轉的鏈接");
param.Add("seller_id",         "賣家商戶號=商戶號");
param.Add("service",         "調用接口, 如:create_direct_pay_by_user");
param.Add("subject",         "商品詳情");
param.Add("total_fee",         "價格");

之后需要對這些鍵值對按照 key 的 ASCII 碼值排序

然后重新編碼成 key1=value1&key2=value2 的形式 (不包含 sign, sign_type, 以及空值的參數)

var str = StringHelper.ConcatParamToUrl(param);

之后在這串新編碼之后鏈接上 md5key

str = str + md5key;

並用MD5加密成一個字符串

var md5 = StringHelper.MD5Encrypt(str);

最后添加到參數中

param.Add("sign",         "簽名");
param.Add("sign_type",    "簽名方式");

將整個參數集合並成URL

https://mapi.alipay.com/gateway.do?_input_charset=utf-8&body=value............

直接跳轉到這個鏈接

支付完成后, 支付寶將主動通過 notify_url 設定的網址返回

注意: 通過 notify_url 返回將不通過商戶網站的登陸驗證機制, 並且notify_url的地址要能被互聯網訪問到

你需要在這個url中接受支付寶的通知信息, 做業務處理 並返回 success

[HttpPost]
public ActionResult AliNotifyUrlAsyn()
{
    // 參數
    string out_trade_no;
    string trade_status;
    string gmt_payment;
    // 業務處理
    return Content("success");
}

最后支付寶會自動跳轉到你設定的 return_url 中.

 

 


免責聲明!

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



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