8***@qq.com
8***@qq.com
  • 发布:2019-10-18 17:04
  • 更新:2020-08-26 14:55
  • 阅读:4232

uniapp H5 支付表单提交问题解决烦方案

分类:uni-app
      uniapp的H5封装支付宝个微信支付,以支付宝为例,下单成功后返回的是HTML表单和一段JS,把代码输出到浏览器,JS只执行submit事件POST跳转提交表单到支付宝。说白了就是  
    <form action="支付宝接口">  
        <input name="money" value="100.00" />  
        <input type="submit" value="支付">  
    </form>  

这段代码点击的亚子

但是uni编译的H5不行,哪怕v-html都不行,即便这个代码在H5上本身没有问题。

我也是实在没办法,就用过数据库实现,过程如下
1:下单成功,获取到HTML
2:存入数据库,我设置的结构是 sign char(13) html text end (int 11),一个是存取唯一标识,一个是for内容,一个是过期是间
3:数据插入成功,反回访问地址,比如后台返回url='https://ask.dcloud.net.cn?sign=g4hdcbg15ryh5';
4:uniapp拿到sign 执行location.href=url;
5:这个地址不是uniapp的范围,是传统html站点,通过sign取出数据,输出就好了,并且删除这条表单数据

前端代码:

                    //#ifdef H5  
                    if(res.type=='alih5'){  
                        window.open(res.order,'_self')  
                        window.close();  
                    }  
                    //#endif

后台输出

 public function actionAlwap()  
    {  
        $sign = Input::trim('get.sign', 0);//查询唯一令牌  
        $form = Alwap::find()->where(['sign' => $sign])->one();  
        if (!$form) {//没有返回  
            return $this->redirect(Input::referrer())->send();  
        }  
        $form->delete();//获取成功,不管怎样直接删除  
        if ($form->time + 60 < time()) {//过去就返回  
            return $this->redirect(Input::referrer())->send();  
        }  
        return $form->form;//否则输出  
    }  
}
2019-10-18 17:04 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

老哥,没看明白。 uniapp打包的h5 - 获取到后台返回的form表单怎么跳转支付宝啊

4***@qq.com

4***@qq.com

同问

1***@qq.com

1***@qq.com

求详细过程

  • 8***@qq.com (作者)

    以支付宝为例,支付宝H5下单成功支付宝返回的是HTML代码,内容就是一个表单,需要在浏览器运行这个表单,内部含有一个JS自动触发表单提交,但是因为坑爹的uniapp-h5各种限制,所以搞不定这一步,所以我的办法是


    1:支付宝下单成功,得到HTML

    2:把HTML存入数据库,把数据库ID返回给前端

    3:uniapp-h5得到ID,用loction.href进行跳转到不指定位置,通过ID从数据库拿出HTML并直接显示到浏览器就好了

    2020-04-30 10:08

  • teller306

    回复 8***@qq.com: 由代码吗?还是没有看懂

    2020-05-03 00:15

  • 1***@qq.com

    回复 teller306:我是通过后台跳转到一个HTML,然后进行支付,再返回,但是好像不起作用

    2020-05-03 10:10

  • z***@163.com

    回复 8***@qq.com: 使用uniapp h5唤起支付宝支付, 后端返回的是url,是不是可以通过下面的方式进行跳转

    // #ifdef H5

    location.href = 后端返回的url

    // #endif

    2021-08-11 10:26

1***@qq.com

1***@qq.com - 骑着小马去泡妞

直接h5就创建表单提交可以发起支付
const div = document.createElement('div');
div.innerHTML = form表单;
document.body.appendChild(div);
document.forms[0].submit();

  • k***@163.com

    在uni中怎么渲染form,而且dom操作能用吗

    2020-07-07 16:08

  • 1***@qq.com

    回复 k***@163.com: 你运行在h5端就可以这样操作发起支付的,你只需要操作form提交就行了,只是支付成功回调我还不知道咋搞

    2020-07-08 09:26

a***@hotmail.com

a***@hotmail.com -

打包安卓还能用么

该问题目前已经被锁定, 无法添加新回复