微信支付沙箱测试

时间:2018-02-27 10:09:21 阅读:782次
微信支付沙箱测试

1、下载官方SDK

        https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1

        

        修改 lib/WxPay.Api.php 替换 https://api.mch.weixin.qq.com/ 为  https://api.mch.weixin.qq.com/sandboxnew/

        修改 lib/WxPay.Config.php 填写APPID 、MCHID 、KEY 、APPSECRET 


2、获取沙箱秘钥 

require_once "lib/WxPay.Api.php";
$input = new \WxPayUnifiedOrder();
$url = "https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey";
$input->SetMch_id(WxPayConfig::MCHID);//商户号
$input->SetNonce_str(self::getNonceStr());//随机字符串
$input->SetSign();//签名
$xml = $inputObj->ToXml();
$response = self::postXmlCurl($xml, $url, false, $timeOut);
$data = new \WxPayDataBase();
$result = $data->FromXml($response);	
echo "<pre>";
print_r($result);

修改 lib/WxPay.Config.php 修改文件里面的 KEY 为 结果中的 sandbox_signkey


3、修改支付接口

require_once "example/WxPay.JsApiPay.php";
$input = new \WxPayUnifiedOrder();
$input->SetBody("您的订单描述");
$input->SetOut_trade_no("您的订单ID");
$input->SetTotal_fee(552); //固定金额请不要修改
$input->SetNotify_url("您的异步返回接口地址");
$input->SetTrade_type("JSAPI");
$input->SetOpenid("用户的openid");
$order = \WxPayApi::unifiedOrder($input);
$tools = new \JsApiPay();
$jsApiParameters = @$tools->GetJsApiParameters($order);

 

4、修改异步返回接口


修改 lib/WxPay.Notify.php

//添加查询订单方法
private function Queryorder($out_trade_no){
    $input = new WxPayOrderQuery();
    $input->SetOut_trade_no($out_trade_no);
    $result = WxPayApi::orderQuery($input);
    if(array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS"){
        return true;
    }
    return false;
}
	
//修改NotifyProcess方法
public function NotifyProcess($data, &$msg){
    //TODO 用户基础该类之后需要重写该方法,成功的时候返回true,失败返回false
    if(!array_key_exists("out_trade_no", $data)){
        $msg = "输入参数不正确";
        return false;
    }

    //查询订单,判断订单真实性
    if(!$this->Queryorder($data["out_trade_no"])){
        $msg = "订单查询失败";
        return false;
    }
    return true;
}


修改异步返回接口

require_once "lib/WxPay.Notify.php";
$notify = new \WxPayNotify();
$result = $notify->Handle(false);


5、退款接口

require_once "lib/WxPay.Api.php";
$input = new \WxPayRefund();

$input->SetOut_trade_no("上面的支付接口的订单ID");
$input->SetOut_refund_no("上面的支付接口的订单ID");
$input->SetTotal_fee(552);//总金额,不可修改
$input->SetRefund_fee(552);//退款金额,不可修改
$input->SetOp_user_id(\WxPayConfig::MCHID);//操作员
$result = \WxPayApi::refund($input); //退款接口
if(isset($result ['out_trade_no'])) {
    $input2 = new \WxPayRefundQuery();
    $input2->SetOut_trade_no($result ['out_trade_no']);
    $result= \WxPayApi::refundQuery($input2); //退款查询
    //可打印结果,以便排查问题
}

6、下载对账单

require_once "lib/WxPay.Api.php";
$input = new \WxPayDownloadBill();
$input->SetBill_date(date('Ymd'));
$input->SetBill_type('ALL');
$result = \WxPayApi::downloadBill($input);


7、The End。

扫描二维码关注程序员爱笔记,接收更多资讯

评论

快速评论