>  기사  >  백엔드 개발  >  Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?

Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?

WBOY
WBOY원래의
2016-08-04 09:19:532848검색

Android 및 iOS APP에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다.
내 백엔드는 PHP로 개발되었습니다. 먼저 WeChat의 통합 주문 생성을 호출하여 prepay_id 선불 주문 번호를 생성했습니다.

<code><?php
public function send_pay(){
//使用统一支付接口
$unifiedOrder = new UnifiedOrder_pub();
$amount = trim($this->config['money'])*100;
$notify_url=$this->config['NotifyUrl'];   //通知URL

//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
//iconv("gb2312","utf-8//IGNORE",
$unifiedOrder->setParameter("body",$this->config['title']);//商品描述
//自定义订单号,此处仅作举例
$out_trade_no = $this->config['code'];
$create_ip = $_SERVER["REMOTE_ADDR"];
$unifiedOrder->setParameter("out_trade_no",$out_trade_no);//商户订单号 
$unifiedOrder->setParameter("total_fee",$amount);//总金额
$unifiedOrder->setParameter("notify_url",$notify_url);//通知地址 
$unifiedOrder->setParameter("spbill_create_ip",$create_ip);//用户端实际ip
$unifiedOrder->setParameter("trade_type","APP");//APP交易类型
$unifiedOrder->setParameter("attach","111");//附加数据 

//获取统一支付接口结果
$unifiedOrderResult = $unifiedOrder->getResult();

//商户根据实际情况设置相应的处理流程
if ($unifiedOrderResult["return_code"] == "FAIL") 
{
    //商户自行增加处理流程
    echo "通信出错:".$unifiedOrderResult['return_msg']."<br>";
}
elseif($unifiedOrderResult["result_code"] == "FAIL")
{
    //商户自行增加处理流程
    echo iconv("utf-8","gb2312//IGNORE","错误代码:".$unifiedOrderResult['err_code']."<br>");
    echo iconv("utf-8","gb2312//IGNORE","错误代码描述:".$unifiedOrderResult['err_code_des']."<br>");
}
elseif($unifiedOrderResult["return_code"] == "SUCCESS")
{
    /**
    成功后返回如下信息
    <xml>
       <return_code><![CDATA[SUCCESS]]></return_code>
       <return_msg><![CDATA[OK]]></return_msg>
       <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
       <mch_id><![CDATA[10000100]]></mch_id>
       <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
       <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
       <result_code><![CDATA[SUCCESS]]></result_code>
       <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
       <trade_type><![CDATA[APP]]></trade_type>
    </xml>
    **/
    $result = array();
    $result['appid'] = $unifiedOrderResult['appid'];
    $result['partnerid'] = $unifiedOrderResult['mch_id'];
    $result['prepayid'] = $unifiedOrderResult['prepay_id'];
    $result['noncestr'] = $unifiedOrderResult['nonce_str'];
    $result['timestamp'] = time();
    $result['package'] = "Sign=WXPay"; //'Sign=WXPay'
    $result['sign'] = $unifiedOrderResult['sign'];
    echo json_encode($result);

    exit;
        //商户自行增加处理流程
        //......
    }
}
?></code>

다음과 같이 생성된 매개변수를 Android 및 iOS로 보냅니다.

<code>$result['appid'] = $unifiedOrderResult['appid'];
$result['partnerid'] = $unifiedOrderResult['mch_id'];
$result['prepayid'] = $unifiedOrderResult['prepay_id'];
$result['noncestr'] = $unifiedOrderResult['nonce_str'];
$result['timestamp'] = time();
$result['package'] = "Sign=WXPay"; //'Sign=WXPay'
$result['sign'] = $unifiedOrderResult['sign'];</code>

그러나 Android 또는 iOS에서 WeChat Pay를 호출할 때 아래 스크린샷과 같이 디스플레이가 비어 있고 오류 메시지도 없습니다.

Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?
Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?
Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?
위 거래 유형을 스캔코드 결제로 변경하면 생성된 QR코드로 다시 결제가 가능합니다.
이미 완료되어 막혔습니다 일주일 넘게 움직일 수가 없어요. 무엇이 문제인지 도와주세요. 정말 감사합니다.
참고 사이트:
http://www.cocoachina.com/bbs...
http://www.cnblogs.com/CrazyS...
http://www.xl779.com/news/zha...

답글 내용:

