b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

thinkphp5.0微信公众号访问支付宝付款

电脑杂谈  发布时间:2020-06-05 00:01:23  来源:网络整理

微信公众号对接支付宝_微信公众号 支付宝_微信公众号接入支付宝支付

我真的不能谈论这种需求. 我必须将支付宝连接到微信公众号. 众所周知,微信公众号拒绝支付宝,阻止支付宝. 因此,如果您通过微信公众号连接到支付宝,则必须手动复制链接跳出微信内置浏览器并强制打开网络浏览器以完成付款. 这很坑. 我只能选择成千上万的百度来寻找答案. 我发现没有PHP可以做,更不用说使用TP框架了. 我以前做过APP Alipay付款,PC扫码付款是一天之内完成的,这个公用账户付款很烦人,让我分享一下使用Thinkphp5.0作为微信公众号访问Alipay的代码和过程(请使用计算机看看你是否看不到图片,它一定已经解决了,踩到坑了.

首先登录Alipay开发者平台以申请访问权限,如下所示:

创建要查看的应用程序,添加APP支付功能,需要注册并上线,如图所示:

好的,接下来主要解决微信公众号对支付宝的访问功能,这可以参考支付宝开发文档/手机网站支付/快速访问/使用SDK快速访问该文档. 微信公众平台无法使用支付宝收款解决方案. 其中有一个演示,我通过下载来实现.

还有一个演示可供下载,请单击此处查看,您需要调用支付宝界面,如下所示:

微信公众号 支付宝_微信公众号接入支付宝支付_微信公众号对接支付宝

下载微信公众号访问支付宝并解压缩后,可以看到有五个文件微信公众号接入支付宝支付微信公众号接入支付宝支付,如图所示:

我主要使用demo_get.htm和pay.htm,加上ap.js来实现,pdf仅供参考,可以看看(重点来了).

首先完成选择付款页面的过程:

在此处选择支付宝,单击付款过帐以转移订单信息以调用pay_order方法:

public function pay_order(){
$res = new OrderGoods();
//获取订单号
$where['id'] = input('post.order_sn');
$reoderSn = input('post.order_sn');
//查询订单信息
$order_info = $res->where($where)->find();
//获取支付方式
$pay_type = input('post.pay_type');//微信支付 或者支付宝支付
//获取支付金额
$money = input('post.totle_sum'); $order_id = input('post.order_id');
//判断支付方式
switch ($pay_type) {
case 'ali';//如果支付方式为支付宝支付
$this->redirect('index.php/mobile/Alipay/alipay',['$reoderSn'=>$order_id]);
break;
case 'wx';
//更新支付方式为微信
$this->redirect('index.php/mobile/Wxpay/js_api_call',['order_id'=>$order_id]);
break; }
}

微信公众号接入支付宝支付_微信公众号 支付宝_微信公众号对接支付宝

此处选择支付宝付款. 我在这里重定向并获取参数订单ID.

转到支付宝控制器,开始访问支付宝,使用刚刚下载的演示:

这是一个粗糙的演示目录

主要用于pay.php(在演示中配置配置文件,导入).

public function alipay($reoderSn=null,$status=null){
           vendor('alipaywx.config');
vendor('alipaywx.wappay.service.AlipayTradeService');
vendor('alipaywx.wappay.buildermodel.AlipayTradeWapPayContentBuilder'); //商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = $_POST['WIDout_trade_no']; //订单名称,必填
$subject = $_POST['WIDsubject']; //付款金额,必填
$total_amount = $_POST['WIDtotal_amount']; //商品描述,可空
$body = $_POST['WIDbody']; //超时时间
$timeout_express="1m"; $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setTimeExpress($timeout_express);
$payResponse = new \AlipayTradeService($config);
$result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
return;
}

微信公众号对接支付宝_微信公众号 支付宝_微信公众号接入支付宝支付

然并找到此页面:

这对用户体验非常不友好. 我只能选择复制链接并在浏览器中打开它进行付款. 为了解决这个问题,百度检查了很多解决方案,但没有成功. 最后,官方文档提供了演示,因此我对代码进行了更改:

 public function alipay($reoderSn=null,$status=null){
vardor('alipaywx.config');
vendor('alipaywx.wappay.service.AlipayTradeService');
vendor('alipaywx.wappay.buildermodel.AlipayTradeWapPayContentBuilder'); //商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = $_POST['WIDout_trade_no']; //订单名称,必填
$subject = $_POST['WIDsubject']; //付款金额,必填
$total_amount = $_POST['WIDtotal_amount']; //商品描述,可空
$body = $_POST['WIDbody']; //超时时间
$timeout_express="1m"; $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setTimeExpress($timeout_express);
$payResponse = new \AlipayTradeService($config);
$result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
$this->assign('result',$result);
$this->assign('order_sn',$order_sn);
$this->assign('total_amount',$total_amount);
$this->view->engine->layout(false);
return view('Pay/payInfo');
}

是的,我调用了Alipay接口来获取拼接的链接并将其分配给模板(注意!调用Alipay接口时,有两种方法可以在相关类中构造请求路径或参数,即GET和POST ,以表单形式发布,选择GET方法以获取构造的URL!),然后在演示中进入demo_get.html页面,部分代码为屏幕截图:

将演示中a标签的href中的演示链接替换为通过调用支付宝获得的请求链接,并引入ap.js. 当您单击以确认付款时,将调用以下js代码_AP.pay代码以调用ap.js中的付款的location.href路径,并将传递参数goto:

微信公众号 支付宝_微信公众号对接支付宝_微信公众号接入支付宝支付

这时,转移参数跳转到另一个html是pay.html,并将此参数分配给控制器中的模板:

 public function pay($goto=null){
// echo $goto;exit;
$this->assign('goto',$goto);
$this->view->engine->layout(false);
return view();
}

我收到了从上一页_AP.pay传递的参数goto并将其分配给付款视图. 在pay视图中,我直接在演示中获取了pay.html的代码,并替换了其中的一些数据. 丢失,请替换以下屏幕截图:

替换数据后的一些屏幕截图:

请确保引入ap.js,否则将不会成功. 现在,我要付款一次,如下所示:

您最终是如何得到想要的?浏览器打开后,页面显示如下:

嘻嘻.

现在已经满足要求,以上只是一个粗略的参考. 毕竟,有成千上万种方法,并且有很多方法可以实现此功能. 我希望以上步骤可以给遇到这种情况的代码朋友一个新的想法. 上面代码的混乱只是一个演示,如果您不喜欢它,请不要喜欢它.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-234134-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...