微信app支付和h5支付的区别

新手学堂010

微信app支付和h5支付的区别,第1张

两种支付方式的特点如下:

APP支付,是指商户通过在移动端应用APP中集成开放SDK调起微信支付模块来完成支付;H5支付即公众号支付,是指用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块来完成支付。两种支付方式分别适用不同的支付场景:

APP支付适用于在移动端APP中集成微信支付功能的场景;H5支付适用于在公众号、朋友圈、聊天窗口等微信内完成支付的场景。

因为微信H5 支付有个redirect_url = “”;当这个值带有http 的时候支付完成或者取消支付的时候,返回都打开了浏览器。

解决:1可以修改 redirect_url 的值,修改成跳入自己app的scheme。

            2如果无法修改 redirect_url 的话,只能在webView 加载时拦截连接进行替换。注意一点:自己app Scheme地址得和H5支付填写的域名保持一致。

如下:

if ([scheme hasPrefix:@"https://wxtenpaycom/"] && ![scheme hasSuffix:[NSString stringWithFormat:@"redirect_url=自己appscheme://"]]) {

            decisionHandler(WKNavigationActionPolicyCancel);            NSStringredirectUrl =nil;

            if([schemecontainsString:@"redirect_url="]) {

                NSRangeredirectRange = [schemerangeOfString:@"redirect_url"];

                redirectUrl = [[schemesubstringToIndex:redirectRangelocation]stringByAppendingString:[NSStringstringWithFormat:@"自己appscheme://"]];

            }else{

                redirectUrl = [schemestringByAppendingString:[NSStringstringWithFormat:@"自己appscheme://"]];

            }

            NSMutableURLRequest newRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:redirectUrl] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];

            newRequestallHTTPHeaderFields= navigationActionrequestallHTTPHeaderFields;

            newRequestURL= [NSURLURLWithString:redirectUrl];

            [webViewloadRequest:newRequest];

            return;

        }

如果返回app还得加载成功H5页面成功页面的话,可以保存或者拿到成功页面地址,进入app进行第二次加载。

在Android的html5页面中发起微信支付方法:首先申请公众号,申请开通支付,这个很简单,自行百度申请好之后 在微信公众平台页面的“微信支付”页面中的“开发配置”Tab上配置“支付授权目录”,“测试授权目录”,“测试白名单”在微信公众平台页面的“开发者中心”中找到“AppID(应用ID)”和“AppSecret(应用密钥)”在商户平台中找到微信支付分配的商户号,以及自己配置一个商户支付密钥

具体步骤:

首先通过微信支付的api 获得支付用的prepay_id,这里需要用到上面提到的“AppID(应用ID)”,“AppSecret(应用密钥)”,“微信支付分配的商户号”,“商户支付密钥”以及其他的一些参数(具体参照微信开发文档)用MD5加密成签名(第一次签名)获得prepay_id后,用prepay_id和一些其他参数(具体参照微信开发文档)用MD5加密成签名(第二次签名)然后在前端通过微信内置浏览器提供的js API,WeixinJSBridgeinvoke来调用微信支付的弹出页面,这里需要用到上面的第二次的签名

注:支付链接和在开发平台配置的链接不匹配,总共需要2次签名,并且所需的参数是不同的,在JS中用到的签名是第二次签名,不要混淆参数传递的不能有错。

备案域名cccom

此时在h5支付授权目录,配置域名为cccom,不要加www

则,该域名下的 testcccom可以正常调起微信支付

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

令:如果二级域名不能回调成功,使用原主域名回调可以

因为各种原因吧,我们在做移动端开发的时候,涉及到money,我们经常要做微信支付。如果是做小程序开发,我们可以直接用小程序的原生接口,一键搞定,如果是h5网页的话,那我们就需要使用微信提供的js-sdk了。

注:使用了jssdk不是所有的环境都可以调用微信来支付,它只是单纯的微信环境下支付,如果要想支持非微信浏览器内支付,需要开通微信h5支付功能,我们现在用的都是微信的JSAPI支付,而微信的h5支付是要求商户已有H5商城网站,并且已经过ICP备案。哈哈哈哈,是不是很惊讶!太坑了呀!

虽然坑,还得用,那咱就搞一下它。

首先,打开我们的微信公众平台,阅读一下网页开发的基本要求 https://developersweixinqqcom/doc/offiaccount/OA_Web_Apps/iOS_WKWebviewhtml

然后我们了解到,使用js-sdk,我们先要

然后呢,这里给你们讲一下,我们接下来要做的事情。

首先呢,我们要先要获得网页授权,然后我们跳转我们项目中的业务页面。

这里主要是appid和重定向页面,至于是否弹出授权页面(scope=snsapi_userinfo/snsapi_base )等等,根据你自己需求来。然后呢,我们通过这个来进入页面的时候,在当前你支付页面的url上会有授权后返回的code参数。

如果提示:调用支付jsapi缺少参数: 这是由于没拿到openid导致,可以把windowlocationhref 替换成window,locationreplace() ,这是因为微信网页授权会2次刷新页面,我们这样做能有效避免错误。

然后呢,我们定义一个方法

通过 let code = thisgetQueryString('code'),我们去调用后端提供的接口,来获取openId。我们的支付不需要我去另外获取openId了,同学们自行卑微的通过接口用code换取openId吧

要注意的是,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期 。

然后我们接下来就是我们真正进行支付操作的时刻了

到这里,我们的微信支付基本就是完成了其实整体做下来我们发现,无非是比把大象装冰箱里多两步而已

然后我们把我们封装的接口用起来

到此,一个完整的h5微信支付就完成了。下一次,我们把微信分享也添加进来。这样,一个我们常用的基于微信SDK的支付分享功能就被我们完成了。如果觉得对你有帮助的话,帮作者点个赞吧,码文不易,点一下支持支持!谢谢您嘞!

1、微信平台申请申请入口:登录微信商户平台-->产品中心-->我的产品-->支付产品-->H5支付 2、填写参数在微信支付平台成功申请到微信 H5 支付后,可以通过工单或 IM(标准版及以上版本)填写渠道参数。