博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APP端webview内微信H5支付解决方案
阅读量:6959 次
发布时间:2019-06-27

本文共 1656 字,大约阅读时间需要 5 分钟。

微信已经官方支持微信外部浏览器的H5微信支付。但是如果是从webview中调用H5微信支付的话。 ios平台上支付完成后会跳到外部的浏览器,而不是停留在app里面。

关于这个问题。 就需要我们在服务端模拟请求H5微信支付的中间环节,直接拿到支付地址。这样能避免ios webivew内微信支付成功后跳外部浏览器。

下面是服务端核心代码:

$input = new \WxPayUnifiedOrder();$input->SetBody($i['product_name']); //商品描述$input->SetAttach('abc'); //附加数据,在查询API和支付通知中原样返回$input->SetOut_trade_no($i['qqes_order']); //要求32个字符内,只能是数字、大小写字母_-|*@$input->SetTotal_fee($i['fee'] * 100); //订单总金额,单位为分$input->SetNotify_url($this->notifyUrl);$input->SetTrade_type("MWEB"); //网页版$order = \WxPayApi::unifiedOrder($input);if( ! isset($order['mweb_url']) ){    throw new SdkException('微信统一下单失败');}$payUrl  = $order['mweb_url'];$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $payUrl);if (strpos($payUrl, 'https') === 0) {    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);}$headers['CLIENT-IP']       = $_SERVER['REMOTE_ADDR'];$headers['X-FORWARDED-FOR'] = $_SERVER['REMOTE_ADDR'];$headerArr = array();foreach( $headers as $n => $v ) {    $headerArr[] = $n . ':' . $v;}curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_HTTPHEADER , $headerArr );  //构造IPcurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); // 连接超时(秒)//微信那边填的微信授权域curl_setopt ($ch, CURLOPT_REFERER, 'http://www.example.com'  );curl_setopt($ch, CURLOPT_TIMEOUT, 5); // 执行超时(秒)$outPut = curl_exec($ch);if($outPut === false){    echo curl_error($ch);die;}curl_close($ch);//匹配出支付链接preg_match('/weixin(.*)"/', $outPut, $match);if( ! isset($match[1]) ){    throw new SdkException('无法获取支付链接:' . $outPut);}$clientPayUrl = 'weixin' . $match[1];header('Location:' . $clientPayUrl);

服务端处理完成后,直接跳转从定向到支付最终url。 然后app端拦截这个url吊起微信支付即可。

转载地址:http://wrmil.baihongyu.com/

你可能感兴趣的文章
python中#!/usr/bin/python与#!/usr/bin/env python的区别
查看>>
第10章:并发和分布式编程 10.1并发性和线程安全性
查看>>
多线程之死锁就是这么简单
查看>>
Python字符串格式化
查看>>
朴素贝叶斯算法文本分类原理
查看>>
轰轰烈烈的搭建Spring + Spring MVC + Mybatis
查看>>
MySQL 单机多实例
查看>>
微信小程序入门到实战(二)
查看>>
graphql-java使用手册:part4 订阅(Subscriptions)
查看>>
理解js对象
查看>>
2017-10-07 前端日报
查看>>
Go 领军人物谢孟军:智能制造渴望银弹,首先要摒弃偏见
查看>>
函数式编程与面向对象编程[3]:Scala的OOP-FP混合式编程与抽象代数理论
查看>>
statsd on steroid
查看>>
【mongoDB运维篇③】replication set复制集
查看>>
php中查询mysql如何在IN 中用数组
查看>>
2015 年十佳 HTML5 应用
查看>>
php对象设计进阶
查看>>
python程序的调试
查看>>
启动级别:init 0-6
查看>>