发表于: 2019-11-12 21:57:35

1 1158


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)

今天会进行demo

在进行最后的压力测试之前先看看微信支付:

getBrandWCPayRequest参数以及返回值定义:

1、网页端接口请求参数列表(参数需要重新进行签名计算,参与签名的参数为:appId、timeStamp、nonceStr、package、signType,参数区分大小写。)

调用getBrandWCPayRequest接口需要6个入参。

而返回的参数是:

注:JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支付时返回。由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。

示例代码如下:

function onBridgeReady(){

   WeixinJSBridge.invoke(

      'getBrandWCPayRequest', {

         "appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入

             "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数

             "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串

             "package":"prepay_id=u802345jgfjsdfgsdg888",

             "signType":"MD5",         //微信签名方式:

             "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名

     },

      function(res){

      if(res.err_msg == "get_brand_wcpay_request:ok" ){

      // 使用以上方式判断前端返回,微信团队郑重提示:            

//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。      

       }

   });

 }

if (typeof WeixinJSBridge == "undefined"){

   if( document.addEventListener ){

       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);

   }else if (document.attachEvent){

       document.attachEvent('WeixinJSBridgeReady', onBridgeReady);

       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);

   }

 }else{

   onBridgeReady();

 }

支付协议规则:

先判断协议字段返回,在判断业务返回,最后判断交易状态

先是进行调取统一下单api:

应用场景

除付款码支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按Native、JSAPI、APP等不同场景生成交易串调起支付。

状态机

支付状态转变如下:


请求参数


示例:

<xml>
   <appid>wx2421b1c4370ec43b</appid>
   <attach>支付测试</attach>
   <body>JSAPI支付测试</body>
   <mch_id>10000100</mch_id>
   <detail><![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"苹果手机" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"苹果手机" } ] }]]></detail>
   <nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
   <notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
   <openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
   <out_trade_no>1415659990</out_trade_no>
   <spbill_create_ip>14.23.150.211</spbill_create_ip>
   <total_fee>1</total_fee>
   <trade_type>JSAPI</trade_type>
   <sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>

微信官方有给出demo示例:

微信支付 Java SDK

微信支付开发者文档中给出的API进行了封装。

com.github.wxpay.sdk.WXPay类下提供了对应的方法:

方法名说明
microPay刷卡支付
unifiedOrder统一下单
orderQuery查询订单
reverse撤销订单
closeOrder关闭订单
refund申请退款
refundQuery查询退款
downloadBill下载对账单
report交易保障
shortUrl转换短链接
authCodeToOpenid授权码查询openid

注意:

  • 证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载
  • 建议将证书文件名改为复杂且不容易猜测的文件名
  • 商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件
  • 请妥善保管商户支付密钥、公众帐号SECRET,避免密钥泄露
  • 参数为Map<String, String>对象,返回类型也是Map<String, String>
  • 方法内部会将参数会转换成含有appidmch_idnonce_strsign\_typesign的XML
  • 可选HMAC-SHA256算法和MD5算法签名
  • 通过HTTPS请求得到返回数据后会对其做必要的处理(例如验证签名,签名错误则抛出异常)
  • 对于downloadBill,无论是否成功都返回Map,且都含有return_codereturn_msg,若成功,其中return_codeSUCCESS,另外data对应对账单数据




明天计划的事情:(一定要写非常细致的内容)
遇到的问题:(遇到什么困难,怎么解决的)

服务器压测出现错误:

Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/data/software-server/apache-jmeter-4.0/docs/jmx/admin.jmx', missing class com.thoughtworks.xstream.converters.ConversionException: 

---- Debugging information ----

cause-exception     : com.thoughtworks.xstream.converters.ConversionException

cause-message       : 

first-jmeter-class  : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:67)

class               : org.apache.jmeter.save.ScriptWrapper

required-type       : org.apache.jorphan.collections.ListedHashTree

converter-type      : org.apache.jmeter.save.ScriptWrapperConverter

path                : /jmeterTestPlan/hashTree/hashTree/hashTree/hashTree/kg.apc.jmeter.vizualizers.CorrectedResultCollector

line number         : 136

version             : 4.0 r1823414

-------------------------------

解决:
产生该错误的原因,目前有两种情况:
情况1,低版本的JMeter运行高版本的测试计划(测试计划是在高版本的JMeter上编制的)。解决方法:使用相同或更高版本JMeter运行该计划。
情况2,使用第三方插件生成的测试计划,运行在没有该第三方插件的JMeter上。解决方法:在JMeter上安装插件或重新生成不包含插件的测试计划。


Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/data/software-server/apache-jmeter-5.1.1/docs/jmx/admin.jmx'. 

Cause:

CannotResolveClassException: kg.apc.jmeter.vizualizers.CorrectedResultCollector

我安装了我本地的jmter版本还是报错。

## jmeter

export JMETER_HOME=/data/software-server/apache-jmeter-5.1.1

export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH

export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin

修改环境变量使之立即生效

source /etc/profile

启动jmeter内存不足,修改jmeter:

: "${HEAP:="-Xms256m -Xmx256m -XX:MaxMetaspaceSize=256m"}"



最后这些都不对,同一个jmeter版本,不要结果树,只要聚合报告。

/data/software-server/apache-jmeter-5.1.1/bin/jmeter -n -t /data/software-server/apache-jmeter-5.1.1/docs/jmx/admin.jmx -l /data/software-server/apache-jmeter-5.1.1/docs/jmx/admin.jtl

/data/software-server/apache-jmeter-5.1.1/bin/jmeter -n -t /data/software-server/apache-jmeter-5.1.1/docs/jmx/home.jmx -l /data/software-server/apache-jmeter-5.1.1/docs/jmx/home.jtl

运行成功。

下载下来jtl文件,用聚合报告打开产生的jtl文件。


接口平均访问时间应低于200ms,TPS应不小于100

选择测试的几个接口都达标了。

本地压测看了一下返回的数据也都是正常的。


收获:(通过今天的学习,学到了什么知识)


返回列表 返回列表
评论

    分享到