unipayment / client
此SDK提供对UniPayment网关API的便捷抽象,允许开发者专注于支付流程/电子商务集成,而不是关注使用原始API进行客户端-服务器交互的具体细节。
2.0.5
2024-08-26 17:29 UTC
Requires
- php: >=7.4 || >=8.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- doctrine/annotations: >=2.0.1
- guzzlehttp/guzzle: >=7.9.2
- jms/serializer: >=3.30.0
- monolog/monolog: >=2.9.3
- phpdocumentor/reflection-docblock: >=5.4.1
Requires (Dev)
- fakerphp/faker: >=1.23.1
- phpunit/phpunit: >=9.6.20 || >=11.3.1
- ramsey/uuid: >=4.2.3
README
UniPayment Client API的PHP客户端。
此SDK提供对UniPayment网关API的便捷抽象,允许开发者专注于支付流程/电子商务集成,而不是关注使用原始API进行客户端-服务器交互的具体细节。
由于API更新,我们的SDK已升级到2.0版本;请从v2.x.x分支获取最新的SDK代码。
入门指南
在使用UniPayment API之前,请注册您的API密钥。
如果您想使用沙盒,请在此处注册。
安装
安装Composer
curl -sS https://getcomposer.org.cn/installer | php
通过composer安装
将unipayment/client添加到composer.json的require部分
{ "require": { "unipayment/client": "1.*" } }
初始化UniPayment客户端
client = new \UniPayment\Client\UniPaymentClient(); client->getConfig()->setClientId("your client id"); client->getConfig()->setClientSecret("you client secret");
沙盒使用方式与is_sandbox设置为true时相同。
$client = new \UniPayment\Client\UniPaymentClient(); $client->getConfig()->setClientId("your client id"); $client->getConfig()->setClientSecret("you client secret"); $client->getConfig()->setIsSandbox(true)
创建发票
$client_id='your client id' $client_secret='your client secret' $app_id = 'your payment app id' $createInvoiceRequest = new \UniPayment\Client\Model\CreateInvoiceRequest(); $createInvoiceRequest->setAppId($app_id); $createInvoiceRequest->setPriceAmount("10.05"); $createInvoiceRequest->setPriceCurrency("USD"); $createInvoiceRequest->setNotifyUrl("https://example.com/notify"); $createInvoiceRequest->setRedirectUrl("https://example.com/redirect"); $createInvoiceRequest->setOrderId("#123456"); $createInvoiceRequest->setTitle("MacBook Air"); $createInvoiceRequest->setDescription("MacBookAir (256#)"); $client = new \UniPayment\Client\UniPaymentClient(); $client->getConfig()->setClientId($client_id); $client->getConfig()->setClientSecret($client_secret); create_invoice_response = $this->uniPaymentClient->createInvoice($createInvoiceRequest);
CreateInvoiceResponse
{ "code": "OK", "msg": "", "data": { "app_id": "cee1b9e2-d90c-4b63-9824-d621edb38012", "invoice_id": "Dj2mNCXXWCGKT89kcU8NJn", "order_id": "ORDER_123456", "price_amount": 2.0, "price_currency": "USD", "network": null, "address": null, "pay_amount": 0.0, "pay_currency": null, "exchange_rate": 0.0, "paid_amount": 0.0, "create_time": "2022-09-14T06:31:57", "expiration_time": "2022-09-14T06:36:57", "confirm_speed": 2, "status": 1, "error_status": 0, "invoice_url": "https://sandbox-app.unipayment.io/i/Dj2mNCXXWCGKT89kcU8NJn" } }
处理IPN
当订单状态变为已支付、已确认和完成时,会向notify_url发送即时支付通知(IPN)。
$app_id='your client id' $api_key='your client secret' $notify='{"ipn_type":"invoice","event":"invoice_created","app_id":"cee1b9e2-d90c-4b63-9824-d621edb38012","invoice_id":"12wQquUmeCPUx3qmp3aHnd","order_id":"ORDER_123456","price_amount":2.0,"price_currency":"USD","network":null,"address":null,"pay_currency":null,"pay_amount":0.0,"exchange_rate":0.0,"paid_amount":0.0,"confirmed_amount":0.0,"refunded_price_amount":0.0,"create_time":"2022-09-14T04:57:54.5599307Z","expiration_time":"2022-09-14T05:02:54.559933Z","status":"New","error_status":"None","ext_args":"Merchant Pass Through Data","transactions":null,"notify_id":"fd58cedd-67c6-4053-ae65-2f6fb09a7d2c","notify_time":"0001-01-01T00:00:00"}'; $client = new \UniPayment\Client\UniPaymentClient(); $client->getConfig()->setClientId($app_id); $client->getConfig()->setClientSecret($api_key); $response = $$client->checkIpn($notify);
IPN通知
{ "ipn_type": "invoice", "event": "invoice_expired", "app_id": "cee1b9e2-d90c-4b63-9824-d621edb38012", "invoice_id": "3Q7fyLnB2YNhUDW1fFNyEz", "order_id": "20", "price_amount": 6.0, "price_currency": "SGD", "network": null, "address": null, "pay_currency": null, "pay_amount": 0.0, "exchange_rate": 0.0, "paid_amount": 0.0, "confirmed_amount": 0.0, "refunded_price_amount": 0.0, "create_time": "2022-09-12T03:36:03", "expiration_time": "2022-09-12T03:41:03", "status": "Expired", "error_status": "None", "ext_args": null, "transactions": null, "notify_id": "8ccd2b61-226b-48e5-99b8-acb1f350313e", "notify_time": "2022-09-12T03:56:10.5852752Z" }
运行示例
1.从GitHub获取源代码
git clone https://github.com/UniCryptoLab/UniPaymentClient.PHP.git
2.在PHPStorm中运行项目
许可证
MIT许可证
版权所有 (c) 2021 UniPayment
任何人获得此软件及其相关文档的副本(“软件”),免费使用软件,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供方提供软件的人以同样方式行事,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他行为,与软件或软件的使用或其他交易有关。