当前位置: 首页 > news >正文

辽宁沈阳做网站/新闻发布系统

辽宁沈阳做网站,新闻发布系统,wordpress公司,网站建设与维护的内容原文地址: http://blog.csdn.net/yehuijun/article/details/24780119 支付宝的公众账号文档地址 http://open.alipay.com/index.htm 要开通支付宝的公众账号第一步就是要验证商户网关和开发者公钥的有效性。 https://openhome.alipay.com/doc/docIndex.htm?urlht…

原文地址: http://blog.csdn.net/yehuijun/article/details/24780119

支付宝的公众账号文档地址 http://open.alipay.com/index.htm

要开通支付宝的公众账号第一步就是要验证商户网关和开发者公钥的有效性。 

https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/viewKbDoc.htm?key=236714_422556&type=info

文档中忽略了一些细节, 本文进行如下一些细节补充。

1、 生成RSA公密钥对

通过openssl生成公密钥对, 在Linux系统下一般默认已有安装:

1、 让openssl随机生成了一份私钥,加密长度是1024位

openssl genrsa -out rsa_private_key.pem 1024

2、 根据私钥生成公钥

openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout

3、 私钥还不能直接被使用,需要进行PKCS#8编码

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -out pkcs8_rsa_private_key.pem -nocrypt
 去掉头和换行, 公密钥对即可使用了。注意私钥是使用PKCS#8编码的版本。

 “去掉头和换行” 举例, 例如公钥如下

yulong$ more rsa_public_key.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnlK8+l+YnhRd0SM9p/D2zhxAw
sB9Zpt+mDlyyTSLwYPiBhmhemIvkPYHxllQrTop2GnNr4QuF2tGAw/ds5E5G+GGs
EshN1F5R6rIN2eKk59/nV4f7jzVkV+iq+KfTg8MYAn76PtBUK7TyahnBX4U3Umus
QGiCIhUyJpCOKrq5EQIDAQAB
-----END PUBLIC KEY-----

转成代码中的使用的公钥为:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnlK8+l+YnhRd0SM9p/D2zhxAwsB9Zpt+mDlyyTSLwYPiBhmhemIvkPYHxllQrTop2GnNr4QuF2tGAw/ds5E5G+GGsEshN1F5R6rIN2eKk59/nV4f7jzVkV+iq+KfTg8MYAn76PtBUK7TyahnBX4U3UmusQGiCIhUyJpCOKrq5EQIDAQAB

注意如果公钥是放在XML中配置, 要加上 <![CDATA[]]> 防止XML转义

 <property name=<span class="code-quote" style="color: rgb(0, 145, 0); background-color: inherit;">"PublicKey"</span>><value><![CDATA[${public_key}]]></value></property>

2、 商户网关的应答关键细节

在开启商户开发者模式时, 需要通过验证网关。 支付宝公众账号向配置的网关地址, 发送一个HTTTP POST请求, 商户网站必须要能够正确响应这个HTTP POST请求, 才能完成商户网关的验证。

验证的基本细节参见支付宝文档, 这里提两点文档中没有提及的问题。

首先被加签的内容是如下拼接完成的字符串

"<success>true/false</success><biz_content>开发者公钥</ biz_content>" 进行RSA加签, 可以调用支付宝提供的SDK完成

public void process(Message message, ModelMap modelMap) {boolean isSuccess=true;if(message==null || (!config.getAppId().equalsIgnoreCase(message.getAppId()))){isSuccess=false;}String bizContent="<success>"+String.valueOf(isSuccess)+"</success>"+"<biz_content>"+customerPublicKey+"</biz_content>";String signResult = AlipaySignature.encryptAndSign(bizContent, alipayPublicKey,customerPrivateKey, AlipayConstants.CHARSET_GBK, false, true);modelMap.put("signResult", signResult);}


<span style="font-family: Helvetica, Arial, sans-serif; font-size: 10pt; line-height: 13pt; background-color: rgb(255, 255, 255);">config.getAppId() 为商户AppID, 可以在公众账号平台上查询, 是一个数字ID; customerPublicKey为上一节中生成的商户RSA公钥, customerPrivateKey为上一节中生成PKCS#8编码的商户私钥。</span>

signResult 就是准备好的返回给支付宝公众账号平台的XML结果。 AlipaySignature.encryptAndSign 函数会自动拼装反馈XML结果。 两个boolean参数, 表示是否加密, 是否加签。

准备好反馈字符串之后, 还要注意一下细节

public void doPost(ModelMap modelMap, WebRequest request,HttpServletResponse response){// .... 此处略去前面提的生成XML反馈细节//要注意设置反馈的HTTP 请求的Head指定为XML格式, 否则XML中的特殊字符会当做HTML发生转义, 造成支付宝公众账号平台无法识别。response.setHeader("Content-Type", "application/xml");try {if(modelMap.containsAttribute("signResult")){logger.warn("Response: "+(String)modelMap.get("signResult"));response.getOutputStream().print((String)modelMap.get("signResult"));}response.getOutputStream().flush();} catch (IOException e) {logger.error("Write Response Error", e);}}


http://www.lbrq.cn/news/772039.html

相关文章:

  • 网站运营每天做的/怎么自己做一个网站
  • wordpress remove_query_arg/百度竞价优化
  • 用php写的网站/爱站网长尾关键词挖掘查询工具
  • 镇江网站建设价位/如何做电商 个人
  • 云浮 网站建设/免费网络营销平台
  • 网站建设免费空间哪里有/seo优化范畴
  • 盐城专业做网站的公司/如何做网页链接
  • 网站 设计 深圳/安卓优化神器
  • 哪些网站可宣传/小说关键词自动生成器
  • 优良的定制网站建设/数据分析师报考条件
  • 网站建设解决方案/网络怎么推广自己的产品
  • 阿里云 网站部署/网络营销的12种手段
  • 网站建设商虎小程序/宿迁网站建设制作
  • 资阳公司网站建设/关键词文案生成器
  • 高校对网站建设的重视/线下推广
  • 杭州网站建设路/十大少儿编程教育品牌
  • 中山网站建设是什么/新平台推广赚钱
  • 鞍山网站制作报价/今日军事新闻最新消息中国
  • 游戏加盟网/宁波seo优化费用
  • 北京建设厅网站查询/公众号推广平台
  • 全套做网站/游戏推广员判几年
  • 怎样开发公司的网站建设/荨麻疹怎么治疗能除根
  • 东莞seo建站优化工具/十大免费最亏的免费app
  • 网站内容管理系统源码/营销策划公司主要做些什么
  • 最专业的网站建设组织/啥都能看的浏览器
  • 商丘网络有限公司/厦门seo搜索排名
  • 企业网站怎么做优化/快速网站推广公司
  • 北京网站建设首选小峰/网站友情链接连接
  • 网站建设设计流程步骤/seo综合查询怎么进入网站
  • 建造网站的软件/青青河边草直播免费观看
  • JMeter 测试 WebSocket 接口的详细教程
  • 从裸机到云原生:Linux 操作系统实战进阶的“四维跃迁”
  • AWT与Swing深度对比:架构差异、迁移实战与性能优化
  • 25C机场航班调度程序(JS 100)
  • maven项目打包成sdk后在别的项目使用
  • C++方向知识汇总(三)