android 微信app支付的一些坑 resp.errCode=-1 微信不调用:WXPayEntryActivity


微信不调用:WXPayEntryActivity


1,在自己的项目的包下新建一个包名为wxapi
注意:是项目包名下,不要在建在某一个包下成为子包
2,记得在AndroidManifest.xml中注册这个activity
 <activity
            android:name="你的包名.wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"></activity>


android:exported=“true”

这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。设置true才能被其他应用调起

微信app支付resp.errCode=-1 


解决resp.errCode=-1的思路:

1,查看注册Appid没有


2,查看参数对不对,大小写一定注意

参数名及描述:点击打开

3,注意6个参数的sign(官方建议后台sign

签名校验工具:点击打开

4,app签名之后再支付,否则也会-1

5,应用签名必须必须和打包的一致(如果使用官方的签名app必须是自己正式打包的)


二,如果是出现第一次能支付,之后都不行,就要检查你的应用签名了

查看签名(keystore):打开cmd  

命令:keytool -list -v -keystore 目标文件路径

之后会提示输入密码,按照提示下一步.....

如果cmd提示

       keytool 是jdk中的一个工具,如果提示'keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

解决:

1.可以把keystore复制到C:\Program Files\Java\jre1.8.0_121\bin (如果你的java路径是默认的,如果不是更改成你自己的jre1.8.0_121\bin文件夹下,然后命令到你的jre1.8.0_121\bin目录下,然后操作

2.或者配置java环境变量 C:\Program Files\Java\jre1.8.0_121\bin到 Path下,如果还不行重启电脑



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 map 来简化这段代码,将每个 case 表达式与一个对应的结构体以及生成 ID 的前缀进行映射,然后根据输入的 item.Type 从 map 中获取对应的结构体和前缀,再执行相应的操作。以下是代码示例: ```go package main import ( "strconv" "github.com/gin-gonic/gin" "github.com/mitchellh/mapstructure" ) type Request interface{} type Response struct { Code int `json:"code"` Msg string `json:"msg"` Data interface{} `json:"data"` } type ItemType struct { Type string `json:"type"` Value Request `json:"value"` } type PrefixID struct { Prefix string ID string } var prefixMap = map[string]PrefixID{ "cumb": PrefixID{"P01", "CombID"}, "conduit": PrefixID{"L02", "ConduitID"}, "feature": PrefixID{"P10", "FeatureID"}, } var modelMap = map[string]interface{}{ "cumb": &models.PsComb{}, "conduit": &models.PsConduit{}, "feature": &models.Feature{}, } func createItem(ctx *gin.Context) { var item ItemType var resp Response if err := ctx.ShouldBindJSON(&item); err != nil { resp.Code = 400 resp.Msg = "参数错误" ctx.JSON(400, resp) return } if reqType, ok := modelMap[item.Type]; ok { if err := mapstructure.Decode(item.Value, reqType); err != nil { panic(err) } res := common.DB.Create(reqType) if res.Error != nil { resp.Code = 500 resp.Msg = "创建失败" resp.Data = res.Error ctx.JSON(500, resp) return } prefixID := prefixMap[item.Type] common.DB.Model(reqType).Update(prefixID.ID, prefixID.Prefix+strconv.Itoa(int(reqType.ID))) resp.Data = prefixID.Prefix + strconv.Itoa(int(reqType.ID)) ctx.JSON(200, resp) } else { resp.Code = 400 resp.Msg = "参数错误" ctx.JSON(400, resp) } } ``` 在上面的代码中,我们使用了 prefixMap 和 modelMap 来分别将每个 case 表达式与一个对应的前缀以及结构体进行了映射。在 createItem 函数中,我们根据输入的 item.Type 从 modelMap 中获取对应的结构体,然后使用 mapstructure.Decode 函数将 item.Value 解码成对应的结构体。接着,我们使用 common.DB.Create 函数将结构体写入数据库,生成对应的 ID,并使用 common.DB.Model 函数更新 ID 字段。最后,我们根据输入的 item.Type 从 prefixMap 中获取对应的前缀,将前缀和 ID 拼接起来作为返回值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值