支付宝服务端如何接收通知及验签?

支付宝服务端如何接收通知及验签?

支付宝服务端如何接收通知及验签

以支付接口接收通知并处理为例。

Java 调用示例

Java 异步验签示例

//获取支付宝POST过来反馈信息 
    Map< String , String > params = new HashMap < String , String > ();
    Map requestParams = request.getParameterMap();
    for(Iterator iter = requestParams.keySet().iterator();iter.hasNext();){
   String name = (String)iter.next();
   String[] values = (String [])requestParams.get(name);
   String valueStr = "";
   for(int i = 0;i < values.length;i ++ ){
    valueStr =  (i==values.length-1)?valueStr + values [i]:valueStr + values[i] + ",";
   }
   //乱码解决,这段代码在出现乱码时使用。 
   //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); 
   params.put (name,valueStr);
    }
    //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。 
    //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type) 
    boolean flag = AlipaySignature.rsaCheckV1 (params,alipaypublicKey, "UTF-8","RSA2");

Java异步验签示例(证书)

//获取支付宝POST过来反馈信息 
   Map<String,String> params = new HashMap<String,String>();
   Map requestParams = request.getParameterMap();
   for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext ();) {
    String name =  ( String )iter.next();
    String[] values = (String[])requestParams.get(name);
    String valueStr="";
    for(int i = 0;i < values.length; i++){
    valueStr = (i== values.length-1)?valueStr+values[i]:valueStr+values[i] + ",";
    }
   //乱码解决,这段代码在出现乱码时使用。 
   //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); 
   params.put(name,valueStr);
    }
   //切记alipayPublicCertPath是支付宝公钥证书路径,请去open.alipay.com对应应用下载。 
   //boolean AlipaySignature.rsaCertCheckV1(Map<String, String> params, String publicKeyCertPath, String charset,String signType) 
   boolean flag = AlipaySignature.rsaCertCheckV1(params,alipayPublicCertPath,"UTF-8","RSA2");

PHP 调用示例

PHP异步验签示例

php语言公钥与公钥证书验签方法相同。
$aop = new AopClient;
$aop->alipayrsaPublicKey = '请填写支付宝公钥/支付宝公钥证书路径';
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");

C#调用示例

C#异步验签示例

验签方法中 keyFromFile 必传 false,否则验签失败。

// 获 取 支 付 宝 POST 过 来 通 知 消 息 , 并 以 “参 数 名 = 参 数 值 ” 的 形 式 组 成 数 组 
 // request 回 来 的 信 息 组 成 的 数 组 
  public Dictionary<string,string> GetRequestPost()
 {
    int  i = 0 ;
    IDictionary<string,string> sArray = new IDictionary<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 ;
 }
  // 切 记 alipaypublickey 是 支 付 宝 的 公 钥 , 请 去 open .alipay .com 对 应 应 用 下 查 看 。 
  // bool  RSACheckV1 ( IDictionary < string , string >  parameters , string  alipaypublicKey , string  charset , string  signType , bool  keyFromFile )
  bool flag = AlipaySignature.RSACheckV1(GetRequestPost(),alipaypublicKey,"UTF-8","RSA2",false);

C#异步验签示例(证书)

// 获 取 支 付 宝 POST 过 来 通 知 消 息 , 并 以 “参 数 名 = 参 数 值 ” 的 形 式 组 成 数 组 
    // request 回 来 的 信 息 组 成 的 数 组 
     public Dictionary<string,string> GetRequestPost()
    {
       int  i = 0 ;
       IDictionary<string,string> sArray = new IDictionary<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 ;
    }
     // 切 记 alipayPublicCertPath 是 支付宝公钥证书路径 , 请 去 open .alipay .com 对 应 应 用 下 查 看 。 
     // bool  RSACheckV1 ( IDictionary < string , string >  parameters , string  alipayPublicCertPath , string  charset , string  signType)
  bool flag = AlipaySignature.RSACertCheckV1(dics, alipayPublicCertPath, "UTF-8", "RSA2");

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/13804/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年12月1日 上午10:38
下一篇 2022年12月1日 上午10:40

相关推荐