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;//否则输出
}
}
8***@qq.com (作者)
看下面
2020-04-30 10:09