Android 및 iOS APP에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다.
내 백엔드는 PHP로 개발되었습니다. 먼저 WeChat의 통합 주문 생성을 호출하여 prepay_id 선불 주문 번호를 생성했습니다.

<code><?php
public function send_pay(){
//使用统一支付接口
$unifiedOrder = new UnifiedOrder_pub();
$amount = trim($this->config['money'])*100;
$notify_url=$this->config['NotifyUrl'];   //通知URL

//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
//iconv("gb2312","utf-8//IGNORE",
$unifiedOrder->setParameter("body",$this->config['title']);//商品描述
//自定义订单号,此处仅作举例
$out_trade_no = $this->config['code'];
$create_ip = $_SERVER["REMOTE_ADDR"];
$unifiedOrder->setParameter("out_trade_no",$out_trade_no);//商户订单号 
$unifiedOrder->setParameter("total_fee",$amount);//总金额
$unifiedOrder->setParameter("notify_url",$notify_url);//通知地址 
$unifiedOrder->setParameter("spbill_create_ip",$create_ip);//用户端实际ip
$unifiedOrder->setParameter("trade_type","APP");//APP交易类型
$unifiedOrder->setParameter("attach","111");//附加数据 

//获取统一支付接口结果
$unifiedOrderResult = $unifiedOrder->getResult();

//商户根据实际情况设置相应的处理流程
if ($unifiedOrderResult["return_code"] == "FAIL") 
{
    //商户自行增加处理流程
    echo "通信出错:".$unifiedOrderResult['return_msg']."<br>";
}
elseif($unifiedOrderResult["result_code"] == "FAIL")
{
    //商户自行增加处理流程
    echo iconv("utf-8","gb2312//IGNORE","错误代码:".$unifiedOrderResult['err_code']."<br>");
    echo iconv("utf-8","gb2312//IGNORE","错误代码描述:".$unifiedOrderResult['err_code_des']."<br>");
}
elseif($unifiedOrderResult["return_code"] == "SUCCESS")
{
    /**
    成功后返回如下信息
    <xml>
       <return_code><![CDATA[SUCCESS]]></return_code>
       <return_msg><![CDATA[OK]]></return_msg>
       <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
       <mch_id><![CDATA[10000100]]></mch_id>
       <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
       <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
       <result_code><![CDATA[SUCCESS]]></result_code>
       <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
       <trade_type><![CDATA[APP]]></trade_type>
    </xml>
    **/
    $result = array();
    $result['appid'] = $unifiedOrderResult['appid'];
    $result['partnerid'] = $unifiedOrderResult['mch_id'];
    $result['prepayid'] = $unifiedOrderResult['prepay_id'];
    $result['noncestr'] = $unifiedOrderResult['nonce_str'];
    $result['timestamp'] = time();
    $result['package'] = "Sign=WXPay"; //'Sign=WXPay'
    $result['sign'] = $unifiedOrderResult['sign'];
    echo json_encode($result);

    exit;
        //商户自行增加处理流程
        //......
    }
}
?></code>

다음과 같이 생성된 매개변수를 Android 및 iOS로 보냅니다.

<code>$result['appid'] = $unifiedOrderResult['appid'];
$result['partnerid'] = $unifiedOrderResult['mch_id'];
$result['prepayid'] = $unifiedOrderResult['prepay_id'];
$result['noncestr'] = $unifiedOrderResult['nonce_str'];
$result['timestamp'] = time();
$result['package'] = "Sign=WXPay"; //'Sign=WXPay'
$result['sign'] = $unifiedOrderResult['sign'];</code>

그러나 Android 또는 iOS에서 WeChat Pay를 호출할 때 아래 스크린샷과 같이 디스플레이가 비어 있고 오류 메시지도 없습니다.

Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?
Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?
Android 및 iOS 앱에서 WeChat 결제를 호출하면 페이지가 공백으로 나타납니다. (php WeChat 결제, 앱이 WeChat 결제를 시작할 때 흰색 화면)?
위 거래 유형을 스캔코드 결제로 변경하면 생성된 QR코드로 다시 결제가 가능합니다.
이미 완료되어 막혔습니다 일주일 넘게 움직일 수가 없어요. 무엇이 문제인지 도와주세요. 정말 감사합니다.
참고 사이트:
http://www.cocoachina.com/bbs...
http://www.cnblogs.com/CrazyS...
http://www.xl779.com/news/zha...

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.