摘要:项目版本微信的支付逻辑与支付宝的支付有一些差别。调用微信支付不同接口需要的参数会有差别。调用客户端的方式查看微信文档扫码支付返回了一个地址。可直接放入微信的完成调用。
payment 项目2.0版本
微信的支付逻辑与支付宝的支付有一些差别。为了让客户端忽略这些差别,统一调用。本sdk做了对应处理。
# SDK调用
微信支付不同接口需要的参数会有差别。请大家在使用接口时,仔细查看文档。
use PaymentChargeContext; use PaymentConfig; use PaymentCommonPayException; // 微信支付,必须设置时区,否则发生错误 date_default_timezone_set("Asia/Shanghai"); // 生成订单号 便于测试 function createPayid() { return date("Ymdhis", time()).substr(floor(microtime()*1000),0,1).rand(0,9); } // 订单信息 $payData = [ "order_no" => createPayid(), "amount" => "0.01",// 单位为元 ,最小为0.01 "client_ip" => "127.0.0.1", "subject" => "测试支付", "body" => "支付接口测试", "extra_param" => "", ]; // 微信扫码支付,需要设置的参数 $payData["product_id"] = "123456"; // 微信公众号支付,需要的参数 $payData["openid"] = "otijfvr2oMz3tXnaQdKKbQeeBmhM";// 需要通过微信提供的api获取该openid /** * 包含客户的配置文件 * 本次 2.0 版本,主要的改变是将配置文件独立出来,便于客户多个账号的情况 * 已经使用不同方式读取配置文件,如:db file cache等 */ $wxconfig = [ "app_id" => "wxxxx", // 公众账号ID "mch_id" => "xxxx",// 商户id "md5_key" => "xxxxxx",// md5 秘钥 "notify_url" => "http://test.helei.com/pay-notify.html", "time_expire" => "14", // 涉及资金流动时,需要提供该文件 "cert_path" => dirname(__FILE__) . DIRECTORY_SEPARATOR . "wx" . DIRECTORY_SEPARATOR . "apiclient_cert.pem", "key_path" => dirname(__FILE__) . DIRECTORY_SEPARATOR . "wx" . DIRECTORY_SEPARATOR . "apiclient_key.pem", ]; /** * 实例化支付环境类,进行支付创建 */ $charge = new ChargeContext(); try { // 微信 扫码支付 $type = Config::WX_CHANNEL_QR; // 微信 APP支付 //$type = Config::WX_CHANNEL_APP; // 微信 公众号支付 //$type = Config::WX_CHANNEL_PUB; $charge->initCharge($type, $wxconfig); $ret = $charge->charge($payData); } catch (PayException $e) { echo $e->errorMessage();exit; } if ($type === Config::WX_CHANNEL_QR) { $url = urlencode($ret); echo ""; } elseif ($type === Config::WX_CHANNEL_PUB) { $json = $ret; var_dump($json);exit; } elseif (stripos($type, "wx") !== false) { var_dump($ret); } ?>
这里扫码支付与公众号支付分别需要提供不同的参数。请一定注意进行区分。否则调用相应端口会抛出异常。
配置文件参数 | 参数名 | 参数说明 | 是否必须 |
---|---|---|---|
app_id | 公众账号ID/应用id | 微信分配的公众账号ID | 是 |
mch_id | 商户号 | 微信支付分配的商户号 | 是 |
md5_key | 加密的key | 在商户中心设置 | 是 |
notify_url | 通知地址 | 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 | 是 |
time_expire | 交易过期时间 | 单位为分钟,过期后无法再次支付 | 是 |
cert_path | 密钥文件 | 可在微信商户后台中下载 | 否,退款需要 |
key_path | 密钥文件 | 可在商户中心下载 | 否,退款需要 |
这里需要注意的是,app_id,由于微信的三个支付接口,需要对应两个不同的app_id。因此再开发中一定要注意。
请求参数参数 | 参数名 | 参数说明 | 是否必须 |
---|---|---|---|
order_no | 订单号 | 平台根据规则生成的订单号,最长64位,要在商户数据库中唯一 | 必须 |
amount | 交易总金额 | 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 | 必须 |
client_ip | 客户端IP | 用户在创建交易时,该用户当前所使用机器的IP。 | 必须 |
subject | 商品名称 | 商品的标题/交易标题/订单标题/订单关键字等。该参数最长为128个汉字。 | 必须 |
body | 商品描述 | 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 | 必须 |
extra_param | 公用回传参数 | 如果用户请求时传递了该参数,则返回给商户时会回传该参数。 | 可选 |
product_id | 商品ID | 扫码支付,此参数必传。此id为二维码中包含的商品ID,商户自行定义。 | 可选 |
openid | 用户标识 | 公众号支付,此参数必传,用户在商户appid下的唯一标识。 | 可选 |
三种支付方式返回值因为处理方式不同,微信方面返回了不同的类型。
app支付返回了需要调用的数组。调用客户端的方式 查看微信文档
扫码支付返回了一个地址。可生成一个二维码,完成支付。
公众号支付,返回的是一个json数据。可直接放入微信的sdk完成jsapi调用。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21900.html
摘要:项目版本微信的退款操作,通过封装与前面支付宝退款除了配置文件,基本一样。微信仅能每次退款笔如果想要实现一次退订多笔订单,可在客户端通过循环来处理。 payment 项目2.0版本 微信的退款操作,通过封装与前面支付宝退款除了配置文件,基本一样。 退款代码如下: use PaymentRefundContext; use PaymentCommonPayException; use P...
摘要:本文是浅析微信支付系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。浅析微信支付前篇大纲微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。目前微信支付支持手机系统有苹果安卓和。 本文是【浅析微信支付】系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下。 浅析微信支...
摘要:支持的付款方式主打银联信用卡等,付款可以及时到账。支持的付款方式主要是微信支付宝和京东支付。支持微信支付宝扫码支付。 最近在开发自己的网站,想要接入一个第三方的支付平台,但是处在创业初期,还没能成立公司,所以没有企业资质,想接入一款安全且性价比高的收款产品。以本人选择困难症再加点小纠结的个性,对现有的一些第三方支付接口做了一个对比,希望能给有相同需要的和正在寻求相关解决方案的朋友提供一...
摘要:支付宝支持网站支付,支付,支付和当面付,但是要想接入网站,需要网站备案,并且还要有营业执照。可是,这个途径后来经过证实,支付宝已经停用。缺点也是相当的明显只有支付宝可以用这种方式,因为微信是在内部有一个公众号形式的提示。 0.背景 前段时间准备把自己的博客做成付费阅读或者订阅的形式,虽然没想着要赢利多少钱,但是起码养的起自己站点域名服务器费用即可。但是大家都懂,草根站长,又没公司,想...
阅读 2986·2020-01-08 12:17
阅读 1990·2019-08-30 15:54
阅读 1151·2019-08-30 15:52
阅读 2032·2019-08-29 17:18
阅读 1041·2019-08-29 15:34
阅读 2459·2019-08-27 10:58
阅读 1860·2019-08-26 12:24
阅读 368·2019-08-23 18:23