微信jsapi支付网页授权回调域名限制问题

问题描述:
微信的jsapi支付有一个必传参数openid,需要使用微信网页授权接口拿到,但目前微信最多允许设置两个回调域名。见官方说明:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3

解决方案:
设置回调中心转发。

解决步骤:

假设你的平台下有5个域名需要jsapi支付,a.com,b.com,c.com,d.com.e.com,其中a.com,b.com在公众号后台设置了回调域名,
我们在a.com下建立回调中心。
1 修改c.com,d.com,e.com三个域名下获取openid的代码,把回调地址改成a.com下的回调中心的地址:
以官方的sdk下的demo为例子,修改 Wxpay.jsApiPay.php,

 public function GetOpenid($order_no = '')
  {
      //通过code获得openid
      if (!isset($_GET['code'])){
          //redirectUrl设置为a后台回调中心的的地址,并标记order_no和platform(最终需要跳转回哪个平台)
          $redirectUrl = "https://a.com/WeixinOpenidCenter/index?order_no=".$order_no."&platform=c";
          $baseUrl = urlencode($redirectUrl);
          $url = $this->_CreateOauthUrlForCode($baseUrl);
          return array('type'=>'url','url'=>$url);
      } else {
          //获取code码,以获取openid
             $code = $_GET['code'];
          $openid = $this->GetOpenidFromMp($code);
          return $openid;
      }
  }

2 在a.com下建立WeixinOpenidCenter控制器,代码如下:

class WeixinOpenidCenterController extends Controller{

   /**
    * openid公共回调中心
    * @return [type] 
    */
   public function index(){

      
       //引入官方包的代码...
       require_once APP_PATH."/sdk路径/WeChat/lib/WxPay.Api.php";
       require_once APP_PATH."/sdk路径/WeChat/example/WxPay.JsApiPay.php";
       require_once APP_PATH."/sdk路径/WeChat/example/WxPay.Config.php";
       require_once APP_PATH."/sdk路径/WeChat/example/log.php";
       require_once APP_PATH."/sdk路径t/WeChat/config.php";
     
       $logHandler= new \CLogFileHandler(APP_PATH."/sdk路径/WeChat/logs/".date('Y-m-d').'.log');
       $log = \Log::Init($logHandler, 15);
       //①、获取用户openid
       try{

           $tools = new \JsApiPay();
           $openId = $tools->GetOpenid();  // 当前位置处于回调中心,微信会携带着code重定向到当前地址,所以GetOpenid方法会直接拿到opendid.
          
           if($openId){
               //跳转到相应后台
               $platform = trim($_GET['platform']);   // 记录需要把openid回传给哪个域名
               $order_no = trim($_GET['order_no']); // 记录目标域名平台下的订单号

               if(!$openId && !$order_no){
                   $this->error('无效的订单');
                   die;
               }

            //携带openid和订单号回传给目标域名
            
            if($platform == 'c'){
                   $url = "https://c.com/Recharge/jsapiPay?openid=".$openId."&order_no={$order_no}";
               }elseif ($platform == 'd') {
                   $url = "https://d.com/Recharge/jsapiPay?openid=".$openId."&order_no={$order_no}";
               }elseif ($platform == 'e') {
                   $url = "https://e.com/Recharge/jsapiPay?openid=".$openId."&order_no={$order_no}";
               }
               header("Location:{$url}");
               die;
           }

       } catch(Exception $e) {
           \Log::DEBUG(json_encode($e));
       }
   }
}

3 目标域名下的Recharge/jsapiPay接收get参数里的openid和订单号,正常发起jsapi支付。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容