PHP应用如何对接微信公众号JSAPI支付

简介: 本文介绍了微信支付的多种方式,包括JSAPI支付、APP支付、Native支付、付款码支付和H5支付。

微信支付的产品有很多,1. JSAPI支付  2. APP支付  3. Native支付  4.付款码支付  5. H5支付。 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需要“微信开放平台”,H5支付可以在微信以后浏览器通过一个链接调起微信支付,根据自身的业务场景选择,各产品对接方式基本一致,这里主要讲公众号支付。


涉及平台:


微信商户平台

微信公众平台

 

微信商户平台的操作部分


1. 没有账号按要求提交资料审核。

2. 通过后记录mch_id,md5_key,以及下载好相关的API安全操作证书,账户中心。

3. 进入产品中心,开通对应的支付产品,比如“JSAPI支付”。

4. 找到“APPID授权管理”,点击关联更多AppID。


5. 填写公众号的AppID,或者小程序的AppID等。

6. 点击开发配置的公众号支付,添加与自己项目对应的域名及目录。

 


微信公众平台的操作部分


1. 登录公众平台,打开“公众号设置”,记录原始ID。



2. “功能设置”中,添加项目的业务域名,JS接口安全域名,网页授权域名。



3. 在自己应用中通过对接公众号需要对应的AppID,AppSecret,并把自己服务器IP为加入白名单。


4. 应用中通过接口时,生成Tonken, 和EncodingAESKey并记录下来。


5. 进入微信公众平台,打开基本配置,服务器配置,填写应用的入口地址和上面参数,最后启用即可。


 

应用程序部分


1. 前端


引入jweixin的SDK到页面中,通过一个接口地址获取预支付id,再使用SDK方法调起支付。


var ua = window.navigator.userAgent.toLowerCase();
if(paytype!=1 && ua.match(/MicroMessenger/i) == 'micromessenger') {   // 微信公众号支付
  if (typeof WeixinJSBridge == "undefined") {
    if(document.addEventListener) {
      document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
    }else if (document.attachEvent) {
      document.attachEvent('WeixinJSBridgeReady', jsApiCall); 
      document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
    }
  }else{
    $.ajax({
      type: "GET",
      url: "{php echo $this->createMobileUrl('pay')}",
      data: {type:type,rid:rid},
      dataType: "json",
      success: function(data) {
        var jsApiParameters = data;
        console.log('FC测试: '+jsApiParameters);
        WeixinJSBridge.invoke('getBrandWCPayRequest', jsApiParameters, function(res) {
            WeixinJSBridge.log(res.err_msg);
            if(res.err_msg == "get_brand_wcpay_request:ok") {
              window.location.reload();
            }
          }
        );
      }
    });
  }
}


2. 后端

if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {      // 微信浏览器
  
  $notify_url = $_W['siteroot'].'addons/xxxxx/wxpay.php';         // 支付后的回调地址
  $model = new HcfkModel(); // 可无视
  $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";                    // 请求预下单接口
  file_put_contents(IA_ROOT."/addons/xxxxx/trade",$trade_no);
  $data["appid"] = $wechat_payment['appid'];                // 微信商户平台AppID
  $data["body"] = '对订单描述一下';
  $data["mch_id"] = $wechat_payment['mchid'];               // 微信商户平台的商户ID
  $data["nonce_str"] = $model->getRandChar(32);
  $data["notify_url"] = $notify_url;
  $data["out_trade_no"] = $trade_no;
  $data["spbill_create_ip"] = $model->get_client_ip();
  $data["total_fee"] = $money*100;
  $data["trade_type"] = "JSAPI";
  $data["openid"] = $openid;                        // 用户网页授权后的OpenID,用户对某一公众号是唯一
  $data["sign"] = $model->getSign($data,$wechat_payment['signkey']);    // 对以上请求参数进行加密,加密方式各异,大部分md5
  //echo "<pre>";print_R($data);die;
  $xml = $model->arrayToXml($data);
  $response = $model->postXmlCurl($xml, $url);
  $ress = $model->xmlstr_to_array($response);
  if($ress['return_code']=='FAIL') {
    exit(json_encode(array('code'=>0,'msg'=>$ress['return_msg'])));
  }
  if($ress['result_code']=='FAIL'){
    return $this->result(1, '操作失败',$ress['err_code'].$ress['err_code_des']);
  }
  if($ress['return_code']=='SUCCESS'){                                            // 预下单成功返回支付“需要的参数”
    $datas["appId"] = $wechat_payment['appid'];                                 // appid
    $datas["nonceStr"] = $model->getRandChar(32);                               // 32位随机串
    $datas["package"] = "prepay_id=".$ress['prepay_id'];                        // 预支付id
    $datas['signType'] = "MD5";
    $datas["timeStamp"] = time().'';
    $datas["paySign"] = $model->MakeSign($datas,$wechat_payment['signkey']);    // 签名
    exit(json_encode($datas));
  }else{
    exit(json_encode(array('code'=>0,'msg'=>'操作失败')));
  }
}


目录
相关文章
人工智能 关系型数据库 OLAP
1497 1
|
移动开发 小程序 开发工具
揭秘微信/支付宝6大支付方式:从扫码到刷脸,谁在偷偷赚你的手续费?优雅草卓伊凡
揭秘微信/支付宝6大支付方式:从扫码到刷脸,谁在偷偷赚你的手续费?优雅草卓伊凡
2260 0
揭秘微信/支付宝6大支付方式:从扫码到刷脸,谁在偷偷赚你的手续费?优雅草卓伊凡
百炼-我的智能体应用在微信公众号渠道无法得到输出
微信公众号,总是出现思考中,请回复“继续”,而在我的应用观测中已经体现了输出
700 0
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
1711 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
2892 12
|
API 开发者
微信native支付对接案例详解
本文详细介绍了微信Native支付的对接流程,包括效果展示、产品介绍、接入前准备、开发指引、API列表、支付通知等,并强调了只有通过微信认证的服务号才能对接微信支付。每年需支付300元认证费用。
792 3
|
PHP
20241125易支付PHP网站源码
PHP74,上传源码后解压访问域名/install 进行安装 安装完成 之后一定要设置伪静态 源码里面nginx.txt 就是伪静态 然后复制粘贴到伪静态里面保存即可
624 2
|
人工智能 小程序 算法
微信小程序地图定位的核心技术与实际应用详解
在移动互联网时代,微信小程序凭借其轻量化和普及性,成为室内地图导航的理想平台。本文探讨了微信小程序在室内定位领域的创新应用,包括蓝牙iBeacon定位、高精度地图构建及AI路径规划等核心技术,及其在购物中心、医院、机场火车站和景区等场景的应用,展示了其为用户带来的高效、智能的导航体验。
1266 0
|
存储 缓存 开发框架
提高微信小程序的应用速度
【10月更文挑战第21天】提高微信小程序的应用速度需要从多个方面入手,综合运用各种优化手段。通过不断地优化和改进,能够显著提升小程序的性能,为用户带来更流畅、更高效的使用体验。
955 155

热门文章

最新文章