微信小程序开发-微信支付免密支付(自动扣款)-小程序+java界面
微信小程序开发
小程序开发
浏览:1069 次

微信小程序开发-微信免密支付
很多时候我们需要使用非保密支付,这通常被称为自动扣款。不过,如何自动扣费,在这个微信API中并没有详细解释。官方微信支付官方说得很清楚,但非保密支付较少……有很多东西需要支付,比如滴滴打车、App Store微信支付、二维码乘车等。
下面是我做的一个项目:小程序、后台界面和数据库构建。用二维码乘车。微信小程序生成二维码。公交车机器配备有刷卡机,用于扫描代码并扣除费用。上线四个月后,我们有数十万用户,每天扫描20000多个订单,金额超过10万。
图像.png
图像.png
图像.png
图像.png
图像.png
从简报app发送的图片
准备事项:
1.微信app序列号。
2、申请一个微商账号(商家开通了委托代扣,似乎需要用微信私下办理,我使用的账号是甲方提供的)。
3.下载微信开发者工具。
根据下面的图片进入开发者工具,创建您的项目,工具将自动返回给您,根据图片创建项目目录,这将不再详细描述。
我不会详细说明发送的一些参数和结果。有关详细信息,请参阅以下链接。这是微信工作人员与微信合作提供的内部API文档,以及非秘密支付(自动扣除)API文档的地址:
事实上,有了这个链接,我几乎明白了!。。。。。
然后往下看。
对于免密支付,您必须首先与用户签署免密支付协议。如何签名?
首先,您需要使用代码查询用户的openid。
如何获取代码?
1.小程序用户可以登录。
//登录
wx.登录({
成功:函数(res){
//资源。密码
然后让你的后台界面来获取它。
},

失败:函数(){
}
})
2.用户登录获取代码,并请求微信界面获取openid。注:一个代码只能使用一次。
我无法使用Java获取用户的openid小程序,因为小程序请求必须填写安全url域名,而微信域名无法填写。放弃使用小程序获取所有信息
private Map<String,Object>_ getOpenId(字符串代码){
映射
Map<String,String>urlData=new HashMap<字符串,字符串>();
urlData。put(“appid”,appid);//小程序id
urlData。put(“secret”,appKey);//小程序密钥
urlData。put(“grant_type”,“authorization_code”);//固定值可以这样写
urlData。put(“js_code”,代码);//小程序中的代码
HttpsClientUtil HttpsClientUtil=新的Https客户端Util();
对象data_反序列化=空;
尝试{
//代码2打开URL“https://api.weixin.qq.com/sns/jscode2session ";
字符串dataStr=httpsClientUtil。doGet(代码2OpenUrl,urlData);
data_反序列化=JSONUtil.反序列化(dataStr);
}catch(异常ex){
ret.put(“成功”,false);
Ret.put(“消息”,“_getOpenId_Unknown异常”);
ret.put(“消息”,例如);
返回ret;
}
Map<String,String>data=(Map<String,String>)data_反序列化;
if(data.containsKey(“错误代码”)){
ret.put(“成功”,false);

ret.put(“消息”,data.containsKey(“错误代码”));
ret.put(“消息”,data.containsKey(“错误消息”));
}其他{
ret.put(“成功”,true);
ret.put(“结果”,数据);
}
返回ret;
}
好的,让我们开始签名。您只需要一个小程序就可以签署合同。你不需要在后台做任何事情。
首先,app需要发起签名请求。这是签名方法,
但首先,将签名小程序放在app上这是json中微信的新规则
“navigateToMiniProgramAppIdList”:[
“Wxbd687630cd02ce1d”,签名小程序
“Wx5e73c65404ee268”微信支付用户还款小程序
]
wxml语言
//BindGetUserInfo是我的逻辑函数,我不需要查看它,
js语言
//签名请求数据中有几个项目必须传输,但我没有传输那些不需要的项目
var me=这个;
//Pretend参数
this.global数据。contract_code=this.genID(5);
var数据={
mch_id:this.globalData。mch_Id,//您的商户Id
appid:this.globalData。appid,//小程序appid
plan_id:this.globalData。plan_ ID,//您的商户签名模板ID(设置在商户ID中)

合同代码:this.globalData。contract_Code,//由商家生成的签名码,在商家端必须是唯一的
contract_display_帐户:this.turnN