trade_example.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. declare(strict_types=1);
  3. require_once __DIR__ . '/../vendor/autoload.php';
  4. use SixShop\Wangdian\WangdianFactory;
  5. use SixShop\Wangdian\Exception\ApiException;
  6. // Create client
  7. $client = WangdianFactory::createSandboxClient(
  8. sid: 'your-sid',
  9. appKey: 'your-app-key',
  10. appSecret: 'your-app-secret'
  11. );
  12. try {
  13. // Push a trade order
  14. echo "Pushing trade order...\n";
  15. $tradeData = [
  16. 'shop_no' => 'api_test',
  17. 'switch' => 0,
  18. 'trade_list' => [
  19. [
  20. 'tid' => 'SDK_TEST_' . time(),
  21. 'trade_status' => 30,
  22. 'delivery_term' => 1,
  23. 'pay_status' => 2,
  24. 'trade_time' => date('Y-m-d H:i:s'),
  25. 'pay_time' => date('Y-m-d H:i:s'),
  26. 'buyer_nick' => 'test_buyer',
  27. 'buyer_email' => 'test@example.com',
  28. 'receiver_mobile' => '13800138000',
  29. 'receiver_telno' => '',
  30. 'receiver_zip' => '100000',
  31. 'receiver_province' => '北京',
  32. 'receiver_name' => '张三',
  33. 'receiver_city' => '北京市',
  34. 'receiver_district' => '海淀区',
  35. 'receiver_address' => '测试地址123号',
  36. 'logistics_type' => 4, // EMS
  37. 'invoice_type' => 0,
  38. 'invoice_title' => '',
  39. 'invoice_content' => '',
  40. 'buyer_message' => 'SDK测试订单',
  41. 'remark' => 'SDK测试专用',
  42. 'remark_flag' => 1,
  43. 'post_amount' => 10.0,
  44. 'paid' => 109.0,
  45. 'cod_amount' => 0.0,
  46. 'ext_cod_fee' => 0.0,
  47. 'order_list' => [
  48. [
  49. 'oid' => 'SDK_ITEM_' . time(),
  50. 'status' => 30,
  51. 'refund_status' => 0,
  52. 'goods_id' => 'TEST_GOODS_001',
  53. 'spec_id' => '',
  54. 'goods_no' => 'TEST001',
  55. 'spec_no' => 'TEST001-001',
  56. 'goods_name' => '测试商品',
  57. 'spec_name' => '测试规格',
  58. 'num' => 1,
  59. 'price' => 99.0,
  60. 'adjust_amount' => 0.0,
  61. 'discount' => 0.0,
  62. 'share_discount' => 0.0,
  63. 'cid' => '1',
  64. ]
  65. ]
  66. ]
  67. ]
  68. ];
  69. $response = $client->trade()->push($tradeData);
  70. if ($response->isSuccess()) {
  71. echo "Trade pushed successfully!\n";
  72. echo "Response: " . $response->toJson() . "\n";
  73. } else {
  74. echo "Trade push failed: " . $response->getMessage() . "\n";
  75. }
  76. // Query recent trades
  77. echo "\nQuerying recent trades...\n";
  78. $queryParams = [
  79. 'start_time' => date('Y-m-d 00:00:00'),
  80. 'end_time' => date('Y-m-d 23:59:59'),
  81. ];
  82. $response = $client->trade()->query($queryParams);
  83. if ($response->isSuccess()) {
  84. $trades = $response->getData();
  85. echo "Found " . count($trades) . " trades today\n";
  86. foreach (array_slice($trades, 0, 5) as $trade) {
  87. echo "- TID: {$trade['tid']}, Status: {$trade['trade_status']}, Amount: {$trade['paid']}\n";
  88. }
  89. } else {
  90. echo "Trade query failed: " . $response->getMessage() . "\n";
  91. }
  92. } catch (ApiException $e) {
  93. echo "API Error: " . $e->getMessage() . "\n";
  94. echo "API Code: " . $e->getApiCode() . "\n";
  95. } catch (Exception $e) {
  96. echo "Error: " . $e->getMessage() . "\n";
  97. }