微信浏览器用微信支付的JSAPI。
前面的步骤全部完成,可以成功支付。并且在商户平台可以查询到订单。
在处理“支付结果通知notify_url”这一步出问题。
<?php
//将xml格式的$response 转成数组
$receivexml = json_decode( json_encode( simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA) ), true );
//[a]小程序ID
$appid_xml=$receivexml["appid"];
//[b]bank_type
$bank_type_xml=$receivexml["bank_type"];
//[c]现金支付金额
$cash_fee_xml=$receivexml["cash_fee"];
//[i]是否关注公众账号
$is_subscribe_xml=$receivexml["is_subscribe"];
//[m]商户号
$mch_id_xml=$receivexml["mch_id"];
//[n]随机字符串
$nonce_str_xml=$receivexml["nonce_str"];
//[op]签名
$openid_xml=$receivexml["openid"];
//[ou]商户订单号
$out_trade_no_xml=$receivexml["out_trade_no"];
//[r]业务结果
$result_code_xml=$receivexml["result_code"];
//[ti]支付完成时间
$time_end_xml=$receivexml["time_end"];
//[to]订单金额
$total_fee_xml=$receivexml["total_fee"];
//[trad]交易类型JSAPI、NATIVE、APP
$trade_type_xml=$receivexml["trade_type"];
//[tran]微信支付订单号
$transaction_id_xml=$receivexml["transaction_id"];
//[s]签名
$sign_xml=$receivexml["sign"];
$return_code_xml=$receivexml["return_code"];
$result_code_xml=$receivexml["result_code"];
//拼接待签名字符串
$stringA='appid='.$appid_xml.'&bank_type='.$bank_type_xml.'&cash_fee='.$cash_fee_xml.'&is_subscribe='.$is_subscribe_xml.'&mch_id='.$mch_id_xml.'&nonce_str='.$nonce_str_xml.'&openid='.$openid_xml.'&out_trade_no='.$out_trade_no_xml.'&result_code='.$result_code_xml.'&time_end='.$time_end_xml.'&total_fee='.$total_fee_xml.'&trade_type='.$trade_type_xml.'&transaction_id='.$transaction_id_xml;
//拼接key
$stringSignTemp=$stringA.'&key=******';
//字符串MD5加密并改为大写
$sign=strtoupper(md5($stringSignTemp));
if ( $return_code_xml=="SUCCESS" and $result_code_xml=="SUCCESS" and $sign==$sign_xml) {
//这里执行存储过程,修改数据库中表的信息,将微信支付订单号transaction_id写入数据库
return "<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>";
?>
(代码中的KEY肯定正确)
测试中,微信支付订单号transaction_id并没有写入数据库中。
大兄弟,你答的不对啊~~~
V3的接口没说这个内容