Heim > Backend-Entwicklung > PHP-Tutorial > Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?

Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?

WBOY
Freigeben: 2016-08-04 09:19:53
Original
2857 Leute haben es durchsucht

Wenn Android- und iOS-Apps WeChat-Zahlung aufrufen, erscheint die Seite leer
Mein Backend ist in PHP entwickelt. Ich habe zuerst die einheitliche Bestellgenerierung von WeChat aufgerufen, um die Prepaid-Bestellnummer prepay_id zu generieren. Der Code lautet wie folgt:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Senden Sie die folgenden generierten Parameter an Android und 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>
Nach dem Login kopieren
Nach dem Login kopieren

Beim Aufruf von WeChat Pay auf Android oder iOS ist die Anzeige jedoch leer und es wird keine Fehlermeldung angezeigt, wie im Screenshot unten gezeigt:

Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?
Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?
Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?
Beim Ändern der oben genannten Transaktionsart auf Scancode-Zahlung kann der generierte QR-Code erneut erfolgreich bezahlt werden
Schon erledigt, ich stecke fest Ich bin seit mehr als einer Woche hier und kann mich nicht bewegen. Bitte helfen Sie mir herauszufinden, wo das Problem liegt.
Referenz-Website:
http://www.cocoachina.com/bbs...
http://www.cnblogs.com/CrazyS...
http://www.xl779.com/news/zha...

Antwortinhalt:

Wenn Android- und iOS-Apps WeChat-Zahlung aufrufen, erscheint die Seite leer
Mein Backend ist in PHP entwickelt. Ich habe zuerst die einheitliche Bestellgenerierung von WeChat aufgerufen, um die Prepaid-Bestellnummer prepay_id zu generieren. Der Code lautet wie folgt:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Senden Sie die folgenden generierten Parameter an Android und 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>
Nach dem Login kopieren
Nach dem Login kopieren

Beim Aufruf von WeChat Pay auf Android oder iOS ist die Anzeige jedoch leer und es wird keine Fehlermeldung angezeigt, wie im Screenshot unten gezeigt:

Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?
Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?
Wenn die Android- und iOS-App WeChat Pay aufruft, erscheint die Seite leer. (PHP-WeChat-Zahlung, weißer Bildschirm, wenn die App die WeChat-Zahlung initiiert)?
Beim Ändern der oben genannten Transaktionsart auf Scancode-Zahlung kann der generierte QR-Code erneut erfolgreich bezahlt werden
Schon erledigt, ich stecke fest Ich bin seit mehr als einer Woche hier und kann mich nicht bewegen. Bitte helfen Sie mir herauszufinden, wo das Problem liegt.
Referenz-Website:
http://www.cocoachina.com/bbs...
http://www.cnblogs.com/CrazyS...
http://www.xl779.com/news/zha...

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage