微信支付app支付坑

APP微信支付报错《商户号该产品权限未开通,请前往商户平台>产品中心检查后重试》

 

 

问题已解决,开放平台微信认证申请的微信app支付是有一个独立的商户平台 ,这个商户平台与公众号申请支付开通的商户平台是不共用的 ,也就是appid和商户号这些参数是不一样的!!

还有一个就是公众号支付和app支付对应的商户平台是不一样的,在商户平台切换账号处可以查看(一个商户id对应一个商户平台账号)

 

 

 

小程序支付报invalid spbill_create_ip错误?

 

 

spbill_create_ip 订单生成的机器IP

参数 spbill_create_ip 在  /lib/WxPay.Api.php  的53行

打印出变量  $_SERVER['REMOTE_ADDR'] ,发现是  ::1 ,这明显是一个无效的ip地址

你应该是在本地进行测试开发的,你只需要把你的本地 localhost 解析为 公网的ip就可以了,

因为微信支付需要有回调url,所以没法确定你的公网ip就没法发送订单支付通知给你,所以提供一个

解析的正常ip就好

 

 

 

问题已解决,开放平台微信认证申请的微信app支付是有一个独立的商户平台 ,这个商户平台与公众号申请支付开通的商户平台是不共用的 ,也就是appid和商户号这些参数是不一样的!!

还有一个就是公众号支付和app支付对应的商户平台是不一样的,在商户平台切换账号处可以查看(一个商户id对应一个商户平台账号)

 

下单

 

  • 其中数组转换xml格式,curl发送请求,xml格式转换成数组可单独封装成函数。
    public function index() {
        $order = [
            'appid'=>'123456',
            'mch_id'=>'56789',
            'nonce_str'=>uniqid(md5(time())),
            'body'=>'测试商品',
            'out_trade_no'=>87654321,//商户唯一订单号,可包含字母序
            'total_fee'=>100,//订单金额,单位/分
            'spbill_create_ip'=>'123.12.12.123',//产生订单号的服务器IP
            'notify_url'=>'http://www.yoursite.com/wxpay',//接受微信异步通知地址
            'trade_type'=>'APP'
        ];
        //用户http_build_query()将数据转成URL键值对形式
        $sign = http_build_query($order);
        //$sign = "appid=123456&mch_id=56789&nonce_str=c6079b98e6aeb4a98f687800c887f6cc58df95d72cd69&body=%E6%B5%8B%E8%AF%95%E5%95%86%E5%93%81&out_trade_no=87654321&total_fee=100&spbill_create_ip=123.12.12.123¬ify_url=http%3A%2F%2Fwww.yoursite.com%2Fwxpay&trade_type=APP";
        //MD5处理,默认支持MD5
        $sign = md5($sign);
        //转大写
        $sign = strtoupper($sign);
        $order['sign'] = $sign;
        //转换成一维XML格式
        $xml = '<xml>';
        foreach($order as $k=>$v){
            $xml.='<'.$k.'><![CDATA['.$v.']]></'.$k.'>';
        }
        $xml.='</xml>';

        //CURL会话
        $ch = curl_init();
        // 设置curl允许执行的最长秒数
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
        // 获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        //发送一个常规的POST请求。
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/pay/unifiedorder');
        //要传送的所有数据
        curl_setopt($ch, CURLOPT_POSTFIELDS, $order);
        // 执行操作
        $response = curl_exec($ch);
        //将xml格式的$response 转成数组
        $response = json_decode( json_encode( simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA) ), true );
        //若预下单成功,return_code 和result_code为SUCCESS。
        if ( $response['return_code'] ==='SUCCESS' && $response['result_code'] ==='SUCCESS') {
            //返回trade_type和prepay_id供前端调用
            echo json_encode( ['trade_type'=>$response['trade_type'], 'prepay_id'=>$response['prepay_id']] );
        }

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

2.处理微信回调

    public function notify()
    {
        $xml = file_get_contents('php://input');
        $arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

        //用户http_build_query()将数据转成URL键值对形式
        $sign = http_build_query($arr);
        //md5处理
        $sign = md5($sign);
        //转大写
        $sign = strtoupper($sign);
        //验签名。默认支持MD5
        if ( $sign === $arr['sign']) {
//            校验返回的订单金额是否与商户侧的订单金额一致。修改订单表中的支付状态。
        }
        $return = ['return_code'=>'SUCCESS','return_msg'=>'OK'];
        $xml = '<xml>';
        foreach($return as $k=>$v){
            $xml.='<'.$k.'><![CDATA['.$v.']]></'.$k.'>';
        }
        $xml.='</xml>';

        echo $xml;

    }

 

 

 

 

问题已解决,开放平台微信认证申请的微信app支付是有一个独立的商户平台 ,这个商户平台与公众号申请支付开通的商户平台是不共用的 ,也就是appid和商户号这些参数是不一样的!!

还有一个就是公众号支付和app支付对应的商户平台是不一样的,在商户平台切换账号处可以查看(一个商户id对应一个商户平台账号)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值