示例
👏🏻 欢迎点击本页下方 "帮助我们改善此页面!" 链接参与贡献更多的使用示例!
JSAPI 下单
官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_1.shtml
php
$response = $app->getClient()->postJson("v3/pay/transactions/jsapi", [
"mchid" => "1518700000", // <---- 请修改为您的商户号
"out_trade_no" => "native12177525012012070352333'.rand(1,1000).'",
"appid" => "wx6222e9f48a0xxxxx", // <---- 请修改为服务号的 appid
"description" => "Image形象店-深圳腾大-QQ公仔",
"notify_url" => "https://weixin.qq.com/",
"amount" => [
"total" => 1,
"currency" => "CNY"
],
"payer" => [
"openid" => "o4GgauInH_RCEdvrrNGrnxxxxxx" // <---- 请修改为服务号下单用户的 openid
]
]);
\dd($response->toArray(false));
Native 下单
php
$response = $app->getClient()->postJson('v3/pay/transactions/native', [
'mchid' => (string)$app->getMerchant()->getMerchantId(),
'out_trade_no' => 'native20210720xxx',
'appid' => 'wxe2fb06xxxxxxxxxx6',
'description' => 'Image形象店-深圳腾大-QQ公仔',
'notify_url' => 'https://weixin.qq.com/',
'amount' => [
'total' => 1,
'currency' => 'CNY',
]
]);
print_r($response->toArray(false));
查询订单(商户订单号)
php
$outTradeNo = 'native20210720xxx';
$response = $app->getClient()->get("v3/pay/transactions/out-trade-no/{$outTradeNo}", [
'query'=>[
'mchid' => $app->getMerchant()->getMerchantId()
]
]);
print_r($response->toArray());
查询订单(微信订单号)
php
$transactionId = '217752501201407033233368018';
$response = $app->getClient()->get("pay/transactions/id/{$transactionId}", [
'query'=>[
'mchid' => $app->getMerchant()->getMerchantId()
]
]);
print_r($response->toArray());
Laravel 中处理微信支付回调
记得需要将此类路由关闭 csrf 验证。
php
// 假设你设置的通知地址notify_url为: https://easywechat.com/payment_notify
// 注意:通知地址notify_url必须为https协议
Route::post('payment_notify', function () {
// $app 为你实例化的支付对象,此处省略实例化步骤
$server = $app->getServer();
// 处理支付结果事件
$server->handlePaid(function ($message) {
// $message 为微信推送的通知结果,详看微信官方文档
// 微信支付订单号 $message['transaction_id']
// 商户订单号 $message['out_trade_no']
// 商户号 $message['mchid']
// 具体看微信官方文档...
// 进行业务处理,如存数据库等...
});
// 处理退款结果事件
$server->handleRefunded(function ($message) {
// 同上,$message 详看微信官方文档
// 进行业务处理,如存数据库等...
});
return $server->serve();
});
付款(V2)
php
$response = $api->post('/mmpaymkttransfers/promotion/transfers', [
'body' => [
'mch_appid' => $app->getConfig()['app_id'], //注意在配置文件中加上app_id
'mchid' => $app->getConfig()['mch_id'], //商户号
'partner_trade_no' => '202203081646729819743', // 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号)
'openid' => 'ogn1H45HCRxVRiEMLbLLuABbxxxx', //用户openid
'check_name' => 'FORCE_CHECK', // NO_CHECK:不校验真实姓名, FORCE_CHECK:强校验真实姓名
're_user_name'=> '用户真实姓名', // 如果 check_name 设置为 FORCE_CHECK 则必填用户真实姓名
'amount' => '100', //金额
'desc' => '理赔', // 企业付款操作说明信息。必填
],
'local_cert' => $app->getConfig()['certificate'], //v2证书绝对路径
'local_pk' => $app->getConfig()['private_key'], //v2证书密钥绝对路径
]);
print_r($response->toArray());
JSAPI下单(服务商)
官方文档:<https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_1.shtml>
php
$response = $app->getClient()->postJson("v3/pay/partner/transactions/jsapi", [
"sp_appid" => $appId, // 服务商应用ID
"sp_mchid" => '********', // 服务商户号
'sub_mchid' => '*********', // 子商户号/二级商户号
"sub_appid" => '********', // 子商户/二级商户应用ID(选填)
"description" => $this->payDesc($from), // 商品描述
"out_trade_no" => $order['pay_sn'], // 商户订单号
"notify_url" => $this->config['notify_url'], // 通知地址
"amount" => [
"total" => intval($order['order_amount'] * 100), // 总金额
], // 订单金额信息
"payer" => [
"sp_openid" => $this->auth['openid'], // 用户服务标识,户在服务商AppID下的唯一标识
"sub_openid" => $this->auth['openid'] // 用户子标识,用户在子商户AppID下的唯一标识。若传sub_openid,那sub_appid必填。下单前需获取到用户的OpenID
], // 支付者,(sp_openid 和 sub_openid 二选一)
'attach' => $from
]);
print_r($response->toArray());