微信和支付宝聚合支付

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6icon-default.png?t=LA92https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
         "appId":"wx2421b1c4370ec43b",     //公众号ID,由商户传入     
         "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
         "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
         "package":"prepay_id=u802345jgfjsdfgsdg888",     
         "signType":"MD5",         //微信签名方式:     
         "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
      },
      function(res){
      if(res.err_msg == "get_brand_wcpay_request:ok" ){
      // 使用以上方式判断前端返回,微信团队郑重提示:
            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
        WeixinJSBridge.call('closeWindow');
      } 
   }); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

支付宝链接:

支付宝H5开放文档 (alipay.com)https://myjsapi.alipay.com/jsapi/native/trade-pay.html

<script th:inline="javascript">
var orderNo= [[${orderNo}]];
alipayTradePay([[${tradeNO}]]);
//由于js的载入是异步的,所以可以通过该方法,当AlipayJSBridgeReady事件发生后,再执行callback方法
function ready(callback) {
     if (window.AlipayJSBridge) {
         callback && callback();
     } else {
         document.addEventListener('AlipayJSBridgeReady', callback, false);
     }
}

function alipayTradePay(tradeNO) {
    ready(function(){
         AlipayJSBridge.call("tradePay", {
              tradeNO: tradeNO
         }, function (data) {
        	 if(data.resultCode==9000){
        		 location.href="/toSuccessPage?orderNo="+orderNo;
        	 }else{
	        	 AlipayJSBridge.call("closeWebview");
        	 }
         });
    });
}
</script>
### PHP 实现微信支付宝聚合扫码支付 为了实现微信支付宝聚合扫码支付功能,在PHP环境中可以利用现有的SDK来简化这一过程。PaySDK是一个集成多种支付渠道(包括但不限于支付宝微信支付)的PHP库[^1]。 下面展示一段基于此思路构建的基础示例代码: #### 准备工作 确保已经安装并配置好了`composer`环境,并通过Composer引入必要的依赖包,比如官方推荐使用的`alipay/aop-sdk`用于接入支付宝服务以及`overtrue/wechat-pay`处理微信支付逻辑。 #### 创建支付类 `Payment.php` ```php <?php namespace App\Payments; use Overtrue\WeChat\Payment\Client as WeChatClient; use AlipayTradeWapPayRequest; use AopClient; class Payment { private $wechat_client; private $alipay_client; public function __construct(WeChatClient $wechat, AopClient $alipay){ $this->wechat_client = $wechat; $this->alipay_client = $alipay; } /** * 处理来自前端的选择哪种方式进行付款请求. */ public function handlePayment($type, array $orderInfo){ switch ($type) { case 'wechat': return $this->processWeChatPayment($orderInfo); case 'alipay': return $this->processAliPayPayment($orderInfo); default: throw new \Exception('Unsupported payment type'); } } protected function processWeChatPayment(array $data){ // 使用 overtrue/wechat-pay 库发起微信支付请求 try{ $result = $this->wechat_client->unifiedOrder([ 'body' => $data['description'], 'out_trade_no'=> uniqid(), 'total_fee'=>$data['amount']*100, 'notify_url'=>'https://yourdomain.com/notify', 'trade_type'=>'NATIVE', // 此处设置为原生扫码模式 ]); if(isset($result['code_url'])){ return ['qrcode_url' => $result['code_url']]; }else{ throw new \Exception('Failed to get QR code URL from wechat.'); } }catch(\Exception $e){ log_error($e->getMessage()); throw $e; } } protected function processAliPayPayment(array $data){ // 构建支付宝交易参数对象 $request = new AlipayTradeWapPayRequest(); // 设置业务参数 $bizContent = [ "subject" =>$data['description'], "out_trade_no"=>uniqid(), "total_amount"=>$data['amount'], "product_code"=>"QUICK_WAP_PAY" ]; $request->setNotifyUrl("https://yourdomain.com/alipay_notify"); $request->setBizContent(json_encode($bizContent)); try{ // 发起请求获取表单HTML字符串 $formHtml = $this->alipay_client->pageExecute($request,'get'); return compact('formHtml'); } catch (\Exception $ex) { log_error($ex->getMessage()); throw $ex; } } } ``` 这段代码展示了如何创建一个能够区分不同支付类型的处理器,并针对每种类型执行相应的操作——对于微信支付来说就是返回二维码链接供用户扫描;而对于支付宝,则生成了一个可以直接嵌入网页中的HTML表单以便提交给支付宝网关完成支付流程[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值