Coolfensi推广网站头像

Coolfensi推广网站

Coolfensi推广网站专注数据驱动的互联网营销和运营,客服VX:coolfensi,客服QQ:2451468936(QQ/微信客服只做引导和站点通知,不闲聊。有站点内业务疑问以及订单问题的话,请点击【CL-在线售后客服窗口】进行会话)

  • 文章110319
  • 阅读12537846

人生倒计时

  • 今日已经过去小时
  • 这周已经过去
  • 本月已经过去
  • 今年已经过去个月
首页 最新知识 正文内容

h5支付宝免签支付接口(h5接入支付宝支付)

客服VX(coolfensi) 最新知识 2023-01-02 14:01:31 165

微信H5网页公众号外支付接入攻略demo

最近在某C论坛中发现有很多的网友在提问和求助自己的网站卖东西,希望可以接入一个支付接口,可以在用户购买后直接在网页上支付。

联系方式:微信:coolfensi
(使用浏览器扫码进入在线客服窗口)
复制联系方式

我在这里发表一下,网站如果希望用户通过在线付款的方式进行付款,就需要申请一种或多种用于进行人民币支付的支付接口。在线支付接口提供商可以是某个商业银行、银联在线支付或者支付宝、微信支付等第三方的支付机构。

这其中微信支付的申请是比较简单的

下面是对申请微信支付接口做简单介绍:

最常用的第三方支付机构如新浪支付微博钱包、支付宝、财付通、快钱、环迅支付、易宝支付等。他们拥有中国人民银行颁发的非金融机构第三方支付许可证。可以为用户提供支付业务服务,如果用第三方支付首选微信支付,简单易操作。

网站接入微信支付实现在线支付功能,通常有两种方式,一种是在微信内部访问网站,然后下单支付;另一种是在微信外部访问网站,然后下单支付。

在微信内部,我们可以通过在公众号聊天窗口发送访问自己网站链接,或者将网站链接发在自己的朋友圈,微信用户都可以在进入下单,点击下单就会唤起微信H5支付,确认金额,输入支付密码即可完成交易。这个是公众号支付申请,之前就已经开放申请了。针对微信内场景支付

在微信外部,我们可以通过触屏手机上自带的浏览器进入网站,唤起微信支付。这个是微信H5支付申请,是在近期开放的。针对的是企业公司的商城网站场景支付。

所以想获得微信支付H5支付接口:

1首先要有公司资质例如营业执照、公司对公账户、网站备案域名、合法居民身份证;

2这些都需要自申请中上传给微信人工审核;

3审核通过后就可以获得微信支付商户平台的账户和密码

4在商户平台里找到申请入口

5进入申请界面填入H5相关设置信息,注意填入的信息一定要和自己的销售商品情况保持一致。

6提交,等待审核,2个工作日左右,审核通过马上获得支付接口

7再将接口和网站接入即可。

对新接触微信支付的企业来说,申请微信支付还是一个比较头疼的事情,遇到申请失败或被驳回、没有备案的公司网站网址域名、需要网站授权函、类目不会选择导致未通过,都可以通过黑河马进行协助解决,代申请包通过。

App内H5方式微信、支付宝支付,无法回跳到App问题

1、微信支付

本地URL Types 要添加一下授权域名:aaa.xxx.com

2、支付宝支付

第一种方式:支付宝支持拦截+支付二合一的方式,通过拦截H5支付链接,调用SDK接口进行支付

第二种方式:

1.添加 URL Scheme

2.实现代理方法拦截链接并跳转支付宝

staticconstNSString*CompanyFirstDomainByWeChatRegister =@" ";

支付宝开发文档:

h5支付宝免签支付接口(h5接入支付宝支付) 第1张

iOS H5调用微信(支付宝)支付与回调

利用WKWebView加载网页,在app中处理H5页面调用微信支付 ------ 实现WKNavigationDelegate协议

该方法是决定H5页面是否允许跳转的

- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler{

    WKNavigationActionPolicy  actionPolicy =WKNavigationActionPolicyAllow;//允许

    NSString*urlScheme = navigationAction.request.URL.scheme;

    NSString*urlString = navigationAction.request.URL.absoluteString;

    NSString *wxPre = @"";

    NSURLRequest*request = navigationAction.request;

    NSLog(@"urlScheme:%@",urlScheme);

    NSLog(@"urlStr:%@",urlString);

    if([urlString containsString:@"weixin://wap/pay?"]) {

         actionPolicy =WKNavigationActionPolicyCancel;//不允许跳转

         NSURL*url = [NSURLURLWithString:urlString];

             if([[UIApplicationsharedApplication]respondsToSelector:@selector(openURL:options:completionHandler:)]){

            if(@available(iOS10.0, *)) {

                [[UIApplication sharedApplication] openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {

                }];

            }else{

                // Fallback on earlier versions

                [[UIApplicationsharedApplication]openURL:url];

            }

        }else{

            [[UIApplication sharedApplication]openURL:url];

        }

    }

    decisionHandler(actionPolicy);//这句是必须加上的,不然会异常

}

很多小伙伴儿都遇到回跳的问题,点击“完成”或“取消”跳到了Safari却跳不回APP。

 2.1、配置URL Types   添加schemes:

2.2、配置 Referer

 [requestsetValue:@"" forHTTPHeaderField:@"Referer"];

2.3、服务器回调的URL中一定要写成   , 如果一定要拼接,可以让后台区分一下,如果是iOS 前面一定要写成  ,不然跳不回APP。

注意: 此域名一定是H5授权的域名,如果是二级域名,可以写成:aaa.xxxx.com

一般支付完 不管完成与否都要调一下回调地址来刷新支付页面的,但问题是iOS的回调地址中一定要写成  这样的格式才能跳回来,但是调回来后没有执行回调地址,页面又刷新不了,或者跳回来后是个空白页,这又产生了一个新的问题。当点击微信支付页上的“完成”或“取消”返回APP时,会调用 AppDelegate 中的 openURL: 方法

-(BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options{ 

  // url.scheme 就是 ,你只需要在这做一个判断,如果是  你就给外部发一个通知,那外部接收到这个通知,刷新界面就行了。

//刷新地址也就是支付完的回调地址,后台可以把回调地址拼接在  后面,例如: 。 那么 url 就是   ,你向外部发通知时把 url 作为参数传出去即可 

    if ([url.scheme containsString:@""]) {

        [[NSNotificationCenter defaultCenter] postNotificationName:@"weChatPayHandle" object:nil userInfo:@{@"url":url}];

    }

    return YES;

}

//微信支付后刷新主界面 (处理通知的方法 )

-(void)refreshOrderData:(NSNotification*)notifi{

    NSDictionary*dic = notifi.userInfo;

    NSString*url = [NSStringstringWithFormat:@"%@",dic[@"url"]];

    NSRange range = [url rangeOfString:@""];

    NSString*lastUrl = [urlsubstringFromIndex:range.length];

    NSLog(@"%@",lastUrl);

    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:lastUrl]]];

}

解决h5的支付宝支付问题 可以提供两种解决办法

 第一种 调用支付宝网页支付 

(问题 支付成功后回调到了游览器,无法返回APP,解决如下)

//以WKWebView为例  

- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler {

    WKNavigationActionPolicy  actionPolicy =WKNavigationActionPolicyAllow;//允许

    NSString*urlScheme = navigationAction.request.URL.scheme;

    NSString*urlString = navigationAction.request.URL.absoluteString;

    NSString *wxPre = @"";

    NSURLRequest*request = navigationAction.request;

    NSLog(@"urlScheme:%@",urlScheme);

    NSLog(@"urlStr:%@",urlString);

    //  先判断一下,找到需要跳转的再做处理

    if([urlSchemeisEqualToString:@"alipay"]) {

         //  1.以?号来切割字符串

        NSArray* urlBaseArr = [urlStringcomponentsSeparatedByString:@"?"];

        NSString* urlBaseStr = urlBaseArr.firstObject;

        NSString* urlNeedDecode = urlBaseArr.lastObject;

        //  2.将截取以后的Str,做一下URLDecode,方便我们处理数据

       //  NSMutableString * afterDecodeStr = [NSMutableString stringWithString:[self URLDecodedString:urlNeedDecode]];

        NSString*afterDecodeStr =WebURLDecodedString(urlNeedDecode);

        //  3.替换里面的默认Scheme为自己的Scheme

        NSString* afterHandleStr = [afterDecodeStrstringByReplacingOccurrencesOfString:@"alipays"withString:@"QEQuickEnjoyment"];

       //  4.然后把处理后的,和最开始切割的做下拼接,就得到了最终的字符串

        NSString* finalStr = [NSStringstringWithFormat:@"%@?%@",urlBaseStr,WebURLEncode(afterHandleStr)];

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

            //  判断一下,是否安装了支付宝APP(也就是看看能不能打开这个URL)

            if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:finalStr]]) {

                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:finalStr]];

            }

        });

        //  2.这里告诉页面不走了 -_-

        decisionHandler(WKNavigationActionPolicyCancel);

        return;

    }

  decisionHandler(actionPolicy);//这句是必须加上的,不然会异常

}

// OC 做URLEncode的方法

staticinlineNSString* WebURLEncode(NSString* str){

    NSString*charactersToEscape =@"#[]@!$'()*+,;\"%{}|^~`";

    NSCharacterSet*allowedCharacters = [[NSCharacterSetcharacterSetWithCharactersInString:charactersToEscape]invertedSet];

    NSString *encodedUrl = [[str description] stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];

    return encodedUrl; }

staticinlineNSString*WebURLDecodedString(NSString* str)

{  return [str stringByRemovingPercentEncoding]; }

这样h5处理支付宝就可以了

但是如果想在支付宝成功后app处理事件 处理如下:

回到Appdelegate的代理方法

