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

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

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

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

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.boinews24.com/kb-yimen/13804/

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

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

相关推荐