服务商模式实现JSAPI小程序微信支付(java&php)

官方文档 https://pay.weixin.qq.com/wiki/doc/apiv3_partner/open/pay/chapter2_1.shtml 

使用wechatpay-php实现JSAPI支付(服务商和普通商户)文章浏览阅读1.3k次,点赞3次,收藏7次。之前我使用的sdk是“wechatpay-guzzle-middleware”这个,后面发现官方文档里面“wechatpay-php”后面带了个推荐,以前没用过这个,正好有新项目试一下。下面是全部的支付流程代码,已经跑通,拉起支付了。支付回调还没测试,等测试完继续更新。"wechatpay-guzzle-middleware"这个sdk的用法有时间再更新。后续分账的接口使用方法,下次继续更新。_wechatpay-php jsapihttps://blog.csdn.net/qq_43453685/article/details/132561681微信支付的服务商模式V3支付(可直接使用)文章浏览阅读9k次,点赞8次,收藏38次。直连商户:例如张三开了一个小程序,然后别人在这个小程序买东西,结账的时候,钱是直接打到张三的账号上的。服务商模式:例如张三开了一个小程序,然后这个小程序中有一个开分店的功能,然后别人在分店购买东西,在结账的时候,钱是直接打到分店的负责人的账号上的。_微信支付服务商https://blog.csdn.net/qq_26112725/article/details/131684591

配置

// 商户私钥,文件路径假定为 `cert/apiclient_key.pem`
// 我是把API证书私钥将整个文件放在cert文件夹下
$merchantPrivateKeyFilePath = public_path() . 'cert/apiclient_key.pem';
// 加载商户私钥
$this->merchantPrivateKeyInstance = PemUtil::loadPrivateKey($merchantPrivateKeyFilePath);

// 商户证书,文件路径假定为 `cert/apiclient_cert.pem`
// 我是把API证书公钥将整个文件放在cert文件夹下
$merchantCertificateFilePath = public_path() . 'cert/apiclient_cert.pem';
// 加载商户证书
$this->merchantCertificateInstance = PemUtil::loadCertificate($merchantCertificateFilePath);
// 解析商户证书序列号
$this->merchantCertificateSerial = PemUtil::parseCertificateSerialNo($this->merchantCertificateInstance);

// 平台证书,就是上一步下载的平台证书,我直接丢到cert文件夹了,它生成名字很长,大概长下面这样
$platformCertificateFilePath = public_path() . 'cert/wechatpay_48E897EFB18EE05C97B4EEF20F64193xxxxxxxxx.pem';
// 加载平台证书
$this->platformCertificateInstance = PemUtil::loadCertificate($platformCertificateFilePath);
// 解析平台证书序列号
$this->platformCertificateSerial = PemUtil::parseCertificateSerialNo($this->platformCertificateInstance);

微信支付v3平台证书生成详细过程

商户API证书和微信支付平台证书均可以使用第三方的证书解析工具 (opens new window)证书查看解析工具 (opens new window),查看证书内容。或者使用openssl命令行工具查看证书序列号。

$ openssl x509 -in 1900009191_20180326_cert.pem -noout -serial
serial=1DDE55AD98ED71D6EDD4A4A16996DE7B47773A8C

Certificate Downloader

Certificate Downloader 是 Java 微信支付 APIv3 平台证书的命令行下载工具。该工具可从 https://api.mch.weixin.qq.com/v3/certificates 接口获取商户可用证书,并使用 APIv3 密钥 和 AES_256_GCM 算法进行解密,并把解密后证书下载到指定位置。

该工具使用了 wechatpay-apache-httpclientMavenpicocligsonlombok 等库。

前置条件

  • JRE 1.8+

快速开始

该工具已经通过 Maven 打包成 CertificateDownloader.jar,可在 release 中下载。

下载 jar 包后,如果你没有证书,第一次下载证书的命令如下,具体说明请看 常见问题-第一次下载证书

java -jar CertificateDownloader.jar 
-k ${apiV3key} 
-m ${mchId} 
-f ${mchPrivateKeyFilePath} 
-s ${mchSerialNo} 
-o ${outputFilePath}

如果你已有微信支付平台证书,完整命令如:

java -jar CertificateDownloader.jar 
-k ${apiV3key} 
-m ${mchId} 
-f ${mchPrivateKeyFilePath} 
-s ${mchSerialNo} 
-o ${outputFilePath} 
-c ${wechatpayCertificateFilePath}

使用

必需参数有:

  • -f <privateKeyFilePath>,商户API私钥文件路径
  • -k <apiV3Key>,证书解密的密钥
  • -m <merchantId>,商户号
  • -o <outputFilePath>,保存证书的路径
  • -s <merchantSerialNo>,商户API证书的序列号

非必需参数有:

  • -c <wechatpayCertificatePath>,微信支付平台证书的路径。如果你还没有证书,请先不传该参数。

你还可以运行 java -jar CertificateDownloader.jar -h,查看帮助:

如果你已有微信支付平台证书,完整命令如:
java -jar CertificateDownloader.jar -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath} -c ${wechatpayCertificateFilePath}


  -c, --wechatpay-cert=<wechatpayCertificateFilePath>
                             微信支付平台证书,用于验签。如果你还没有证书,请先不传该参数。
  -m, --mchid=<merchantId>   商户号
  -s, --serialno=<serialNo>  商户证书的序列号
  -f, --privatekey=<privateKeyFilePath>
                             商户的私钥文件
  -k, --key=<apiV3key>       ApiV3Key
  -o, --output=[outputFilePath]
                             下载成功后保存证书的路径,可选参数,默认为临时文件目录夹
  -u, --baseuri=[baseUri]    接入点,默认为 https://api.mch.weixin.qq.com/
  -V, --version              Print version information and exit.
  -h, --help                 Show this help message and exit.
 
你还可以运行 java -jar CertificateDownloader.jar -h,查看帮助:

运行就可以得到平台证书
 

微信支付专题——微信平台证书的两种下载方式文章浏览阅读1.1w次,点赞6次,收藏28次。 最近再做微信支付的模块,由于做的是服务商模块的,商户进件功能需要使用微信平台的公钥对敏感信息加密,而且传送的http头部需要把微信平台证书序列号携带在“Wechatpay-Serial”信息,官网上是这样标注的: 所以,就需要下载微信平台证书,使用平台公钥对敏感信息加密,这样把商户信息上送到微信支付平台时,微信平台使_wechatpaycertificatepathhttps://blog.csdn.net/qq_46540738/article/details/122257618

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值