-(BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options{// 判断一下这个host,safepay就是支付宝的if([url.host isEqualToString:@"safepay"]) {// 拿到这个链接的数据,数据大概是这样的/*

        mushRoomBox://safepay/?%7B%22memo%22:%7B%22result%22:%22%7B%5C%22alipay_trade_wap_pay_response%5C%22:%7B%5C%22code%5C%22:%5C%2210000%5C%22,%5C%22msg%5C%22:%5C%22Success%5C%22,%5C%22app_id%5C%22:%5C%222017020505522491%5C%22,%5C%22auth_app_id%5C%22:%5C%222017020505522491%5C%22,%5C%22charset%5C%22:%5C%22GBK%5C%22,%5C%22timestamp%5C%22:%5C%222018-11-09%2011:43:06%5C%22,%5C%22out_trade_no%5C%22:%5C%222018100001_simple_48f033a4a00ba19a0526ddbd4f96b036%5C%22,%5C%22total_amount%5C%22:%5C%220.01%5C%22,%5C%22trade_no%5C%22:%5C%222018110922001438371006963978%5C%22,%5C%22seller_id%5C%22:%5C%222088221175674834%5C%22%7D,%5C%22sign%5C%22:%5C%22T6jn7QSsvjjG%5C/HxknSl2lOdHj6zf7jebWEKkeGhEJaXCYFbRHMTsml7TNRhRACupmwDYUADQOynKNR%5C/QBXHgBxJRhYEE9SXVz4mp7sqSGPItzV4bVmZw5AG5UJzsuIh9O6QC%5C/QHc+FcA2i1zw46VDMUnbCCKat5q4ME9d3AUSMhYg31xO+1TZnraDfm0I%5C/OwAnA5iCTOhq%5C/fkm%5C/r4hsujdv9fTvmszgIJLMhN7yQhoGaOWs0vIQ6hoJoXmCXVapfY7ANsoKaR6hGJogH4GKGQi0vLk17W8s+LjcOUT%5C/zB6K6gN+fyCefm8FOJ+8g4GUAreuZDcW0MuGE1OOmaxDrXg==%5C%22,%5C%22sign_type%5C%22:%5C%22RSA2%5C%22%7D%22,%22ResultStatus%22:%229000%22,%22memo%22:%22%22%7D,%22requestType%22:%22safepay%22%7D

        *///  然后,一样的套路方法

NSString* urlNeedJsonStr = url.absoluteString;

NSArray* afterComStr = [urlNeedJsonStr componentsSeparatedByString:@"?"];/

/  这个decode方法,在上面找哈NSString* lastStr = [self WebURLDecodedString:afterComStr.lastObject];//  这个lastStr,其实是一个jsonStr,转一下,就看到了数据

NSDictionary* dict = [self dictionaryWithJsonString:lastStr];//  dict的结构差不多是这样/*

          "memo": {

                  "result":"订单相关信息,如订单号,支付金额等等";

                  "ResultStatus":"9000";

          },

          ******

        *///  和支付宝SDK的返回结果一次,这个ResultStatus,就是我们要的数据//  9000 :支付成功//  8000 :订单处理中//  4000 :订单支付失败//  6001 :用户中途取消//  6002 :网络连接出错//  这里的话,就可以根据状态,去处理自己的业务了}returnYES;}

-  (NSDictionary*)dictionaryWithJsonString:(NSString*)jsonString{

  if(jsonString ==nil) {

   return nil; 

   }

NSData*jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

NSError*err;NSDictionary*dic = [NSJSONSerializationJSONObjectWithData:jsonData                                                        options:NSJSONReadingMutableContainerserror:err];

if(err)   

 {NSLog(@"json解析失败:%@",err);

return nil;    

}return dic;

}

接支付宝提供的SDK,schemeStr参数传入自己APP的URLScheme即可。 具体的  手机网站支付转Native支付

1.1、掉起支付宝APP

1.2、支付完成后,支付宝APP要返回到我们的APP里面来

- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler{

    BOOL isIntercepted = [[AlipaySDK defaultService] payInterceptorWithUrl:[navigationAction.request.URL absoluteString] fromScheme:@"WRWarehouseHasRice" callback:^(NSDictionary *result) {

        // 处理支付结果

        NSLog(@"%@", result);

        // isProcessUrlPay 代表 支付宝已经处理该URL

        if([result[@"isProcessUrlPay"]boolValue]) {

            // returnUrl 代表 第三方App需要跳转的成功页URL

            NSString*urlStr = result[@"returnUrl"];

        }

    }];

    if(isIntercepted) {

             decisionHandler(WKNavigationActionPolicyCancel); 

     return; 

   }

           decisionHandler(WKNavigationActionPolicyAllow);

}

简述支付宝网关的功能

支付宝网关功能如下:

使用 Alipay-buyCRED Gateway for myCRED 网关,你可以让用户通过支付宝购买积分,该网关支持支付宝web端的 即时到帐、双功能和担保交易三种接口。部分功能如下:

支持后台和前台使用

后台在 用户 - 积分充值 页面,可以充值

前台可通过 【mycred_go】(注:请将 【】 换为 [] 使用,下同) 简码调用充值功能

支持支付宝web端的 即时到帐、双功能和担保交易三种接口

即时到帐接口:购买积分者购买后,直接到账,支付宝处订单处于已完成阶段;

双功能和担保交易接口:可以设置用户购买后的交易终点(等待卖家发货、等待买家确认收货、交易已完成),只有达到这个交易终点的时候,才会充值到账。购买积分者购买积分后,支付宝订单处于已发货,等待购买者收货状态,跳转到其购买的积分类型对应的日志页面。

兼容 buyCRED 组件的三个内置简码:【mycred_buy】, 【mycred_buy_form】 , 【mycred_buy_pending】 ,这个支付宝网关的id 是 mycred_alipay

新增后台用户积分管理功能,可以手动给用户添加或扣除积分,积分动态写入mycred内置日志

支持后台自定义显示样式

web如何申请支付宝接口

网站加入支付宝接口需要和支付宝进行签约,具体步骤如下:

1、准备好介入支付宝的网站;

2、准备好签约的支付宝账户;

3、完成支付宝实名认证;

4、挑选合适的支付产品费率;

5、在线提交签约订单;

6、完成订单付款;

7、等待订单审核;

8、审核通过之后,就接入成功了。

支付宝免签约即时到帐接口 是什么?详细点, 谢谢。

在我的支付宝首页中,我的生活助手里有个“我要付款”,点进去,就可以即使到账!

文章目录
    搜索