发表于: 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>
- 方法内部会将参数会转换成含有
appid
、mch_id
、nonce_str
、sign\_type
和sign
的XML - 可选HMAC-SHA256算法和MD5算法签名
- 通过HTTPS请求得到返回数据后会对其做必要的处理(例如验证签名,签名错误则抛出异常)
- 对于downloadBill,无论是否成功都返回Map,且都含有
return_code
和return_msg
,若成功,其中return_code
为SUCCESS
,另外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
-------------------------------
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
选择测试的几个接口都达标了。
本地压测看了一下返回的数据也都是正常的。
收获:(通过今天的学习,学到了什么知识)
评论