Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel für den Zugriff auf die Zahlungsschnittstelle von Alipay über .net

Detailliertes Beispiel für den Zugriff auf die Zahlungsschnittstelle von Alipay über .net

黄舟
黄舟Original
2017-05-21 11:19:546364Durchsuche

In diesem Artikel werden hauptsächlich die Zahlungs--Schnittstelle des .net-Zugriffs auf Alipay und die Zahlungsschnittstelle des H5--Website-Zugriffs Alipay vorgestellt Interessierte Freunde können sich auf der mobilen H5-Website mit der Zahlungsschnittstelle von Alipay verbinden. Für eine schnelle Entwicklung wird empfohlen, das von Alipay bereitgestellte SDK zu verwenden.

Ich verwende die SDK-Entwicklung.

Referenz

Namespace

Homepage muss einige
using Aop.Api;
using Aop.Api.Request;
using Aop.Api.Response;
using Aop.Api.Util;
Konstanten

app_id, Merchant_private_key hier definieren, I haben alipay_public_key nicht aufgeführt. Um ihn zu erhalten, müssen Sie zur Alipay-Plattform gehen und einige Vorgänge ausführen, um ihn zu erhalten.
 static string serverUrl = "https://openapi.alipaydev.com/gateway.do";
    static string app_id = "**";  //开发者的应用ID
    static string format = "JSON";
    static string charset = "utf-8";
    static string sign_type = "RSA2"; //签名格式
    static string version = "1.0";
    string UID = "2088102169707816";//卖家支付宝账户号
    //商户私钥
    static string merchant_private_key = "***";
    //支付宝公钥
    static string alipay_public_key = "***";

Wenn der Benutzer auf die Website klickt, um zu bezahlen, müssen wir Alipay aktivieren, um die Zahlung durchzuführen

Bitte überprüfen Sie die spezifischen Parameter, die Sie selbst an Alipay gesendet haben
public string H5RequestPayWay(OrderPO order)
    {
      IAopClient client = new DefaultAopClient(serverUrl, app_id, merchant_private_key, format, version, sign_type, alipay_public_key, charset, false);
      AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
      string address= "http://m." + PathLogic1.RootDomain;
      request.SetReturnUrl(address+ "/WebPay/AlipayPayResult");//同步请求
      request.SetNotifyUrl(address + "/WebPay/AsyncPay");//异步请求
      var lstDetail = Context.Data.OrderDetail.Where(x => x.OrderNo == order.OrderNo).ToSelectList(x=>new { x.SkuName});
      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < lstDetail.Count(); i++)
      {
        sb.Append(lstDetail[i].SkuName + ",");
      }
      request.BizContent = "{" +
  "\"body\":\""+sb.ToString().Substring(0,sb.Length-1)+"\"," +
  "\"subject\":\"袋鼠巴巴商品支付\"," +
  "\"out_trade_no\":\""+order.OrderNo+"\"," +
  "\"timeout_express\":\"90m\"," +
  "\"total_amount\":"+(order.TotalAmount.Value+order.TotalFreight.Value)+"," +
  "\"product_code\":\"QUICK_WAP_PAY\"" +
  " }";

      AlipayTradeWapPayResponse response = client.pageExecute(request);
       return response.Body;
    }

Nach der Ausführung der Methode gibt der Käufer sein/ihr Alipay-Konto-Passwort ein, um zu bezahlen. Wenn die Zahlung erfolgreich ist, wird Alipay die Zahlung durchführen Fordern Sie Ihre SetNotifyUrl-Adresse asynchron in Form einer Post an.

Die Adresse dieser SetNotifyUrl muss vom externen Netzwerk aus zugänglich sein, damit Alipay-Anfragen eingehen können.

Der Käufer zahlt erfolgreich, der Händler ändert die Bestellung

Status

und Datenbankoperationen befinden sich alle in „In asynchroner Anfrage ausführen“

Synchrone Anfrage

public ActionResult AlipayPayResult()
    {
      ViewBag.result = "success";
      return View("PayResult");
    }
     /// <summary>
    /// 验证通知数据的正确性
    /// </summary>
    /// <param name="out_trade_no"></param>
    /// <param name="total_amount"></param>
    /// <param name="seller_id"></param>
    /// <returns></returns> 
private SortedDictionary<string, string> GetRequestPost()
    {
      int i = 0;
      SortedDictionary<string, string> sArray = new SortedDictionary<string, string>();
      NameValueCollection coll;
      //Load Form variables into NameValueCollection variable.
      coll = Request.Form;

      // Get names of all forms into a string array.
      String[] requestItem = coll.AllKeys;

      for (i = 0; i < requestItem.Length; i++)
      {
        sArray.Add(requestItem[i], Request.Form[requestItem[i]]);
      }

      return sArray;
    }
Asynchron Anfrage:
 /// <summary>
    /// 验签
    /// </summary>
    /// <param name="inputPara"></param>
    /// <returns></returns>
    public Boolean Verify(SortedDictionary<string, string> inputPara)
    {
      Dictionary<string, string> sPara = new Dictionary<string, string>();    
      Boolean verifyResult = AlipaySignature.RSACheckV1(inputPara, alipay_public_key, charset,sign_type,false);
      return verifyResult;
    }

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für den Zugriff auf die Zahlungsschnittstelle von Alipay über .net. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn