前幾天做微信app支付,遇到了支付失敗的問題,app進行支付的時候,返回-1。查了好多資料,沒找到。后來經過排查,是因為簽名的問題。不多說,直接上代碼。服務器端的demo版本是v3。
require(dirname(dirname(__FILE__))."/lib/WxPay.Api.php");
//生成訂單
$out_trade_no = trim($_POST['orderid']);
//總金額(1表示1分錢)
$total_fee = 100*$price;
//商品描述
$body = '微信支付人民幣 '.$price;
//回調地址
$notify_url = 'http://www.xxxx.com/notify_recharge.php';
//微信支付下單
$input = new WxPayUnifiedOrder();
$input->SetBody($body);
$input->SetOut_trade_no($out_trade_no);
$input->SetTotal_fee($total_fee);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetNotify_url($notify_url);
$input->SetTrade_type("APP");
$input->SetProduct_id($total_fee);
$unifiedOrderResult = WxPayApi::unifiedOrder($input);
//獲取下單信息
$data = array();
$data = array(
"appid" => $unifiedOrderResult['appid'],
"partnerid" => $unifiedOrderResult['mch_id'],
"prepayid" => $unifiedOrderResult['prepay_id'],
"noncestr" => $unifiedOrderResult['nonce_str'],
"timestamp" => (string)$this->nowtime,
'package' => 'Sign=WXPay',
);
//將下單獲取的信息重新簽名 demo沒有這一步,為出錯的原因
$data['sign'] = $this->MakeSign($data);
$data["orderid"] = $out_trade_no;
$data["price"] = $total_fee;
$data["url"] = $notify_url;
echo json_encode($data);
【版權申明】未經博主同意,謝絕轉載!(請尊重原創,博主保留追究權) http://www.cnblogs.com/facetwitter/p/5063204.html